imx-sdma.c (0951a90e343d20b62daa7720da61f124b1c32d71) imx-sdma.c (09f7b80fac3e588b282ad26aabd7336d7d293efd)
1// SPDX-License-Identifier: GPL-2.0+
2//
3// drivers/dma/imx-sdma.c
4//
5// This file contains a driver for the Freescale Smart DMA engine
6//
7// Copyright 2010 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>
8//

--- 877 unchanged lines hidden (view full) ---

886 if (error)
887 sdmac->status = old_status;
888 }
889
890 /*
891 * SDMA stops cyclic channel when DMA request triggers a channel and no SDMA
892 * owned buffer is available (i.e. BD_DONE was set too late).
893 */
1// SPDX-License-Identifier: GPL-2.0+
2//
3// drivers/dma/imx-sdma.c
4//
5// This file contains a driver for the Freescale Smart DMA engine
6//
7// Copyright 2010 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>
8//

--- 877 unchanged lines hidden (view full) ---

886 if (error)
887 sdmac->status = old_status;
888 }
889
890 /*
891 * SDMA stops cyclic channel when DMA request triggers a channel and no SDMA
892 * owned buffer is available (i.e. BD_DONE was set too late).
893 */
894 if (!is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) {
894 if (sdmac->desc && !is_sdma_channel_enabled(sdmac->sdma, sdmac->channel)) {
895 dev_warn(sdmac->sdma->dev, "restart cyclic channel %d\n", sdmac->channel);
896 sdma_enable_channel(sdmac->sdma, sdmac->channel);
897 }
898}
899
900static void mxc_sdma_handle_channel_normal(struct sdma_channel *data)
901{
902 struct sdma_channel *sdmac = (struct sdma_channel *) data;

--- 1275 unchanged lines hidden (view full) ---

2178 ret = clk_prepare(sdma->clk_ipg);
2179 if (ret)
2180 return ret;
2181
2182 ret = clk_prepare(sdma->clk_ahb);
2183 if (ret)
2184 goto err_clk;
2185
895 dev_warn(sdmac->sdma->dev, "restart cyclic channel %d\n", sdmac->channel);
896 sdma_enable_channel(sdmac->sdma, sdmac->channel);
897 }
898}
899
900static void mxc_sdma_handle_channel_normal(struct sdma_channel *data)
901{
902 struct sdma_channel *sdmac = (struct sdma_channel *) data;

--- 1275 unchanged lines hidden (view full) ---

2178 ret = clk_prepare(sdma->clk_ipg);
2179 if (ret)
2180 return ret;
2181
2182 ret = clk_prepare(sdma->clk_ahb);
2183 if (ret)
2184 goto err_clk;
2185
2186 ret = devm_request_irq(&pdev->dev, irq, sdma_int_handler, 0,
2187 dev_name(&pdev->dev), sdma);
2186 ret = devm_request_irq(&pdev->dev, irq, sdma_int_handler, 0, "sdma",
2187 sdma);
2188 if (ret)
2189 goto err_irq;
2190
2191 sdma->irq = irq;
2192
2193 sdma->script_addrs = kzalloc(sizeof(*sdma->script_addrs), GFP_KERNEL);
2194 if (!sdma->script_addrs) {
2195 ret = -ENOMEM;

--- 145 unchanged lines hidden (view full) ---

2341
2342module_platform_driver(sdma_driver);
2343
2344MODULE_AUTHOR("Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>");
2345MODULE_DESCRIPTION("i.MX SDMA driver");
2346#if IS_ENABLED(CONFIG_SOC_IMX6Q)
2347MODULE_FIRMWARE("imx/sdma/sdma-imx6q.bin");
2348#endif
2188 if (ret)
2189 goto err_irq;
2190
2191 sdma->irq = irq;
2192
2193 sdma->script_addrs = kzalloc(sizeof(*sdma->script_addrs), GFP_KERNEL);
2194 if (!sdma->script_addrs) {
2195 ret = -ENOMEM;

--- 145 unchanged lines hidden (view full) ---

2341
2342module_platform_driver(sdma_driver);
2343
2344MODULE_AUTHOR("Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>");
2345MODULE_DESCRIPTION("i.MX SDMA driver");
2346#if IS_ENABLED(CONFIG_SOC_IMX6Q)
2347MODULE_FIRMWARE("imx/sdma/sdma-imx6q.bin");
2348#endif
2349#if IS_ENABLED(CONFIG_SOC_IMX7D)
2349#if IS_ENABLED(CONFIG_SOC_IMX7D) || IS_ENABLED(CONFIG_SOC_IMX8M)
2350MODULE_FIRMWARE("imx/sdma/sdma-imx7d.bin");
2351#endif
2352MODULE_LICENSE("GPL");
2350MODULE_FIRMWARE("imx/sdma/sdma-imx7d.bin");
2351#endif
2352MODULE_LICENSE("GPL");