aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleksandr Dmytryshyn <oleksandr.dmytryshyn@ti.com>2012-04-13 17:07:35 +0300
committerZiyann <jaraidaniel@gmail.com>2014-10-01 12:58:04 +0200
commit59299219049e70954f62e683f6c2fedd39af6fb8 (patch)
tree03d45d0ba4a6d69c0baf546634f9ec29a733e1e7
parentcb0c031bc7a23315458f4da88fdb4dcbf9cb0dcc (diff)
downloadkernel_samsung_tuna-59299219049e70954f62e683f6c2fedd39af6fb8.zip
kernel_samsung_tuna-59299219049e70954f62e683f6c2fedd39af6fb8.tar.gz
kernel_samsung_tuna-59299219049e70954f62e683f6c2fedd39af6fb8.tar.bz2
OMAP4: McPDM: Add McPDM pins initialization
Audio Noise Issue may occur due to McPDM_DOUT floating while McPDM_CLK is generated at the beginning of the Audio transfer to Audio IC (this situation is created by OMAP4 McPDM module which need some time before providing the data). A WA is to enable the internal pull-down on OMAP McPDM_DOUT pin to avoid having the pin floating. Pins initialization was added to make sure that McPDM pins initialized correctly. Change-Id: I04fe52b63bf72da0431099cbedcb7f9669ac4f27 Signed-off-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@ti.com>
-rw-r--r--arch/arm/mach-omap2/devices.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 5305782..d0113ff 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -317,6 +317,27 @@ static void omap_init_mcpdm(void)
char *oh_name = "mcpdm";
char *dev_name = "omap-mcpdm";
+ /*
+ * Init McPDM pins for OMAP4 to prevent the occurrence of
+ * noise at the output of the Audio IC
+ */
+ if (cpu_is_omap44xx()) {
+ omap_mux_init_signal("abe_pdm_ul_data.abe_pdm_ul_data",
+ OMAP_PIN_INPUT_PULLDOWN);
+
+ omap_mux_init_signal("abe_pdm_dl_data.abe_pdm_dl_data",
+ OMAP_PIN_INPUT_PULLDOWN);
+
+ omap_mux_init_signal("abe_pdm_frame.abe_pdm_frame",
+ OMAP_PIN_INPUT_PULLUP);
+
+ omap_mux_init_signal("abe_pdm_lb_clk.abe_pdm_lb_clk",
+ OMAP_PIN_INPUT_PULLDOWN);
+
+ omap_mux_init_signal("abe_clks.abe_clks",
+ OMAP_PIN_INPUT_PULLDOWN);
+ }
+
oh = omap_hwmod_lookup(oh_name);
if (!oh) {
pr_err("%s: could not look up %s\n", __func__, oh_name);