static void tegra_set_dap_connection(u8 value) { int reg_val; pr_info("Board N1 : %s : %d\n", __func__, value); switch (value) { case dap_connection_codec_slave: /* pcm_slave */ das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel((DAP_MS_SEL_MASTER | DAP_CTRL_SEL_DAP2), APB_MISC_DAS_DAP_CTRL_SEL_2); break; case dap_connection_codec_master: /* pcm_master */ das_writel(DAP_MS_SEL_MASTER | DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel((DAP_CTRL_SEL_DAP2), APB_MISC_DAS_DAP_CTRL_SEL_2); break; case dap_connection_bt_call: /* DAP1 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_0); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); /* DAP1 master */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAC1 << DAP_CTRL_SEL_SHIFT); /* DAP1<-DAC1 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_0); /* DAP2 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_1); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (0 << DAP_MS_SEL_SHIFT); /* DAP2 slave */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP3 << DAP_CTRL_SEL_SHIFT); /*DAP2<-DAP3 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_1); /* DAP3 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_2); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); /* DAP3 master */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT); /* DAP3<-DAP4 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_2); /* DAP4 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_3); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (0 << DAP_MS_SEL_SHIFT); /* DAP4 slave */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP2 << DAP_CTRL_SEL_SHIFT); /* DAP4<-DAP2 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_3); /* DAC1 */ reg_val = das_readl(APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); reg_val &= ~(DAC_SDATA2_SEL_DEFAULT_MASK << DAC_SDATA2_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA2_SEL_SHIFT); /* DAC1 <- DAP1 */ reg_val &= ~(DAC_SDATA1_SEL_DEFAULT_MASK << DAC_SDATA1_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA1_SEL_SHIFT); /* DAC1 <- DAP1 */ reg_val &= ~(DAC_CLK_SEL_DEFAULT_MASK << DAC_CLK_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP1 << DAC_CLK_SEL_SHIFT); /* DAC1 <- DAP1 */ das_writel(reg_val, APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); break; case dap_connection_bt_voip: /* DAP1 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_0); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); /* DAP1 master */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAC1 << DAP_CTRL_SEL_SHIFT); /* DAP1<-DAC1 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_0); /* DAP2 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_1); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); /* DAP2 slave */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT); /* DAP2<-DAP3 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_1); /* DAP4 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_3); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (0 << DAP_MS_SEL_SHIFT); /* DAP4 slave */ reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP2 << DAP_CTRL_SEL_SHIFT); /* DAP4<-DAP2 */ das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_3); /* DAC1 */ reg_val = das_readl( APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); reg_val &= ~(DAC_SDATA2_SEL_DEFAULT_MASK << DAC_SDATA2_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA2_SEL_SHIFT); /* DAC1 <- DAP1 */ reg_val &= ~(DAC_SDATA1_SEL_DEFAULT_MASK << DAC_SDATA1_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA1_SEL_SHIFT); /* DAC1 <- DAP1 */ reg_val &= ~(DAC_CLK_SEL_DEFAULT_MASK << DAC_CLK_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP1 << DAC_CLK_SEL_SHIFT); /* DAC1 <- DAP1 */ das_writel(reg_val, APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); break; case dap_connection_bt_call_nomix: das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_3); das_writel((DAP_MS_SEL_MASTER | DAP_CTRL_SEL_DAP2 | DAP_CTRL_SEL_DAP4), APB_MISC_DAS_DAP_CTRL_SEL_2); break; default: pr_err("Board N1 : %s : %d is not available\n", __func__, value); break; } }
static void tegra_set_dap_connection(bool on) { int reg_val; pr_info("Board P4 : %s : %d\n", __func__, on); if(on) { #if 0 das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_3); das_writel((DAP_MS_SEL_MASTER /*| DAP_CTRL_SEL_DAP2*/ | DAP_CTRL_SEL_DAP4), APB_MISC_DAS_DAP_CTRL_SEL_2); #else //DAP1 reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_0); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); //DAP1 master reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAC1 << DAP_CTRL_SEL_SHIFT); //DAP1<-DAC1 das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_0); //DAP2 reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_1); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT);//DAP2 master reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT);//DAP2<-DAP4 das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_1); //DAP3 reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_2); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT);//DAP3 master reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT);//DAP3<-DAP4 das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_2); //DAP4 reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_3); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (0 << DAP_MS_SEL_SHIFT);//DAP4 slave reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP2 << DAP_CTRL_SEL_SHIFT);//DAP4<-DAP2 das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_3); //DAC1 reg_val = das_readl(APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); reg_val &= ~(DAC_SDATA2_SEL_DEFAULT_MASK << DAC_SDATA2_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA2_SEL_SHIFT);//DAC1 <- DAP1 reg_val &= ~(DAC_SDATA1_SEL_DEFAULT_MASK << DAC_SDATA1_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA1_SEL_SHIFT);//DAC1 <- DAP1 reg_val &= ~(DAC_CLK_SEL_DEFAULT_MASK << DAC_CLK_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP1 << DAC_CLK_SEL_SHIFT);// DAC1 <- DAP1 das_writel(reg_val, APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); #endif } else { das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel((DAP_MS_SEL_MASTER | DAP_CTRL_SEL_DAP2), APB_MISC_DAS_DAP_CTRL_SEL_2); } }
static void tegra_set_dap_connection(bool on) { int reg_val; pr_info("Board P4 : %s : %d\n", __func__, on); if (on) { /* DAP1 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_0); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAC1 << DAP_CTRL_SEL_SHIFT); das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_0); /* DAP2 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_1); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT); das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_1); /* DAP3 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_2); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (1 << DAP_MS_SEL_SHIFT); reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP4 << DAP_CTRL_SEL_SHIFT); das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_2); /* DAP4 */ reg_val = das_readl(APB_MISC_DAS_DAP_CTRL_SEL_3); reg_val &= ~(DAP_MS_SEL_DEFAULT_MASK << DAP_MS_SEL_SHIFT); reg_val |= (0 << DAP_MS_SEL_SHIFT); reg_val &= ~(DAP_CTRL_SEL_DEFAULT_MASK << DAP_CTRL_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP2 << DAP_CTRL_SEL_SHIFT); das_writel(reg_val, APB_MISC_DAS_DAP_CTRL_SEL_3); /* DAC1 */ reg_val = das_readl(APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); reg_val &= ~(DAC_SDATA2_SEL_DEFAULT_MASK << DAC_SDATA2_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA2_SEL_SHIFT); reg_val &= ~(DAC_SDATA1_SEL_DEFAULT_MASK << DAC_SDATA1_SEL_SHIFT); reg_val |= ((DAP_CTRL_SEL_DAP1 - DAP_CTRL_SEL_DAP1) << DAC_SDATA1_SEL_SHIFT); reg_val &= ~(DAC_CLK_SEL_DEFAULT_MASK << DAC_CLK_SEL_SHIFT); reg_val |= (DAP_CTRL_SEL_DAP1 << DAC_CLK_SEL_SHIFT); das_writel(reg_val, APB_MISC_DAS_DAC_INPUT_DATA_CLK_SEL_0); } else { das_writel(DAP_CTRL_SEL_DAP3, APB_MISC_DAS_DAP_CTRL_SEL_1); das_writel((DAP_MS_SEL_MASTER | DAP_CTRL_SEL_DAP2), APB_MISC_DAS_DAP_CTRL_SEL_2); } }