diff options
| -rw-r--r-- | drivers/amba/bus.c | 42 | ||||
| -rw-r--r-- | drivers/mfd/db8500-prcmu.c | 1 | ||||
| -rw-r--r-- | drivers/spi/spi-pl022.c | 2 | ||||
| -rw-r--r-- | include/linux/amba/bus.h | 7 |
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 | */ |
| 253 | static int amba_pm_runtime_suspend(struct device *dev) | 252 | static 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 | ||
| 357 | static 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 | |||
| 380 | static 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) |
