Commit 297eedba authored by Thomas Petazzoni's avatar Thomas Petazzoni

dma: mv_xor: rename mv_xor_private to mv_xor_device

Now that mv_xor_device is no longer used to designate the per-channel
DMA devices, use it know to designate the XOR engine themselves
(currently composed of two XOR channels).

So, now we have the nice organization where:

 - mv_xor_device represents each XOR engine in the system
 - mv_xor_chan   represents each XOR channel of a given XOR engine
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 1ef48a26
...@@ -1086,7 +1086,7 @@ static int mv_xor_channel_remove(struct mv_xor_chan *mv_chan) ...@@ -1086,7 +1086,7 @@ static int mv_xor_channel_remove(struct mv_xor_chan *mv_chan)
} }
static struct mv_xor_chan * static struct mv_xor_chan *
mv_xor_channel_add(struct mv_xor_private *msp, mv_xor_channel_add(struct mv_xor_device *xordev,
struct platform_device *pdev, struct platform_device *pdev,
int hw_id, dma_cap_mask_t cap_mask, int hw_id, dma_cap_mask_t cap_mask,
size_t pool_size, int irq) size_t pool_size, int irq)
...@@ -1118,7 +1118,7 @@ mv_xor_channel_add(struct mv_xor_private *msp, ...@@ -1118,7 +1118,7 @@ mv_xor_channel_add(struct mv_xor_private *msp,
/* discover transaction capabilites from the platform data */ /* discover transaction capabilites from the platform data */
dma_dev->cap_mask = cap_mask; dma_dev->cap_mask = cap_mask;
mv_chan->shared = msp; mv_chan->shared = xordev;
INIT_LIST_HEAD(&dma_dev->channels); INIT_LIST_HEAD(&dma_dev->channels);
...@@ -1139,7 +1139,7 @@ mv_xor_channel_add(struct mv_xor_private *msp, ...@@ -1139,7 +1139,7 @@ mv_xor_channel_add(struct mv_xor_private *msp,
dma_dev->device_prep_dma_xor = mv_xor_prep_dma_xor; dma_dev->device_prep_dma_xor = mv_xor_prep_dma_xor;
} }
mv_chan->mmr_base = msp->xor_base; mv_chan->mmr_base = xordev->xor_base;
if (!mv_chan->mmr_base) { if (!mv_chan->mmr_base) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_free_dma; goto err_free_dma;
...@@ -1200,10 +1200,10 @@ mv_xor_channel_add(struct mv_xor_private *msp, ...@@ -1200,10 +1200,10 @@ mv_xor_channel_add(struct mv_xor_private *msp,
} }
static void static void
mv_xor_conf_mbus_windows(struct mv_xor_private *msp, mv_xor_conf_mbus_windows(struct mv_xor_device *xordev,
const struct mbus_dram_target_info *dram) const struct mbus_dram_target_info *dram)
{ {
void __iomem *base = msp->xor_base; void __iomem *base = xordev->xor_base;
u32 win_enable = 0; u32 win_enable = 0;
int i; int i;
...@@ -1233,50 +1233,50 @@ mv_xor_conf_mbus_windows(struct mv_xor_private *msp, ...@@ -1233,50 +1233,50 @@ mv_xor_conf_mbus_windows(struct mv_xor_private *msp,
static int mv_xor_probe(struct platform_device *pdev) static int mv_xor_probe(struct platform_device *pdev)
{ {
const struct mbus_dram_target_info *dram; const struct mbus_dram_target_info *dram;
struct mv_xor_private *msp; struct mv_xor_device *xordev;
struct mv_xor_platform_data *pdata = pdev->dev.platform_data; struct mv_xor_platform_data *pdata = pdev->dev.platform_data;
struct resource *res; struct resource *res;
int i, ret; int i, ret;
dev_notice(&pdev->dev, "Marvell XOR driver\n"); dev_notice(&pdev->dev, "Marvell XOR driver\n");
msp = devm_kzalloc(&pdev->dev, sizeof(*msp), GFP_KERNEL); xordev = devm_kzalloc(&pdev->dev, sizeof(*xordev), GFP_KERNEL);
if (!msp) if (!xordev)
return -ENOMEM; return -ENOMEM;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) if (!res)
return -ENODEV; return -ENODEV;
msp->xor_base = devm_ioremap(&pdev->dev, res->start, xordev->xor_base = devm_ioremap(&pdev->dev, res->start,
resource_size(res)); resource_size(res));
if (!msp->xor_base) if (!xordev->xor_base)
return -EBUSY; return -EBUSY;
res = platform_get_resource(pdev, IORESOURCE_MEM, 1); res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
if (!res) if (!res)
return -ENODEV; return -ENODEV;
msp->xor_high_base = devm_ioremap(&pdev->dev, res->start, xordev->xor_high_base = devm_ioremap(&pdev->dev, res->start,
resource_size(res)); resource_size(res));
if (!msp->xor_high_base) if (!xordev->xor_high_base)
return -EBUSY; return -EBUSY;
platform_set_drvdata(pdev, msp); platform_set_drvdata(pdev, xordev);
/* /*
* (Re-)program MBUS remapping windows if we are asked to. * (Re-)program MBUS remapping windows if we are asked to.
*/ */
dram = mv_mbus_dram_info(); dram = mv_mbus_dram_info();
if (dram) if (dram)
mv_xor_conf_mbus_windows(msp, dram); mv_xor_conf_mbus_windows(xordev, dram);
/* Not all platforms can gate the clock, so it is not /* Not all platforms can gate the clock, so it is not
* an error if the clock does not exists. * an error if the clock does not exists.
*/ */
msp->clk = clk_get(&pdev->dev, NULL); xordev->clk = clk_get(&pdev->dev, NULL);
if (!IS_ERR(msp->clk)) if (!IS_ERR(xordev->clk))
clk_prepare_enable(msp->clk); clk_prepare_enable(xordev->clk);
if (pdata && pdata->channels) { if (pdata && pdata->channels) {
for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) { for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) {
...@@ -1295,12 +1295,12 @@ static int mv_xor_probe(struct platform_device *pdev) ...@@ -1295,12 +1295,12 @@ static int mv_xor_probe(struct platform_device *pdev)
goto err_channel_add; goto err_channel_add;
} }
msp->channels[i] = xordev->channels[i] =
mv_xor_channel_add(msp, pdev, cd->hw_id, mv_xor_channel_add(xordev, pdev, cd->hw_id,
cd->cap_mask, cd->cap_mask,
cd->pool_size, irq); cd->pool_size, irq);
if (IS_ERR(msp->channels[i])) { if (IS_ERR(xordev->channels[i])) {
ret = PTR_ERR(msp->channels[i]); ret = PTR_ERR(xordev->channels[i]);
goto err_channel_add; goto err_channel_add;
} }
} }
...@@ -1310,27 +1310,27 @@ static int mv_xor_probe(struct platform_device *pdev) ...@@ -1310,27 +1310,27 @@ static int mv_xor_probe(struct platform_device *pdev)
err_channel_add: err_channel_add:
for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) for (i = 0; i < MV_XOR_MAX_CHANNELS; i++)
if (msp->channels[i]) if (xordev->channels[i])
mv_xor_channel_remove(msp->channels[i]); mv_xor_channel_remove(xordev->channels[i]);
clk_disable_unprepare(msp->clk); clk_disable_unprepare(xordev->clk);
clk_put(msp->clk); clk_put(xordev->clk);
return ret; return ret;
} }
static int mv_xor_remove(struct platform_device *pdev) static int mv_xor_remove(struct platform_device *pdev)
{ {
struct mv_xor_private *msp = platform_get_drvdata(pdev); struct mv_xor_device *xordev = platform_get_drvdata(pdev);
int i; int i;
for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) { for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) {
if (msp->channels[i]) if (xordev->channels[i])
mv_xor_channel_remove(msp->channels[i]); mv_xor_channel_remove(xordev->channels[i]);
} }
if (!IS_ERR(msp->clk)) { if (!IS_ERR(xordev->clk)) {
clk_disable_unprepare(msp->clk); clk_disable_unprepare(xordev->clk);
clk_put(msp->clk); clk_put(xordev->clk);
} }
return 0; return 0;
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
#define WINDOW_REMAP_HIGH(w) (0x290 + ((w) << 2)) #define WINDOW_REMAP_HIGH(w) (0x290 + ((w) << 2))
#define WINDOW_BAR_ENABLE(chan) (0x240 + ((chan) << 2)) #define WINDOW_BAR_ENABLE(chan) (0x240 + ((chan) << 2))
struct mv_xor_private { struct mv_xor_device {
void __iomem *xor_base; void __iomem *xor_base;
void __iomem *xor_high_base; void __iomem *xor_high_base;
struct clk *clk; struct clk *clk;
...@@ -87,7 +87,7 @@ struct mv_xor_chan { ...@@ -87,7 +87,7 @@ struct mv_xor_chan {
void *dma_desc_pool_virt; void *dma_desc_pool_virt;
size_t pool_size; size_t pool_size;
struct dma_device dmadev; struct dma_device dmadev;
struct mv_xor_private *shared; struct mv_xor_device *shared;
struct dma_chan dmachan; struct dma_chan dmachan;
struct mv_xor_desc_slot *last_used; struct mv_xor_desc_slot *last_used;
struct list_head all_slots; struct list_head all_slots;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment