Browse Source

bcma: use chipcommon node from DT for SoC GPIO chip

This will allow us to define GPIO-attached devices (LEDs, buttons) in
the the device tree.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Rafał Miłecki 11 years ago
parent
commit
a0196d1117
2 changed files with 16 additions and 0 deletions
  1. 12 0
      Documentation/devicetree/bindings/bus/bcma.txt
  2. 4 0
      drivers/bcma/driver_gpio.c

+ 12 - 0
Documentation/devicetree/bindings/bus/bcma.txt

@@ -9,6 +9,11 @@ Required properties:
 The cores on the AXI bus are automatically detected by bcma with the
 The cores on the AXI bus are automatically detected by bcma with the
 memory ranges they are using and they get registered afterwards.
 memory ranges they are using and they get registered afterwards.
 
 
+The top-level axi bus may contain children representing attached cores
+(devices). This is needed since some hardware details can't be auto
+detected (e.g. IRQ numbers). Also some of the cores may be responsible
+for extra things, e.g. ChipCommon providing access to the GPIO chip.
+
 Example:
 Example:
 
 
 	axi@18000000 {
 	axi@18000000 {
@@ -17,4 +22,11 @@ Example:
 		ranges = <0x00000000 0x18000000 0x00100000>;
 		ranges = <0x00000000 0x18000000 0x00100000>;
 		#address-cells = <1>;
 		#address-cells = <1>;
 		#size-cells = <1>;
 		#size-cells = <1>;
+
+		chipcommon {
+			reg = <0x00000000 0x1000>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+		};
 	};
 	};

+ 4 - 0
drivers/bcma/driver_gpio.c

@@ -217,6 +217,10 @@ int bcma_gpio_init(struct bcma_drv_cc *cc)
 	chip->direction_output	= bcma_gpio_direction_output;
 	chip->direction_output	= bcma_gpio_direction_output;
 #if IS_BUILTIN(CONFIG_BCM47XX)
 #if IS_BUILTIN(CONFIG_BCM47XX)
 	chip->to_irq		= bcma_gpio_to_irq;
 	chip->to_irq		= bcma_gpio_to_irq;
+#endif
+#if IS_BUILTIN(CONFIG_OF)
+	if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC)
+		chip->of_node	= cc->core->dev.of_node;
 #endif
 #endif
 	switch (cc->core->bus->chipinfo.id) {
 	switch (cc->core->bus->chipinfo.id) {
 	case BCMA_CHIP_ID_BCM5357:
 	case BCMA_CHIP_ID_BCM5357: