Hi Akhil, On Mon, Feb 21, 2022 at 09:09:34PM +0530, Akhil R wrote: > Adding GPC DMA controller driver for Tegra. The driver supports dma > transfers between memory to memory, IO peripheral to memory and > memory to IO peripheral. > > Co-developed-by: Pavan Kunapuli <pkunapuli@xxxxxxxxxx> > Signed-off-by: Pavan Kunapuli <pkunapuli@xxxxxxxxxx> > Co-developed-by: Rajesh Gumasta <rgumasta@xxxxxxxxxx> > Signed-off-by: Rajesh Gumasta <rgumasta@xxxxxxxxxx> > Signed-off-by: Akhil R <akhilrajeev@xxxxxxxxxx> > Reviewed-by: Jon Hunter <jonathanh@xxxxxxxxxx> > Reviewed-by: Dmitry Osipenko <digetx@xxxxxxxxx> > --- > drivers/dma/Kconfig | 11 + > drivers/dma/Makefile | 1 + > drivers/dma/tegra186-gpc-dma.c | 1507 ++++++++++++++++++++++++++++++++ > 3 files changed, 1519 insertions(+) > create mode 100644 drivers/dma/tegra186-gpc-dma.c <snip> > +static const struct __maybe_unused dev_pm_ops tegra_dma_dev_pm_ops = { The __maybe_unused cannot split the type ("struct dev_pm_ops") otherwise it causes a clang warning: https://lore.kernel.org/r/202202221207.lQ53BwKp-lkp@xxxxxxxxx/ static const struct dev_pm_ops tegra_dma_dev_pm_ops __maybe_unused = { would look a litle better I think. However, is this attribute even needed? The variable is unconditionally used below, so there should be no warning about it being unused? Cheers, Nathan > + SET_SYSTEM_SLEEP_PM_OPS(tegra_dma_pm_suspend, tegra_dma_pm_resume) > +}; > + > +static struct platform_driver tegra_dma_driver = { > + .driver = { > + .name = "tegra-gpcdma", > + .pm = &tegra_dma_dev_pm_ops, > + .of_match_table = tegra_dma_of_match, > + }, > + .probe = tegra_dma_probe, > + .remove = tegra_dma_remove, > +}; > + > +module_platform_driver(tegra_dma_driver); > + > +MODULE_DESCRIPTION("NVIDIA Tegra GPC DMA Controller driver"); > +MODULE_AUTHOR("Pavan Kunapuli <pkunapuli@xxxxxxxxxx>"); > +MODULE_AUTHOR("Rajesh Gumasta <rgumasta@xxxxxxxxxx>"); > +MODULE_LICENSE("GPL"); > -- > 2.17.1 > >