ARM: dts/OMAP: Pinmux audio configuration for OMAP4+
Subsystems (4)
cover ARM: dts/OMAP: Pinmux audio configuration for OMAP4+
Hello,
u-boot recently stopped configuring 'non essential' pin mux. This change leaves the audio essential pins in non configured state which prevents the use of audio. The following series makes sure that the needed pins are configured correctly by the kernel on OMAP4 and OMAP5.
Tony: can this series queued for 3.7?
Regards,
Peter
---
Peter Ujfalusi (9):
ARM: OMAP: board-4430-sdp: Pin mux configuration for audio needs
ARM: OMAP: board-omap4panda: Pin mux configuration for audio needs ARM/dts: omap4-panda: Disable unused audio IPs
ARM/dts: omap4-sdp: Disable unused McBSP3
ARM/dts: omap5-evm: Disable unused McBSP3
ARM/dts: omap4-sdp: pinmux configuration for audio ARM/dts: omap4-panda: pinmux configuration for audio ARM/dts: Add pinctrl driver entries for omap5
ARM/dts: omap5-evm: pinmux configuration for audio
arch/arm/boot/dts/omap4-panda.dts | 47 +++++++++++++++++++++++++++ arch/arm/boot/dts/omap4-sdp.dts | 57 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/omap5-evm.dts | 58 ++++++++++++++++++++++++++++++++++ arch/arm/boot/dts/omap5.dtsi | 17 ++++++++++ arch/arm/mach-omap2/board-4430sdp.c | 26 +++++++++++++++ arch/arm/mach-omap2/board-omap4panda.c | 15 +++++++++ 6 files changed, 220 insertions(+)
Signature · 1 line
1.7.12
PATCH 1/9 ARM: OMAP: board-4430-sdp: Pin mux configuration for audio needs
u-boot stopped configuring 'non essential' pins recently. These pins are essential for audio and need to be done to have working audio on the board. Pin Mux configuration for: twl6040 audpwron gpio, McPDM, DMIC, McBSP1 and McBSP2.
--- arch/arm/mach-omap2/board-4430sdp.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
arch/arm/mach-omap2/board-4430sdp.c +26 -0
@@ -753,6 +753,32 @@ static struct omap_board_mux board_mux[] __initdata = {/* NIRQ2 for twl6040 */ OMAP4_MUX (SYS_NIRQ2 ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLUP |OMAP_PIN_OFF_WAKEUPENABLE ), +/* GPIO_127 for twl6040 */ +OMAP4_MUX (HDQ_SIO ,OMAP_MUX_MODE3 |OMAP_PIN_OUTPUT ), +/* McPDM */ +OMAP4_MUX (ABE_PDM_UL_DATA ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_PDM_DL_DATA ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_PDM_FRAME ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLUP ), +OMAP4_MUX (ABE_PDM_LB_CLK ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_CLKS ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +/* DMIC */ +OMAP4_MUX (ABE_DMIC_CLK1 ,OMAP_MUX_MODE0 |OMAP_PIN_OUTPUT ), +OMAP4_MUX (ABE_DMIC_DIN1 ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +OMAP4_MUX (ABE_DMIC_DIN2 ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +OMAP4_MUX (ABE_DMIC_DIN3 ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +/* McBSP1 */ +OMAP4_MUX (ABE_MCBSP1_CLKX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +OMAP4_MUX (ABE_MCBSP1_DR ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_MCBSP1_DX ,OMAP_MUX_MODE0 |OMAP_PIN_OUTPUT | +OMAP_PULL_ENA ), +OMAP4_MUX (ABE_MCBSP1_FSX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +/* McBSP2 */ +OMAP4_MUX (ABE_MCBSP2_CLKX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +OMAP4_MUX (ABE_MCBSP2_DR ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_MCBSP2_DX ,OMAP_MUX_MODE0 |OMAP_PIN_OUTPUT | +OMAP_PULL_ENA ), +OMAP4_MUX (ABE_MCBSP2_FSX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), + { .reg_offset = OMAP_MUX_TERMINATOR }, };
Signature · 1 line
1.7.12
PATCH 2/9 ARM: OMAP: board-omap4panda: Pin mux configuration for audio needs
In reply to Peter Ujfalusiu-boot stopped configuring 'non essential' pins recently. These pins are essential for audio and need to be done to have working audio on the board. Pin Mux configuration for: twl6040 audpwron gpio, McPDM, and McBSP1.
--- arch/arm/mach-omap2/board-omap4panda.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
arch/arm/mach-omap2/board-omap4panda.c +15 -0
@@ -380,6 +380,21 @@ static struct omap_board_mux board_mux[] __initdata = {/* NIRQ2 for twl6040 */ OMAP4_MUX (SYS_NIRQ2 ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLUP |OMAP_PIN_OFF_WAKEUPENABLE ), +/* GPIO_127 for twl6040 */ +OMAP4_MUX (HDQ_SIO ,OMAP_MUX_MODE3 |OMAP_PIN_OUTPUT ), +/* McPDM */ +OMAP4_MUX (ABE_PDM_UL_DATA ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_PDM_DL_DATA ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_PDM_FRAME ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLUP ), +OMAP4_MUX (ABE_PDM_LB_CLK ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_CLKS ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +/* McBSP1 */ +OMAP4_MUX (ABE_MCBSP1_CLKX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), +OMAP4_MUX (ABE_MCBSP1_DR ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT_PULLDOWN ), +OMAP4_MUX (ABE_MCBSP1_DX ,OMAP_MUX_MODE0 |OMAP_PIN_OUTPUT | +OMAP_PULL_ENA ), +OMAP4_MUX (ABE_MCBSP1_FSX ,OMAP_MUX_MODE0 |OMAP_PIN_INPUT ), + { .reg_offset = OMAP_MUX_TERMINATOR }, };
Signature · 1 line
1.7.12
PATCH 3/9 ARM/dts: omap4-panda: Disable unused audio IPs
In reply to Peter UjfalusiMcBSP2, McBSP3 and DMIC is not usable on PandaBoard (not connected, no external pins provided for them).
--- arch/arm/boot/dts/omap4-panda.dts | 12 ++++++++++++ 1 file changed, 12 insertions(+)
arch/arm/boot/dts/omap4-panda.dts +12 -0
@@ -137,3 +137,15 @@ cs1-used; device-handle = <&elpida_ECB240ABACN>; }; + +&mcbsp2 { + status = "disabled"; +}; + +&mcbsp3 { + status = "disabled"; +}; + +&dmic { + status = "disabled"; +};
Signature · 1 line
1.7.12
PATCH 4/9 ARM/dts: omap4-sdp: Disable unused McBSP3
In reply to Peter UjfalusiMcBSP3 is not usable on OMAP4 SDP/Blaze (the pins used for McPDM).
--- arch/arm/boot/dts/omap4-sdp.dts | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm/boot/dts/omap4-sdp.dts +4 -0
@@ -349,3 +349,7 @@ pinctrl-names = "default"; pinctrl-0 = <&uart4_pins>; }; + +&mcbsp3 { + status = "disabled"; +};
Signature · 1 line
1.7.12
PATCH 5/9 ARM/dts: omap5-evm: Disable unused McBSP3
In reply to Peter UjfalusiMcBSP3 is not usable on OMAP4 SDP/Blaze (the pins used for McPDM).
--- arch/arm/boot/dts/omap5-evm.dts | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm/boot/dts/omap5-evm.dts +4 -0
@@ -82,3 +82,7 @@ 0x020700d9>; /* SEARCH */ linux,input-no-autorepeat; }; + +&mcbsp3 { + status = "disabled"; +};
Signature · 1 line
1.7.12
PATCH 6/9 ARM/dts: omap4-sdp: pinmux configuration for audio
In reply to Peter Ujfalusiu-boot stopped configuring 'non essential' pins recently. The kernel needs to configure the mux for audio needs.
Since the pinmux for these IPs are static let pinctrl to handle the mux configuration for.
Configuring the mux for: twl6040 (audpwron, irq), McPDM, DMIC, McBSP1 and McBSP2.
--- arch/arm/boot/dts/omap4-sdp.dts | 53 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+)
arch/arm/boot/dts/omap4-sdp.dts +53 -0
@@ -117,6 +117,15 @@ }; &omap4_pmx_core { + pinctrl-names = "default"; + pinctrl-0 = < + &twl6040_pins + &mcpdm_pins + &dmic_pins + &mcbsp1_pins + &mcbsp2_pins + >; + uart2_pins: pinmux_uart2_pins { pinctrl-single,pins = < 0xd8 0x118 /* uart2_cts.uart2_cts INPUT_PULLUP | MODE0 */
@@ -141,6 +150,50 @@ 0x11e 0 /* uart4_tx.uart4_tx OUTPUT | MODE0 */ >; }; + + twl6040_pins: pinmux_twl6040_pins { + pinctrl-single,pins = < + 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */ + 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */ + >; + }; + + mcpdm_pins: pinmux_mcpdm_pins { + pinctrl-single,pins = < + 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */ + 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */ + 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */ + 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */ + 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */ + >; + }; + + dmic_pins: pinmux_dmic_pins { + pinctrl-single,pins = < + 0xd0 0 /* abe_dmic_clk1.abe_dmic_clk1 OUTPUT | MODE0 */ + 0xd2 0x100 /* abe_dmic_din1.abe_dmic_din1 INPUT | MODE0 */ + 0xd4 0x100 /* abe_dmic_din2.abe_dmic_din2 INPUT | MODE0 */ + 0xd6 0x100 /* abe_dmic_din3.abe_dmic_din3 INPUT | MODE0 */ + >; + }; + + mcbsp1_pins: pinmux_mcbsp1_pins { + pinctrl-single,pins = < + 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */ + 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */ + 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */ + 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ + >; + }; + + mcbsp2_pins: pinmux_mcbsp2_pins { + pinctrl-single,pins = < + 0xb6 0x100 /* abe_mcbsp2_clkx.abe_mcbsp2_clkx INPUT | MODE0 */ + 0xb8 0x108 /* abe_mcbsp2_dr.abe_mcbsp2_dr INPUT PULLDOWN | MODE0 */ + 0xba 0x8 /* abe_mcbsp2_dx.abe_mcbsp2_dx OUTPUT PULLDOWN | MODE0 */ + 0xbc 0x100 /* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */ + >; + }; }; &i2c1 {
Signature · 1 line
1.7.12
PATCH 7/9 ARM/dts: omap4-panda: pinmux configuration for audio
In reply to Peter Ujfalusiu-boot stopped configuring 'non essential' pins recently. The kernel needs to configure the mux for audio needs.
Since the pinmux for these IPs are static let pinctrl to handle the mux configuration for.
Configuring the mux for: twl6040 (audpwron, irq), McPDM and McBSP1.
--- arch/arm/boot/dts/omap4-panda.dts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
arch/arm/boot/dts/omap4-panda.dts +35 -0
@@ -59,6 +59,41 @@ }; }; +&omap4_pmx_core { + pinctrl-names = "default"; + pinctrl-0 = < + &twl6040_pins + &mcpdm_pins + &mcbsp1_pins + >; + + twl6040_pins: pinmux_twl6040_pins { + pinctrl-single,pins = < + 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */ + 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */ + >; + }; + + mcpdm_pins: pinmux_mcpdm_pins { + pinctrl-single,pins = < + 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */ + 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */ + 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */ + 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */ + 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */ + >; + }; + + mcbsp1_pins: pinmux_mcbsp1_pins { + pinctrl-single,pins = < + 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */ + 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */ + 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */ + 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */ + >; + }; +}; + &i2c1 { clock-frequency = <400000>;
Signature · 1 line
1.7.12
PATCH 8/9 ARM/dts: Add pinctrl driver entries for omap5
In reply to Peter UjfalusiThese all use the generic pinctrl-single driver for the padconf registers.
--- arch/arm/boot/dts/omap5.dtsi | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
arch/arm/boot/dts/omap5.dtsi +17 -0
@@ -65,6 +65,23 @@ ranges; ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; + omap5_pmx_core: pinmux@4a002840 { + compatible = "ti,omap4-padconf", "pinctrl-single"; + reg = <0x4a002840 0x01b6>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-single,register-width = <16>; + pinctrl-single,function-mask = <0x7fff>; + }; + omap5_pmx_wkup: pinmux@4ae0c840 { + compatible = "ti,omap4-padconf", "pinctrl-single"; + reg = <0x4ae0c840 0x0038>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-single,register-width = <16>; + pinctrl-single,function-mask = <0x7fff>; + }; + gic: interrupt-controller@48211000 { compatible = "arm,cortex-a15-gic"; interrupt-controller;
Signature · 1 line
1.7.12
PATCH 9/9 ARM/dts: omap5-evm: pinmux configuration for audio
In reply to Peter Ujfalusiu-boot stopped configuring 'non essential' pins recently. The kernel needs to configure the mux for audio needs.
Since the pinmux for these IPs are static let pinctrl to handle the mux configuration for.
Configuring the mux for: twl6040 (audpwron), McPDM, DMIC, McBSP1 and McBSP2.
--- arch/arm/boot/dts/omap5-evm.dts | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+)
arch/arm/boot/dts/omap5-evm.dts +54 -0
@@ -27,6 +27,60 @@ }; +&omap5_pmx_core { + pinctrl-names = "default"; + pinctrl-0 = < + &twl6040_pins + &mcpdm_pins + &dmic_pins + &mcbsp1_pins + &mcbsp2_pins + >; + + twl6040_pins: pinmux_twl6040_pins { + pinctrl-single,pins = < + 0x18a 0x6 /* perslimbus2_clock.gpio5_145 OUTPUT | MODE6 */ + >; + }; + + mcpdm_pins: pinmux_mcpdm_pins { + pinctrl-single,pins = < + 0x142 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */ + 0x15c 0x108 /* abemcpdm_ul_data.abemcpdm_ul_data INPUT PULLDOWN | MODE0 */ + 0x15e 0x108 /* abemcpdm_dl_data.abemcpdm_dl_data INPUT PULLDOWN | MODE0 */ + 0x160 0x118 /* abemcpdm_frame.abemcpdm_frame INPUT PULLUP | MODE0 */ + 0x162 0x108 /* abemcpdm_lb_clk.abemcpdm_lb_clk INPUT PULLDOWN | MODE0 */ + >; + }; + + dmic_pins: pinmux_dmic_pins { + pinctrl-single,pins = < + 0x144 0x100 /* abedmic_din1.abedmic_din1 INPUT | MODE0 */ + 0x146 0x100 /* abedmic_din2.abedmic_din2 INPUT | MODE0 */ + 0x148 0x100 /* abedmic_din3.abedmic_din3 INPUT | MODE0 */ + 0x14a 0 /* abedmic_clk1.abedmic_clk1 OUTPUT | MODE0 */ + >; + }; + + mcbsp1_pins: pinmux_mcbsp1_pins { + pinctrl-single,pins = < + 0x14c 0x101 /* abedmic_clk2.abemcbsp1_fsx INPUT | MODE1 */ + 0x14e 0x9 /* abedmic_clk3.abemcbsp1_dx OUTPUT PULLDOWN | MODE1 */ + 0x150 0x101 /* abeslimbus1_clock.abemcbsp1_clkx INPUT | MODE0 */ + 0x152 0x109 /* abeslimbus1_data.abemcbsp1_dr INPUT PULLDOWN | MODE1 */ + >; + }; + + mcbsp2_pins: pinmux_mcbsp2_pins { + pinctrl-single,pins = < + 0x154 0x108 /* abemcbsp2_dr.abemcbsp2_dr INPUT PULLDOWN | MODE0 */ + 0x156 0x8 /* abemcbsp2_dx.abemcbsp2_dx OUTPUT PULLDOWN | MODE0 */ + 0x158 0x100 /* abemcbsp2_fsx.abemcbsp2_fsx INPUT | MODE0 */ + 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */ + >; + }; +}; + &mmc1 { vmmc-supply = <&vmmcsd_fixed>; bus-width = <4>;
Signature · 1 line
1.7.12
Tony Lindgren
maintainercover ARM: dts/OMAP: Pinmux audio configuration for OMAP4+
In reply to Peter UjfalusiQuoted 8 lines · Peter Ujfalusi
Hello,
u-boot recently stopped configuring 'non essential' pin mux. This change leaves the audio essential pins in non configured state which prevents the use of audio. The following series makes sure that the needed pins are configured correctly by the kernel on OMAP4 and OMAP5.
Tony: can this series queued for 3.7?
Let's see if that's possible to avoid mysterious bug reports of things not working.
If we can't merge it, then it might be worth adding a warning that bails out early after some pin is checked or similar.
Regards,
Tony
Quoted 25 lines
Regards,
Peter
---
Peter Ujfalusi (9):
ARM: OMAP: board-4430-sdp: Pin mux configuration for audio needs
ARM: OMAP: board-omap4panda: Pin mux configuration for audio needs ARM/dts: omap4-panda: Disable unused audio IPs
ARM/dts: omap4-sdp: Disable unused McBSP3
ARM/dts: omap5-evm: Disable unused McBSP3
ARM/dts: omap4-sdp: pinmux configuration for audio ARM/dts: omap4-panda: pinmux configuration for audio ARM/dts: Add pinctrl driver entries for omap5
ARM/dts: omap5-evm: pinmux configuration for audioarch/arm/boot/dts/omap4-panda.dts | 47 +++++++++++++++++++++++++++ arch/arm/boot/dts/omap4-sdp.dts | 57 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/omap5-evm.dts | 58 ++++++++++++++++++++++++++++++++++ arch/arm/boot/dts/omap5.dtsi | 17 ++++++++++ arch/arm/mach-omap2/board-4430sdp.c | 26 +++++++++++++++ arch/arm/mach-omap2/board-omap4panda.c | 15 +++++++++ 6 files changed, 220 insertions(+)Signature · 1 line
1.7.12
cover ARM: dts/OMAP: Pinmux audio configuration for OMAP4+
Quoted 8 lines · Tony Lindgren
Quoted 7 lines · Peter Ujfalusi
Hello,
u-boot recently stopped configuring 'non essential' pin mux. This change leaves the audio essential pins in non configured state which prevents the use of audio. The following series makes sure that the needed pins are configured correctly by the kernel on OMAP4 and OMAP5.
Quoted 7 lines
Quoted 1 line
Tony: can this series queued for 3.7?
Let's see if that's possible to avoid mysterious bug reports of things not working.
If we can't merge it, then it might be worth adding a warning that bails out early after some pin is checked or similar.
With new enough u-boot the twl6040 fails to probe (mux for nirq2 and power GPIO is not configured) which leads to no audio on OMAP4/5. Adding another warning - and check - does not going to help to clarify the situation IMHO.
We can still enable the CONFIG_SYS_ENABLE_PADS_ALL in u-boot and recompile it, but this is disabled as default and to be frank there is no guaranty that this is going to be available let's say next week.
Signature · 5 lines
Péter -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html