diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-13 17:15:22 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-02-13 17:15:22 -0500 |
commit | a269c2f5a5ad2b24a19fdd723363daf18394ec85 (patch) | |
tree | 5d5e2871bc83a4def56beb86400c68e6ce1dc27f /drivers | |
parent | ed5016d772b84348cb86ab3cdbc533bd4812f2bb (diff) | |
parent | 6252547b8a7acced581b649af4ebf6d65f63a34b (diff) |
Merge branch 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm
This pull request covers the major oopsing issues with OMAP, caused by
the lack of the TWL driver. Even when the TWL driver is not built in,
we shouldn't oops.
* 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm:
ARM: omap: fix broken twl-core dependencies and ifdefs
ARM: omap: fix oops in drivers/video/omap2/dss/dpi.c
ARM: omap: fix oops in arch/arm/mach-omap2/vp.c when pmic is not found
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/Kconfig | 2 | ||||
-rw-r--r-- | drivers/mfd/twl-core.c | 6 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dpi.c | 5 |
3 files changed, 10 insertions, 3 deletions
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index cd13e9f2f5e6..f147395bac9a 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig | |||
@@ -200,7 +200,7 @@ config MENELAUS | |||
200 | 200 | ||
201 | config TWL4030_CORE | 201 | config TWL4030_CORE |
202 | bool "Texas Instruments TWL4030/TWL5030/TWL6030/TPS659x0 Support" | 202 | bool "Texas Instruments TWL4030/TWL5030/TWL6030/TPS659x0 Support" |
203 | depends on I2C=y && GENERIC_HARDIRQS && IRQ_DOMAIN | 203 | depends on I2C=y && GENERIC_HARDIRQS |
204 | help | 204 | help |
205 | Say yes here if you have TWL4030 / TWL6030 family chip on your board. | 205 | Say yes here if you have TWL4030 / TWL6030 family chip on your board. |
206 | This core driver provides register access and IRQ handling | 206 | This core driver provides register access and IRQ handling |
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c index e04e04ddc15e..8ce3959c6919 100644 --- a/drivers/mfd/twl-core.c +++ b/drivers/mfd/twl-core.c | |||
@@ -263,7 +263,9 @@ struct twl_client { | |||
263 | 263 | ||
264 | static struct twl_client twl_modules[TWL_NUM_SLAVES]; | 264 | static struct twl_client twl_modules[TWL_NUM_SLAVES]; |
265 | 265 | ||
266 | #ifdef CONFIG_IRQ_DOMAIN | ||
266 | static struct irq_domain domain; | 267 | static struct irq_domain domain; |
268 | #endif | ||
267 | 269 | ||
268 | /* mapping the module id to slave id and base address */ | 270 | /* mapping the module id to slave id and base address */ |
269 | struct twl_mapping { | 271 | struct twl_mapping { |
@@ -1226,13 +1228,13 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
1226 | pdata->irq_base = status; | 1228 | pdata->irq_base = status; |
1227 | pdata->irq_end = pdata->irq_base + nr_irqs; | 1229 | pdata->irq_end = pdata->irq_base + nr_irqs; |
1228 | 1230 | ||
1231 | #ifdef CONFIG_IRQ_DOMAIN | ||
1229 | domain.irq_base = pdata->irq_base; | 1232 | domain.irq_base = pdata->irq_base; |
1230 | domain.nr_irq = nr_irqs; | 1233 | domain.nr_irq = nr_irqs; |
1231 | #ifdef CONFIG_OF_IRQ | ||
1232 | domain.of_node = of_node_get(node); | 1234 | domain.of_node = of_node_get(node); |
1233 | domain.ops = &irq_domain_simple_ops; | 1235 | domain.ops = &irq_domain_simple_ops; |
1234 | #endif | ||
1235 | irq_domain_add(&domain); | 1236 | irq_domain_add(&domain); |
1237 | #endif | ||
1236 | 1238 | ||
1237 | if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C) == 0) { | 1239 | if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C) == 0) { |
1238 | dev_dbg(&client->dev, "can't talk I2C?\n"); | 1240 | dev_dbg(&client->dev, "can't talk I2C?\n"); |
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index 395d658a94fc..faaf305fda27 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c | |||
@@ -180,6 +180,11 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) | |||
180 | { | 180 | { |
181 | int r; | 181 | int r; |
182 | 182 | ||
183 | if (cpu_is_omap34xx() && !dpi.vdds_dsi_reg) { | ||
184 | DSSERR("no VDSS_DSI regulator\n"); | ||
185 | return -ENODEV; | ||
186 | } | ||
187 | |||
183 | if (dssdev->manager == NULL) { | 188 | if (dssdev->manager == NULL) { |
184 | DSSERR("failed to enable display: no manager\n"); | 189 | DSSERR("failed to enable display: no manager\n"); |
185 | return -ENODEV; | 190 | return -ENODEV; |