Browse Source

kernel: backport BCM5357 fix for GPIOs

This backports: bcma: gpio: register 32 GPIOs on BCM5357

Signed-off-by: Rafał Miłecki <[email protected]>
Signed-off-by: Hauke Mehrtens <[email protected]>

SVN-Revision: 40347
Hauke Mehrtens 12 years ago
parent
commit
bdde12b13a

+ 12 - 3
target/linux/generic/patches-3.10/025-bcma_backport.patch

@@ -479,17 +479,26 @@
  
  	chip->label		= "bcma_gpio";
  	chip->owner		= THIS_MODULE;
-@@ -95,7 +215,9 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+@@ -95,8 +215,17 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	chip->set		= bcma_gpio_set_value;
  	chip->direction_input	= bcma_gpio_direction_input;
  	chip->direction_output	= bcma_gpio_direction_output;
 +#if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
  	chip->to_irq		= bcma_gpio_to_irq;
+-	chip->ngpio		= 16;
 +#endif
- 	chip->ngpio		= 16;
++	switch (cc->core->bus->chipinfo.id) {
++	case BCMA_CHIP_ID_BCM5357:
++		chip->ngpio	= 32;
++		break;
++	default:
++		chip->ngpio	= 16;
++	}
++
  	/* There is just one SoC in one device and its GPIO addresses should be
  	 * deterministic to address them more easily. The other buses could get
-@@ -105,10 +227,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+ 	 * a random base number. */
+@@ -105,10 +234,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	else
  		chip->base		= -1;
  

+ 12 - 3
target/linux/generic/patches-3.12/025-bcma_backport.patch

@@ -198,17 +198,26 @@
  
  	chip->label		= "bcma_gpio";
  	chip->owner		= THIS_MODULE;
-@@ -95,7 +215,9 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+@@ -95,8 +215,17 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	chip->set		= bcma_gpio_set_value;
  	chip->direction_input	= bcma_gpio_direction_input;
  	chip->direction_output	= bcma_gpio_direction_output;
 +#if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
  	chip->to_irq		= bcma_gpio_to_irq;
+-	chip->ngpio		= 16;
 +#endif
- 	chip->ngpio		= 16;
++	switch (cc->core->bus->chipinfo.id) {
++	case BCMA_CHIP_ID_BCM5357:
++		chip->ngpio	= 32;
++		break;
++	default:
++		chip->ngpio	= 16;
++	}
++
  	/* There is just one SoC in one device and its GPIO addresses should be
  	 * deterministic to address them more easily. The other buses could get
-@@ -105,10 +227,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+ 	 * a random base number. */
+@@ -105,10 +234,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	else
  		chip->base		= -1;
  

+ 12 - 3
target/linux/generic/patches-3.13/025-bcma_backport.patch

@@ -198,17 +198,26 @@
  
  	chip->label		= "bcma_gpio";
  	chip->owner		= THIS_MODULE;
-@@ -95,7 +215,9 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+@@ -95,8 +215,17 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	chip->set		= bcma_gpio_set_value;
  	chip->direction_input	= bcma_gpio_direction_input;
  	chip->direction_output	= bcma_gpio_direction_output;
 +#if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
  	chip->to_irq		= bcma_gpio_to_irq;
+-	chip->ngpio		= 16;
 +#endif
- 	chip->ngpio		= 16;
++	switch (cc->core->bus->chipinfo.id) {
++	case BCMA_CHIP_ID_BCM5357:
++		chip->ngpio	= 32;
++		break;
++	default:
++		chip->ngpio	= 16;
++	}
++
  	/* There is just one SoC in one device and its GPIO addresses should be
  	 * deterministic to address them more easily. The other buses could get
-@@ -105,10 +227,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+ 	 * a random base number. */
+@@ -105,10 +234,21 @@ int bcma_gpio_init(struct bcma_drv_cc *c
  	else
  		chip->base		= -1;
  

+ 18 - 0
target/linux/generic/patches-3.14/025-bcma_backport.patch

@@ -0,0 +1,18 @@
+--- a/drivers/bcma/driver_gpio.c
++++ b/drivers/bcma/driver_gpio.c
+@@ -218,7 +218,14 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+ #if IS_BUILTIN(CONFIG_BCMA_HOST_SOC)
+ 	chip->to_irq		= bcma_gpio_to_irq;
+ #endif
+-	chip->ngpio		= 16;
++	switch (cc->core->bus->chipinfo.id) {
++	case BCMA_CHIP_ID_BCM5357:
++		chip->ngpio	= 32;
++		break;
++	default:
++		chip->ngpio	= 16;
++	}
++
+ 	/* There is just one SoC in one device and its GPIO addresses should be
+ 	 * deterministic to address them more easily. The other buses could get
+ 	 * a random base number. */