Message ID | 20170903224100.17893-9-stefan.bruens@rwth-aachen.de (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Hi, On 03/09/17 23:40, Stefan Brüns wrote: > The A64 SoC has the same dma engine as the H3 (sun8i), with a > reduced amount of physical channels. To allow future reuse of the > compatible, leave the channel count etc. in the config data blank > and retrieve it from the devicetree. > > Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> > --- > drivers/dma/sun6i-dma.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c > index bd4c2e4a759b..4fae7ffad549 100644 > --- a/drivers/dma/sun6i-dma.c > +++ b/drivers/dma/sun6i-dma.c > @@ -1076,6 +1076,16 @@ static struct sun6i_dma_config sun8i_h3_dma_cfg = { > .nr_max_vchans = 34, > .dmac_variant = DMAC_VARIANT_H3, > }; > + > +/* > + * The A64 binding uses the number of dma channels from the > + * device tree node. > + */ > +static struct sun6i_dma_config sun50i_a64_dma_cfg = { > + .nr_max_channels = 0, > + .nr_max_requests = 0, But this does not work with the "dma-requests" property being optional according to the binding spec? Either we put the value for the A64 in here (and thus force the R40 and others to specify this in the DT) or we map the "0" from struct config to DMA_CHAN_MAX_DRQ in the probe function. > + .nr_max_vchans = 0, > + .dmac_variant = DMAC_VARIANT_H3, > }; > > static const struct of_device_id sun6i_dma_match[] = { > @@ -1083,6 +1093,7 @@ static const struct of_device_id sun6i_dma_match[] = { > { .compatible = "allwinner,sun8i-a23-dma", .data = &sun8i_a23_dma_cfg }, > { .compatible = "allwinner,sun8i-a83t-dma", .data = &sun8i_a83t_dma_cfg }, > { .compatible = "allwinner,sun8i-h3-dma", .data = &sun8i_h3_dma_cfg }, > + { .compatible = "allwinner,sun50i-a64-dma", .data = &sun50i_a64_dma_cfg }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, sun6i_dma_match); > @@ -1090,6 +1101,7 @@ MODULE_DEVICE_TABLE(of, sun6i_dma_match); > static int sun6i_dma_probe(struct platform_device *pdev) > { > const struct of_device_id *device; > + struct device_node *np = pdev->dev.of_node; Is this some rebase/split artefact? Cheers, Andre. > struct sun6i_dma_dev *sdc; > struct resource *res; > int ret, i; > -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Montag, 4. September 2017 01:37:58 CEST André Przywara wrote: > > @@ -1090,6 +1101,7 @@ MODULE_DEVICE_TABLE(of, sun6i_dma_match); > > > > static int sun6i_dma_probe(struct platform_device *pdev) > > { > > > > const struct of_device_id *device; > > > > + struct device_node *np = pdev->dev.of_node; > > Is this some rebase/split artefact? > > Cheers, > Andre. > Yes, that one should be in patch 7/10 ... Kind regards, Stefan
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index bd4c2e4a759b..4fae7ffad549 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -1076,6 +1076,16 @@ static struct sun6i_dma_config sun8i_h3_dma_cfg = { .nr_max_vchans = 34, .dmac_variant = DMAC_VARIANT_H3, }; + +/* + * The A64 binding uses the number of dma channels from the + * device tree node. + */ +static struct sun6i_dma_config sun50i_a64_dma_cfg = { + .nr_max_channels = 0, + .nr_max_requests = 0, + .nr_max_vchans = 0, + .dmac_variant = DMAC_VARIANT_H3, }; static const struct of_device_id sun6i_dma_match[] = { @@ -1083,6 +1093,7 @@ static const struct of_device_id sun6i_dma_match[] = { { .compatible = "allwinner,sun8i-a23-dma", .data = &sun8i_a23_dma_cfg }, { .compatible = "allwinner,sun8i-a83t-dma", .data = &sun8i_a83t_dma_cfg }, { .compatible = "allwinner,sun8i-h3-dma", .data = &sun8i_h3_dma_cfg }, + { .compatible = "allwinner,sun50i-a64-dma", .data = &sun50i_a64_dma_cfg }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, sun6i_dma_match); @@ -1090,6 +1101,7 @@ MODULE_DEVICE_TABLE(of, sun6i_dma_match); static int sun6i_dma_probe(struct platform_device *pdev) { const struct of_device_id *device; + struct device_node *np = pdev->dev.of_node; struct sun6i_dma_dev *sdc; struct resource *res; int ret, i;
The A64 SoC has the same dma engine as the H3 (sun8i), with a reduced amount of physical channels. To allow future reuse of the compatible, leave the channel count etc. in the config data blank and retrieve it from the devicetree. Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> --- drivers/dma/sun6i-dma.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)