aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/amba/bus.c42
-rw-r--r--drivers/mfd/db8500-prcmu.c1
-rw-r--r--drivers/spi/spi-pl022.c2
-rw-r--r--include/linux/amba/bus.h7
4 files changed, 2 insertions, 50 deletions
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 01c2cf4efcdd..cc273226dbd0 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -247,8 +247,7 @@ static int amba_pm_restore(struct device *dev)
247/* 247/*
248 * Hooks to provide runtime PM of the pclk (bus clock). It is safe to 248 * Hooks to provide runtime PM of the pclk (bus clock). It is safe to
249 * enable/disable the bus clock at runtime PM suspend/resume as this 249 * enable/disable the bus clock at runtime PM suspend/resume as this
250 * does not result in loss of context. However, disabling vcore power 250 * does not result in loss of context.
251 * would do, so we leave that to the driver.
252 */ 251 */
253static int amba_pm_runtime_suspend(struct device *dev) 252static int amba_pm_runtime_suspend(struct device *dev)
254{ 253{
@@ -354,39 +353,6 @@ static void amba_put_disable_pclk(struct amba_device *pcdev)
354 clk_put(pclk); 353 clk_put(pclk);
355} 354}
356 355
357static int amba_get_enable_vcore(struct amba_device *pcdev)
358{
359 struct regulator *vcore = regulator_get(&pcdev->dev, "vcore");
360 int ret;
361
362 pcdev->vcore = vcore;
363
364 if (IS_ERR(vcore)) {
365 /* It is OK not to supply a vcore regulator */
366 if (PTR_ERR(vcore) == -ENODEV)
367 return 0;
368 return PTR_ERR(vcore);
369 }
370
371 ret = regulator_enable(vcore);
372 if (ret) {
373 regulator_put(vcore);
374 pcdev->vcore = ERR_PTR(-ENODEV);
375 }
376
377 return ret;
378}
379
380static void amba_put_disable_vcore(struct amba_device *pcdev)
381{
382 struct regulator *vcore = pcdev->vcore;
383
384 if (!IS_ERR(vcore)) {
385 regulator_disable(vcore);
386 regulator_put(vcore);
387 }
388}
389
390/* 356/*
391 * These are the device model conversion veneers; they convert the 357 * These are the device model conversion veneers; they convert the
392 * device model structures to our more specific structures. 358 * device model structures to our more specific structures.
@@ -399,10 +365,6 @@ static int amba_probe(struct device *dev)
399 int ret; 365 int ret;
400 366
401 do { 367 do {
402 ret = amba_get_enable_vcore(pcdev);
403 if (ret)
404 break;
405
406 ret = amba_get_enable_pclk(pcdev); 368 ret = amba_get_enable_pclk(pcdev);
407 if (ret) 369 if (ret)
408 break; 370 break;
@@ -420,7 +382,6 @@ static int amba_probe(struct device *dev)
420 pm_runtime_put_noidle(dev); 382 pm_runtime_put_noidle(dev);
421 383
422 amba_put_disable_pclk(pcdev); 384 amba_put_disable_pclk(pcdev);
423 amba_put_disable_vcore(pcdev);
424 } while (0); 385 } while (0);
425 386
426 return ret; 387 return ret;
@@ -442,7 +403,6 @@ static int amba_remove(struct device *dev)
442 pm_runtime_put_noidle(dev); 403 pm_runtime_put_noidle(dev);
443 404
444 amba_put_disable_pclk(pcdev); 405 amba_put_disable_pclk(pcdev);
445 amba_put_disable_vcore(pcdev);
446 406
447 return ret; 407 return ret;
448} 408}
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index ebc1e8658226..5be32489714f 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -2788,6 +2788,7 @@ static struct regulator_init_data db8500_regulators[DB8500_NUM_REGULATORS] = {
2788 .constraints = { 2788 .constraints = {
2789 .name = "db8500-vape", 2789 .name = "db8500-vape",
2790 .valid_ops_mask = REGULATOR_CHANGE_STATUS, 2790 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
2791 .always_on = true,
2791 }, 2792 },
2792 .consumer_supplies = db8500_vape_consumers, 2793 .consumer_supplies = db8500_vape_consumers,
2793 .num_consumer_supplies = ARRAY_SIZE(db8500_vape_consumers), 2794 .num_consumer_supplies = ARRAY_SIZE(db8500_vape_consumers),
diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
index 96f0da66b185..09c925aaf320 100644
--- a/drivers/spi/spi-pl022.c
+++ b/drivers/spi/spi-pl022.c
@@ -2195,7 +2195,6 @@ static int pl022_runtime_suspend(struct device *dev)
2195 struct pl022 *pl022 = dev_get_drvdata(dev); 2195 struct pl022 *pl022 = dev_get_drvdata(dev);
2196 2196
2197 clk_disable(pl022->clk); 2197 clk_disable(pl022->clk);
2198 amba_vcore_disable(pl022->adev);
2199 2198
2200 return 0; 2199 return 0;
2201} 2200}
@@ -2204,7 +2203,6 @@ static int pl022_runtime_resume(struct device *dev)
2204{ 2203{
2205 struct pl022 *pl022 = dev_get_drvdata(dev); 2204 struct pl022 *pl022 = dev_get_drvdata(dev);
2206 2205
2207 amba_vcore_enable(pl022->adev);
2208 clk_enable(pl022->clk); 2206 clk_enable(pl022->clk);
2209 2207
2210 return 0; 2208 return 0;
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index 7847e197730a..8d54f79457ba 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -30,7 +30,6 @@ struct amba_device {
30 struct device dev; 30 struct device dev;
31 struct resource res; 31 struct resource res;
32 struct clk *pclk; 32 struct clk *pclk;
33 struct regulator *vcore;
34 u64 dma_mask; 33 u64 dma_mask;
35 unsigned int periphid; 34 unsigned int periphid;
36 unsigned int irq[AMBA_NR_IRQS]; 35 unsigned int irq[AMBA_NR_IRQS];
@@ -75,12 +74,6 @@ void amba_release_regions(struct amba_device *);
75#define amba_pclk_disable(d) \ 74#define amba_pclk_disable(d) \
76 do { if (!IS_ERR((d)->pclk)) clk_disable((d)->pclk); } while (0) 75 do { if (!IS_ERR((d)->pclk)) clk_disable((d)->pclk); } while (0)
77 76
78#define amba_vcore_enable(d) \
79 (IS_ERR((d)->vcore) ? 0 : regulator_enable((d)->vcore))
80
81#define amba_vcore_disable(d) \
82 do { if (!IS_ERR((d)->vcore)) regulator_disable((d)->vcore); } while (0)
83
84/* Some drivers don't use the struct amba_device */ 77/* Some drivers don't use the struct amba_device */
85#define AMBA_CONFIG_BITS(a) (((a) >> 24) & 0xff) 78#define AMBA_CONFIG_BITS(a) (((a) >> 24) & 0xff)
86#define AMBA_REV_BITS(a) (((a) >> 20) & 0x0f) 79#define AMBA_REV_BITS(a) (((a) >> 20) & 0x0f)