On Thu, Jul 20, 2023 at 02:29:22PM +0300, Nikita Shubin via B4 Relay wrote:
> From: Nikita Shubin <[email protected]>
>
> - drop subsys_initcall code
> - add OF ID match table with data
> - add of_probe for device tree
...
> +#include <linux/of_device.h>
Why?
...
> +#ifdef CONFIG_OF
Why this ugly ifdeffery?
...
> + data = of_device_get_match_data(&pdev->dev);
device_get_match_data()
> + if (!data)
> + return ERR_PTR(dev_err_probe(&pdev->dev, -ENODEV, "No device match found\n"));
...
> + edma = devm_kzalloc(&pdev->dev,
> + struct_size(edma, channels, data->num_channels),
> + GFP_KERNEL);
Something wrong with indentation. Not the first time, please check all your
patches for this kind of issues.
> + return ERR_PTR(-ENOMEM);
...
> + edmac->regs = devm_platform_ioremap_resource(pdev, i);
No check?
> + edmac->irq = platform_get_irq(pdev, i);
No check?
> + edmac->edma = edma;
> +
> + edmac->clk = of_clk_get(np, i);
> +
Redundant blank line.
Why one of devm_clk_get*() can't be called?
> + if (IS_ERR(edmac->clk)) {
> + dev_warn(&pdev->dev, "failed to get clock\n");
> + continue;
> + }
...
> + if (platform_get_device_id(pdev))
> + edma = ep93xx_init_from_pdata(pdev);
> + else
> + edma = ep93xx_dma_of_probe(pdev);
> +
Unneeded blank line.
> + if (!edma)
> + return PTR_ERR(edma);
...
> --- a/include/linux/platform_data/dma-ep93xx.h
> +++ b/include/linux/platform_data/dma-ep93xx.h
> #include <linux/types.h>
> #include <linux/dmaengine.h>
> #include <linux/dma-mapping.h>
> +#include <linux/of.h>
property.h.
...
> + if (of_device_is_compatible(dev_of_node(chan->device->dev), "cirrus,ep9301-dma-m2p"))
> + return true;
> +
device_is_compatible()
--
With Best Regards,
Andy Shevchenko