Hi,
On Wed, Apr 23, 2014 at 05:50:18PM +0200, David Jander wrote:
This enables effectively swapping RX/TX pins on the external audio port
Signed-off-by: David Jander david@protonic.nl
Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt | 4 ++++ sound/soc/fsl/imx-sgtl5000.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt index e4acdd8..3afea85 100644 --- a/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt +++ b/Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt @@ -29,6 +29,10 @@ Required properties:
- mux-int-port : The internal port of the i.MX audio muxer (AUDMUX)
- mux-ext-port : The external port of the i.MX audio muxer
+Optional properties: +- ext-port-txrxen : Flag. Set to swap RX/TX signals on external port (set the
- IMX_AUDMUX_V2_PDCR_TXRXEN bit in the PDC register of the external port)
Note: The AUDMUX port numbering should start at 1, which is consistent with hardware manual.
You could also try to use the simple sound card and use DT properties to setup audmux.
This is a configuration example for the audmux: &audmux { status = "okay";
aud4 { fsl,audmux-port = <MX31_AUDMUX_PORT4_SSI_PINS_4>; fsl,port-config = < (IMX_AUDMUX_V2_PTCR_SYN | IMX_AUDMUX_V2_PTCR_TFSDIR | IMX_AUDMUX_V2_PTCR_TFSEL(MX31_AUDMUX_PORT1_SSI0) | IMX_AUDMUX_V2_PTCR_TCLKDIR | IMX_AUDMUX_V2_PTCR_TCSEL(MX31_AUDMUX_PORT1_SSI0)) IMX_AUDMUX_V2_PDCR_RXDSEL(MX31_AUDMUX_PORT1_SSI0) >; }; };
Regards,
Markus
diff --git a/sound/soc/fsl/imx-sgtl5000.c b/sound/soc/fsl/imx-sgtl5000.c index 1cb22dd..b543fa6 100644 --- a/sound/soc/fsl/imx-sgtl5000.c +++ b/sound/soc/fsl/imx-sgtl5000.c @@ -63,6 +63,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev) struct i2c_client *codec_dev; struct imx_sgtl5000_data *data = NULL; int int_port, ext_port;
unsigned int ext_txrxen = 0; int ret;
ret = of_property_read_u32(np, "mux-int-port", &int_port);
@@ -75,6 +76,8 @@ static int imx_sgtl5000_probe(struct platform_device *pdev) dev_err(&pdev->dev, "mux-ext-port missing or invalid\n"); return ret; }
if (of_property_read_bool(np, "ext-port-txrxen"))
ext_txrxen = IMX_AUDMUX_V2_PDCR_TXRXEN;
/*
- The port numbering in the hardware manual starts at 1, while
@@ -95,7 +98,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev) } ret = imx_audmux_v2_configure_port(ext_port, IMX_AUDMUX_V2_PTCR_SYN,
IMX_AUDMUX_V2_PDCR_RXDSEL(int_port));
if (ret) { dev_err(&pdev->dev, "audmux external port setup failed\n"); return ret;IMX_AUDMUX_V2_PDCR_RXDSEL(int_port) | ext_txrxen);
-- 1.9.1