* [PATCH 0/2] ARM: OMAP1/OMAP2+: Add dma_slave_map to board files @ 2016-02-02 14:27 Peter Ujfalusi 2016-02-02 14:27 ` [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma Peter Ujfalusi 2016-02-02 14:27 ` [PATCH 2/2] ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot Peter Ujfalusi 0 siblings, 2 replies; 7+ messages in thread From: Peter Ujfalusi @ 2016-02-02 14:27 UTC (permalink / raw) To: linux-arm-kernel Hi, The following series adds the dma_slave map to the sDMA (omap-dma) driver. The dma_slave_map is needed later when we convert drivers to use the new dmaengine API for requesting slave channels. Regards, Peter --- Peter Ujfalusi (2): ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot arch/arm/mach-omap1/dma.c | 45 ++++++++++++++++++ arch/arm/mach-omap2/dma.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+) -- 2.7.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma 2016-02-02 14:27 [PATCH 0/2] ARM: OMAP1/OMAP2+: Add dma_slave_map to board files Peter Ujfalusi @ 2016-02-02 14:27 ` Peter Ujfalusi 2016-02-19 18:07 ` Tony Lindgren 2016-02-19 21:44 ` Aaro Koskinen 2016-02-02 14:27 ` [PATCH 2/2] ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot Peter Ujfalusi 1 sibling, 2 replies; 7+ messages in thread From: Peter Ujfalusi @ 2016-02-02 14:27 UTC (permalink / raw) To: linux-arm-kernel OMAP1 can not boot in DT mode and to be able to clean up the driver regarding to the dmaengine API use (switching to the new API) the device/slave -> filter mapping needs to be provided to the omap-dma driver. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> --- arch/arm/mach-omap1/dma.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index 7b02ed218a42..f6ba589cd312 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c @@ -25,6 +25,7 @@ #include <linux/device.h> #include <linux/io.h> #include <linux/dma-mapping.h> +#include <linux/dmaengine.h> #include <linux/omap-dma.h> #include <mach/tc.h> @@ -265,6 +266,42 @@ static const struct platform_device_info omap_dma_dev_info = { .num_res = 1, }; +/* OMAP730, OMAP850 */ +static const struct dma_slave_map omap7xx_sdma_map[] = { + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(10) }, + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(11) }, + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, +}; + +/* OMAP1510, OMAP1610*/ +static const struct dma_slave_map omap1xxx_sdma_map[] = { + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(10) }, + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(11) }, + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(16) }, + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(17) }, + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, + { "mmci-omap.1", "tx", SDMA_FILTER_PARAM(54) }, + { "mmci-omap.1", "rx", SDMA_FILTER_PARAM(55) }, +}; + static struct omap_system_dma_plat_info dma_plat_info __initdata = { .reg_map = reg_map, .channel_stride = 0x40, @@ -342,6 +379,14 @@ static int __init omap1_system_dma_init(void) p.dma_attr = d; p.errata = configure_dma_errata(); + if (cpu_is_omap7xx()) { + p.slave_map = omap7xx_sdma_map; + p.slavecnt = ARRAY_SIZE(omap7xx_sdma_map); + } else { + p.slave_map = omap1xxx_sdma_map; + p.slavecnt = ARRAY_SIZE(omap1xxx_sdma_map); + } + ret = platform_device_add_data(pdev, &p, sizeof(p)); if (ret) { dev_err(&pdev->dev, "%s: Unable to add resources for %s%d\n", -- 2.7.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma 2016-02-02 14:27 ` [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma Peter Ujfalusi @ 2016-02-19 18:07 ` Tony Lindgren 2016-02-19 21:44 ` Aaro Koskinen 1 sibling, 0 replies; 7+ messages in thread From: Tony Lindgren @ 2016-02-19 18:07 UTC (permalink / raw) To: linux-arm-kernel * Peter Ujfalusi <peter.ujfalusi@ti.com> [160202 06:28]: > OMAP1 can not boot in DT mode and to be able to clean up the driver > regarding to the dmaengine API use (switching to the new API) the > device/slave -> filter mapping needs to be provided to the omap-dma driver. Aaro, care to ack this one? Regards, Tony > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > --- > arch/arm/mach-omap1/dma.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c > index 7b02ed218a42..f6ba589cd312 100644 > --- a/arch/arm/mach-omap1/dma.c > +++ b/arch/arm/mach-omap1/dma.c > @@ -25,6 +25,7 @@ > #include <linux/device.h> > #include <linux/io.h> > #include <linux/dma-mapping.h> > +#include <linux/dmaengine.h> > #include <linux/omap-dma.h> > #include <mach/tc.h> > > @@ -265,6 +266,42 @@ static const struct platform_device_info omap_dma_dev_info = { > .num_res = 1, > }; > > +/* OMAP730, OMAP850 */ > +static const struct dma_slave_map omap7xx_sdma_map[] = { > + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, > + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, > + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(10) }, > + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(11) }, > + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, > + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, > + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, > + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, > + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, > + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, > + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, > + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, > +}; > + > +/* OMAP1510, OMAP1610*/ > +static const struct dma_slave_map omap1xxx_sdma_map[] = { > + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, > + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, > + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(10) }, > + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(11) }, > + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(16) }, > + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(17) }, > + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, > + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, > + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, > + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, > + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, > + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, > + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, > + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, > + { "mmci-omap.1", "tx", SDMA_FILTER_PARAM(54) }, > + { "mmci-omap.1", "rx", SDMA_FILTER_PARAM(55) }, > +}; > + > static struct omap_system_dma_plat_info dma_plat_info __initdata = { > .reg_map = reg_map, > .channel_stride = 0x40, > @@ -342,6 +379,14 @@ static int __init omap1_system_dma_init(void) > p.dma_attr = d; > p.errata = configure_dma_errata(); > > + if (cpu_is_omap7xx()) { > + p.slave_map = omap7xx_sdma_map; > + p.slavecnt = ARRAY_SIZE(omap7xx_sdma_map); > + } else { > + p.slave_map = omap1xxx_sdma_map; > + p.slavecnt = ARRAY_SIZE(omap1xxx_sdma_map); > + } > + > ret = platform_device_add_data(pdev, &p, sizeof(p)); > if (ret) { > dev_err(&pdev->dev, "%s: Unable to add resources for %s%d\n", > -- > 2.7.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma 2016-02-02 14:27 ` [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma Peter Ujfalusi 2016-02-19 18:07 ` Tony Lindgren @ 2016-02-19 21:44 ` Aaro Koskinen 2016-02-22 7:19 ` Peter Ujfalusi 1 sibling, 1 reply; 7+ messages in thread From: Aaro Koskinen @ 2016-02-19 21:44 UTC (permalink / raw) To: linux-arm-kernel On Tue, Feb 02, 2016 at 04:27:06PM +0200, Peter Ujfalusi wrote: > OMAP1 can not boot in DT mode and to be able to clean up the driver > regarding to the dmaengine API use (switching to the new API) the > device/slave -> filter mapping needs to be provided to the omap-dma driver. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> A. > --- > arch/arm/mach-omap1/dma.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c > index 7b02ed218a42..f6ba589cd312 100644 > --- a/arch/arm/mach-omap1/dma.c > +++ b/arch/arm/mach-omap1/dma.c > @@ -25,6 +25,7 @@ > #include <linux/device.h> > #include <linux/io.h> > #include <linux/dma-mapping.h> > +#include <linux/dmaengine.h> > #include <linux/omap-dma.h> > #include <mach/tc.h> > > @@ -265,6 +266,42 @@ static const struct platform_device_info omap_dma_dev_info = { > .num_res = 1, > }; > > +/* OMAP730, OMAP850 */ > +static const struct dma_slave_map omap7xx_sdma_map[] = { > + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, > + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, > + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(10) }, > + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(11) }, > + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, > + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, > + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, > + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, > + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, > + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, > + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, > + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, > +}; > + > +/* OMAP1510, OMAP1610*/ > +static const struct dma_slave_map omap1xxx_sdma_map[] = { > + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, > + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, > + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(10) }, > + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(11) }, > + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(16) }, > + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(17) }, > + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, > + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, > + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, > + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, > + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, > + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, > + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, > + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, > + { "mmci-omap.1", "tx", SDMA_FILTER_PARAM(54) }, > + { "mmci-omap.1", "rx", SDMA_FILTER_PARAM(55) }, > +}; > + > static struct omap_system_dma_plat_info dma_plat_info __initdata = { > .reg_map = reg_map, > .channel_stride = 0x40, > @@ -342,6 +379,14 @@ static int __init omap1_system_dma_init(void) > p.dma_attr = d; > p.errata = configure_dma_errata(); > > + if (cpu_is_omap7xx()) { > + p.slave_map = omap7xx_sdma_map; > + p.slavecnt = ARRAY_SIZE(omap7xx_sdma_map); > + } else { > + p.slave_map = omap1xxx_sdma_map; > + p.slavecnt = ARRAY_SIZE(omap1xxx_sdma_map); > + } > + > ret = platform_device_add_data(pdev, &p, sizeof(p)); > if (ret) { > dev_err(&pdev->dev, "%s: Unable to add resources for %s%d\n", > -- > 2.7.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma 2016-02-19 21:44 ` Aaro Koskinen @ 2016-02-22 7:19 ` Peter Ujfalusi 2016-02-22 18:02 ` Tony Lindgren 0 siblings, 1 reply; 7+ messages in thread From: Peter Ujfalusi @ 2016-02-22 7:19 UTC (permalink / raw) To: linux-arm-kernel On 2016-02-19 23:44, Aaro Koskinen wrote: > On Tue, Feb 02, 2016 at 04:27:06PM +0200, Peter Ujfalusi wrote: >> OMAP1 can not boot in DT mode and to be able to clean up the driver >> regarding to the dmaengine API use (switching to the new API) the >> device/slave -> filter mapping needs to be provided to the omap-dma driver. >> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > > Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> Thanks Aaro, I believe the map covers all drivers using DMA, but in case I missed any we - you ;) will notice it as they will fail to get the DMA channels. This only going to be visible after I send the driver changes for 4.7. In such a case we will need to add the given device to the list. -- P?ter > > A. > >> --- >> arch/arm/mach-omap1/dma.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 45 insertions(+) >> >> diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c >> index 7b02ed218a42..f6ba589cd312 100644 >> --- a/arch/arm/mach-omap1/dma.c >> +++ b/arch/arm/mach-omap1/dma.c >> @@ -25,6 +25,7 @@ >> #include <linux/device.h> >> #include <linux/io.h> >> #include <linux/dma-mapping.h> >> +#include <linux/dmaengine.h> >> #include <linux/omap-dma.h> >> #include <mach/tc.h> >> >> @@ -265,6 +266,42 @@ static const struct platform_device_info omap_dma_dev_info = { >> .num_res = 1, >> }; >> >> +/* OMAP730, OMAP850 */ >> +static const struct dma_slave_map omap7xx_sdma_map[] = { >> + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, >> + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, >> + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(10) }, >> + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(11) }, >> + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, >> + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, >> + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, >> + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, >> + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, >> + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, >> + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, >> + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, >> +}; >> + >> +/* OMAP1510, OMAP1610*/ >> +static const struct dma_slave_map omap1xxx_sdma_map[] = { >> + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(8) }, >> + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(9) }, >> + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(10) }, >> + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(11) }, >> + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(16) }, >> + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(17) }, >> + { "mmci-omap.0", "tx", SDMA_FILTER_PARAM(21) }, >> + { "mmci-omap.0", "rx", SDMA_FILTER_PARAM(22) }, >> + { "omap_udc", "rx0", SDMA_FILTER_PARAM(26) }, >> + { "omap_udc", "rx1", SDMA_FILTER_PARAM(27) }, >> + { "omap_udc", "rx2", SDMA_FILTER_PARAM(28) }, >> + { "omap_udc", "tx0", SDMA_FILTER_PARAM(29) }, >> + { "omap_udc", "tx1", SDMA_FILTER_PARAM(30) }, >> + { "omap_udc", "tx2", SDMA_FILTER_PARAM(31) }, >> + { "mmci-omap.1", "tx", SDMA_FILTER_PARAM(54) }, >> + { "mmci-omap.1", "rx", SDMA_FILTER_PARAM(55) }, >> +}; >> + >> static struct omap_system_dma_plat_info dma_plat_info __initdata = { >> .reg_map = reg_map, >> .channel_stride = 0x40, >> @@ -342,6 +379,14 @@ static int __init omap1_system_dma_init(void) >> p.dma_attr = d; >> p.errata = configure_dma_errata(); >> >> + if (cpu_is_omap7xx()) { >> + p.slave_map = omap7xx_sdma_map; >> + p.slavecnt = ARRAY_SIZE(omap7xx_sdma_map); >> + } else { >> + p.slave_map = omap1xxx_sdma_map; >> + p.slavecnt = ARRAY_SIZE(omap1xxx_sdma_map); >> + } >> + >> ret = platform_device_add_data(pdev, &p, sizeof(p)); >> if (ret) { >> dev_err(&pdev->dev, "%s: Unable to add resources for %s%d\n", >> -- >> 2.7.0 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-omap" in >> the body of a message to majordomo at vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma 2016-02-22 7:19 ` Peter Ujfalusi @ 2016-02-22 18:02 ` Tony Lindgren 0 siblings, 0 replies; 7+ messages in thread From: Tony Lindgren @ 2016-02-22 18:02 UTC (permalink / raw) To: linux-arm-kernel * Peter Ujfalusi <peter.ujfalusi@ti.com> [160221 23:19]: > On 2016-02-19 23:44, Aaro Koskinen wrote: > > On Tue, Feb 02, 2016 at 04:27:06PM +0200, Peter Ujfalusi wrote: > >> OMAP1 can not boot in DT mode and to be able to clean up the driver > >> regarding to the dmaengine API use (switching to the new API) the > >> device/slave -> filter mapping needs to be provided to the omap-dma driver. > >> > >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > > > > Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> > > Thanks Aaro, > > I believe the map covers all drivers using DMA, but in case I missed any we - > you ;) will notice it as they will fail to get the DMA channels. This only > going to be visible after I send the driver changes for 4.7. In such a case we > will need to add the given device to the list. Yeah makes sense. Applying both into omap-for-v4.6/soc thanks. Tony ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot 2016-02-02 14:27 [PATCH 0/2] ARM: OMAP1/OMAP2+: Add dma_slave_map to board files Peter Ujfalusi 2016-02-02 14:27 ` [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma Peter Ujfalusi @ 2016-02-02 14:27 ` Peter Ujfalusi 1 sibling, 0 replies; 7+ messages in thread From: Peter Ujfalusi @ 2016-02-02 14:27 UTC (permalink / raw) To: linux-arm-kernel We still have some boards booting in legacy mode and they will need to have the device/slave -> filter_fn mapping so we can convert the OMAP drivers to use the new dmaengine API for requesting channels. Only some OMAP24xx and OMAP3xxx boards can boot in legacy mode which means we only need to provide the map for these SoCs. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> --- arch/arm/mach-omap2/dma.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index 1ed4be184a29..e58c13a9bea5 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c @@ -28,6 +28,7 @@ #include <linux/init.h> #include <linux/device.h> #include <linux/dma-mapping.h> +#include <linux/dmaengine.h> #include <linux/of.h> #include <linux/omap-dma.h> @@ -203,6 +204,108 @@ static unsigned configure_dma_errata(void) return errata; } +static const struct dma_slave_map omap24xx_sdma_map[] = { + { "omap-gpmc", "rxtx", SDMA_FILTER_PARAM(4) }, + { "omap-aes", "tx", SDMA_FILTER_PARAM(9) }, + { "omap-aes", "rx", SDMA_FILTER_PARAM(10) }, + { "omap-sham", "rx", SDMA_FILTER_PARAM(13) }, + { "omap2_mcspi.2", "tx0", SDMA_FILTER_PARAM(15) }, + { "omap2_mcspi.2", "rx0", SDMA_FILTER_PARAM(16) }, + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(17) }, + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(18) }, + { "omap-mcbsp.4", "tx", SDMA_FILTER_PARAM(19) }, + { "omap-mcbsp.4", "rx", SDMA_FILTER_PARAM(20) }, + { "omap-mcbsp.5", "tx", SDMA_FILTER_PARAM(21) }, + { "omap-mcbsp.5", "rx", SDMA_FILTER_PARAM(22) }, + { "omap2_mcspi.2", "tx1", SDMA_FILTER_PARAM(23) }, + { "omap2_mcspi.2", "rx1", SDMA_FILTER_PARAM(24) }, + { "omap_i2c.1", "tx", SDMA_FILTER_PARAM(27) }, + { "omap_i2c.1", "rx", SDMA_FILTER_PARAM(28) }, + { "omap_i2c.2", "tx", SDMA_FILTER_PARAM(29) }, + { "omap_i2c.2", "rx", SDMA_FILTER_PARAM(30) }, + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(31) }, + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(32) }, + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(33) }, + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(34) }, + { "omap2_mcspi.0", "tx0", SDMA_FILTER_PARAM(35) }, + { "omap2_mcspi.0", "rx0", SDMA_FILTER_PARAM(36) }, + { "omap2_mcspi.0", "tx1", SDMA_FILTER_PARAM(37) }, + { "omap2_mcspi.0", "rx1", SDMA_FILTER_PARAM(38) }, + { "omap2_mcspi.0", "tx2", SDMA_FILTER_PARAM(39) }, + { "omap2_mcspi.0", "rx2", SDMA_FILTER_PARAM(40) }, + { "omap2_mcspi.0", "tx3", SDMA_FILTER_PARAM(41) }, + { "omap2_mcspi.0", "rx3", SDMA_FILTER_PARAM(42) }, + { "omap2_mcspi.1", "tx0", SDMA_FILTER_PARAM(43) }, + { "omap2_mcspi.1", "rx0", SDMA_FILTER_PARAM(44) }, + { "omap2_mcspi.1", "tx1", SDMA_FILTER_PARAM(45) }, + { "omap2_mcspi.1", "rx1", SDMA_FILTER_PARAM(46) }, + { "omap_hsmmc.1", "tx", SDMA_FILTER_PARAM(47) }, + { "omap_hsmmc.1", "rx", SDMA_FILTER_PARAM(48) }, + { "omap_uart.0", "tx", SDMA_FILTER_PARAM(49) }, + { "omap_uart.0", "rx", SDMA_FILTER_PARAM(50) }, + { "omap_uart.1", "tx", SDMA_FILTER_PARAM(51) }, + { "omap_uart.1", "rx", SDMA_FILTER_PARAM(52) }, + { "omap_uart.2", "tx", SDMA_FILTER_PARAM(53) }, + { "omap_uart.2", "rx", SDMA_FILTER_PARAM(54) }, + { "omap_hsmmc.0", "tx", SDMA_FILTER_PARAM(61) }, + { "omap_hsmmc.0", "rx", SDMA_FILTER_PARAM(62) }, +}; + +static const struct dma_slave_map omap3xxx_sdma_map[] = { + { "omap-gpmc", "rxtx", SDMA_FILTER_PARAM(4) }, + { "omap2_mcspi.2", "tx0", SDMA_FILTER_PARAM(15) }, + { "omap2_mcspi.2", "rx0", SDMA_FILTER_PARAM(16) }, + { "omap-mcbsp.3", "tx", SDMA_FILTER_PARAM(17) }, + { "omap-mcbsp.3", "rx", SDMA_FILTER_PARAM(18) }, + { "omap-mcbsp.4", "tx", SDMA_FILTER_PARAM(19) }, + { "omap-mcbsp.4", "rx", SDMA_FILTER_PARAM(20) }, + { "omap-mcbsp.5", "tx", SDMA_FILTER_PARAM(21) }, + { "omap-mcbsp.5", "rx", SDMA_FILTER_PARAM(22) }, + { "omap2_mcspi.2", "tx1", SDMA_FILTER_PARAM(23) }, + { "omap2_mcspi.2", "rx1", SDMA_FILTER_PARAM(24) }, + { "omap_i2c.3", "tx", SDMA_FILTER_PARAM(25) }, + { "omap_i2c.3", "rx", SDMA_FILTER_PARAM(26) }, + { "omap_i2c.1", "tx", SDMA_FILTER_PARAM(27) }, + { "omap_i2c.1", "rx", SDMA_FILTER_PARAM(28) }, + { "omap_i2c.2", "tx", SDMA_FILTER_PARAM(29) }, + { "omap_i2c.2", "rx", SDMA_FILTER_PARAM(30) }, + { "omap-mcbsp.1", "tx", SDMA_FILTER_PARAM(31) }, + { "omap-mcbsp.1", "rx", SDMA_FILTER_PARAM(32) }, + { "omap-mcbsp.2", "tx", SDMA_FILTER_PARAM(33) }, + { "omap-mcbsp.2", "rx", SDMA_FILTER_PARAM(34) }, + { "omap2_mcspi.0", "tx0", SDMA_FILTER_PARAM(35) }, + { "omap2_mcspi.0", "rx0", SDMA_FILTER_PARAM(36) }, + { "omap2_mcspi.0", "tx1", SDMA_FILTER_PARAM(37) }, + { "omap2_mcspi.0", "rx1", SDMA_FILTER_PARAM(38) }, + { "omap2_mcspi.0", "tx2", SDMA_FILTER_PARAM(39) }, + { "omap2_mcspi.0", "rx2", SDMA_FILTER_PARAM(40) }, + { "omap2_mcspi.0", "tx3", SDMA_FILTER_PARAM(41) }, + { "omap2_mcspi.0", "rx3", SDMA_FILTER_PARAM(42) }, + { "omap2_mcspi.1", "tx0", SDMA_FILTER_PARAM(43) }, + { "omap2_mcspi.1", "rx0", SDMA_FILTER_PARAM(44) }, + { "omap2_mcspi.1", "tx1", SDMA_FILTER_PARAM(45) }, + { "omap2_mcspi.1", "rx1", SDMA_FILTER_PARAM(46) }, + { "omap_hsmmc.1", "tx", SDMA_FILTER_PARAM(47) }, + { "omap_hsmmc.1", "rx", SDMA_FILTER_PARAM(48) }, + { "omap_uart.0", "tx", SDMA_FILTER_PARAM(49) }, + { "omap_uart.0", "rx", SDMA_FILTER_PARAM(50) }, + { "omap_uart.1", "tx", SDMA_FILTER_PARAM(51) }, + { "omap_uart.1", "rx", SDMA_FILTER_PARAM(52) }, + { "omap_uart.2", "tx", SDMA_FILTER_PARAM(53) }, + { "omap_uart.2", "rx", SDMA_FILTER_PARAM(54) }, + { "omap_hsmmc.0", "tx", SDMA_FILTER_PARAM(61) }, + { "omap_hsmmc.0", "rx", SDMA_FILTER_PARAM(62) }, + { "omap-aes", "tx", SDMA_FILTER_PARAM(65) }, + { "omap-aes", "rx", SDMA_FILTER_PARAM(66) }, + { "omap-sham", "rx", SDMA_FILTER_PARAM(69) }, + { "omap2_mcspi.3", "tx0", SDMA_FILTER_PARAM(70) }, + { "omap2_mcspi.3", "rx0", SDMA_FILTER_PARAM(71) }, + { "omap_hsmmc.2", "tx", SDMA_FILTER_PARAM(77) }, + { "omap_hsmmc.2", "rx", SDMA_FILTER_PARAM(78) }, + { "omap_uart.3", "tx", SDMA_FILTER_PARAM(81) }, + { "omap_uart.3", "rx", SDMA_FILTER_PARAM(82) }, +}; + static struct omap_system_dma_plat_info dma_plat_info __initdata = { .reg_map = reg_map, .channel_stride = 0x60, @@ -231,6 +334,20 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) p.dma_attr = (struct omap_dma_dev_attr *)oh->dev_attr; p.errata = configure_dma_errata(); + if (!of_have_populated_dt()) { + if (soc_is_omap24xx()) { + p.slave_map = omap24xx_sdma_map; + p.slavecnt = ARRAY_SIZE(omap24xx_sdma_map); + } else if (soc_is_omap34xx() || soc_is_omap3630()) { + p.slave_map = omap3xxx_sdma_map; + p.slavecnt = ARRAY_SIZE(omap3xxx_sdma_map); + } else { + pr_err("%s: The legacy DMA map is not provided!\n", + __func__); + return -ENODEV; + } + } + pdev = omap_device_build(name, 0, oh, &p, sizeof(p)); if (IS_ERR(pdev)) { pr_err("%s: Can't build omap_device for %s:%s.\n", -- 2.7.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-02-22 18:02 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-02 14:27 [PATCH 0/2] ARM: OMAP1/OMAP2+: Add dma_slave_map to board files Peter Ujfalusi 2016-02-02 14:27 ` [PATCH 1/2] ARM: OMAP1: DMA: Provide dma_slave_map to omap-dma Peter Ujfalusi 2016-02-19 18:07 ` Tony Lindgren 2016-02-19 21:44 ` Aaro Koskinen 2016-02-22 7:19 ` Peter Ujfalusi 2016-02-22 18:02 ` Tony Lindgren 2016-02-02 14:27 ` [PATCH 2/2] ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot Peter Ujfalusi
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).