Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 178074
b: refs/heads/master
c: c77a2f4
h: refs/heads/master
v: v3
  • Loading branch information
Saeed Bishara authored and Jeff Garzik committed Dec 17, 2009
1 parent f44775e commit 799440e
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d7b0c143693bcbf391d2be235e150b97bfd8f9ba
refs/heads/master: c77a2f4e6b76c9094182dfa653ece4243f6df80c
37 changes: 34 additions & 3 deletions trunk/drivers/ata/sata_mv.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
#include <linux/dmapool.h>
#include <linux/dma-mapping.h>
#include <linux/device.h>
#include <linux/clk.h>
#include <linux/platform_device.h>
#include <linux/ata_platform.h>
#include <linux/mbus.h>
Expand Down Expand Up @@ -548,6 +549,10 @@ struct mv_host_priv {
u32 irq_cause_offset;
u32 irq_mask_offset;
u32 unmask_all_irqs;

#if defined(CONFIG_HAVE_CLK)
struct clk *clk;
#endif
/*
* These consistent DMA memory pools give us guaranteed
* alignment for hardware-accessed data structures,
Expand Down Expand Up @@ -4041,6 +4046,14 @@ static int mv_platform_probe(struct platform_device *pdev)
resource_size(res));
hpriv->base -= SATAHC0_REG_BASE;

#if defined(CONFIG_HAVE_CLK)
hpriv->clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(hpriv->clk))
dev_notice(&pdev->dev, "cannot get clkdev\n");
else
clk_enable(hpriv->clk);
#endif

/*
* (Re-)program MBUS remapping windows if we are asked to.
*/
Expand All @@ -4049,19 +4062,28 @@ static int mv_platform_probe(struct platform_device *pdev)

rc = mv_create_dma_pools(hpriv, &pdev->dev);
if (rc)
return rc;
goto err;

/* initialize adapter */
rc = mv_init_host(host, chip_soc);
if (rc)
return rc;
goto err;

dev_printk(KERN_INFO, &pdev->dev,
"slots %u ports %d\n", (unsigned)MV_MAX_Q_DEPTH,
host->n_ports);

return ata_host_activate(host, platform_get_irq(pdev, 0), mv_interrupt,
IRQF_SHARED, &mv6_sht);
err:
#if defined(CONFIG_HAVE_CLK)
if (!IS_ERR(hpriv->clk)) {
clk_disable(hpriv->clk);
clk_put(hpriv->clk);
}
#endif

return rc;
}

/*
Expand All @@ -4076,8 +4098,17 @@ static int __devexit mv_platform_remove(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct ata_host *host = dev_get_drvdata(dev);

#if defined(CONFIG_HAVE_CLK)
struct mv_host_priv *hpriv = host->private_data;
#endif
ata_host_detach(host);

#if defined(CONFIG_HAVE_CLK)
if (!IS_ERR(hpriv->clk)) {
clk_disable(hpriv->clk);
clk_put(hpriv->clk);
}
#endif
return 0;
}

Expand Down

0 comments on commit 799440e

Please sign in to comment.