diff options
author | Oleksandr Dmytryshyn <oleksandr.dmytryshyn@ti.com> | 2012-04-13 17:07:35 +0300 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:58:04 +0200 |
commit | 59299219049e70954f62e683f6c2fedd39af6fb8 (patch) | |
tree | 03d45d0ba4a6d69c0baf546634f9ec29a733e1e7 | |
parent | cb0c031bc7a23315458f4da88fdb4dcbf9cb0dcc (diff) | |
download | kernel_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.c | 21 |
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); |