mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-11-23 11:29:42 +01:00
Merge pull request #780 from Stunkymonkey/raspberry-pi-4-leds
raspberry-pi/4: add LED-disable overlay
This commit is contained in:
commit
2b00bc76dc
2 changed files with 121 additions and 4 deletions
|
@ -5,17 +5,18 @@
|
||||||
./audio.nix
|
./audio.nix
|
||||||
./backlight.nix
|
./backlight.nix
|
||||||
./cpu-revision.nix
|
./cpu-revision.nix
|
||||||
|
./digi-amp-plus.nix
|
||||||
./dwc2.nix
|
./dwc2.nix
|
||||||
./i2c.nix
|
./i2c.nix
|
||||||
|
./leds.nix
|
||||||
./modesetting.nix
|
./modesetting.nix
|
||||||
|
./pkgs-overlays.nix
|
||||||
./poe-hat.nix
|
./poe-hat.nix
|
||||||
./poe-plus-hat.nix
|
./poe-plus-hat.nix
|
||||||
|
./pwm0.nix
|
||||||
./tc358743.nix
|
./tc358743.nix
|
||||||
./touch-ft5406.nix
|
./touch-ft5406.nix
|
||||||
./pwm0.nix
|
|
||||||
./pkgs-overlays.nix
|
|
||||||
./xhci.nix
|
./xhci.nix
|
||||||
./digi-amp-plus.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
@ -24,7 +25,7 @@
|
||||||
"usbhid"
|
"usbhid"
|
||||||
"usb_storage"
|
"usb_storage"
|
||||||
"vc4"
|
"vc4"
|
||||||
"pcie_brcmstb" # required for the pcie bus to work
|
"pcie_brcmstb" # required for the pcie bus to work
|
||||||
"reset-raspberrypi" # required for vl805 firmware to load
|
"reset-raspberrypi" # required for vl805 firmware to load
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
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;
|
||||||
|
mkDisableOption = name: lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Whether to disable ${name}.";
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.hardware = {
|
||||||
|
raspberry-pi."4".leds = {
|
||||||
|
eth.disable = mkDisableOption ''ethernet LEDs.'';
|
||||||
|
act.disable = mkDisableOption ''activity LED.'';
|
||||||
|
pwr.disable = mkDisableOption ''power LED.'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Adapted from: https://gist.github.com/SFrijters/206d2c09656affb04284f076c75a1969
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.eth.disable {
|
||||||
|
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.act.disable {
|
||||||
|
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.pwr.disable {
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in a new issue