linux-next: manual merge of the akpm tree with the arm-soc tree

From: Stephen Rothwell
Date: Thu May 17 2012 - 03:18:18 EST


Hi Andrew,

Today's linux-next merge of the akpm tree got a conflict in
drivers/ata/sata_mv.c between commit eee989902aab ("ARM: Orion: SATA: Add
per channel clk/clkdev support") from the arm-soc tree and commit
"ata/sata_mv: remove conditional compilation of clk code" from the akpm
tree.

I fixed it up (see below) and can carry the fix as necessary.

[I used the arm-soc version with all the conditionals on CONFIG_HAVE_CLK
removed.]

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc drivers/ata/sata_mv.c
index 24712ad,37503b8..0000000
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@@ -551,10 -551,7 +551,8 @@@ struct mv_host_priv
u32 irq_mask_offset;
u32 unmask_all_irqs;

- #if defined(CONFIG_HAVE_CLK)
struct clk *clk;
+ struct clk **port_clks;
- #endif
/*
* These consistent DMA memory pools give us guaranteed
* alignment for hardware-accessed data structures,
@@@ -4028,9 -4025,6 +4026,7 @@@ static int mv_platform_probe(struct pla
struct resource *res;
int n_ports = 0;
int rc;
- #if defined(CONFIG_HAVE_CLK)
+ int port;
- #endif

ata_print_version_once(&pdev->dev, DRV_VERSION);

@@@ -4058,13 -4052,6 +4054,11 @@@

if (!host || !hpriv)
return -ENOMEM;
- #if defined(CONFIG_HAVE_CLK)
+ hpriv->port_clks = devm_kzalloc(&pdev->dev,
+ sizeof(struct clk *) * n_ports,
+ GFP_KERNEL);
+ if (!hpriv->port_clks)
+ return -ENOMEM;
- #endif
host->private_data = hpriv;
hpriv->n_ports = n_ports;
hpriv->board_idx = chip_soc;
@@@ -4074,21 -4061,11 +4068,19 @@@
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");
+ dev_notice(&pdev->dev, "cannot get optional clkdev\n");
else
- clk_enable(hpriv->clk);
+ clk_prepare_enable(hpriv->clk);
+
+ for (port = 0; port < n_ports; port++) {
+ char port_number[16];
+ sprintf(port_number, "%d", port);
+ hpriv->port_clks[port] = clk_get(&pdev->dev, port_number);
+ if (!IS_ERR(hpriv->port_clks[port]))
+ clk_prepare_enable(hpriv->port_clks[port]);
+ }
- #endif

/*
* (Re-)program MBUS remapping windows if we are asked to.
@@@ -4115,18 -4092,10 +4107,16 @@@
return 0;

err:
- #if defined(CONFIG_HAVE_CLK)
if (!IS_ERR(hpriv->clk)) {
- clk_disable(hpriv->clk);
+ clk_disable_unprepare(hpriv->clk);
clk_put(hpriv->clk);
}
+ for (port = 0; port < n_ports; port++) {
+ if (!IS_ERR(hpriv->port_clks[port])) {
+ clk_disable_unprepare(hpriv->port_clks[port]);
+ clk_put(hpriv->port_clks[port]);
+ }
+ }
- #endif

return rc;
}
@@@ -4142,24 -4111,13 +4132,20 @@@
static int __devexit mv_platform_remove(struct platform_device *pdev)
{
struct ata_host *host = platform_get_drvdata(pdev);
- #if defined(CONFIG_HAVE_CLK)
struct mv_host_priv *hpriv = host->private_data;
+ int port;
- #endif
ata_host_detach(host);

- #if defined(CONFIG_HAVE_CLK)
if (!IS_ERR(hpriv->clk)) {
- clk_disable(hpriv->clk);
+ clk_disable_unprepare(hpriv->clk);
clk_put(hpriv->clk);
}
+ for (port = 0; port < host->n_ports; port++) {
+ if (!IS_ERR(hpriv->port_clks[port])) {
+ clk_disable_unprepare(hpriv->port_clks[port]);
+ clk_put(hpriv->port_clks[port]);
+ }
+ }
- #endif
return 0;
}

Attachment: pgp00000.pgp
Description: PGP signature