mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 09:17:14 +08:00 
			
		
		
		
	raspberry-pi/4: add led disable overlay
This commit is contained in:
		@@ -8,6 +8,7 @@
 | 
			
		||||
    ./digi-amp-plus.nix
 | 
			
		||||
    ./dwc2.nix
 | 
			
		||||
    ./i2c.nix
 | 
			
		||||
    ./leds.nix
 | 
			
		||||
    ./modesetting.nix
 | 
			
		||||
    ./pkgs-overlays.nix
 | 
			
		||||
    ./poe-hat.nix
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								raspberry-pi/4/leds.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								raspberry-pi/4/leds.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
{ config, lib, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.raspberry-pi."4".leds;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.hardware = {
 | 
			
		||||
    raspberry-pi."4".leds = {
 | 
			
		||||
      disable-eth = lib.mkEnableOption ''
 | 
			
		||||
        disable ethernet LEDs.
 | 
			
		||||
      '';
 | 
			
		||||
      disable-act = lib.mkEnableOption ''
 | 
			
		||||
        disable activity LED.
 | 
			
		||||
      '';
 | 
			
		||||
      disable-pwr = lib.mkEnableOption ''
 | 
			
		||||
        disable power LED.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Adapted from: https://gist.github.com/SFrijters/206d2c09656affb04284f076c75a1969
 | 
			
		||||
  config = lib.mkMerge [
 | 
			
		||||
    (lib.mkIf cfg.disable-eth {
 | 
			
		||||
      hardware.deviceTree = {
 | 
			
		||||
        overlays = [
 | 
			
		||||
          # https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README
 | 
			
		||||
          # eth_led0                Set mode of LED0 - amber on Pi3B+ (default "1"),
 | 
			
		||||
          #                         green on Pi4 (default "0").
 | 
			
		||||
          #                         The legal values are:
 | 
			
		||||
          #
 | 
			
		||||
          #                         Pi4
 | 
			
		||||
          #
 | 
			
		||||
          #                         0=Speed/Activity         1=Speed
 | 
			
		||||
          #                         2=Flash activity         3=FDX
 | 
			
		||||
          #                         4=Off                    5=On
 | 
			
		||||
          #                         6=Alt                    7=Speed/Flash
 | 
			
		||||
          #                         8=Link                   9=Activity
 | 
			
		||||
          #
 | 
			
		||||
          # Debugging:
 | 
			
		||||
          # $ hexdump /proc/device-tree/scb/ethernet@7d580000/mdio@e14/ethernet-phy@1/led-modes
 | 
			
		||||
          {
 | 
			
		||||
            name = "disable-eth-leds";
 | 
			
		||||
            filter = "*rpi-4-b*";
 | 
			
		||||
            dtsText = ''
 | 
			
		||||
              /dts-v1/;
 | 
			
		||||
              /plugin/;
 | 
			
		||||
              /{
 | 
			
		||||
                  compatible = "raspberrypi,4-model-b";
 | 
			
		||||
                  fragment@0 {
 | 
			
		||||
                      target = <&phy1>;
 | 
			
		||||
                      __overlay__ {
 | 
			
		||||
                          led-modes = <0x04 0x04>;
 | 
			
		||||
                      };
 | 
			
		||||
                  };
 | 
			
		||||
              };
 | 
			
		||||
            '';
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    })
 | 
			
		||||
    (lib.mkIf cfg.disable-act {
 | 
			
		||||
      hardware.deviceTree = {
 | 
			
		||||
        overlays = [
 | 
			
		||||
          # Debugging:
 | 
			
		||||
          # $ hexdump /proc/device-tree/leds/led-act/gpios
 | 
			
		||||
          # $ cat /proc/device-tree/leds/led-act/linux,default-trigger
 | 
			
		||||
          {
 | 
			
		||||
            name = "disable-act-led";
 | 
			
		||||
            filter = "*rpi-4-b*";
 | 
			
		||||
            dtsText = ''
 | 
			
		||||
              /dts-v1/;
 | 
			
		||||
              /plugin/;
 | 
			
		||||
              /{
 | 
			
		||||
                  compatible = "raspberrypi,4-model-b";
 | 
			
		||||
                  fragment@0 {
 | 
			
		||||
                      target = <&act_led>;
 | 
			
		||||
                      __overlay__ {
 | 
			
		||||
                          gpios = <&gpio 42 0>; /* first two values copied from bcm2711-rpi-4-b.dts */
 | 
			
		||||
                          linux,default-trigger = "none";
 | 
			
		||||
                      };
 | 
			
		||||
                  };
 | 
			
		||||
              };
 | 
			
		||||
            '';
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    })
 | 
			
		||||
    (lib.mkIf cfg.disable-pwr {
 | 
			
		||||
      hardware.deviceTree = {
 | 
			
		||||
        overlays = [
 | 
			
		||||
          # Debugging:
 | 
			
		||||
          # $ hexdump /proc/device-tree/leds/led-pwr/gpios
 | 
			
		||||
          # $ cat /proc/device-tree/leds/led-pwr/linux,default-trigger
 | 
			
		||||
          {
 | 
			
		||||
            name = "disable-pwr-led";
 | 
			
		||||
            filter = "*rpi-4-b*";
 | 
			
		||||
            dtsText = ''
 | 
			
		||||
              /dts-v1/;
 | 
			
		||||
              /plugin/;
 | 
			
		||||
              /{
 | 
			
		||||
                  compatible = "raspberrypi,4-model-b";
 | 
			
		||||
                  fragment@0 {
 | 
			
		||||
                      target = <&pwr_led>;
 | 
			
		||||
                      __overlay__ {
 | 
			
		||||
                          gpios = <&expgpio 2 0>; /* first two values copied from bcm2711-rpi-4-b.dts */
 | 
			
		||||
                          linux,default-trigger = "default-on";
 | 
			
		||||
                      };
 | 
			
		||||
                  };
 | 
			
		||||
              };
 | 
			
		||||
            '';
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    })
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user