[alsa-devel] [PATCH v2 0/9] imx patches when I enable imx6q sabrelite audio
Changes in v2:
- change dt peroperty/label to lower case as much as possible keep XXX-supply property upper case. - convert audmux-v2 to platform device driver - move audmux-v2 driver to sound/soc/imx
[PATCH v2 1/9] ARM: mxc: make imx_dma_is_general_purpose more [PATCH v2 2/9] ARM: imx6q: add cko1 clock [PATCH v2 3/9] ARM: dts: imx6q-sabrelite: add 2p5v and 3p3v [PATCH v2 4/9] ARM: dts: imx6q-sabrelite: add sgtl5000 audio codec [PATCH v2 5/9] ARM: mxc: convert audmux-v2 to a platform driver [PATCH v2 6/9] ARM: mx31ads: add audmux device [PATCH v2 7/9] ARM: mxc: move audmux-v2 to sound/soc/imx [PATCH v2 8/9] ASoC: imx: add dt support for audmux-v2 [PATCH v2 9/9] ARM: imx6q-sabrelite: add audmux support
Thanks Richard
sdma device names vary for different SoC. So we just check whether it includes "sdma" substring.
Signed-off-by: Richard Zhao richard.zhao@linaro.org Acked-by: Sascha Hauer s.hauer@pengutronix.de --- arch/arm/plat-mxc/include/mach/dma.h | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/arch/arm/plat-mxc/include/mach/dma.h b/arch/arm/plat-mxc/include/mach/dma.h index 233d0a5..1b90803 100644 --- a/arch/arm/plat-mxc/include/mach/dma.h +++ b/arch/arm/plat-mxc/include/mach/dma.h @@ -60,8 +60,7 @@ static inline int imx_dma_is_ipu(struct dma_chan *chan)
static inline int imx_dma_is_general_purpose(struct dma_chan *chan) { - return !strcmp(dev_name(chan->device->dev), "imx31-sdma") || - !strcmp(dev_name(chan->device->dev), "imx35-sdma") || + return strstr(dev_name(chan->device->dev), "sdma") || !strcmp(dev_name(chan->device->dev), "imx-dma"); }
- add DEF_CLK_1B to define clocks using one bit gate - add cko1 clock and set ahb as the default parent
imx6q-sabrelite board use it as audio codec clock.
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/mach-imx/clock-imx6q.c | 74 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 73 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-imx/clock-imx6q.c b/arch/arm/mach-imx/clock-imx6q.c index 2d88f8b..111c328 100644 --- a/arch/arm/mach-imx/clock-imx6q.c +++ b/arch/arm/mach-imx/clock-imx6q.c @@ -329,6 +329,12 @@ #define BM_CLPCR_MASK_SCU_IDLE (0x1 << 26) #define BM_CLPCR_MASK_L2CC_IDLE (0x1 << 27)
+#define BP_CCOSR_CKO1_EN 7 +#define BP_CCOSR_CKO1_PODF 4 +#define BM_CCOSR_CKO1_PODF (0x7 << 4) +#define BP_CCOSR_CKO1_SEL 0 +#define BM_CCOSR_CKO1_SEL (0xf << 0) + #define FREQ_480M 480000000 #define FREQ_528M 528000000 #define FREQ_594M 594000000 @@ -393,6 +399,7 @@ static struct clk ipu1_di1_clk; static struct clk ipu2_di0_clk; static struct clk ipu2_di1_clk; static struct clk enfc_clk; +static struct clk cko1_clk; static struct clk dummy_clk = {};
static unsigned long external_high_reference; @@ -938,6 +945,24 @@ static void _clk_disable(struct clk *clk) writel_relaxed(reg, clk->enable_reg); }
+static int _clk_enable_1b(struct clk *clk) +{ + u32 reg; + reg = readl_relaxed(clk->enable_reg); + reg |= 0x1 << clk->enable_shift; + writel_relaxed(reg, clk->enable_reg); + + return 0; +} + +static void _clk_disable_1b(struct clk *clk) +{ + u32 reg; + reg = readl_relaxed(clk->enable_reg); + reg &= ~(0x1 << clk->enable_shift); + writel_relaxed(reg, clk->enable_reg); +} + struct divider { struct clk *clk; void __iomem *reg; @@ -983,6 +1008,7 @@ DEF_CLK_DIV1(ipu2_di0_pre_div, &ipu2_di0_pre_clk, CSCDR2, IPU2_DI0_PRE); DEF_CLK_DIV1(ipu2_di1_pre_div, &ipu2_di1_pre_clk, CSCDR2, IPU2_DI1_PRE); DEF_CLK_DIV1(ipu1_div, &ipu1_clk, CSCDR3, IPU1_HSP); DEF_CLK_DIV1(ipu2_div, &ipu2_clk, CSCDR3, IPU2_HSP); +DEF_CLK_DIV1(cko1_div, &cko1_clk, CCOSR, CKO1);
#define DEF_CLK_DIV2(d, c, r, b) \ static struct divider d = { \ @@ -1038,6 +1064,7 @@ static struct divider *dividers[] = { &enfc_div, &spdif_div, &asrc_serial_div, + &cko1_div, };
static unsigned long ldb_di_clk_get_rate(struct clk *clk) @@ -1625,6 +1652,32 @@ DEF_IPU_DI_MUX(CSCDR2, 2, 1); DEF_IPU_MUX(1); DEF_IPU_MUX(2);
+static struct multiplexer cko1_mux = { + .clk = &cko1_clk, + .reg = CCOSR, + .bp = BP_CCOSR_CKO1_SEL, + .bm = BM_CCOSR_CKO1_SEL, + .parents = { + &pll3_usb_otg, + &pll2_bus, + &pll1_sys, + &pll5_video, + &dummy_clk, + &axi_clk, + &enfc_clk, + &ipu1_di0_clk, + &ipu1_di1_clk, + &ipu2_di0_clk, + &ipu2_di1_clk, + &ahb_clk, + &ipg_clk, + &ipg_perclk, + &ckil_clk, + &pll4_audio, + NULL + }, +}; + static struct multiplexer *multiplexers[] = { &axi_mux, &periph_mux, @@ -1667,6 +1720,7 @@ static struct multiplexer *multiplexers[] = { &ipu2_di1_mux, &ipu1_mux, &ipu2_mux, + &cko1_mux, };
static int _clk_set_parent(struct clk *clk, struct clk *parent) @@ -1690,7 +1744,7 @@ static int _clk_set_parent(struct clk *clk, struct clk *parent) break; i++; } - if (!m->parents[i]) + if (!m->parents[i] || m->parents[i] == &dummy_clk) return -EINVAL;
val = readl_relaxed(m->reg); @@ -1745,6 +1799,20 @@ DEF_NG_CLK(asrc_serial_clk, &pll3_usb_otg); .secondary = s, \ }
+#define DEF_CLK_1B(name, er, es, p, s) \ + static struct clk name = { \ + .enable_reg = er, \ + .enable_shift = es, \ + .enable = _clk_enable_1b, \ + .disable = _clk_disable_1b, \ + .get_rate = _clk_get_rate, \ + .set_rate = _clk_set_rate, \ + .round_rate = _clk_round_rate, \ + .set_parent = _clk_set_parent, \ + .parent = p, \ + .secondary = s, \ + } + DEF_CLK(aips_tz1_clk, CCGR0, CG0, &ahb_clk, NULL); DEF_CLK(aips_tz2_clk, CCGR0, CG1, &ahb_clk, NULL); DEF_CLK(apbh_dma_clk, CCGR0, CG2, &ahb_clk, NULL); @@ -1811,6 +1879,7 @@ DEF_CLK(usdhc4_clk, CCGR6, CG4, &pll2_pfd_400m, NULL); DEF_CLK(emi_slow_clk, CCGR6, CG5, &axi_clk, NULL); DEF_CLK(vdo_axi_clk, CCGR6, CG6, &axi_clk, NULL); DEF_CLK(vpu_clk, CCGR6, CG7, &axi_clk, NULL); +DEF_CLK_1B(cko1_clk, CCOSR, BP_CCOSR_CKO1_EN, &pll2_bus, NULL);
static int pcie_clk_enable(struct clk *clk) { @@ -1922,6 +1991,7 @@ static struct clk_lookup lookups[] = { _REGISTER_CLOCK(NULL, "gpmi_io_clk", gpmi_io_clk), _REGISTER_CLOCK(NULL, "usboh3_clk", usboh3_clk), _REGISTER_CLOCK(NULL, "sata_clk", sata_clk), + _REGISTER_CLOCK(NULL, "cko1_clk", cko1_clk), };
int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) @@ -2029,6 +2099,8 @@ int __init mx6q_clocks_init(void) clk_set_rate(&usdhc3_clk, 49500000); clk_set_rate(&usdhc4_clk, 49500000);
+ clk_set_parent(&cko1_clk, &ahb_clk); + np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); base = of_iomap(np, 0); WARN_ON(!base);
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/boot/dts/imx6q-sabrelite.dts | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index 08d920d..cdc2ad6 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -46,4 +46,24 @@ }; }; }; + + regulators { + compatible = "simple-bus"; + + reg_2p5v: 2p5v { + compatible = "regulator-fixed"; + regulator-name = "2P5V"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + regulator-always-on; + }; + + reg_3p3v: 3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + }; };
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/boot/dts/imx6q-sabrelite.dts | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index cdc2ad6..3a9d32c 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -44,6 +44,18 @@ uart2: uart@021e8000 { status = "okay"; }; + + i2c@021a0000 { /* I2C1 */ + status = "okay"; + clock-frequency = <100000>; + + codec: sgtl5000@0a { + compatible = "fsl,sgtl5000"; + reg = <0x0a>; + VDDA-supply = <®_2p5v>; + VDDIO-supply = <®_3p3v>; + }; + }; }; };
Hi Richard,
On Thu, Feb 2, 2012 at 12:12 AM, Richard Zhao richard.zhao@linaro.org wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/boot/dts/imx6q-sabrelite.dts | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
I would like to test your audio support patch on mx6sabrelite, but the missing sound/soc/imx-sgtl5000.c does not allow me to do it.
I think you would better introduce sound/soc/imx-sgtl5000.c first (on separate patch series) so that people could test this patch without using the imx-sgtl5000.c implementation from the Linaro kernel.
Without imx-sgtl5000.c in place, this patch only introduces dead code at the moment.
Regards,
Fabio Estevam
On Thu, Feb 02, 2012 at 09:24:57AM -0200, Fabio Estevam wrote:
Hi Richard,
On Thu, Feb 2, 2012 at 12:12 AM, Richard Zhao richard.zhao@linaro.org wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/boot/dts/imx6q-sabrelite.dts | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
I would like to test your audio support patch on mx6sabrelite, but the missing sound/soc/imx-sgtl5000.c does not allow me to do it.
I have a test branch. I'll push to my linaro git on git.linaro.org tomorrow.
I think you would better introduce sound/soc/imx-sgtl5000.c first (on separate patch series) so that people could test this patch without using the imx-sgtl5000.c implementation from the Linaro kernel.
Without imx-sgtl5000.c in place, this patch only introduces dead code at the moment.
Each patch make sense too without sgtl5000.
Thanks Richard
Regards,
Fabio Estevam
On 2/2/12, Richard Zhao richard.zhao@linaro.org wrote:
Without imx-sgtl5000.c in place, this patch only introduces dead code at the moment.
Each patch make sense too without sgtl5000.
Well, as this patch goal is to provide audio support to mx6sabrelite, we need imx-sgtl5000 in place to test it, right? How can we know that don't get a kernel oops or something?
Regards,
Fabio Estevam
On Thu, Feb 02, 2012 at 12:15:52PM -0200, Fabio Estevam wrote:
On 2/2/12, Richard Zhao richard.zhao@linaro.org wrote:
Without imx-sgtl5000.c in place, this patch only introduces dead code at the moment.
Each patch make sense too without sgtl5000.
Well, as this patch goal is to provide audio support to mx6sabrelite, we need imx-sgtl5000 in place to test it, right?
My goal seem less important here. You see I'm adding more and more things into the patch series, which is out of my goal. The maintainers only consider right patch go to right git.
How can we know that don't get a kernel oops or something?
patch pass building is possible go to upstream too.
Regards,
Fabio Estevam
Plaform driver is more flexible and easy to add DT support.
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/plat-mxc/audmux-v2.c | 102 ++++++++++++++++++++++++++++++---------- 1 files changed, 76 insertions(+), 26 deletions(-)
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c index 8cced35..d53c029 100644 --- a/arch/arm/plat-mxc/audmux-v2.c +++ b/arch/arm/plat-mxc/audmux-v2.c @@ -24,6 +24,9 @@ #include <mach/audmux.h> #include <mach/hardware.h>
+#define DRIVER_NAME "audmux-v2" + +struct resource *audmux_res; static struct clk *audmux_clk; static void __iomem *audmux_base;
@@ -140,7 +143,7 @@ static const struct file_operations audmux_debugfs_fops = { .llseek = default_llseek, };
-static void audmux_debugfs_init(void) +static void __init audmux_debugfs_init(void) { int i; char buf[20]; @@ -159,10 +162,18 @@ static void audmux_debugfs_init(void) i); } } + +static void __exit audmux_debugfs_remove(void) +{ + debugfs_remove_recursive(audmux_debugfs_root); +} #else static inline void audmux_debugfs_init(void) { } +static void audmux_debugfs_remove(void) +{ +} #endif
int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr, @@ -184,36 +195,75 @@ int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr, } EXPORT_SYMBOL_GPL(mxc_audmux_v2_configure_port);
-static int mxc_audmux_v2_init(void) +static int __init mxc_audmux_v2_probe(struct platform_device *pdev) { - int ret; - if (cpu_is_mx51()) { - audmux_base = MX51_IO_ADDRESS(MX51_AUDMUX_BASE_ADDR); - } else if (cpu_is_mx31()) { - audmux_base = MX31_IO_ADDRESS(MX31_AUDMUX_BASE_ADDR); - } else if (cpu_is_mx35()) { - audmux_clk = clk_get(NULL, "audmux"); - if (IS_ERR(audmux_clk)) { - ret = PTR_ERR(audmux_clk); - printk(KERN_ERR "%s: cannot get clock: %d\n", __func__, - ret); - return ret; - } - audmux_base = MX35_IO_ADDRESS(MX35_AUDMUX_BASE_ADDR); - } else if (cpu_is_mx25()) { - audmux_clk = clk_get(NULL, "audmux"); - if (IS_ERR(audmux_clk)) { - ret = PTR_ERR(audmux_clk); - printk(KERN_ERR "%s: cannot get clock: %d\n", __func__, - ret); - return ret; - } - audmux_base = MX25_IO_ADDRESS(MX25_AUDMUX_BASE_ADDR); + struct resource *res; + resource_size_t res_size; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { + dev_err(&pdev->dev, "can't get device resources\n"); + return -ENOENT; + } + + res_size = resource_size(res); + + if (!request_mem_region(res->start, res_size, DRIVER_NAME)) { + dev_err(&pdev->dev, "request_mem_region failed\n"); + return -EBUSY; + } + + audmux_base = ioremap(res->start, res_size); + + if (!audmux_base) { + dev_err(&pdev->dev, "ioremap failed\n"); + release_mem_region(res->start, resource_size(res)); + return -EIO; + } + + audmux_clk = clk_get(&pdev->dev, "audmux"); + if (IS_ERR(audmux_clk)) { + dev_warn(&pdev->dev, "cannot get clock: %ld\n", + PTR_ERR(audmux_clk)); + audmux_clk = NULL; }
audmux_debugfs_init(); + audmux_res = res;
return 0; }
-postcore_initcall(mxc_audmux_v2_init); +static int __exit mxc_audmux_v2_remove(struct platform_device *pdev) +{ + audmux_debugfs_remove(); + clk_put(audmux_clk); + iounmap(audmux_base); + release_mem_region(audmux_res->start, resource_size(audmux_res)); + + return 0; +} + +static struct platform_driver mxc_audmux_v2_driver = { + .remove = __exit_p(mxc_audmux_v2_remove), + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + } +}; + +static int __init mxc_audmux_v2_init(void) +{ + return platform_driver_probe(&mxc_audmux_v2_driver, + mxc_audmux_v2_probe); +} +subsys_initcall(mxc_audmux_v2_init); + +static void __exit mxc_audmux_v2_exit(void) +{ + platform_driver_unregister(&mxc_audmux_v2_driver); +} +module_exit(mxc_audmux_v2_exit); + +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:" DRIVER_NAME);
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c index 4917aab..bb69e71 100644 --- a/arch/arm/mach-imx/mach-mx31ads.c +++ b/arch/arm/mach-imx/mach-mx31ads.c @@ -486,10 +486,20 @@ static unsigned int ssi_pins[] = { MX31_PIN_STXD5__STXD5, };
+static const struct resource audmux_res[] __initconst = { + { + .start = MX31_AUDMUX_BASE_ADDR, + .end = MX31_AUDMUX_SIZE, + .flags = IORESOURCE_MEM, + }, +}; + static void __init mxc_init_audio(void) { imx31_add_imx_ssi(0, NULL); mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi"); + imx_add_platform_device("audmux-v2", 0, + audmux_res, ARRAY_SIZE(audmux_res), NULL, 0); }
/* static mappings */ diff --git a/arch/arm/plat-mxc/include/mach/mx31.h b/arch/arm/plat-mxc/include/mach/mx31.h index e27619e..8a3d5ef 100644 --- a/arch/arm/plat-mxc/include/mach/mx31.h +++ b/arch/arm/plat-mxc/include/mach/mx31.h @@ -66,6 +66,7 @@ #define MX31_RNGA_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xb0000) #define MX31_IPU_CTRL_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xc0000) #define MX31_AUDMUX_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xc4000) +#define MX31_AUDMUX_SIZE (SZ_16K) #define MX31_MPEG4_ENC_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xc8000) #define MX31_GPIO1_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xcc000) #define MX31_GPIO2_BASE_ADDR (MX31_AIPS2_BASE_ADDR + 0xd0000)
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
$ git grep -n mxc_audmux_v2_configure_port sound/soc/imx/ sound/soc/imx/wm1133-ev1.c:277: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT1_SSI0, ptcr, pdcr); sound/soc/imx/wm1133-ev1.c:281: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT5_SSI_PINS_5, ptcr, pdcr);
I guess audmux device needs to be added for all these users. And for sake of bisect, it should be added as part of patch #5.
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files. Instead, I prefer to call it from machine driver like what wm1133-ev1 does below. Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
Regards, Shawn
$ git grep -n mxc_audmux_v2_configure_port sound/soc/imx/ sound/soc/imx/wm1133-ev1.c:277: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT1_SSI0, ptcr, pdcr); sound/soc/imx/wm1133-ev1.c:281: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT5_SSI_PINS_5, ptcr, pdcr);
I guess audmux device needs to be added for all these users. And for sake of bisect, it should be added as part of patch #5.
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
I didn't grep arch/arm. where is pc043 asoc machine file?
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files.
It don't corrupt git bisect. We don't have to include it in this patch.
Instead, I prefer to call it from machine driver like what wm1133-ev1 does below.
Maybe pass the info as asoc machine driver pdata.
Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
audux configuration may change after initial set. For example, it may use one configuration for audio playback, but use another when you connect a BT audio device.
Regards, Shawn
$ git grep -n mxc_audmux_v2_configure_port sound/soc/imx/ sound/soc/imx/wm1133-ev1.c:277: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT1_SSI0, ptcr, pdcr); sound/soc/imx/wm1133-ev1.c:281: mxc_audmux_v2_configure_port(MX31_AUDMUX_PORT5_SSI_PINS_5, ptcr, pdcr);
It's imx31ads board.
I guess audmux device needs to be added for all these users. And for sake of bisect, it should be added as part of patch #5.
Yes.
Thanks Richard
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
I didn't grep arch/arm. where is pc043 asoc machine file?
It seems to be sound/soc/imx/phycore-ac97.c.
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files.
It don't corrupt git bisect. We don't have to include it in this patch.
It's logically part of this series.
Instead, I prefer to call it from machine driver like what wm1133-ev1 does below.
Maybe pass the info as asoc machine driver pdata.
Sounds good.
Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
audux configuration may change after initial set. For example, it may use one configuration for audio playback, but use another when you connect a BT audio device.
Right. I forgot this point.
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
I didn't grep arch/arm. where is pc043 asoc machine file?
It seems to be sound/soc/imx/phycore-ac97.c.
You see, we're not famaliar with the boards.
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files.
It don't corrupt git bisect. We don't have to include it in this patch.
It's logically part of this series.
I don't know much about the above boards and I can not test either. I think I have to leave it to other volunteers. I mainly focus on audmux itself.
Instead, I prefer to call it from machine driver like what wm1133-ev1 does below.
Maybe pass the info as asoc machine driver pdata.
Sounds good.
Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
audux configuration may change after initial set. For example, it may use one configuration for audio playback, but use another when you connect a BT audio device.
Right. I forgot this point.
-- Regards, Shawn
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
It's logically part of this series.
I don't know much about the above boards and I can not test either. I think I have to leave it to other volunteers. I mainly focus on audmux itself.
For stuff like this a build test and CCing the relevant maintainers is fine, you don't need to test everything.
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
I didn't grep arch/arm. where is pc043 asoc machine file?
It seems to be sound/soc/imx/phycore-ac97.c.
You see, we're not famaliar with the boards.
It does not need to be familiar with the board to find that out. I'm not familiar with the board either, but I gave the answer.
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files.
It don't corrupt git bisect. We don't have to include it in this patch.
It's logically part of this series.
I don't know much about the above boards and I can not test either. I think I have to leave it to other volunteers. I mainly focus on audmux itself.
Since you get there, you should be the one cleaning that up. You will need to touch those board files anyway, since you need to add audmux device for those boards. So no hardware for testing is not an excuse. For those boards, all you need to do are:
* Change and compile-test the code * Cc board maintainers when submitting the patch
We will wait for board maintainers to respond for a reasonable period of time. If we do not get any response during the time, we will send patch upstream anyway.
adding Eric Bénard.
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ arch/arm/plat-mxc/include/mach/mx31.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-)
Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
It's machine specific code, though audmux driver is common. Might be ok? The asoc machine file for the above 3 boards is not platform driver, and don't get any plat info.
Sascha, Any suggestion? I saw pcm043 board was added by you.
I didn't grep arch/arm. where is pc043 asoc machine file?
It seems to be sound/soc/imx/phycore-ac97.c.
You see, we're not famaliar with the boards.
As we are moving audmux into sound/soc/imx, it makes less sense to still keep these calls in board files.
It don't corrupt git bisect. We don't have to include it in this patch.
It's logically part of this series.
I don't know much about the above boards and I can not test either. I think I have to leave it to other volunteers. I mainly focus on audmux itself.
Instead, I prefer to call it from machine driver like what wm1133-ev1 does below.
Maybe pass the info as asoc machine driver pdata.
Sorry, they're not platform drivers.
Sounds good.
Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
audux configuration may change after initial set. For example, it may use one configuration for audio playback, but use another when you connect a BT audio device.
Right. I forgot this point.
-- Regards, Shawn
On Fri, Feb 03, 2012 at 10:15:54AM +0800, Richard Zhao wrote:
adding Eric Bénard.
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote: > Signed-off-by: Richard Zhao richard.zhao@linaro.org > --- > arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ > arch/arm/plat-mxc/include/mach/mx31.h | 1 + > 2 files changed, 11 insertions(+), 0 deletions(-) > Hmm, let's see who are actually using mxc_audmux_v2_configure_port().
$ git grep -n mxc_audmux_v2_configure_port arch/arm/ arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254: mxc_audmux_v2_configure_port(4, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257: mxc_audmux_v2_configure_port(0, arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:365: mxc_audmux_v2_configure_port(3, arch/arm/mach-imx/mach-pcm043.c:371: mxc_audmux_v2_configure_port(0,
It's machine specific code, though audmux driver is common. Might be ok?
With audmux driver moved out, it's not ok to me to have board file call this function.
The asoc machine file for the above 3 boards is not platform driver, and don't get any plat info.
It can be nicely solved if we do these initial setup in audmux driver probe function with the configuration data retrieved from audmux platform data or device tree.
Shawn Guo shawn.guo@linaro.org wrote:
On Fri, Feb 03, 2012 at 10:15:54AM +0800, Richard Zhao wrote:
adding Eric Bénard.
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote: > On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao
wrote:
> > Signed-off-by: Richard Zhao richard.zhao@linaro.org > > --- > > arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ > > arch/arm/plat-mxc/include/mach/mx31.h | 1 + > > 2 files changed, 11 insertions(+), 0 deletions(-) > > > Hmm, let's see who are actually using
mxc_audmux_v2_configure_port().
> > $ git grep -n mxc_audmux_v2_configure_port arch/arm/ > arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246:
mxc_audmux_v2_configure_port(0,
> arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254:
mxc_audmux_v2_configure_port(4,
> arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257:
mxc_audmux_v2_configure_port(0,
> arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265:
mxc_audmux_v2_configure_port(3,
> arch/arm/mach-imx/mach-pcm043.c:365:
mxc_audmux_v2_configure_port(3,
> arch/arm/mach-imx/mach-pcm043.c:371:
mxc_audmux_v2_configure_port(0,
It's machine specific code, though audmux driver is common. Might be
ok?
With audmux driver moved out, it's not ok to me to have board file call this function.
The asoc machine file for the above 3 boards is not platform driver,
and
don't get any plat info.
It can be nicely solved if we do these initial setup in audmux driver probe function with the configuration data retrieved from audmux platform data or device tree.
no, it is asoc machine driver to have machine specific code. the machine driver do not correspond to any hw device, which cause hard to bind dt or create platform device.
-- Regards, Shawn
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Sun, Feb 05, 2012 at 12:50:15PM +0800, Richard Zhao wrote:
Shawn Guo shawn.guo@linaro.org wrote:
On Fri, Feb 03, 2012 at 10:15:54AM +0800, Richard Zhao wrote:
adding Eric Bénard.
On Thu, Feb 02, 2012 at 09:58:07PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote: > On Thu, Feb 02, 2012 at 04:55:23PM +0800, Shawn Guo wrote: > > On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao
wrote:
> > > Signed-off-by: Richard Zhao richard.zhao@linaro.org > > > --- > > > arch/arm/mach-imx/mach-mx31ads.c | 10 ++++++++++ > > > arch/arm/plat-mxc/include/mach/mx31.h | 1 + > > > 2 files changed, 11 insertions(+), 0 deletions(-) > > > > > Hmm, let's see who are actually using
mxc_audmux_v2_configure_port().
> > > > $ git grep -n mxc_audmux_v2_configure_port arch/arm/ > > arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:246:
mxc_audmux_v2_configure_port(0,
> > arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c:254:
mxc_audmux_v2_configure_port(4,
> > arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:257:
mxc_audmux_v2_configure_port(0,
> > arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c:265:
mxc_audmux_v2_configure_port(3,
> > arch/arm/mach-imx/mach-pcm043.c:365:
mxc_audmux_v2_configure_port(3,
> > arch/arm/mach-imx/mach-pcm043.c:371:
mxc_audmux_v2_configure_port(0,
It's machine specific code, though audmux driver is common. Might be
ok?
With audmux driver moved out, it's not ok to me to have board file call this function.
The asoc machine file for the above 3 boards is not platform driver,
and
don't get any plat info.
It can be nicely solved if we do these initial setup in audmux driver probe function with the configuration data retrieved from audmux platform data or device tree.
no, it is asoc machine driver to have machine specific code. the machine driver do not correspond to any hw device, which cause hard to bind dt or create platform device.
I'll have to keep audmux driver in arch/, till ASOC machine driver has a way to get platfrom parameters.
Thanks Richard
-- Regards, Shawn
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Tue, Feb 14, 2012 at 09:35:07AM +0800, Richard Zhao wrote:
On Sun, Feb 05, 2012 at 12:50:15PM +0800, Richard Zhao wrote:
no, it is asoc machine driver to have machine specific code. the machine driver do not correspond to any hw device, which cause hard to bind dt or create platform device.
I'll have to keep audmux driver in arch/, till ASOC machine driver has a way to get platfrom parameters.
Machine drivers can easily get platform data, they're just regular drivers of whatever type so can get platform data in the same way that any other driver for their bus can.
On Mon, Feb 13, 2012 at 10:06:28PM -0800, Mark Brown wrote:
On Tue, Feb 14, 2012 at 09:35:07AM +0800, Richard Zhao wrote:
On Sun, Feb 05, 2012 at 12:50:15PM +0800, Richard Zhao wrote:
no, it is asoc machine driver to have machine specific code. the machine driver do not correspond to any hw device, which cause hard to bind dt or create platform device.
I'll have to keep audmux driver in arch/, till ASOC machine driver has a way to get platfrom parameters.
Machine drivers can easily get platform data, they're just regular drivers of whatever type so can get platform data in the same way that any other driver for their bus can.
Machine drivers don't correspond to any hw devices. If we create a virtual platform device, it'll be hard for DT binding.
Thanks Richard
On Tue, Feb 14, 2012 at 03:34:15PM +0800, Richard Zhao wrote:
On Mon, Feb 13, 2012 at 10:06:28PM -0800, Mark Brown wrote:
Machine drivers can easily get platform data, they're just regular drivers of whatever type so can get platform data in the same way that any other driver for their bus can.
Machine drivers don't correspond to any hw devices. If we create a virtual platform device, it'll be hard for DT binding.
As has been discussed repeatedly and at some considerable length the board design for audio is considered sufficiently interesting to be worth representing in the device tree directly, there are plenty of choices made during board design. There is absolutely no technical problem from doing this on the device tree side.
People working on device tree really need to talk to each other more...
On Thu, Feb 02, 2012 at 09:09:03PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 05:24:28PM +0800, Richard Zhao wrote:
On Thu, Feb 02, 2012 at 05:11:34PM +0800, Shawn Guo wrote:
...
Or we can simply make the it a audmux-self call with 3 parameters it needs retrieved from platform_data or device tree, so that machine driver does not even bother with the call. Makes sense?
audux configuration may change after initial set. For example, it may use one configuration for audio playback, but use another when you connect a BT audio device.
Right. I forgot this point.
With a second thought on this, we can still do this as long as we have mxc_audmux_v2_configure_port() exported. For init-time setup, we can just do it in audmux driver probe function.
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
static void __init mxc_init_audio(void) { imx31_add_imx_ssi(0, NULL); mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi");
- imx_add_platform_device("audmux-v2", 0,
audmux_res, ARRAY_SIZE(audmux_res), NULL, 0);
Since the audmux is a part of the SoC silicon shouldn't the SoC just register the device without individual boards having to do anything (possibly conditional on ASoC being selected in Kconfig or something)? It's going to be connected in exactly the same fashion on any system using the SoC.
On Thu, Feb 02, 2012 at 12:09:01PM +0000, Mark Brown wrote:
On Thu, Feb 02, 2012 at 10:12:05AM +0800, Richard Zhao wrote:
static void __init mxc_init_audio(void) { imx31_add_imx_ssi(0, NULL); mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi");
- imx_add_platform_device("audmux-v2", 0,
audmux_res, ARRAY_SIZE(audmux_res), NULL, 0);
Since the audmux is a part of the SoC silicon shouldn't the SoC just register the device without individual boards having to do anything (possibly conditional on ASoC being selected in Kconfig or something)? It's going to be connected in exactly the same fashion on any system using the SoC.
Hmm, we are trying to save adding the device for those boards which do not route any audmux pins out at all.
On Thu, Feb 02, 2012 at 09:17:18PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 12:09:01PM +0000, Mark Brown wrote:
Since the audmux is a part of the SoC silicon shouldn't the SoC just register the device without individual boards having to do anything (possibly conditional on ASoC being selected in Kconfig or something)? It's going to be connected in exactly the same fashion on any system using the SoC.
Hmm, we are trying to save adding the device for those boards which do not route any audmux pins out at all.
That's why I'm saying perhaps make it conditional on having ASoC built (or even on having the AUDMUX driver built).
On Thu, Feb 02, 2012 at 01:26:18PM +0000, Mark Brown wrote:
On Thu, Feb 02, 2012 at 09:17:18PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 12:09:01PM +0000, Mark Brown wrote:
Since the audmux is a part of the SoC silicon shouldn't the SoC just register the device without individual boards having to do anything (possibly conditional on ASoC being selected in Kconfig or something)? It's going to be connected in exactly the same fashion on any system using the SoC.
Hmm, we are trying to save adding the device for those boards which do not route any audmux pins out at all.
That's why I'm saying perhaps make it conditional on having ASoC built (or even on having the AUDMUX driver built).
Do you mean by having the below in some place like function imx31_soc_init()?
#ifdef CONFIG_SND_MXC_SOC_AUDMUXV2 imx_add_platform_device("audmux-v2", 0, audmux_res, ARRAY_SIZE(audmux_res), NULL, 0); #endif
I do not think it's nice and consistent to the way that imx sub-architecture adds platform device.
Furthermore, when a DT based board boots here, the code is broken. Explicitly adding the device by individual board as needed can easily align with DT based boards. By default, the audmux node in <soc>.dtsi file has status = "disabled", and any board that needs audmux device only need to overwrite status property of audmux node as 'okay' in its <board>.dts. Then DT core will add the audmux device when the board boots.
On Thu, Feb 02, 2012 at 10:11:26PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 01:26:18PM +0000, Mark Brown wrote:
That's why I'm saying perhaps make it conditional on having ASoC built (or even on having the AUDMUX driver built).
Do you mean by having the below in some place like function imx31_soc_init()?
#ifdef CONFIG_SND_MXC_SOC_AUDMUXV2 imx_add_platform_device("audmux-v2", 0, audmux_res, ARRAY_SIZE(audmux_res), NULL, 0); #endif
Yes (you need to check for module too, there's a macro for that the name of which escapes me right now).
I do not think it's nice and consistent to the way that imx sub-architecture adds platform device.
Well, the i.MX thus far has had relatively few of these always present type devices - it makes sense to make things conditional for devices with external signals but for things entirely within the SoC the above is less work.
Furthermore, when a DT based board boots here, the code is broken. Explicitly adding the device by individual board as needed can easily align with DT based boards. By default, the audmux node in <soc>.dtsi file has status = "disabled", and any board that needs audmux device only need to overwrite status property of audmux node as 'okay' in its <board>.dts. Then DT core will add the audmux device when the board boots.
That seems like more work than is needed for boards, same issue applies.
It's for clean up code under arch/arm.
audmux.h is shared with audmux-v1, leave it under mach/.
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/plat-mxc/Kconfig | 3 --- arch/arm/plat-mxc/Makefile | 1 - sound/soc/imx/Kconfig | 4 ++++ sound/soc/imx/Makefile | 2 ++ {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c | 0 5 files changed, 6 insertions(+), 4 deletions(-) rename {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c (100%)
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index dcebb12..9e47d9c 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -91,9 +91,6 @@ config ARCH_MXC_IOMUX_V3 config ARCH_MXC_AUDMUX_V1 bool
-config ARCH_MXC_AUDMUX_V2 - bool - config IRAM_ALLOC bool select GENERIC_ALLOCATOR diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile index 076db84f..0cd5d8a 100644 --- a/arch/arm/plat-mxc/Makefile +++ b/arch/arm/plat-mxc/Makefile @@ -15,7 +15,6 @@ obj-$(CONFIG_MXC_PWM) += pwm.o obj-$(CONFIG_MXC_ULPI) += ulpi.o obj-$(CONFIG_MXC_USE_EPIT) += epit.o obj-$(CONFIG_ARCH_MXC_AUDMUX_V1) += audmux-v1.o -obj-$(CONFIG_ARCH_MXC_AUDMUX_V2) += audmux-v2.o obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o obj-$(CONFIG_CPU_FREQ_IMX) += cpufreq.o ifdef CONFIG_SND_IMX_SOC diff --git a/sound/soc/imx/Kconfig b/sound/soc/imx/Kconfig index 7383917..f9eb436 100644 --- a/sound/soc/imx/Kconfig +++ b/sound/soc/imx/Kconfig @@ -17,10 +17,14 @@ config SND_MXC_SOC_FIQ config SND_MXC_SOC_MX2 tristate
+config SND_MXC_SOC_AUDMUXV2 + tristate + config SND_MXC_SOC_WM1133_EV1 tristate "Audio on the the i.MX31ADS with WM1133-EV1 fitted" depends on MACH_MX31ADS_WM1133_EV1 && EXPERIMENTAL select SND_SOC_WM8350 + select SND_MXC_SOC_AUDMUXV2 select SND_MXC_SOC_FIQ help Enable support for audio on the i.MX31ADS with the WM1133-EV1 diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile index d6d609b..703ab5e 100644 --- a/sound/soc/imx/Makefile +++ b/sound/soc/imx/Makefile @@ -2,10 +2,12 @@ snd-soc-imx-objs := imx-ssi.o snd-soc-imx-fiq-objs := imx-pcm-fiq.o snd-soc-imx-mx2-objs := imx-pcm-dma-mx2.o +snd-soc-imx-audmuxv2-objs := audmux-v2.o
obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o obj-$(CONFIG_SND_MXC_SOC_FIQ) += snd-soc-imx-fiq.o obj-$(CONFIG_SND_MXC_SOC_MX2) += snd-soc-imx-mx2.o +obj-$(CONFIG_SND_MXC_SOC_AUDMUXV2) += snd-soc-imx-audmuxv2.o
# i.MX Machine Support snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o diff --git a/arch/arm/plat-mxc/audmux-v2.c b/sound/soc/imx/audmux-v2.c similarity index 100% rename from arch/arm/plat-mxc/audmux-v2.c rename to sound/soc/imx/audmux-v2.c
On Thu, Feb 02, 2012 at 10:12:06AM +0800, Richard Zhao wrote:
It's for clean up code under arch/arm.
audmux.h is shared with audmux-v1, leave it under mach/.
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/plat-mxc/Kconfig | 3 --- arch/arm/plat-mxc/Makefile | 1 - sound/soc/imx/Kconfig | 4 ++++ sound/soc/imx/Makefile | 2 ++ {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c | 0 5 files changed, 6 insertions(+), 4 deletions(-) rename {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c (100%)
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index dcebb12..9e47d9c 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -91,9 +91,6 @@ config ARCH_MXC_IOMUX_V3 config ARCH_MXC_AUDMUX_V1 bool
-config ARCH_MXC_AUDMUX_V2
- bool
There are 4 more occurrences of the symbol to be removed together.
arch/arm/mach-imx/Kconfig:58: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:75: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:83: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:92: select ARCH_MXC_AUDMUX_V2
Regards, Shawn
config IRAM_ALLOC bool select GENERIC_ALLOCATOR diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile index 076db84f..0cd5d8a 100644 --- a/arch/arm/plat-mxc/Makefile +++ b/arch/arm/plat-mxc/Makefile @@ -15,7 +15,6 @@ obj-$(CONFIG_MXC_PWM) += pwm.o obj-$(CONFIG_MXC_ULPI) += ulpi.o obj-$(CONFIG_MXC_USE_EPIT) += epit.o obj-$(CONFIG_ARCH_MXC_AUDMUX_V1) += audmux-v1.o -obj-$(CONFIG_ARCH_MXC_AUDMUX_V2) += audmux-v2.o obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o obj-$(CONFIG_CPU_FREQ_IMX) += cpufreq.o ifdef CONFIG_SND_IMX_SOC diff --git a/sound/soc/imx/Kconfig b/sound/soc/imx/Kconfig index 7383917..f9eb436 100644 --- a/sound/soc/imx/Kconfig +++ b/sound/soc/imx/Kconfig @@ -17,10 +17,14 @@ config SND_MXC_SOC_FIQ config SND_MXC_SOC_MX2 tristate
+config SND_MXC_SOC_AUDMUXV2
- tristate
config SND_MXC_SOC_WM1133_EV1 tristate "Audio on the the i.MX31ADS with WM1133-EV1 fitted" depends on MACH_MX31ADS_WM1133_EV1 && EXPERIMENTAL select SND_SOC_WM8350
- select SND_MXC_SOC_AUDMUXV2 select SND_MXC_SOC_FIQ help Enable support for audio on the i.MX31ADS with the WM1133-EV1
diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile index d6d609b..703ab5e 100644 --- a/sound/soc/imx/Makefile +++ b/sound/soc/imx/Makefile @@ -2,10 +2,12 @@ snd-soc-imx-objs := imx-ssi.o snd-soc-imx-fiq-objs := imx-pcm-fiq.o snd-soc-imx-mx2-objs := imx-pcm-dma-mx2.o +snd-soc-imx-audmuxv2-objs := audmux-v2.o
obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o obj-$(CONFIG_SND_MXC_SOC_FIQ) += snd-soc-imx-fiq.o obj-$(CONFIG_SND_MXC_SOC_MX2) += snd-soc-imx-mx2.o +obj-$(CONFIG_SND_MXC_SOC_AUDMUXV2) += snd-soc-imx-audmuxv2.o
# i.MX Machine Support snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o diff --git a/arch/arm/plat-mxc/audmux-v2.c b/sound/soc/imx/audmux-v2.c similarity index 100% rename from arch/arm/plat-mxc/audmux-v2.c rename to sound/soc/imx/audmux-v2.c --
On Thu, Feb 02, 2012 at 05:02:50PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:06AM +0800, Richard Zhao wrote:
It's for clean up code under arch/arm.
audmux.h is shared with audmux-v1, leave it under mach/.
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/plat-mxc/Kconfig | 3 --- arch/arm/plat-mxc/Makefile | 1 - sound/soc/imx/Kconfig | 4 ++++ sound/soc/imx/Makefile | 2 ++ {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c | 0 5 files changed, 6 insertions(+), 4 deletions(-) rename {arch/arm/plat-mxc => sound/soc/imx}/audmux-v2.c (100%)
diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index dcebb12..9e47d9c 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -91,9 +91,6 @@ config ARCH_MXC_IOMUX_V3 config ARCH_MXC_AUDMUX_V1 bool
-config ARCH_MXC_AUDMUX_V2
- bool
There are 4 more occurrences of the symbol to be removed together.
arch/arm/mach-imx/Kconfig:58: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:75: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:83: select ARCH_MXC_AUDMUX_V2 arch/arm/mach-imx/Kconfig:92: select ARCH_MXC_AUDMUX_V2
right.
Thanks Richard
Regards, Shawn
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- .../bindings/sound/soc/imx/audmux-v2.txt | 11 +++++++++++ sound/soc/imx/audmux-v2.c | 8 ++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/soc/imx/audmux-v2.txt
diff --git a/Documentation/devicetree/bindings/sound/soc/imx/audmux-v2.txt b/Documentation/devicetree/bindings/sound/soc/imx/audmux-v2.txt new file mode 100644 index 0000000..b8ec5aa --- /dev/null +++ b/Documentation/devicetree/bindings/sound/soc/imx/audmux-v2.txt @@ -0,0 +1,11 @@ +* Freescale audmux device for imx3, imx5, imx6 etc. + +Required properties: +- compatible : "fsl,imx31-audmux". + +Example: + +audmux@021d8000 { + compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; + reg = <0x021d8000 0x4000>; +}; diff --git a/sound/soc/imx/audmux-v2.c b/sound/soc/imx/audmux-v2.c index d53c029..af42fca 100644 --- a/sound/soc/imx/audmux-v2.c +++ b/sound/soc/imx/audmux-v2.c @@ -20,7 +20,9 @@ #include <linux/io.h> #include <linux/clk.h> #include <linux/debugfs.h> +#include <linux/platform_device.h> #include <linux/slab.h> +#include <linux/of.h> #include <mach/audmux.h> #include <mach/hardware.h>
@@ -244,11 +246,17 @@ static int __exit mxc_audmux_v2_remove(struct platform_device *pdev) return 0; }
+static const struct of_device_id audmux_v2_dt_ids[] = { + { .compatible = "fsl,imx31-audmux", }, + { /* sentinel */ } +}; + static struct platform_driver mxc_audmux_v2_driver = { .remove = __exit_p(mxc_audmux_v2_remove), .driver = { .name = DRIVER_NAME, .owner = THIS_MODULE, + .of_match_table = audmux_v2_dt_ids, } };
On Thu, Feb 02, 2012 at 10:12:07AM +0800, Richard Zhao wrote:
+Required properties: +- compatible : "fsl,imx31-audmux".
+Example:
+audmux@021d8000 {
- compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux";
- reg = <0x021d8000 0x4000>;
It's kind of obvious what it is but you should really document the reg property for completeness.
On Thu, Feb 02, 2012 at 12:10:20PM +0000, Mark Brown wrote:
On Thu, Feb 02, 2012 at 10:12:07AM +0800, Richard Zhao wrote:
+Required properties: +- compatible : "fsl,imx31-audmux".
+Example:
+audmux@021d8000 {
- compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux";
- reg = <0x021d8000 0x4000>;
It's kind of obvious what it is but you should really document the reg property for completeness.
Right.
Thanks Richard
- enable audmux in dts - enable audmux in Kconfig
Signed-off-by: Richard Zhao richard.zhao@linaro.org --- arch/arm/boot/dts/imx6q-sabrelite.dts | 4 ++++ arch/arm/boot/dts/imx6q.dtsi | 2 ++ arch/arm/mach-imx/Kconfig | 1 + 3 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index 3a9d32c..5cd6698 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -41,6 +41,10 @@ status = "okay"; };
+ audmux@021d8000 { + status = "okay"; + }; + uart2: uart@021e8000 { status = "okay"; }; diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 263e8f3..b0ae495 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -527,7 +527,9 @@ };
audmux@021d8000 { + compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; reg = <0x021d8000 0x4000>; + status = "disabled"; };
mipi@021dc000 { /* MIPI-CSI */ diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 4defb97..1aec9c1 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -835,6 +835,7 @@ comment "i.MX6 family:" config SOC_IMX6Q bool "i.MX6 Quad support" select ARM_CPU_SUSPEND if PM + select ARCH_MXC_AUDMUX_V2 select ARM_GIC select CPU_V7 select HAVE_ARM_SCU
On Thu, Feb 02, 2012 at 10:12:08AM +0800, Richard Zhao wrote:
- enable audmux in dts
- enable audmux in Kconfig
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/boot/dts/imx6q-sabrelite.dts | 4 ++++ arch/arm/boot/dts/imx6q.dtsi | 2 ++ arch/arm/mach-imx/Kconfig | 1 + 3 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index 3a9d32c..5cd6698 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -41,6 +41,10 @@ status = "okay"; };
audmux@021d8000 {
status = "okay";
};
uart2: uart@021e8000 { status = "okay"; };
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 263e8f3..b0ae495 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -527,7 +527,9 @@ };
audmux@021d8000 {
compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; reg = <0x021d8000 0x4000>;
status = "disabled"; }; mipi@021dc000 { /* MIPI-CSI */
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 4defb97..1aec9c1 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -835,6 +835,7 @@ comment "i.MX6 family:" config SOC_IMX6Q bool "i.MX6 Quad support" select ARM_CPU_SUSPEND if PM
- select ARCH_MXC_AUDMUX_V2
The ARCH_MXC_AUDMUX_V2 has been removed by patch #7. Why do you select it here?
Regards, Shawn
select ARM_GIC select CPU_V7 select HAVE_ARM_SCU -- 1.7.5.4
On Thu, Feb 02, 2012 at 04:30:24PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:12:08AM +0800, Richard Zhao wrote:
- enable audmux in dts
- enable audmux in Kconfig
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/boot/dts/imx6q-sabrelite.dts | 4 ++++ arch/arm/boot/dts/imx6q.dtsi | 2 ++ arch/arm/mach-imx/Kconfig | 1 + 3 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index 3a9d32c..5cd6698 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -41,6 +41,10 @@ status = "okay"; };
audmux@021d8000 {
status = "okay";
};
uart2: uart@021e8000 { status = "okay"; };
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 263e8f3..b0ae495 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -527,7 +527,9 @@ };
audmux@021d8000 {
compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; reg = <0x021d8000 0x4000>;
status = "disabled"; }; mipi@021dc000 { /* MIPI-CSI */
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 4defb97..1aec9c1 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -835,6 +835,7 @@ comment "i.MX6 family:" config SOC_IMX6Q bool "i.MX6 Quad support" select ARM_CPU_SUSPEND if PM
- select ARCH_MXC_AUDMUX_V2
The ARCH_MXC_AUDMUX_V2 has been removed by patch #7. Why do you select it here?
I forgot to remove it when rebase. I can be removed.
Thanks Richard
Regards, Shawn
select ARM_GIC select CPU_V7 select HAVE_ARM_SCU -- 1.7.5.4
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Thu, Feb 02, 2012 at 10:12:08AM +0800, Richard Zhao wrote:
- enable audmux in dts
- enable audmux in Kconfig
Signed-off-by: Richard Zhao richard.zhao@linaro.org
arch/arm/boot/dts/imx6q-sabrelite.dts | 4 ++++ arch/arm/boot/dts/imx6q.dtsi | 2 ++ arch/arm/mach-imx/Kconfig | 1 + 3 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts index 3a9d32c..5cd6698 100644 --- a/arch/arm/boot/dts/imx6q-sabrelite.dts +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts @@ -41,6 +41,10 @@ status = "okay"; };
audmux@021d8000 {
status = "okay";
};
uart2: uart@021e8000 { status = "okay"; };
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 263e8f3..b0ae495 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -527,7 +527,9 @@ };
audmux@021d8000 {
compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux"; reg = <0x021d8000 0x4000>;
status = "disabled"; }; mipi@021dc000 { /* MIPI-CSI */
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 4defb97..1aec9c1 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -835,6 +835,7 @@ comment "i.MX6 family:" config SOC_IMX6Q bool "i.MX6 Quad support" select ARM_CPU_SUSPEND if PM
- select ARCH_MXC_AUDMUX_V2
The symbol has been removed by patch #7. Why do you need to select it here?
Regards, Shawn
select ARM_GIC select CPU_V7 select HAVE_ARM_SCU --
On Thu, Feb 02, 2012 at 10:11:59AM +0800, Richard Zhao wrote:
Changes in v2:
- change dt peroperty/label to lower case as much as possible keep XXX-supply property upper case.
- convert audmux-v2 to platform device driver
- move audmux-v2 driver to sound/soc/imx
[PATCH v2 1/9] ARM: mxc: make imx_dma_is_general_purpose more [PATCH v2 2/9] ARM: imx6q: add cko1 clock [PATCH v2 3/9] ARM: dts: imx6q-sabrelite: add 2p5v and 3p3v [PATCH v2 4/9] ARM: dts: imx6q-sabrelite: add sgtl5000 audio codec
I applied patch 1 ~ 4. Thanks.
Regards, Shawn
[PATCH v2 5/9] ARM: mxc: convert audmux-v2 to a platform driver [PATCH v2 6/9] ARM: mx31ads: add audmux device [PATCH v2 7/9] ARM: mxc: move audmux-v2 to sound/soc/imx [PATCH v2 8/9] ASoC: imx: add dt support for audmux-v2 [PATCH v2 9/9] ARM: imx6q-sabrelite: add audmux support
On Mon, Feb 27, 2012 at 03:59:02PM +0800, Shawn Guo wrote:
On Thu, Feb 02, 2012 at 10:11:59AM +0800, Richard Zhao wrote:
Changes in v2:
- change dt peroperty/label to lower case as much as possible keep XXX-supply property upper case.
- convert audmux-v2 to platform device driver
- move audmux-v2 driver to sound/soc/imx
[PATCH v2 1/9] ARM: mxc: make imx_dma_is_general_purpose more [PATCH v2 2/9] ARM: imx6q: add cko1 clock [PATCH v2 3/9] ARM: dts: imx6q-sabrelite: add 2p5v and 3p3v [PATCH v2 4/9] ARM: dts: imx6q-sabrelite: add sgtl5000 audio codec
I applied patch 1 ~ 4. Thanks.
Thanks. I'll continue to work on other patches in this series after your audio work get it. and feel free to take any patch you need.
Richard
Regards, Shawn
[PATCH v2 5/9] ARM: mxc: convert audmux-v2 to a platform driver [PATCH v2 6/9] ARM: mx31ads: add audmux device [PATCH v2 7/9] ARM: mxc: move audmux-v2 to sound/soc/imx [PATCH v2 8/9] ASoC: imx: add dt support for audmux-v2 [PATCH v2 9/9] ARM: imx6q-sabrelite: add audmux support
linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
participants (5)
-
Fabio Estevam
-
Mark Brown
-
Richard Zhao
-
Richard Zhao
-
Shawn Guo