Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
  mfd: Support additional parent IDs for wm831x
  mfd: Fix ab8500-core interrupt ffs bit bug
  mfd: Supply IRQ base for WM832x devices
  watchdog: Fix null pointer dereference while accessing rdc321x platform_data
  gpio: Fix null pointer dereference while accessing rdc321x platform_data
This commit is contained in:
Linus Torvalds 2010-12-22 19:47:04 -08:00
commit ca5f73a05e
4 changed files with 9 additions and 5 deletions

View File

@ -135,7 +135,7 @@ static int __devinit rdc321x_gpio_probe(struct platform_device *pdev)
struct rdc321x_gpio *rdc321x_gpio_dev; struct rdc321x_gpio *rdc321x_gpio_dev;
struct rdc321x_gpio_pdata *pdata; struct rdc321x_gpio_pdata *pdata;
pdata = pdev->dev.platform_data; pdata = platform_get_drvdata(pdev);
if (!pdata) { if (!pdata) {
dev_err(&pdev->dev, "no platform data supplied\n"); dev_err(&pdev->dev, "no platform data supplied\n");
return -ENODEV; return -ENODEV;

View File

@ -303,7 +303,7 @@ static irqreturn_t ab8500_irq(int irq, void *dev)
continue; continue;
do { do {
int bit = __ffs(status); int bit = __ffs(value);
int line = i * 8 + bit; int line = i * 8 + bit;
handle_nested_irq(ab8500->irq_base + line); handle_nested_irq(ab8500->irq_base + line);

View File

@ -1455,7 +1455,11 @@ int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq)
dev_err(wm831x->dev, "Failed to read parent ID: %d\n", ret); dev_err(wm831x->dev, "Failed to read parent ID: %d\n", ret);
goto err; goto err;
} }
if (ret != 0x6204) { switch (ret) {
case 0x6204:
case 0x6246:
break;
default:
dev_err(wm831x->dev, "Device is not a WM831x: ID %x\n", ret); dev_err(wm831x->dev, "Device is not a WM831x: ID %x\n", ret);
ret = -EINVAL; ret = -EINVAL;
goto err; goto err;
@ -1620,7 +1624,7 @@ int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq)
case WM8325: case WM8325:
ret = mfd_add_devices(wm831x->dev, -1, ret = mfd_add_devices(wm831x->dev, -1,
wm8320_devs, ARRAY_SIZE(wm8320_devs), wm8320_devs, ARRAY_SIZE(wm8320_devs),
NULL, 0); NULL, wm831x->irq_base);
break; break;
default: default:

View File

@ -231,7 +231,7 @@ static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
struct resource *r; struct resource *r;
struct rdc321x_wdt_pdata *pdata; struct rdc321x_wdt_pdata *pdata;
pdata = pdev->dev.platform_data; pdata = platform_get_drvdata(pdev);
if (!pdata) { if (!pdata) {
dev_err(&pdev->dev, "no platform data supplied\n"); dev_err(&pdev->dev, "no platform data supplied\n");
return -ENODEV; return -ENODEV;