]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - sound/soc/fsl/imx-sgtl5000.c
ASoC: fsl: make audmux optional for i.MX6UL support
[karo-tx-linux.git] / sound / soc / fsl / imx-sgtl5000.c
index b99e0b5e00e9b98e2151fb6f4780d78467be4000..7cefb4065266e1606e91bdbdec84d98136fb7a3f 100644 (file)
@@ -65,40 +65,42 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
        int int_port, ext_port;
        int ret;
 
-       ret = of_property_read_u32(np, "mux-int-port", &int_port);
-       if (ret) {
-               dev_err(&pdev->dev, "mux-int-port missing or invalid\n");
-               return ret;
-       }
-       ret = of_property_read_u32(np, "mux-ext-port", &ext_port);
-       if (ret) {
-               dev_err(&pdev->dev, "mux-ext-port missing or invalid\n");
-               return ret;
-       }
-
-       /*
-        * The port numbering in the hardware manual starts at 1, while
-        * the audmux API expects it starts at 0.
-        */
-       int_port--;
-       ext_port--;
-       ret = imx_audmux_v2_configure_port(int_port,
-                       IMX_AUDMUX_V2_PTCR_SYN |
-                       IMX_AUDMUX_V2_PTCR_TFSEL(ext_port) |
-                       IMX_AUDMUX_V2_PTCR_TCSEL(ext_port) |
-                       IMX_AUDMUX_V2_PTCR_TFSDIR |
-                       IMX_AUDMUX_V2_PTCR_TCLKDIR,
-                       IMX_AUDMUX_V2_PDCR_RXDSEL(ext_port));
-       if (ret) {
-               dev_err(&pdev->dev, "audmux internal port setup failed\n");
-               return ret;
-       }
-       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;
+       if (!of_property_read_bool(np, "fsl,no-audmux")) {
+               ret = of_property_read_u32(np, "mux-int-port", &int_port);
+               if (ret) {
+                       dev_err(&pdev->dev, "mux-int-port missing or invalid\n");
+                       return ret;
+               }
+               ret = of_property_read_u32(np, "mux-ext-port", &ext_port);
+               if (ret) {
+                       dev_err(&pdev->dev, "mux-ext-port missing or invalid\n");
+                       return ret;
+               }
+
+               /*
+                * The port numbering in the hardware manual starts at 1, while
+                * the audmux API expects it starts at 0.
+                */
+               int_port--;
+               ext_port--;
+               ret = imx_audmux_v2_configure_port(int_port,
+                               IMX_AUDMUX_V2_PTCR_SYN |
+                               IMX_AUDMUX_V2_PTCR_TFSEL(ext_port) |
+                               IMX_AUDMUX_V2_PTCR_TCSEL(ext_port) |
+                               IMX_AUDMUX_V2_PTCR_TFSDIR |
+                               IMX_AUDMUX_V2_PTCR_TCLKDIR,
+                               IMX_AUDMUX_V2_PDCR_RXDSEL(ext_port));
+               if (ret) {
+                       dev_err(&pdev->dev, "audmux internal port setup failed\n");
+                       return ret;
+               }
+               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;
+               }
        }
 
        ssi_np = of_parse_phandle(pdev->dev.of_node, "ssi-controller", 0);