Message ID | 20170929223411.9691-6-tony@atomide.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki On 09/30/2017 01:34 AM, Tony Lindgren wrote: > On omap4 we are missing dts nodes for several interconnect target > modules that we are idling on init. This currently works with the > legacy platform data still around. > > To fix this, let's add the interconnect target modules so we can > idle the unused interconnect target module on init. > > Also note that adding the interconnect target module node does not > necessarily mean that there is a driver available for the child IP > block, or that the child IP block is even functional. > > In the SGX case, the PowerVR driver is closed source. And McASP on > omap4 has at least the TX path disabled and is not supported by the > davinci-mcasp driver. RX path is disabled, TX is supposed to work. ... > + target-module@40128000 { > + compatible = "ti,sysc-mcasp"; > + ti,hwmods = "mcasp"; > + reg = <0x40128004 0x4>; > + reg-names = "sysc"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0x00000000 0x40128000 0x1000>, /* MPU */ > + <0x49028000 0x49028000 0x1000>; /* L3 */ > + > + /* > + * Child device unsupported by davinci-mcasp. At least > + * TX path is disabled for omap4, and only DIT mode s/TX/RX > + * works with no I2S. See also old Android kernel > + * omap-mcasp driver for more information. I'll look at the schema of PandaBoard to see if I can route out the McASP lines to somewhere then I can add support for this revision to davinci-mcasp driver.
Hi Peter, On Wed, Oct 11, 2017 at 06:54:04PM +0300, Peter Ujfalusi wrote: > Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. > Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki > > On 09/30/2017 01:34 AM, Tony Lindgren wrote: > > On omap4 we are missing dts nodes for several interconnect target > > modules that we are idling on init. This currently works with the > > legacy platform data still around. > > > > To fix this, let's add the interconnect target modules so we can > > idle the unused interconnect target module on init. > > > > Also note that adding the interconnect target module node does not > > necessarily mean that there is a driver available for the child IP > > block, or that the child IP block is even functional. > > > > In the SGX case, the PowerVR driver is closed source. And McASP on > > omap4 has at least the TX path disabled and is not supported by the > > davinci-mcasp driver. > > RX path is disabled, TX is supposed to work. > > ... > > > + target-module@40128000 { > > + compatible = "ti,sysc-mcasp"; > > + ti,hwmods = "mcasp"; > > + reg = <0x40128004 0x4>; > > + reg-names = "sysc"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > + ranges = <0x00000000 0x40128000 0x1000>, /* MPU */ > > + <0x49028000 0x49028000 0x1000>; /* L3 */ > > + > > + /* > > + * Child device unsupported by davinci-mcasp. At least > > + * TX path is disabled for omap4, and only DIT mode > > s/TX/RX > > > + * works with no I2S. See also old Android kernel > > + * omap-mcasp driver for more information. > > I'll look at the schema of PandaBoard to see if I can route out the McASP > lines to somewhere then I can add support for this revision to davinci-mcasp > driver. Not sure if this is helpful information: Motorola Droid 4 is OMAP4430 based and has McASP lines routed to the audio codec (either McASP or McBSP can be used). Codec is a custom one, which is not yet supported mainline, but patches are WIP (*): https://lkml.org/lkml/2017/7/12/368 (*) My patches use McBSP instead of McASP, since McASP looked mostly unsupported. Motorola's kernel uses McASP. -- Sebastian
Hi Sebastian, Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki On 2017-10-11 19:58, Sebastian Reichel wrote: >> I'll look at the schema of PandaBoard to see if I can route out the McASP >> lines to somewhere then I can add support for this revision to davinci-mcasp >> driver. > > Not sure if this is helpful information: > > Motorola Droid 4 is OMAP4430 based and has McASP lines routed > to the audio codec (either McASP or McBSP can be used). Codec > is a custom one, which is not yet supported mainline, but > patches are WIP (*): > > https://lkml.org/lkml/2017/7/12/368 Really cool! I don't see much benefit of using McASP on OMAP4, only drawbacks... It lacks AFIFO so it is prone to underrun and if it underruns you need to reset McASP. Been there with the Samsung Galaxy Nexus. I wonder how Motorola is using the McASP as the OMAP4 version (officially) does not support I2S. It might work, I have not tried it. I do have one Galaxy Nexus, but there the McASP is used for the S/PIDIF on the dock (the three pins on the side). Yes, I do not have the dock and my Galaxy Nexus is still in active use -> not rooted, and never run mainline Linux. > (*) My patches use McBSP instead of McASP, since McASP looked > mostly unsupported. Motorola's kernel uses McASP. If I have something I might ask you for testing, if it is OK. > > -- Sebastian > - Péter -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Oct 12, 2017 at 09:07:55AM +0300, Peter Ujfalusi wrote: > I don't see much benefit of using McASP on OMAP4, only drawbacks... It > lacks AFIFO so it is prone to underrun and if it underruns you need to > reset McASP. Been there with the Samsung Galaxy Nexus. AESS/ATC isn't able to consistently respond to a DMA request within 20 us ? Strange.. I would have expected it to have no trouble with that. (And presumably so did TI, or they would have included AFIFO?) > I wonder how Motorola is using the McASP as the OMAP4 version > (officially) does not support I2S. Hmm? I checked the omap4430 TRM and I don't see that mentioned. It seems to have pins for i2s transmit: abe_mcasp_axr O Audio transmit data abe_mcasp_aclkx O Transmit bit clock abe_mcasp_ahclkx O Transmit high-frequency master clock abe_mcasp_afsx O Transmit frame synchronization abe_mcasp_amute O Mute out to external abe_mcasp_amutein I Mute in from external If it supported s/pdif tx only, then all of these except axr would be useless. Matthijs -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki On 2017-10-12 11:40, Matthijs van Duin wrote: > On Thu, Oct 12, 2017 at 09:07:55AM +0300, Peter Ujfalusi wrote: >> I don't see much benefit of using McASP on OMAP4, only drawbacks... It >> lacks AFIFO so it is prone to underrun and if it underruns you need to >> reset McASP. Been there with the Samsung Galaxy Nexus. > > AESS/ATC isn't able to consistently respond to a DMA request within 20 > us ? Strange.. I would have expected it to have no trouble with that. > (And presumably so did TI, or they would have included AFIFO?) > >> I wonder how Motorola is using the McASP as the OMAP4 version >> (officially) does not support I2S. > > Hmm? I checked the omap4430 TRM and I don't see that mentioned. It seems > to have pins for i2s transmit: > > abe_mcasp_axr O Audio transmit data > abe_mcasp_aclkx O Transmit bit clock > abe_mcasp_ahclkx O Transmit high-frequency master clock > abe_mcasp_afsx O Transmit frame synchronization > abe_mcasp_amute O Mute out to external > abe_mcasp_amutein I Mute in from external > > If it supported s/pdif tx only, then all of these except axr would be > useless. The McASP transmit section uses the S/PDIF industry format, which is supported by the DIT transfer mode of the module. And look for Transfer Modes chapter of McSSP in the OMAP4 TRM. It is DIT only. > > Matthijs > - Péter -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi @@ -382,6 +382,19 @@ #interrupt-cells = <2>; }; + target-module@48076000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "slimbus2"; + reg = <0x48076000 0x4>, + <0x48076010 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x48076000 0x001000>; + + /* No child device binding or driver in mainline */ + }; + elm: elm@48078000 { compatible = "ti,am3352-elm"; reg = <0x48078000 0x2000>; @@ -442,25 +455,55 @@ clock-frequency = <48000000>; }; - smartreflex_iva: smartreflex@4a0db000 { - compatible = "ti,omap4-smartreflex-iva"; - reg = <0x4a0db000 0x80>; - interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; + target-module@4a0db000 { + compatible = "ti,sysc-sr"; ti,hwmods = "smartreflex_iva"; + reg = <0x4a0db000 0x4>, + <0x4a0db008 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x4a0db000 0x001000>; + + smartreflex_iva: smartreflex@0 { + compatible = "ti,omap4-smartreflex-iva"; + reg = <0 0x80>; + interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; + }; }; - smartreflex_core: smartreflex@4a0dd000 { - compatible = "ti,omap4-smartreflex-core"; - reg = <0x4a0dd000 0x80>; - interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; + target-module@4a0dd000 { + compatible = "ti,sysc-sr"; ti,hwmods = "smartreflex_core"; + reg = <0x4a0dd000 0x4>, + <0x4a0dd008 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x4a0dd000 0x001000>; + + smartreflex_core: smartreflex@0 { + compatible = "ti,omap4-smartreflex-core"; + reg = <0 0x80>; + interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; + }; }; - smartreflex_mpu: smartreflex@4a0d9000 { - compatible = "ti,omap4-smartreflex-mpu"; - reg = <0x4a0d9000 0x80>; - interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; + target-module@4a0d9000 { + compatible = "ti,sysc-sr"; ti,hwmods = "smartreflex_mpu"; + reg = <0x4a0d9000 0x4>, + <0x4a0d9008 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x4a0d9000 0x001000>; + + smartreflex_mpu: smartreflex@0 { + compatible = "ti,omap4-smartreflex-mpu"; + reg = <0 0x80>; + interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; + }; }; hwspinlock: spinlock@4a0f6000 { @@ -666,6 +709,19 @@ #iommu-cells = <0>; }; + target-module@52000000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "iss"; + reg = <0x52000000 0x4>, + <0x52000010 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x52000000 0x1000000>; + + /* No child device binding, driver in staging */ + }; + mmu_ipu: mmu@55082000 { compatible = "ti,omap4-iommu"; reg = <0x55082000 0x100>; @@ -760,6 +816,56 @@ status = "disabled"; }; + target-module@40128000 { + compatible = "ti,sysc-mcasp"; + ti,hwmods = "mcasp"; + reg = <0x40128004 0x4>; + reg-names = "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x40128000 0x1000>, /* MPU */ + <0x49028000 0x49028000 0x1000>; /* L3 */ + + /* + * Child device unsupported by davinci-mcasp. At least + * TX path is disabled for omap4, and only DIT mode + * works with no I2S. See also old Android kernel + * omap-mcasp driver for more information. + */ + }; + + target-module@4012c000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "slimbus1"; + reg = <0x4012c000 0x4>, + <0x4012c010 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x4012c000 0x1000>, /* MPU */ + <0x4902c000 0x4902c000 0x1000>; /* L3 */ + + /* No child device binding or driver in mainline */ + }; + + target-module@401f1000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "aess"; + reg = <0x401f1000 0x4>, + <0x401f1010 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x401f1000 0x1000>, /* MPU */ + <0x490f1000 0x490f1000 0x1000>; /* L3 */ + + /* + * No child device binding or driver in mainline. + * See Android tree and related upstreaming efforts + * for the old driver. + */ + }; + mcbsp4: mcbsp@48096000 { compatible = "ti,omap4-mcbsp"; reg = <0x48096000 0xff>; /* L4 Interconnect */ @@ -848,6 +954,19 @@ }; }; + target-module@4a10a000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "fdif"; + reg = <0x4a10a000 0x4>, + <0x4a10a010 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x4a10a000 0x1000>; + + /* No child device binding or driver in mainline */ + }; + timer1: timer@4a318000 { compatible = "ti,omap3430-timer"; reg = <0x4a318000 0x80>; @@ -1063,6 +1182,22 @@ status = "disabled"; }; + target-module@56000000 { + compatible = "ti,sysc-omap4"; + ti,hwmods = "gpu"; + reg = <0x5601fc00 0x4>, + <0x5601fc10 0x4>; + reg-names = "rev", "sysc"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x56000000 0x2000000>; + + /* + * Closed source PowerVR driver, no child device + * binding or driver in mainline + */ + }; + dss: dss@58000000 { compatible = "ti,omap4-dss"; reg = <0x58000000 0x80>;
On omap4 we are missing dts nodes for several interconnect target modules that we are idling on init. This currently works with the legacy platform data still around. To fix this, let's add the interconnect target modules so we can idle the unused interconnect target module on init. Also note that adding the interconnect target module node does not necessarily mean that there is a driver available for the child IP block, or that the child IP block is even functional. In the SGX case, the PowerVR driver is closed source. And McASP on omap4 has at least the TX path disabled and is not supported by the davinci-mcasp driver. For AESS there is old Android 3.4 kernel driver available. For smarflex, we are still probing with platform data and the driver needs more work before we can add the device ip child nodes. And finally, we're not yet using the interconnet ranges. I will be posting separate patches for those later on. Cc: Benoît Cousson <bcousson@baylibre.com> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Liam Girdwood <lgirdwood@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: Nishanth Menon <nm@ti.com> Cc: Matthijs van Duin <matthijsvanduin@gmail.com> Cc: Paul Walmsley <paul@pwsan.com> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Sakari Ailus <sakari.ailus@iki.fi> Cc: Tero Kristo <t-kristo@ti.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com> --- arch/arm/boot/dts/omap4.dtsi | 159 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 147 insertions(+), 12 deletions(-)