cm4/super6 preliminary support
This commit is contained in:
parent
b4d5366d82
commit
f5f8836994
37
cm4/default.nix
Normal file
37
cm4/default.nix
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
fn,
|
||||||
|
nixos-hardware,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf mkEnableOption mkOption types;
|
||||||
|
cfg = config.hardware.cm4;
|
||||||
|
in {
|
||||||
|
options.hardware.cm4 = {
|
||||||
|
enable = mkEnableOption "custom CM4";
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [nixos-hardware.nixosModules.raspberry-pi-4] ++ (fn.scanPaths ./.);
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hardware.raspberry-pi."4" = {
|
||||||
|
apply-overlays-dtmerge.enable = true;
|
||||||
|
xhci.enable = true;
|
||||||
|
overlays = {
|
||||||
|
audremap.enable = true;
|
||||||
|
spi-gpio40-45.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.deviceTree = {
|
||||||
|
enable = true;
|
||||||
|
filter = "*-rpi-cm4.dtb";
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.spi = {};
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
SUBSYSTEM=="spidev", KERNEL=="spidev0.0", GROUP="spi", MODE="0660"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
51
cm4/dtb-audremap.nix
Normal file
51
cm4/dtb-audremap.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf mkMerge;
|
||||||
|
cfg = config.hardware.raspberry-pi."4".overlays;
|
||||||
|
in {
|
||||||
|
options.hardware = {
|
||||||
|
raspberry-pi."4".overlays.audremap.enable = mkEnableOption ''audremap enable '';
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkMerge [
|
||||||
|
(mkIf cfg.audremap.enable {
|
||||||
|
hardware.deviceTree.overlays = [
|
||||||
|
{
|
||||||
|
name = "audremap.overlay";
|
||||||
|
filter = "*rpi-cm4*";
|
||||||
|
dtsText = ''
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
/ {
|
||||||
|
compatible = "brcm,bcm2711";
|
||||||
|
fragment@0 {
|
||||||
|
target = <&audio_pins>;
|
||||||
|
frag0: __overlay__ {
|
||||||
|
brcm,pins = <12 13>;
|
||||||
|
brcm,function = <4>; /* alt0 alt0 */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fragment@1 {
|
||||||
|
target = <&chosen>;
|
||||||
|
__overlay__ {
|
||||||
|
bootargs = "snd_bcm2835.enable_headphones=1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
__overrides__ {
|
||||||
|
swap_lr = <&frag0>, "swap_lr?";
|
||||||
|
enable_jack = <&frag0>, "enable_jack?";
|
||||||
|
pins_12_13 = <&frag0>,"brcm,pins:0=12", <&frag0>,"brcm,pins:4=13", <&frag0>,"brcm,function:0=4";
|
||||||
|
pins_18_19 = <&frag0>,"brcm,pins:0=18", <&frag0>,"brcm,pins:4=19", <&frag0>,"brcm,function:0=2";
|
||||||
|
pins_40_41 = <&frag0>,"brcm,pins:0=40", <&frag0>,"brcm,pins:4=41", <&frag0>,"brcm,function:0=4";
|
||||||
|
pins_40_45 = <&frag0>,"brcm,pins:0=40", <&frag0>,"brcm,pins:4=45", <&frag0>,"brcm,function:0=4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
55
cm4/dtb-gpio40-45.nix
Normal file
55
cm4/dtb-gpio40-45.nix
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf mkMerge;
|
||||||
|
cfg = config.hardware.raspberry-pi."4".overlays;
|
||||||
|
in {
|
||||||
|
options.hardware = {
|
||||||
|
raspberry-pi."4".overlays.spi-gpio40-45.enable = mkEnableOption ''spi-gpio40-45 enable '';
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkMerge [
|
||||||
|
(mkIf cfg.spi-gpio40-45.enable {
|
||||||
|
hardware.deviceTree = {
|
||||||
|
overlays = [
|
||||||
|
{
|
||||||
|
name = "spi-gpio40-45.overlay";
|
||||||
|
filter = "*rpi-cm4*";
|
||||||
|
dtsText = ''
|
||||||
|
/dts-v1/;
|
||||||
|
/plugin/;
|
||||||
|
/ {
|
||||||
|
compatible = "brcm,bcm2711";
|
||||||
|
fragment@0 {
|
||||||
|
target = <&spi0>;
|
||||||
|
__overlay__ {
|
||||||
|
cs-gpios = <&gpio 43 1>, <&gpio 44 1>, <&gpio 45 1>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fragment@1 {
|
||||||
|
target = <&spi0_cs_pins>;
|
||||||
|
__overlay__ {
|
||||||
|
brcm,pins = <45 44 43>;
|
||||||
|
brcm,function = <1>; /* output */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
fragment@2 {
|
||||||
|
target = <&spi0_pins>;
|
||||||
|
__overlay__ {
|
||||||
|
brcm,pins = <40 41 42>;
|
||||||
|
brcm,function = <3>; /* alt4 */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user