* [RFC 0/9] ASoC: fsl-ssi: offline/online configuration and cleanups @ 2013-11-15 15:49 Markus Pargmann [not found] ` <1384530584-31273-5-git-send-email-mpa@pengutronix.de> [not found] ` <1384530584-31273-10-git-send-email-mpa@pengutronix.de> 0 siblings, 2 replies; 4+ messages in thread From: Markus Pargmann @ 2013-11-15 15:49 UTC (permalink / raw) To: linux-arm-kernel Hi, This patch series fixes some fsl-ssi code that does not act exactly as it is described in the reference manuals. The reference manuals before imx50 do mention that some register bits, including TDMAE/RDMAE, should not be changed while the SSI unit is enabled (SSIEN). At the same time the SDMA unit has a undefined request handling if there are DMA requests before the SDMA engine and its channel is configured. The reference manual states that SSI DMA requests are sent as soon as the FIFO and the DMAE bits are enabled. It does not mention a dependency to SCR's TE/RE bit. To avoid sending DMA requests before a channel is configured, we have to seperate the fsl-ssi behavior into offline and online configuration. SoCs before imx50 have to use offline configuration while later SoC versions can use online reconfiguration. This series adds support for online configuration and cleans up the configuration register code especially in fsl_ssi_trigger. At the end we have a seperation between enable/disable logic and the actual configuration register values used to enable/disable TX/RX. I tested this series on mx53. Regards, Markus Markus Pargmann (9): ASoC: fsl-ssi: Drop AC97 debug register usage ASoC: fsl-ssi: Move ac97 specific setup to seperate function ASoC: fsl-ssi: Move sysfs stats to debugfs ASoC: fsl-ssi: Add imx50-ssi and of_device_id matching ASoC: fsl-ssi: Add offline_config flag ASoC: fsl-ssi: Add configuration helper functions ASoC: fsl-ssi: Move RX/TX configuration to seperate functions ASoC: fsl-ssi: Drop ac97 specific trigger function ARM: DTS: imx5* imx6*, use imx50-ssi arch/arm/boot/dts/imx51.dtsi | 6 +- arch/arm/boot/dts/imx53.dtsi | 6 +- arch/arm/boot/dts/imx6qdl.dtsi | 6 +- arch/arm/boot/dts/imx6sl.dtsi | 6 +- sound/soc/fsl/fsl_ssi.c | 580 ++++++++++++++++++++++++++--------------- 5 files changed, 389 insertions(+), 215 deletions(-) -- 1.8.4.2 ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <1384530584-31273-5-git-send-email-mpa@pengutronix.de>]
* [RFC 4/9] ASoC: fsl-ssi: Add imx50-ssi and of_device_id matching [not found] ` <1384530584-31273-5-git-send-email-mpa@pengutronix.de> @ 2013-11-18 1:38 ` Shawn Guo 0 siblings, 0 replies; 4+ messages in thread From: Shawn Guo @ 2013-11-18 1:38 UTC (permalink / raw) To: linux-arm-kernel On Fri, Nov 15, 2013 at 04:49:39PM +0100, Markus Pargmann wrote: > @@ -190,6 +190,20 @@ struct fsl_ssi_private { > char name[1]; > }; > > +enum fsl_ssi_type { > + FSL_SSI_MCP8610, > + FSL_SSI_MX21, > + FSL_SSI_MX50, > +}; > + > +static const struct of_device_id fsl_ssi_ids[] = { > + { .compatible = "fsl,mpc8610-ssi", .data = (void *) FSL_SSI_MCP8610}, > + { .compatible = "fsl,imx21-ssi", .data = (void *) FSL_SSI_MX21}, > + { .compatible = "fsl,imx50-ssi", .data = (void *) FSL_SSI_MX50}, As a good practice, please sort it from the specific to the generic. That said, "fsl,imx50-ssi" should be put before "fsl,imx21-ssi". Shawn > + {} > +}; > +MODULE_DEVICE_TABLE(of, fsl_ssi_ids); ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <1384530584-31273-10-git-send-email-mpa@pengutronix.de>]
* [RFC 9/9] ARM: DTS: imx5* imx6*, use imx50-ssi [not found] ` <1384530584-31273-10-git-send-email-mpa@pengutronix.de> @ 2013-11-18 2:02 ` Shawn Guo 2013-11-18 13:42 ` Markus Pargmann 0 siblings, 1 reply; 4+ messages in thread From: Shawn Guo @ 2013-11-18 2:02 UTC (permalink / raw) To: linux-arm-kernel On Fri, Nov 15, 2013 at 04:49:44PM +0100, Markus Pargmann wrote: > imx50-ssi and imx21-ssi are different IPs. imx50-ssi supports online > reconfiguration and needs this for correct interaction with SDMA. Move > from imx21-ssi to imx50-ssi for all imx5/imx6 SoCs. > > Signed-off-by: Markus Pargmann <mpa@pengutronix.de> > --- > arch/arm/boot/dts/imx51.dtsi | 6 +++--- > arch/arm/boot/dts/imx53.dtsi | 6 +++--- > arch/arm/boot/dts/imx6qdl.dtsi | 6 +++--- > arch/arm/boot/dts/imx6sl.dtsi | 6 +++--- > 4 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi > index 54cee65..22d4dbe 100644 > --- a/arch/arm/boot/dts/imx51.dtsi > +++ b/arch/arm/boot/dts/imx51.dtsi > @@ -150,7 +150,7 @@ > }; > > ssi2: ssi at 70014000 { > - compatible = "fsl,imx51-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx51-ssi", "fsl,imx50-ssi"; Instead of replacing "fsl,imx21-ssi" with "fsl,imx50-ssi", we may want to just add "fsl,imx50-ssi" in the middle to maintain the compatible history. Note, it only works with the change I suggested on of_device_id table order. The bonus point of doing so is that we will not have git bisect issue to worry about with merging this patch and others in the series via different tree. Shawn > reg = <0x70014000 0x4000>; > interrupts = <30>; > clocks = <&clks 49>; > @@ -427,7 +427,7 @@ > }; > > ssi1: ssi at 83fcc000 { > - compatible = "fsl,imx51-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx51-ssi", "fsl,imx50-ssi"; > reg = <0x83fcc000 0x4000>; > interrupts = <29>; > clocks = <&clks 48>; > @@ -479,7 +479,7 @@ > }; > > ssi3: ssi at 83fe8000 { > - compatible = "fsl,imx51-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx51-ssi", "fsl,imx50-ssi"; > reg = <0x83fe8000 0x4000>; > interrupts = <96>; > clocks = <&clks 50>; > diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi > index 4307e80..f1077f2 100644 > --- a/arch/arm/boot/dts/imx53.dtsi > +++ b/arch/arm/boot/dts/imx53.dtsi > @@ -149,7 +149,7 @@ > }; > > ssi2: ssi at 50014000 { > - compatible = "fsl,imx53-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx53-ssi", "fsl,imx50-ssi"; > reg = <0x50014000 0x4000>; > interrupts = <30>; > clocks = <&clks 49>; > @@ -1049,7 +1049,7 @@ > }; > > ssi1: ssi at 63fcc000 { > - compatible = "fsl,imx53-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx53-ssi", "fsl,imx50-ssi"; > reg = <0x63fcc000 0x4000>; > interrupts = <29>; > clocks = <&clks 48>; > @@ -1076,7 +1076,7 @@ > }; > > ssi3: ssi at 63fe8000 { > - compatible = "fsl,imx53-ssi", "fsl,imx21-ssi"; > + compatible = "fsl,imx53-ssi", "fsl,imx50-ssi"; > reg = <0x63fe8000 0x4000>; > interrupts = <96>; > clocks = <&clks 50>; > diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi > index ccd55c2..30d455e 100644 > --- a/arch/arm/boot/dts/imx6qdl.dtsi > +++ b/arch/arm/boot/dts/imx6qdl.dtsi > @@ -201,7 +201,7 @@ > }; > > ssi1: ssi at 02028000 { > - compatible = "fsl,imx6q-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6q-ssi","fsl,imx50-ssi"; > reg = <0x02028000 0x4000>; > interrupts = <0 46 0x04>; > clocks = <&clks 178>; > @@ -214,7 +214,7 @@ > }; > > ssi2: ssi at 0202c000 { > - compatible = "fsl,imx6q-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6q-ssi","fsl,imx50-ssi"; > reg = <0x0202c000 0x4000>; > interrupts = <0 47 0x04>; > clocks = <&clks 179>; > @@ -227,7 +227,7 @@ > }; > > ssi3: ssi at 02030000 { > - compatible = "fsl,imx6q-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6q-ssi","fsl,imx50-ssi"; > reg = <0x02030000 0x4000>; > interrupts = <0 48 0x04>; > clocks = <&clks 180>; > diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi > index c46651e..1b19319 100644 > --- a/arch/arm/boot/dts/imx6sl.dtsi > +++ b/arch/arm/boot/dts/imx6sl.dtsi > @@ -191,7 +191,7 @@ > }; > > ssi1: ssi at 02028000 { > - compatible = "fsl,imx6sl-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6sl-ssi","fsl,imx50-ssi"; > reg = <0x02028000 0x4000>; > interrupts = <0 46 0x04>; > clocks = <&clks IMX6SL_CLK_SSI1>; > @@ -203,7 +203,7 @@ > }; > > ssi2: ssi at 0202c000 { > - compatible = "fsl,imx6sl-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6sl-ssi","fsl,imx50-ssi"; > reg = <0x0202c000 0x4000>; > interrupts = <0 47 0x04>; > clocks = <&clks IMX6SL_CLK_SSI2>; > @@ -215,7 +215,7 @@ > }; > > ssi3: ssi at 02030000 { > - compatible = "fsl,imx6sl-ssi","fsl,imx21-ssi"; > + compatible = "fsl,imx6sl-ssi","fsl,imx50-ssi"; > reg = <0x02030000 0x4000>; > interrupts = <0 48 0x04>; > clocks = <&clks IMX6SL_CLK_SSI3>; > -- > 1.8.4.2 > ^ permalink raw reply [flat|nested] 4+ messages in thread
* [RFC 9/9] ARM: DTS: imx5* imx6*, use imx50-ssi 2013-11-18 2:02 ` [RFC 9/9] ARM: DTS: imx5* imx6*, use imx50-ssi Shawn Guo @ 2013-11-18 13:42 ` Markus Pargmann 0 siblings, 0 replies; 4+ messages in thread From: Markus Pargmann @ 2013-11-18 13:42 UTC (permalink / raw) To: linux-arm-kernel Hi Shawn, On Mon, Nov 18, 2013 at 10:02:35AM +0800, Shawn Guo wrote: > On Fri, Nov 15, 2013 at 04:49:44PM +0100, Markus Pargmann wrote: > > imx50-ssi and imx21-ssi are different IPs. imx50-ssi supports online > > reconfiguration and needs this for correct interaction with SDMA. Move > > from imx21-ssi to imx50-ssi for all imx5/imx6 SoCs. > > > > Signed-off-by: Markus Pargmann <mpa@pengutronix.de> > > --- > > arch/arm/boot/dts/imx51.dtsi | 6 +++--- > > arch/arm/boot/dts/imx53.dtsi | 6 +++--- > > arch/arm/boot/dts/imx6qdl.dtsi | 6 +++--- > > arch/arm/boot/dts/imx6sl.dtsi | 6 +++--- > > 4 files changed, 12 insertions(+), 12 deletions(-) > > > > diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi > > index 54cee65..22d4dbe 100644 > > --- a/arch/arm/boot/dts/imx51.dtsi > > +++ b/arch/arm/boot/dts/imx51.dtsi > > @@ -150,7 +150,7 @@ > > }; > > > > ssi2: ssi at 70014000 { > > - compatible = "fsl,imx51-ssi", "fsl,imx21-ssi"; > > + compatible = "fsl,imx51-ssi", "fsl,imx50-ssi"; > > Instead of replacing "fsl,imx21-ssi" with "fsl,imx50-ssi", we may want > to just add "fsl,imx50-ssi" in the middle to maintain the compatible > history. Note, it only works with the change I suggested on > of_device_id table order. The bonus point of doing so is that we will > not have git bisect issue to worry about with merging this patch and > others in the series via different tree. Thanks, I changed the id table order and added imx21-ssi as compatible again. Regards, Markus -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-11-18 13:42 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-15 15:49 [RFC 0/9] ASoC: fsl-ssi: offline/online configuration and cleanups Markus Pargmann [not found] ` <1384530584-31273-5-git-send-email-mpa@pengutronix.de> 2013-11-18 1:38 ` [RFC 4/9] ASoC: fsl-ssi: Add imx50-ssi and of_device_id matching Shawn Guo [not found] ` <1384530584-31273-10-git-send-email-mpa@pengutronix.de> 2013-11-18 2:02 ` [RFC 9/9] ARM: DTS: imx5* imx6*, use imx50-ssi Shawn Guo 2013-11-18 13:42 ` Markus Pargmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).