Device Overlay to Switch off USR0-3 LEDS

Hi Forum,

I am attempting to create a device overaly to turn off the USR0-3 on Ubuntu 13.10 (Linux ubuntu-armhf 3.8.13-bone30) on my Beagle Bone Black A5C.

I have performed the following process - but the USR0-3 LEDs continue to flash. I expected all of them to turn off and have trigger state of “[none]”

The DTS (BBB-LEDS-00A0.dts) file I have created is as follows

/dts-v1/;
/plugin/;
/
{
compatible = “ti,beaglebone”, “ti,beaglebone-black”;
part-number = “BBB-LEDS-00A0”;
version = “00A0”;
fragment@0
{
target = <&ocp>;
overlay
{
gpio-leds {
compatible = “gpio-leds”;
pinctrl-names = “default”;
pinctrl-0 = <&userled_pins>;
led0 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 0x15 0x0>;
linux,default-trigger = “none”;
default-state = “off”;
};
led1 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 0x16 0x0>;
linux,default-trigger = “none”;
default-state = “off”;
};
led2 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 0x17 0x0>;
linux,default-trigger = “none”;
default-state = “off”;
};
led3 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 0x18 0x0>;
linux,default-trigger = “none”;
default-state = “off”;
};
};
};
};
};

I have the latest dtc with the patches from Robert Nelson ( wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh)

I compile the DTS file using

dtc -O dtb -o BBB-LEDS-00A0.dtbo -b 0 -@ BBB-LEDS-00A0.dts

Copy the generated dtbo file to /lib/firmware

sudo cp BBB-LEDS-00A0.dtbo /lib/firmware/

Load the device tree overlay using

sudo sh -c “echo BBB-LEDS > /sys/devices/bone_capemgr.9/slots”

I see the slots that the “cape” is loaded
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
8: ff:P-O-L Override Board Name,00A0,Override Manuf,BBB-LEDS

From dmesg all seems okay as well
[20729.329645] bone-capemgr bone_capemgr.9: part_number ‘BBB-LEDS’, version ‘N/A’
[20729.329832] bone-capemgr bone_capemgr.9: slot #8: generic override
[20729.329882] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 8
[20729.329933] bone-capemgr bone_capemgr.9: slot #8: ‘Override Board Name,00A0,Override Manuf,BBB-LEDS’
[20729.330218] bone-capemgr bone_capemgr.9: slot #8: Requesting part number/version based 'BBB-LEDS-00A0.dtbo
[20729.330273] bone-capemgr bone_capemgr.9: slot #8: Requesting firmware ‘BBB-LEDS-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[20729.333640] bone-capemgr bone_capemgr.9: slot #8: dtbo ‘BBB-LEDS-00A0.dtbo’ loaded; converting to live tree
[20729.334146] bone-capemgr bone_capemgr.9: slot #8: #1 overlays
[20729.334750] bone-capemgr bone_capemgr.9: slot #8: Applied #1 overlays.

Could someone point me as towards what I have done wrong?

Thanks

Stuart

Try labeling them exactly as they are labled here
https://github.com/beagleboard/linux/blob/3.8/arch/arm/boot/dts/am335x-bone-common.dtsi#L63-L95


          gpio-leds {
			compatible = "gpio-leds";
			pinctrl-names = "default";

			pinctrl-0 = <&userled_pins>;

			led0 {
				label = "beaglebone:green:usr0";
				gpios = <&gpio2 21 0>;

				linux,default-trigger = "heartbeat";
				default-state = "off";

			};

			led1 {

				label = "beaglebone:green:usr1";
				gpios = <&gpio2 22 0>;

				linux,default-trigger = "mmc0";
				default-state = "off";
			};

			led2 {
				label = "beaglebone:green:usr2";

				gpios = <&gpio2 23 0>;
				linux,default-trigger = "cpu0";

				default-state = "off";
			};

			led3 {
				label = "beaglebone:green:usr3";
				gpios = <&gpio2 24 0>;

				default-state = "off";
				linux,default-trigger = "mmc1";

			};
		};

Hi Cody,

Well spotted the typo with the lablels, but it still does not work. The dts file I now am using is

/dts-v1/;
/plugin/;
/
{
compatible = “ti,beaglebone”, “ti,beaglebone-black”;
part-number = “BBB-LEDS-00A0”;
version = “00A0”;
fragment@0
{
target = <&ocp>;
overlay
{
gpio-leds {
compatible = “gpio-leds”;
pinctrl-names = “default”;
pinctrl-0 = <&userled_pins>;

led0 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 21 0>;
linux,default-trigger = “none”;
default-state = “off”;
};

led1 {
label = “beaglebone:green:usr1”;
gpios = <&gpio2 22 0>;
linux,default-trigger = “none”;
default-state = “off”;
};

led2 {
label = “beaglebone:green:usr2”;
gpios = <&gpio2 23 0>;
linux,default-trigger = “none”;
default-state = “off”;
};

led3 {
label = “beaglebone:green:usr3”;
gpios = <&gpio2 24 0>;
default-state = “off”;
linux,default-trigger = “none”;
};
};

};
};
};

Thanks

Stuart