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

+9 -5
+1 -1
drivers/gpio/rdc321x-gpio.c
··· 135 135 struct rdc321x_gpio *rdc321x_gpio_dev; 136 136 struct rdc321x_gpio_pdata *pdata; 137 137 138 - pdata = pdev->dev.platform_data; 138 + pdata = platform_get_drvdata(pdev); 139 139 if (!pdata) { 140 140 dev_err(&pdev->dev, "no platform data supplied\n"); 141 141 return -ENODEV;
+1 -1
drivers/mfd/ab8500-core.c
··· 303 303 continue; 304 304 305 305 do { 306 - int bit = __ffs(status); 306 + int bit = __ffs(value); 307 307 int line = i * 8 + bit; 308 308 309 309 handle_nested_irq(ab8500->irq_base + line);
+6 -2
drivers/mfd/wm831x-core.c
··· 1455 1455 dev_err(wm831x->dev, "Failed to read parent ID: %d\n", ret); 1456 1456 goto err; 1457 1457 } 1458 - if (ret != 0x6204) { 1458 + switch (ret) { 1459 + case 0x6204: 1460 + case 0x6246: 1461 + break; 1462 + default: 1459 1463 dev_err(wm831x->dev, "Device is not a WM831x: ID %x\n", ret); 1460 1464 ret = -EINVAL; 1461 1465 goto err; ··· 1624 1620 case WM8325: 1625 1621 ret = mfd_add_devices(wm831x->dev, -1, 1626 1622 wm8320_devs, ARRAY_SIZE(wm8320_devs), 1627 - NULL, 0); 1623 + NULL, wm831x->irq_base); 1628 1624 break; 1629 1625 1630 1626 default:
+1 -1
drivers/watchdog/rdc321x_wdt.c
··· 231 231 struct resource *r; 232 232 struct rdc321x_wdt_pdata *pdata; 233 233 234 - pdata = pdev->dev.platform_data; 234 + pdata = platform_get_drvdata(pdev); 235 235 if (!pdata) { 236 236 dev_err(&pdev->dev, "no platform data supplied\n"); 237 237 return -ENODEV;