brcm63xx: switch to hardware led controllers
Instead of bit banging SPI to talk to the GPIO chip, use the hardware led controllers intended for controlling the LEDs. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
This commit is contained in:
		| @@ -80,7 +80,6 @@ CONFIG_GENERIC_SCHED_CLOCK=y | ||||
| CONFIG_GENERIC_SMP_IDLE_THREAD=y | ||||
| CONFIG_GENERIC_TIME_VSYSCALL=y | ||||
| CONFIG_GPIOLIB=y | ||||
| CONFIG_GPIO_74X164=y | ||||
| CONFIG_GPIO_BCM63XX=y | ||||
| CONFIG_GPIO_DEVRES=y | ||||
| CONFIG_GPIO_GENERIC=y | ||||
| @@ -139,6 +138,8 @@ CONFIG_IRQ_MIPS_CPU=y | ||||
| CONFIG_IRQ_WORK=y | ||||
| CONFIG_KEXEC=y | ||||
| CONFIG_KEXEC_CORE=y | ||||
| CONFIG_LEDS_BCM6328=y | ||||
| CONFIG_LEDS_BCM6358=y | ||||
| CONFIG_LEDS_GPIO=y | ||||
| CONFIG_LIBFDT=y | ||||
| CONFIG_MDIO_BOARDINFO=y | ||||
| @@ -221,8 +222,6 @@ CONFIG_SERIAL_BCM63XX_CONSOLE=y | ||||
| CONFIG_SPI=y | ||||
| CONFIG_SPI_BCM63XX=y | ||||
| CONFIG_SPI_BCM63XX_HSSPI=y | ||||
| CONFIG_SPI_BITBANG=y | ||||
| CONFIG_SPI_GPIO=y | ||||
| CONFIG_SPI_MASTER=y | ||||
| CONFIG_SQUASHFS_EMBEDDED=y | ||||
| CONFIG_SRCU=y | ||||
|   | ||||
| @@ -166,6 +166,14 @@ | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@10000200 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6328-leds"; | ||||
| 			reg = <0x10000200 0x24>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		hsspi: spi@10003000 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
|   | ||||
| @@ -210,5 +210,13 @@ | ||||
| 			interrupts = <6>; | ||||
| 			/* clocks = <&clkctl 16>; */ | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@10001900 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6328-leds"; | ||||
| 			reg = <0x10001900 0x24>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -151,6 +151,14 @@ | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@10000800 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6328-leds"; | ||||
| 			reg = <0x10000800 0x24>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		hsspi: spi@10001000 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
|   | ||||
| @@ -155,6 +155,14 @@ | ||||
| 			reg = <0xfffe0098 0x4>; | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@fffe00d0 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6358-leds"; | ||||
| 			reg = <0xfffe00d0 0x8>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		lsspi: spi@fffe0800 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
|   | ||||
| @@ -254,5 +254,13 @@ | ||||
| 			interrupts = <5>; | ||||
| 			/* clocks = <&clkctl 16>; */ | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@10001900 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6328-leds"; | ||||
| 			reg = <0x10001900 0x24>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -262,6 +262,14 @@ | ||||
| 			reg = <0x100000b8 0x4>; | ||||
| 		}; | ||||
|  | ||||
| 		leds: led-controller@100000d0 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
| 			compatible = "brcm,bcm6358-leds"; | ||||
| 			reg = <0x100000d0 0x8>; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		lsspi: spi@10000800 { | ||||
| 			#address-cells = <1>; | ||||
| 			#size-cells = <0>; | ||||
|   | ||||
| @@ -12,26 +12,6 @@ | ||||
| 		bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"; | ||||
| 	}; | ||||
|  | ||||
| 	spi-gpio { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		compatible = "spi-gpio"; | ||||
|  | ||||
| 		gpio-mosi = <&pinctrl 7 0>; | ||||
| 		gpio-sck = <&pinctrl 6 0>; | ||||
| 		num-chipselects = <0>; | ||||
|  | ||||
| 		hc595: gpio-spi-controller@0 { | ||||
| 			compatible = "fairchild,74hc595"; | ||||
| 			reg = <0>; | ||||
| 			registers-number = <1>; | ||||
| 			spi-max-frequency = <100000>; | ||||
|  | ||||
| 			gpio-controller; | ||||
| 			#gpio-cells = <2>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| @@ -62,22 +42,37 @@ | ||||
| 			label = "CT6373-1:green:wlan"; | ||||
| 			gpios = <&pinctrl 9 1>; | ||||
| 		}; | ||||
| 		dsl_green { | ||||
| 			label = "CT6373-1:green:adsl"; | ||||
| 			gpios = <&hc595 0 1>; | ||||
| 		}; | ||||
| 		line_green { | ||||
| 			label = "CT6373-1:green:line"; | ||||
| 			gpios = <&hc595 1 1>; | ||||
| 		}; | ||||
| 		fxs1_green { | ||||
| 			label = "CT6373-1:green:fxs1"; | ||||
| 			gpios = <&hc595 2 1>; | ||||
| 		}; | ||||
| 		fxs2_green { | ||||
| 			label = "CT6373-1:green:fxs2"; | ||||
| 			gpios = <&hc595 3 1>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &leds { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_serial_led>; | ||||
|  | ||||
| 	led@0 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "CT6373-1:green:adsl"; | ||||
| 	}; | ||||
|  | ||||
| 	led@1 { | ||||
| 		reg = <1>; | ||||
| 		active-low; | ||||
| 		label = "CT6373-1:green:line"; | ||||
| 	}; | ||||
|  | ||||
| 	led@2 { | ||||
| 		reg = <2>; | ||||
| 		active-low; | ||||
| 		label = "CT6373-1:green:fxs1"; | ||||
| 	}; | ||||
|  | ||||
| 	led@3 { | ||||
| 		reg = <3>; | ||||
| 		active-low; | ||||
| 		label = "CT6373-1:green:fxs2"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -12,27 +12,6 @@ | ||||
| 		bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"; | ||||
| 	}; | ||||
|  | ||||
| 	spi-gpio { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		compatible = "spi-gpio"; | ||||
|  | ||||
| 		gpio-mosi = <&pinctrl 7 0>; | ||||
| 		gpio-sck = <&pinctrl 6 0>; | ||||
| 		cs-gpios = <&pinctrl 5 0>; | ||||
| 		num-chipselects = <1>; | ||||
|  | ||||
| 		hc595: gpio-spi-controller@0 { | ||||
| 			compatible = "fairchild,74hc595"; | ||||
| 			reg = <0>; | ||||
| 			registers-number = <2>; | ||||
| 			spi-max-frequency = <100000>; | ||||
|  | ||||
| 			gpio-controller; | ||||
| 			#gpio-cells = <2>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| @@ -56,71 +35,103 @@ | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	gpio-leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| &leds { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 		power_red { | ||||
| 			label = "HOMEHUB2A:red:power"; | ||||
| 			gpios = <&hc595 0 1>; | ||||
| 		}; | ||||
| 		power_green { | ||||
| 			label = "HOMEHUB2A:green:power"; | ||||
| 			gpios = <&hc595 1 1>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 		power_blue { | ||||
| 			label = "HOMEHUB2A:blue:power"; | ||||
| 			gpios = <&hc595 2 1>; | ||||
| 		}; | ||||
| 		broadband_red { | ||||
| 			label = "HOMEHUB2A:red:broadband"; | ||||
| 			gpios = <&hc595 3 1>; | ||||
| 		}; | ||||
| 		broadband_green { | ||||
| 			label = "HOMEHUB2A:green:broadband"; | ||||
| 			gpios = <&hc595 4 1>; | ||||
| 		}; | ||||
| 		broadband_blue { | ||||
| 			label = "HOMEHUB2A:blue:broadband"; | ||||
| 			gpios = <&hc595 5 1>; | ||||
| 		}; | ||||
| 		wireless_red { | ||||
| 			label = "HOMEHUB2A:red:wireless"; | ||||
| 			gpios = <&hc595 6 1>; | ||||
| 		}; | ||||
| 		wireless_green { | ||||
| 			label = "HOMEHUB2A:green:wireless"; | ||||
| 			gpios = <&hc595 7 1>; | ||||
| 		}; | ||||
| 		wireless_blue { | ||||
| 			label = "HOMEHUB2A:blue:wireless"; | ||||
| 			gpios = <&hc595 8 1>; | ||||
| 		}; | ||||
| 		phone_red { | ||||
| 			label = "HOMEHUB2A:red:phone"; | ||||
| 			gpios = <&hc595 9 1>; | ||||
| 		}; | ||||
| 		phone_green { | ||||
| 			label = "HOMEHUB2A:green:phone"; | ||||
| 			gpios = <&hc595 10 1>; | ||||
| 		}; | ||||
| 		phone_blue { | ||||
| 			label = "HOMEHUB2A:blue:phone"; | ||||
| 			gpios = <&hc595 11 1>; | ||||
| 		}; | ||||
| 		upgrading_red { | ||||
| 			label = "HOMEHUB2A:red:upgrading"; | ||||
| 			gpios = <&hc595 12 1>; | ||||
| 		}; | ||||
| 		upgrading_green { | ||||
| 			label = "HOMEHUB2A:green:upgrading"; | ||||
| 			gpios = <&hc595 13 1>; | ||||
| 		}; | ||||
| 		upgrading_blue { | ||||
| 			label = "HOMEHUB2A:blue:upgrading"; | ||||
| 			gpios = <&hc595 14 1>; | ||||
| 		}; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_serial_led>; | ||||
|  | ||||
| 	led@0 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:red:power"; | ||||
| 	}; | ||||
|  | ||||
| 	led@1 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:green:power"; | ||||
| 		default-state = "on"; | ||||
| 	}; | ||||
|  | ||||
| 	led@2 { | ||||
| 		reg = <2>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:blue:power"; | ||||
| 	}; | ||||
|  | ||||
| 	led@3 { | ||||
| 		reg = <3>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:red:broadband"; | ||||
| 	}; | ||||
|  | ||||
| 	led@4 { | ||||
| 		reg = <4>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:green:broadband"; | ||||
| 	}; | ||||
|  | ||||
| 	led@5 { | ||||
| 		reg = <5>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:blue:broadband"; | ||||
| 	}; | ||||
|  | ||||
| 	led@6 { | ||||
| 		reg = <6>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:red:wireless"; | ||||
| 	}; | ||||
|  | ||||
| 	led@7 { | ||||
| 		reg = <7>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:green:wireless"; | ||||
| 	}; | ||||
|  | ||||
| 	led@8 { | ||||
| 		reg = <8>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:blue:wireless"; | ||||
| 	}; | ||||
|  | ||||
| 	led@9 { | ||||
| 		reg = <9>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:red:phone"; | ||||
| 	}; | ||||
|  | ||||
| 	led@10 { | ||||
| 		reg = <10>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:green:phone"; | ||||
| 	}; | ||||
|  | ||||
| 	led@11 { | ||||
| 		reg = <11>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:blue:phone"; | ||||
| 	}; | ||||
|  | ||||
| 	led@12 { | ||||
| 		reg = <12>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:red:upgrading"; | ||||
| 	}; | ||||
|  | ||||
| 	led@13 { | ||||
| 		reg = <13>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:green:upgrading"; | ||||
| 	}; | ||||
|  | ||||
| 	led@14 { | ||||
| 		reg = <14>; | ||||
| 		active-low; | ||||
| 		label = "HOMEHUB2A:blue:upgrading"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -12,26 +12,6 @@ | ||||
| 		bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"; | ||||
| 	}; | ||||
|  | ||||
| 	spi-gpio { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		compatible = "spi-gpio"; | ||||
|  | ||||
| 		gpio-mosi = <&pinctrl 7 0>; | ||||
| 		gpio-sck = <&pinctrl 6 0>; | ||||
| 		num-chipselects = <0>; | ||||
|  | ||||
| 		hc595: gpio-spi-controller@0 { | ||||
| 			compatible = "fairchild,74hc595"; | ||||
| 			reg = <0>; | ||||
| 			registers-number = <1>; | ||||
| 			spi-max-frequency = <100000>; | ||||
|  | ||||
| 			gpio-controller; | ||||
| 			#gpio-cells = <2>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| @@ -84,22 +64,37 @@ | ||||
| 			label = "NB4-FXC-r1:green:service"; | ||||
| 			gpios = <&pinctrl 30 0>; | ||||
| 		}; | ||||
| 		alarm_white { | ||||
| 			label = "NB4-FXC-r1:white:alarm"; | ||||
| 			gpios = <&hc595 0 1>; | ||||
| 		}; | ||||
| 		tv_white { | ||||
| 			label = "NB4-FXC-r1:white:tv"; | ||||
| 			gpios = <&hc595 2 1>; | ||||
| 		}; | ||||
| 		tel_white { | ||||
| 			label = "NB4-FXC-r1:white:tel"; | ||||
| 			gpios = <&hc595 3 1>; | ||||
| 		}; | ||||
| 		adsl_white { | ||||
| 			label = "NB4-FXC-r0:white:adsl"; | ||||
| 			gpios = <&hc595 4 1>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &leds { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_serial_led>; | ||||
|  | ||||
| 	led@0 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "NB4-FXC-r1:white:alarm"; | ||||
| 	}; | ||||
|  | ||||
| 	led@2 { | ||||
| 		reg = <2>; | ||||
| 		active-low; | ||||
| 		label = "NB4-FXC-r1:white:tv"; | ||||
| 	}; | ||||
|  | ||||
| 	led@3 { | ||||
| 		reg = <3>; | ||||
| 		active-low; | ||||
| 		label = "NB4-FXC-r1:white:tel"; | ||||
| 	}; | ||||
|  | ||||
| 	led@4 { | ||||
| 		reg = <4>; | ||||
| 		active-low; | ||||
| 		label = "NB4-FXC-r1:white:adsl"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -12,26 +12,6 @@ | ||||
| 		bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"; | ||||
| 	}; | ||||
|  | ||||
| 	spi-gpio { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		compatible = "spi-gpio"; | ||||
|  | ||||
| 		gpio-mosi = <&pinctrl 7 0>; | ||||
| 		gpio-sck = <&pinctrl 6 0>; | ||||
| 		num-chipselects = <0>; | ||||
|  | ||||
| 		hc595: gpio-spi-controller@0 { | ||||
| 			compatible = "fairchild,74hc595"; | ||||
| 			reg = <0>; | ||||
| 			registers-number = <1>; | ||||
| 			spi-max-frequency = <100000>; | ||||
|  | ||||
| 			gpio-controller; | ||||
| 			#gpio-cells = <2>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| @@ -84,22 +64,37 @@ | ||||
| 			label = "NB4-SER-r0:green:service"; | ||||
| 			gpios = <&pinctrl 30 1>; | ||||
| 		}; | ||||
| 		alarm_white { | ||||
| 			label = "NB4-SER-r0:white:alarm"; | ||||
| 			gpios = <&hc595 0 1>; | ||||
| 		}; | ||||
| 		tv_white { | ||||
| 			label = "NB4-SER-r0:white:tv"; | ||||
| 			gpios = <&hc595 2 1>; | ||||
| 		}; | ||||
| 		tel_white { | ||||
| 			label = "NB4-SER-r0:white:tel"; | ||||
| 			gpios = <&hc595 3 1>; | ||||
| 		}; | ||||
| 		adsl_white { | ||||
| 			label = "NB4-SER-r0:white:adsl"; | ||||
| 			gpios = <&hc595 4 1>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &leds { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_serial_led>; | ||||
|  | ||||
| 	led@0 { | ||||
| 		reg = <0>; | ||||
| 		active-low; | ||||
| 		label = "NB4-SER-r0:white:alarm"; | ||||
| 	}; | ||||
|  | ||||
| 	led@2 { | ||||
| 		reg = <2>; | ||||
| 		active-low; | ||||
| 		label = "NB4-SER-r0:white:tv"; | ||||
| 	}; | ||||
|  | ||||
| 	led@3 { | ||||
| 		reg = <3>; | ||||
| 		active-low; | ||||
| 		label = "NB4-SER-r0:white:tel"; | ||||
| 	}; | ||||
|  | ||||
| 	led@4 { | ||||
| 		reg = <4>; | ||||
| 		active-low; | ||||
| 		label = "NB4-SER-r0:white:adsl"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jonas Gorski
					Jonas Gorski