fix panic on boot due to invalid IORESOURCE for MFD cells, fix gpio value setting
[openwrt/openwrt.git] / target / linux / rdc / patches-2.6.32 / 002-rdc321x_gpio.patch
index e1aa46e8a4760439f38dc8817ff8628e4f9b856c..c2365b7bf5c40efe72ab69661a205e4d134a7beb 100644 (file)
@@ -8,9 +8,11 @@ Changes from v2:
 - use the pci_dev pointer passed as platform data
 - replaced rdc321x_pci_{read,write}
 
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -196,6 +196,14 @@ config GPIO_LANGWELL
+Index: linux-2.6.32.10/drivers/gpio/Kconfig
+===================================================================
+--- linux-2.6.32.10.orig/drivers/gpio/Kconfig  2010-05-15 22:54:31.000000000 +0200
++++ linux-2.6.32.10/drivers/gpio/Kconfig       2010-05-15 22:54:51.000000000 +0200
+@@ -196,6 +196,14 @@
        help
          Say Y here to support Intel Moorestown platform GPIO.
  
@@ -25,15 +27,19 @@ Changes from v2:
  comment "SPI GPIO expanders:"
  
  config GPIO_MAX7301
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -19,3 +19,4 @@ obj-$(CONFIG_GPIO_XILINX)    += xilinx_gpio
+Index: linux-2.6.32.10/drivers/gpio/Makefile
+===================================================================
+--- linux-2.6.32.10.orig/drivers/gpio/Makefile 2010-05-15 22:54:31.000000000 +0200
++++ linux-2.6.32.10/drivers/gpio/Makefile      2010-05-15 22:54:51.000000000 +0200
+@@ -19,3 +19,4 @@
  obj-$(CONFIG_GPIO_BT8XX)      += bt8xxgpio.o
  obj-$(CONFIG_GPIO_VR41XX)     += vr41xx_giu.o
  obj-$(CONFIG_GPIO_WM831X)     += wm831x-gpio.o
 +obj-$(CONFIG_GPIO_RDC321X)    += rdc321x-gpio.o
---- /dev/null
-+++ b/drivers/gpio/rdc321x-gpio.c
+Index: linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.32.10/drivers/gpio/rdc321x-gpio.c        2010-05-15 22:55:10.000000000 +0200
 @@ -0,0 +1,245 @@
 +/*
 + * RDC321x GPIO driver
@@ -109,7 +115,7 @@ Changes from v2:
 +              gpch->data_reg[reg] &= ~(1 << (gpio & 0x1f));
 +
 +      pci_write_config_dword(gpch->sb_pdev,
-+                      reg ? gpch->reg1_data_base : gpch->reg2_data_base,
++                      reg ? gpch->reg2_data_base : gpch->reg1_data_base,
 +                      gpch->data_reg[reg]);
 +}
 +
@@ -171,7 +177,7 @@ Changes from v2:
 +      struct rdc321x_gpio *rdc321x_gpio_dev;
 +      struct rdc321x_gpio_pdata *pdata;
 +
-+      pdata = pdev->dev.platform_data;
++      pdata = platform_get_drvdata(pdev);
 +      if (!pdata) {
 +              dev_err(&pdev->dev, "no platform data supplied\n");
 +              return -ENODEV;
@@ -183,7 +189,7 @@ Changes from v2:
 +              return -ENOMEM;
 +      }
 +
-+      r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpio-reg1");
++      r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg1");
 +      if (!r) {
 +              dev_err(&pdev->dev, "failed to get gpio-reg1 resource\n");
 +              err = -ENODEV;
@@ -195,7 +201,7 @@ Changes from v2:
 +      rdc321x_gpio_dev->reg1_ctrl_base = r->start;
 +      rdc321x_gpio_dev->reg1_data_base = r->start + 0x4;
 +
-+      r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpio-reg2");
++      r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg2");
 +      if (!r) {
 +              dev_err(&pdev->dev, "failed to get gpio-reg2 resource\n");
 +              err = -ENODEV;