mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-11 14:26:34 +00:00
dma: tegra: use reset framework
Tegra's clock driver now provides an implementation of the common reset API (include/linux/reset.h). Use this instead of the old Tegra- specific API; that will soon be removed. Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Thierry Reding <treding@nvidia.com> Acked-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
80b28791ff
commit
9aa433d2a7
@ -32,8 +32,8 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
|
#include <linux/reset.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/clk/tegra.h>
|
|
||||||
|
|
||||||
#include "dmaengine.h"
|
#include "dmaengine.h"
|
||||||
|
|
||||||
@ -208,6 +208,7 @@ struct tegra_dma {
|
|||||||
struct dma_device dma_dev;
|
struct dma_device dma_dev;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
struct clk *dma_clk;
|
struct clk *dma_clk;
|
||||||
|
struct reset_control *rst;
|
||||||
spinlock_t global_lock;
|
spinlock_t global_lock;
|
||||||
void __iomem *base_addr;
|
void __iomem *base_addr;
|
||||||
const struct tegra_dma_chip_data *chip_data;
|
const struct tegra_dma_chip_data *chip_data;
|
||||||
@ -1282,6 +1283,12 @@ static int tegra_dma_probe(struct platform_device *pdev)
|
|||||||
return PTR_ERR(tdma->dma_clk);
|
return PTR_ERR(tdma->dma_clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tdma->rst = devm_reset_control_get(&pdev->dev, "dma");
|
||||||
|
if (IS_ERR(tdma->rst)) {
|
||||||
|
dev_err(&pdev->dev, "Error: Missing reset\n");
|
||||||
|
return PTR_ERR(tdma->rst);
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock_init(&tdma->global_lock);
|
spin_lock_init(&tdma->global_lock);
|
||||||
|
|
||||||
pm_runtime_enable(&pdev->dev);
|
pm_runtime_enable(&pdev->dev);
|
||||||
@ -1302,9 +1309,9 @@ static int tegra_dma_probe(struct platform_device *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Reset DMA controller */
|
/* Reset DMA controller */
|
||||||
tegra_periph_reset_assert(tdma->dma_clk);
|
reset_control_assert(tdma->rst);
|
||||||
udelay(2);
|
udelay(2);
|
||||||
tegra_periph_reset_deassert(tdma->dma_clk);
|
reset_control_deassert(tdma->rst);
|
||||||
|
|
||||||
/* Enable global DMA registers */
|
/* Enable global DMA registers */
|
||||||
tdma_write(tdma, TEGRA_APBDMA_GENERAL, TEGRA_APBDMA_GENERAL_ENABLE);
|
tdma_write(tdma, TEGRA_APBDMA_GENERAL, TEGRA_APBDMA_GENERAL_ENABLE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user