From 41c4e294f441f2aa655f7d8985623ec07a4314af Mon Sep 17 00:00:00 2001 From: "M. Ian Graham" Date: Sat, 11 Dec 2021 08:34:25 +0900 Subject: [PATCH] raspberry-pi/4/i2c1: factor out easy dts into helper, add i2c0 --- raspberry-pi/4/default.nix | 1 + raspberry-pi/4/i2c0.nix | 25 +++++++++++++++++++++++++ raspberry-pi/4/i2c1.nix | 25 +++---------------------- raspberry-pi/4/overlay.nix | 18 ++++++++++++++++++ 4 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 raspberry-pi/4/i2c0.nix create mode 100644 raspberry-pi/4/overlay.nix diff --git a/raspberry-pi/4/default.nix b/raspberry-pi/4/default.nix index d94a9f9..7d1bce4 100644 --- a/raspberry-pi/4/default.nix +++ b/raspberry-pi/4/default.nix @@ -4,6 +4,7 @@ imports = [ ./audio.nix ./dwc2.nix + ./i2c0.nix ./i2c1.nix ./modesetting.nix ./poe-hat.nix diff --git a/raspberry-pi/4/i2c0.nix b/raspberry-pi/4/i2c0.nix new file mode 100644 index 0000000..e4fa779 --- /dev/null +++ b/raspberry-pi/4/i2c0.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.hardware.raspberry-pi."4".i2c0; + inherit (import ./overlay.nix) simple-pi4-overlay; +in +{ + options.hardware = { + raspberry-pi."4".i2c0 = { + enable = lib.mkEnableOption '' + Turn on the VideoCore I2C bus (maps to /dev/i2c-22) and enable access from the i2c group. + After a reboot, i2c-tools (e.g. i2cdetect -F 22) should work for root or any user in i2c. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + hardware = { + i2c.enable = lib.mkDefault true; + deviceTree = { + overlays = [ (simple-pi4-overlay { target = "i2c0if"; status = "okay"; }) ]; + }; + }; + }; +} diff --git a/raspberry-pi/4/i2c1.nix b/raspberry-pi/4/i2c1.nix index 27db73e..02d2623 100644 --- a/raspberry-pi/4/i2c1.nix +++ b/raspberry-pi/4/i2c1.nix @@ -2,6 +2,7 @@ let cfg = config.hardware.raspberry-pi."4".i2c1; + inherit (import ./overlay.nix) simple-pi4-overlay; in { options.hardware = { @@ -15,29 +16,9 @@ in config = lib.mkIf cfg.enable { hardware = { - i2c.enable = true; + i2c.enable = lib.mkDefault true; deviceTree = { - overlays = [ - # Equivalent to dtparam=i2c1=on - { - name = "i2c1-on-overlay"; - dtsText = '' - /dts-v1/; - /plugin/; - / { - compatible = "brcm,bcm2711"; - fragment@0 { - target = <&i2c1>; - __overlay__ { - #address-cells = <1>; - #size-cells = <0>; - status = "okay"; - }; - }; - }; - ''; - } - ]; + overlays = [ (simple-pi4-overlay { target = "i2c1"; status = "okay"; }) ]; }; }; }; diff --git a/raspberry-pi/4/overlay.nix b/raspberry-pi/4/overlay.nix new file mode 100644 index 0000000..d32e75f --- /dev/null +++ b/raspberry-pi/4/overlay.nix @@ -0,0 +1,18 @@ +{ + simple-pi4-overlay = { target, status }: { + name = "${target}-${status}-overlay"; + dtsText = '' + /dts-v1/; + /plugin/; + / { + compatible = "brcm,bcm2711"; + fragment@0 { + target = <&${target}>; + __overlay__ { + status = "${status}"; + }; + }; + }; + ''; + }; +}