From 6dcd2b0139b460c7f0afb803a96e14487318c14f Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Sat, 3 Aug 2024 22:49:29 +0100 Subject: [PATCH] Add device tree overlay for skycam --- hosts/skycam/default.nix | 35 +++++++++++++++++++++++-- hosts/skycam/hardware-configuration.nix | 5 +--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/hosts/skycam/default.nix b/hosts/skycam/default.nix index 53e2c4c..d02b2a4 100644 --- a/hosts/skycam/default.nix +++ b/hosts/skycam/default.nix @@ -10,16 +10,46 @@ raspberry-pi."4" = { apply-overlays-dtmerge.enable = true; audio.enable = false; - fkms-3d.enable = true; # VideoCore with 512 MB CMA reservation - tc358743.enable = true; # HDMI-to-CSI-2 converter xhci.enable = false; }; + deviceTree = { + enable = true; + filter = "*rpi-4-*.dtb"; + # From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65 + overlays = + let + mkCompatibleDtsFile = dtbo: + let + drv = pkgs.runCommand "fix-dts" { nativeBuildInputs = with pkgs; [ dtc gnused ]; } '' + mkdir "$out" + dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts + ''; + in + "${drv}/overlay.dts"; + + inherit (config.boot.kernelPackages) kernel; + in + [ + { + name = "imx708.dtbo"; + dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo"; + } + { + name = "vc4-kms-v3d-pi4.dtbo"; + dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo"; + } + ]; + }; firmware = with pkgs; [ firmwareLinuxNonfree wireless-regdb ]; }; + services.udev.extraRules = '' + SUBSYSTEM="dma_heap", GROUP="video", MODE="0600" + ''; + networking = { hostId = "731d1660"; firewall = { @@ -61,6 +91,7 @@ environment.systemPackages = with pkgs; [ git neovim + libcamera libraspberrypi raspberrypi-eeprom v4l-utils diff --git a/hosts/skycam/hardware-configuration.nix b/hosts/skycam/hardware-configuration.nix index b11d39c..65f519a 100644 --- a/hosts/skycam/hardware-configuration.nix +++ b/hosts/skycam/hardware-configuration.nix @@ -7,10 +7,7 @@ boot = { kernelModules = [ "bcm2835-v4l2" ]; - loader.raspberryPi.firmwareConfig = '' - start_x=1 - gpu_mem=256 - ''; + kernelParams = [ "cma=512M" ]; supportedFilesystems = lib.mkForce [ "f2fs" "vfat xfs" ]; tmp.cleanOnBoot = true; };