Message ID | 20200306205403.29881-2-michael@walle.cc (mailing list archive) |
---|---|
State | Mainlined |
Commit | e0d7856eb9a411444b49f210c1fd2de11bc0df07 |
Headers | show |
Series | [1/2] dt-bindings: dma: fsl-edma: fix ls1028a-edma compatible | expand |
>-----Original Message----- >From: Michael Walle <michael@walle.cc> >Sent: 2020年3月7日 4:54 >To: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >Cc: Vinod Koul <vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; Mark >Rutland <mark.rutland@arm.com>; Shawn Guo <shawnguo@kernel.org>; Leo Li ><leoyang.li@nxp.com>; Peng Ma <peng.ma@nxp.com>; Michael Walle ><michael@walle.cc> >Subject: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add "fsl,vf610-edma" >compatible > >Caution: EXT Email > >The bootloader does the IOMMU fixup and dynamically adds the "iommus" >property to devices according to its compatible string. In case of the eDMA >controller this property is missing. Add it. After that the IOMMU will work with >the eDMA core. > >Signed-off-by: Michael Walle <michael@walle.cc> >--- > arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >index b152fa90cf5c..aa467bff2209 100644 >--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >@@ -447,7 +447,7 @@ > > edma0: dma-controller@22c0000 { > #dma-cells = <2>; >- compatible = "fsl,ls1028a-edma"; >+ compatible = "fsl,ls1028a-edma", >+ "fsl,vf610-edma"; Hi Michael, You should change it on bootloader instead of kernel, Some Reg of LS1028a is different from others, So we used compatible "fsl,ls1028a-edm" to distinguish " fsl,vf610-edma". Thanks, Peng > reg = <0x0 0x22c0000 0x0 0x10000>, > <0x0 0x22d0000 0x0 0x10000>, > <0x0 0x22e0000 0x0 0x10000>; >-- >2.20.1
Hi Peng, Am 2020-03-07 03:09, schrieb Peng Ma: >> -----Original Message----- >> From: Michael Walle <michael@walle.cc> >> Sent: 2020年3月7日 4:54 >> To: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >> Cc: Vinod Koul <vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; >> Mark >> Rutland <mark.rutland@arm.com>; Shawn Guo <shawnguo@kernel.org>; Leo >> Li >> <leoyang.li@nxp.com>; Peng Ma <peng.ma@nxp.com>; Michael Walle >> <michael@walle.cc> >> Subject: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add "fsl,vf610-edma" >> compatible >> >> Caution: EXT Email >> >> The bootloader does the IOMMU fixup and dynamically adds the "iommus" >> property to devices according to its compatible string. In case of the >> eDMA >> controller this property is missing. Add it. After that the IOMMU will >> work with >> the eDMA core. >> >> Signed-off-by: Michael Walle <michael@walle.cc> >> --- >> arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >> b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >> index b152fa90cf5c..aa467bff2209 100644 >> --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >> @@ -447,7 +447,7 @@ >> >> edma0: dma-controller@22c0000 { >> #dma-cells = <2>; >> - compatible = "fsl,ls1028a-edma"; >> + compatible = "fsl,ls1028a-edma", >> + "fsl,vf610-edma"; > Hi Michael, > > You should change it on bootloader instead of kernel, Some Reg of > LS1028a is different > from others, So we used compatible "fsl,ls1028a-edm" to distinguish " > fsl,vf610-edma". Yes this might be the right thing to do. So since it is NXPs bootloader feel free to fix that ;) Looking at the u-boot code right now, I don't even know it that is the right fix at all. The fixup code in u-boot is SoC independent (its in fsl_icid.h and is enabled with CONFIG_LSCH3, ie your chassis version). For example, the sdhc fixup will scan the nodes for "compatible = fsl,esdhc", which is also the secondary compatible for the "ls1028a-esdhc" compatible. And here is another reason to have it this way: we need backwards compatibility, the are already boards out there whose bootloader will fix-up the "old" node. Thus I don't see any other possibilty. -michael > > Thanks, > Peng >> reg = <0x0 0x22c0000 0x0 0x10000>, >> <0x0 0x22d0000 0x0 0x10000>, >> <0x0 0x22e0000 0x0 0x10000>; >> -- >> 2.20.1
>-----Original Message----- >From: Michael Walle <michael@walle.cc> >Sent: 2020年3月7日 17:26 >To: Peng Ma <peng.ma@nxp.com> >Cc: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; Vinod Koul ><vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; Mark Rutland ><mark.rutland@arm.com>; Shawn Guo <shawnguo@kernel.org>; Leo Li ><leoyang.li@nxp.com> >Subject: Re: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add "fsl,vf610-edma" >compatible > >Caution: EXT Email > >Hi Peng, > >Am 2020-03-07 03:09, schrieb Peng Ma: >>> -----Original Message----- >>> From: Michael Walle <michael@walle.cc> >>> Sent: 2020年3月7日 4:54 >>> To: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >>> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >>> Cc: Vinod Koul <vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; >>> Mark Rutland <mark.rutland@arm.com>; Shawn Guo ><shawnguo@kernel.org>; >>> Leo Li <leoyang.li@nxp.com>; Peng Ma <peng.ma@nxp.com>; Michael Walle >>> <michael@walle.cc> >>> Subject: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add "fsl,vf610-edma" >>> compatible >>> >>> Caution: EXT Email >>> >>> The bootloader does the IOMMU fixup and dynamically adds the "iommus" >>> property to devices according to its compatible string. In case of >>> the eDMA controller this property is missing. Add it. After that the >>> IOMMU will work with the eDMA core. >>> >>> Signed-off-by: Michael Walle <michael@walle.cc> >>> --- >>> arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>> b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>> index b152fa90cf5c..aa467bff2209 100644 >>> --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>> @@ -447,7 +447,7 @@ >>> >>> edma0: dma-controller@22c0000 { >>> #dma-cells = <2>; >>> - compatible = "fsl,ls1028a-edma"; >>> + compatible = "fsl,ls1028a-edma", >>> + "fsl,vf610-edma"; >> Hi Michael, >> >> You should change it on bootloader instead of kernel, Some Reg of >> LS1028a is different from others, So we used compatible >> "fsl,ls1028a-edm" to distinguish " >> fsl,vf610-edma". > >Yes this might be the right thing to do. So since it is NXPs bootloader feel free to >fix that ;) Looking at the u-boot code right now, I don't even know it that is the >right fix at all. The fixup code in u-boot is SoC independent (its in fsl_icid.h and is >enabled with CONFIG_LSCH3, ie your chassis version). For example, the sdhc >fixup will scan the nodes for "compatible = fsl,esdhc", which is also the >secondary compatible for the "ls1028a-esdhc" compatible. > >And here is another reason to have it this way: we need backwards compatibility, >the are already boards out there whose bootloader will fix-up the "old" node. >Thus I don't see any other possibilty. > [Peng Ma] OK, There is non fixed on uboot. I will fix it on uboot, if you want to use now, please change the uboot as below: diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c index d9d125e8ba..db9dd69548 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c @@ -14,7 +14,7 @@ struct icid_id_table icid_tbl[] = { SET_SDHC_ICID(1, FSL_SDMMC_STREAM_ID), SET_SDHC_ICID(2, FSL_SDMMC2_STREAM_ID), SET_SATA_ICID(1, "fsl,ls1028a-ahci", FSL_SATA1_STREAM_ID), - SET_EDMA_ICID(FSL_EDMA_STREAM_ID), + SET_EDMA_ICID_LS1028(FSL_EDMA_STREAM_ID), SET_QDMA_ICID("fsl,ls1028a-qdma", FSL_DMA_STREAM_ID), SET_GPU_ICID("fsl,ls1028a-gpu", FSL_GPU_STREAM_ID), SET_DISPLAY_ICID(FSL_DISPLAY_STREAM_ID), diff --git a/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h b/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h index 37e2fe4e66..15d0b60dbe 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h @@ -144,6 +144,10 @@ extern int fman_icid_tbl_sz; SET_GUR_ICID("fsl,vf610-edma", streamid, spare3_amqr,\ EDMA_BASE_ADDR) +#define SET_EDMA_ICID_LS1028(streamid) \ + SET_GUR_ICID("fsl,ls1028a-edma", streamid, spare3_amqr,\ + EDMA_BASE_ADDR) + #define SET_GPU_ICID(compat, streamid) \ SET_GUR_ICID(compat, streamid, misc1_amqr,\ GPU_BASE_ADDR) BR, Peng >-michael > >> >> Thanks, >> Peng >>> reg = <0x0 0x22c0000 0x0 0x10000>, >>> <0x0 0x22d0000 0x0 0x10000>, >>> <0x0 0x22e0000 0x0 0x10000>; >>> -- >>> 2.20.1
Hi Peng, Am 2020-03-07 11:32, schrieb Peng Ma: >> -----Original Message----- >> From: Michael Walle <michael@walle.cc> >> Sent: 2020年3月7日 17:26 >> To: Peng Ma <peng.ma@nxp.com> >> Cc: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; >> Vinod Koul >> <vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; Mark Rutland >> <mark.rutland@arm.com>; Shawn Guo <shawnguo@kernel.org>; Leo Li >> <leoyang.li@nxp.com> >> Subject: Re: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add >> "fsl,vf610-edma" >> compatible >> >> Caution: EXT Email >> >> Hi Peng, >> >> Am 2020-03-07 03:09, schrieb Peng Ma: >>>> -----Original Message----- >>>> From: Michael Walle <michael@walle.cc> >>>> Sent: 2020年3月7日 4:54 >>>> To: dmaengine@vger.kernel.org; devicetree@vger.kernel.org; >>>> linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org >>>> Cc: Vinod Koul <vkoul@kernel.org>; Rob Herring <robh+dt@kernel.org>; >>>> Mark Rutland <mark.rutland@arm.com>; Shawn Guo >> <shawnguo@kernel.org>; >>>> Leo Li <leoyang.li@nxp.com>; Peng Ma <peng.ma@nxp.com>; Michael >>>> Walle >>>> <michael@walle.cc> >>>> Subject: [EXT] [PATCH 2/2] arm64: dts: ls1028a: add "fsl,vf610-edma" >>>> compatible >>>> >>>> Caution: EXT Email >>>> >>>> The bootloader does the IOMMU fixup and dynamically adds the >>>> "iommus" >>>> property to devices according to its compatible string. In case of >>>> the eDMA controller this property is missing. Add it. After that the >>>> IOMMU will work with the eDMA core. >>>> >>>> Signed-off-by: Michael Walle <michael@walle.cc> >>>> --- >>>> arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>>> b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>>> index b152fa90cf5c..aa467bff2209 100644 >>>> --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>>> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi >>>> @@ -447,7 +447,7 @@ >>>> >>>> edma0: dma-controller@22c0000 { >>>> #dma-cells = <2>; >>>> - compatible = "fsl,ls1028a-edma"; >>>> + compatible = "fsl,ls1028a-edma", >>>> + "fsl,vf610-edma"; >>> Hi Michael, >>> >>> You should change it on bootloader instead of kernel, Some Reg of >>> LS1028a is different from others, So we used compatible >>> "fsl,ls1028a-edm" to distinguish " >>> fsl,vf610-edma". >> >> Yes this might be the right thing to do. So since it is NXPs >> bootloader feel free to >> fix that ;) Looking at the u-boot code right now, I don't even know it >> that is the >> right fix at all. The fixup code in u-boot is SoC independent (its in >> fsl_icid.h and is >> enabled with CONFIG_LSCH3, ie your chassis version). For example, the >> sdhc >> fixup will scan the nodes for "compatible = fsl,esdhc", which is also >> the >> secondary compatible for the "ls1028a-esdhc" compatible. >> >> And here is another reason to have it this way: we need backwards >> compatibility, >> the are already boards out there whose bootloader will fix-up the >> "old" node. >> Thus I don't see any other possibilty. >> > [Peng Ma] OK, There is non fixed on uboot. > I will fix it on uboot, if you want to use now, please change the > uboot as below: As I told you, I cannot be changed for shipped bootloaders. While it can be changed for newer ones, I would really like to retain backwards compatibility. And so should you. That being said, I don't see a problem in having both compatibles. Linux will use the ls1028a-emda one and u-boot will fix up the "older" vf610-edma one. Unfortunately, this patch will not only affect eDMA but all other drivers which uses eDMA, eg. sound, lpuart, i2c and maybe DSPI. -michael > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c > b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c > index d9d125e8ba..db9dd69548 100644 > --- a/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c > +++ b/arch/arm/cpu/armv8/fsl-layerscape/ls1028_ids.c > @@ -14,7 +14,7 @@ struct icid_id_table icid_tbl[] = { > SET_SDHC_ICID(1, FSL_SDMMC_STREAM_ID), > SET_SDHC_ICID(2, FSL_SDMMC2_STREAM_ID), > SET_SATA_ICID(1, "fsl,ls1028a-ahci", FSL_SATA1_STREAM_ID), > - SET_EDMA_ICID(FSL_EDMA_STREAM_ID), > + SET_EDMA_ICID_LS1028(FSL_EDMA_STREAM_ID), > SET_QDMA_ICID("fsl,ls1028a-qdma", FSL_DMA_STREAM_ID), > SET_GPU_ICID("fsl,ls1028a-gpu", FSL_GPU_STREAM_ID), > SET_DISPLAY_ICID(FSL_DISPLAY_STREAM_ID), > diff --git a/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h > b/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h > index 37e2fe4e66..15d0b60dbe 100644 > --- a/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h > +++ b/arch/arm/include/asm/arch-fsl-layerscape/fsl_icid.h > @@ -144,6 +144,10 @@ extern int fman_icid_tbl_sz; > SET_GUR_ICID("fsl,vf610-edma", streamid, spare3_amqr,\ > EDMA_BASE_ADDR) > > +#define SET_EDMA_ICID_LS1028(streamid) \ > + SET_GUR_ICID("fsl,ls1028a-edma", streamid, spare3_amqr,\ > + EDMA_BASE_ADDR) > + > #define SET_GPU_ICID(compat, streamid) \ > SET_GUR_ICID(compat, streamid, misc1_amqr,\ > GPU_BASE_ADDR) > > BR, > Peng >> -michael >> >>> >>> Thanks, >>> Peng >>>> reg = <0x0 0x22c0000 0x0 0x10000>, >>>> <0x0 0x22d0000 0x0 0x10000>, >>>> <0x0 0x22e0000 0x0 0x10000>; >>>> -- >>>> 2.20.1
Hi all, Am 2020-03-06 21:54, schrieb Michael Walle: > The bootloader does the IOMMU fixup and dynamically adds the "iommus" > property to devices according to its compatible string. In case of the > eDMA controller this property is missing. Add it. After that the IOMMU > will work with the eDMA core. > > Signed-off-by: Michael Walle <michael@walle.cc> Is it possible to have this merged, so it gets into the merge window for 5.7? As I explained in this thread [1], without this compatible all boards with enabled IOMMU (and who have either sound, lpuart or i2c enabled), doesn't work. -michael [1] https://lore.kernel.org/linux-devicetree/433418e889347784bc74f3c22c23e644@walle.cc/ > --- > arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi > b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi > index b152fa90cf5c..aa467bff2209 100644 > --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi > +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi > @@ -447,7 +447,7 @@ > > edma0: dma-controller@22c0000 { > #dma-cells = <2>; > - compatible = "fsl,ls1028a-edma"; > + compatible = "fsl,ls1028a-edma", "fsl,vf610-edma"; > reg = <0x0 0x22c0000 0x0 0x10000>, > <0x0 0x22d0000 0x0 0x10000>, > <0x0 0x22e0000 0x0 0x10000>;
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi index b152fa90cf5c..aa467bff2209 100644 --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi @@ -447,7 +447,7 @@ edma0: dma-controller@22c0000 { #dma-cells = <2>; - compatible = "fsl,ls1028a-edma"; + compatible = "fsl,ls1028a-edma", "fsl,vf610-edma"; reg = <0x0 0x22c0000 0x0 0x10000>, <0x0 0x22d0000 0x0 0x10000>, <0x0 0x22e0000 0x0 0x10000>;
The bootloader does the IOMMU fixup and dynamically adds the "iommus" property to devices according to its compatible string. In case of the eDMA controller this property is missing. Add it. After that the IOMMU will work with the eDMA core. Signed-off-by: Michael Walle <michael@walle.cc> --- arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)