summaryrefslogtreecommitdiffstats
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2017-03-08 14:09:04 -0800
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-09 11:51:28 +0100
commitef54fb4b1f14ed89f06b9e5158770ac6df9b64f8 (patch)
tree2bf25400d06100fffba88e6b6c7dd24beef1f0a6 /drivers/usb/host
parentb52eb5a9a228e5f1c0d2fc485b71b7c4e67b143a (diff)
downloadbarebox-ef54fb4b1f14ed89f06b9e5158770ac6df9b64f8.tar.gz
barebox-ef54fb4b1f14ed89f06b9e5158770ac6df9b64f8.tar.xz
usb: echi-atmel: Convert global variables to private data
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/ehci-atmel.c42
1 files changed, 26 insertions, 16 deletions
diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c
index fa9ca7d5b0..7a9d942a1a 100644
--- a/drivers/usb/host/ehci-atmel.c
+++ b/drivers/usb/host/ehci-atmel.c
@@ -29,29 +29,34 @@
#include "ehci.h"
-/* interface and function clocks; sometimes also an AHB clock */
-static struct clk *iclk, *fclk;
+struct atmel_ehci_priv {
+ struct device_d *dev;
+ struct clk *iclk;
+ struct clk *uclk;
+};
-static int atmel_start_clock(void)
+static int atmel_start_clock(struct atmel_ehci_priv *atehci)
{
int ret;
- ret = clk_enable(iclk);
+ ret = clk_enable(atehci->iclk);
if (ret < 0) {
- pr_err("Error enabling interface clock\n");
+ dev_err(atehci->dev,
+ "Error enabling interface clock\n");
return ret;
}
- ret = clk_enable(fclk);
+ ret = clk_enable(atehci->uclk);
if (ret < 0)
- pr_err("Error enabling function clock\n");
+ dev_err(atehci->dev,
+ "Error enabling function clock\n");
return ret;
}
-static void atmel_stop_clock(void)
+static void atmel_stop_clock(struct atmel_ehci_priv *atehci)
{
- clk_disable(fclk);
- clk_disable(iclk);
+ clk_disable(atehci->iclk);
+ clk_disable(atehci->uclk);
}
static int atmel_ehci_probe(struct device_d *dev)
@@ -59,15 +64,20 @@ static int atmel_ehci_probe(struct device_d *dev)
int ret;
struct resource *iores;
struct ehci_data data;
+ struct atmel_ehci_priv *atehci;
+
+ atehci = xzalloc(sizeof(*atehci));
+ atehci->dev = dev;
+ dev->priv = atehci;
- iclk = clk_get(dev, "ehci_clk");
- if (IS_ERR(iclk)) {
+ atehci->iclk = clk_get(dev, "ehci_clk");
+ if (IS_ERR(atehci->iclk)) {
dev_err(dev, "Error getting interface clock\n");
return -ENOENT;
}
- fclk = clk_get(dev, "uhpck");
- if (IS_ERR(fclk)) {
+ atehci->uclk = clk_get(dev, "uhpck");
+ if (IS_ERR(atehci->iclk)) {
dev_err(dev, "Error getting function clock\n");
return -ENOENT;
}
@@ -75,7 +85,7 @@ static int atmel_ehci_probe(struct device_d *dev)
/*
* Start the USB clocks.
*/
- ret = atmel_start_clock();
+ ret = atmel_start_clock(atehci);
if (ret < 0)
return ret;
@@ -96,7 +106,7 @@ static void atmel_ehci_remove(struct device_d *dev)
/*
* Stop the USB clocks.
*/
- atmel_stop_clock();
+ atmel_stop_clock(dev->priv);
}
static struct driver_d atmel_ehci_driver = {