diff options
| author | Mel <mel@rnrd.eu> | 2026-07-18 18:51:08 +0200 |
|---|---|---|
| committer | Mel <mel@rnrd.eu> | 2026-07-18 18:51:08 +0200 |
| commit | 7672318e8435164746e0a0d9a4def8be6820c3fa (patch) | |
| tree | 12e5828f236399e7d46afeafa0637dd7a9e90646 /modules/hardware/ads7846.nix | |
| parent | 72a3bfd94fd0dd0983d55e25fd831864e0194f12 (diff) | |
| download | network-7672318e8435164746e0a0d9a4def8be6820c3fa.tar.zst network-7672318e8435164746e0a0d9a4def8be6820c3fa.zip | |
Add support for fourmi display via custom DRM kernel driver flake
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'modules/hardware/ads7846.nix')
| -rw-r--r-- | modules/hardware/ads7846.nix | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/modules/hardware/ads7846.nix b/modules/hardware/ads7846.nix deleted file mode 100644 index 4d7582a..0000000 --- a/modules/hardware/ads7846.nix +++ /dev/null @@ -1,144 +0,0 @@ -{ ... }: - -{ - # calibration for touchscreen - services = - let - calibrationPoints = "3900 200 200 3900"; - calibrationMatrix = "-1 0 1 0 1 0"; - in - { - libinput.enable = true; - - # xorg configuration - xserver.inputClassSections = [ - '' - Identifier "ads7846 calibration" - MatchProduct "ADS7846 Touchscreen" - Option "Calibration" "${calibrationPoints}" - Option "SwapAxes" "0" - Driver "libinput" - '' - ]; - - # wayland configuration - udev.extraRules = '' - ATTRS{name}=="ADS7846 Touchscreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="${calibrationMatrix}" - ''; - }; - - hardware.deviceTree = - let - cs = 1; - penirq = 25; - penirq_pull = 2; - speed = 50000; - pmin = 0; - pmax = 255; - xohms = 150; - xmin = 200; - xmax = 3900; - ymin = 200; - ymax = 3900; - in - { - overlays = [ - { - name = "ads7846-overlay"; - # taken from raspberry-pi kernel tree: - # https://github.com/raspberrypi/linux/blob/rpi-6.6.y/arch/arm/boot/dts/overlays/ads7846-overlay.dts - dtsText = '' - /* - * Generic Device Tree overlay for the ADS7846 touch controller - * - */ - - /dts-v1/; - /plugin/; - - / { - compatible = "brcm,bcm2711"; - - fragment@0 { - target = <&spi0>; - __overlay__ { - status = "okay"; - }; - }; - - fragment@1 { - target = <&spidev0>; - __overlay__ { - status = "disabled"; - }; - }; - - fragment@2 { - target = <&spidev1>; - __overlay__ { - status = "disabled"; - }; - }; - - fragment@3 { - target = <&gpio>; - __overlay__ { - ads7846_pins: ads7846_pins { - brcm,pins = <${toString penirq}>; /* mel: previously illegal value of 255 */ - brcm,function = <0>; /* in */ - brcm,pull = <${toString penirq_pull}>; /* none */ - }; - }; - }; - - fragment@4 { - target = <&spi0>; - __overlay__ { - /* needed to avoid dtc warning */ - #address-cells = <1>; - #size-cells = <0>; - - ads7846: ads7846@1 { - compatible = "ti,ads7846"; - reg = <${toString cs}>; - pinctrl-names = "default"; - pinctrl-0 = <&ads7846_pins>; - - spi-max-frequency = <${toString speed}>; - interrupts = <${toString penirq} 2>; /* high-to-low edge triggered */ - interrupt-parent = <&gpio>; - pendown-gpio = <&gpio ${toString penirq} 1>; - - /* driver defaults */ - ti,x-min = /bits/ 16 <${toString xmin}>; - ti,y-min = /bits/ 16 <${toString ymin}>; - ti,x-max = /bits/ 16 <${toString xmax}>; - ti,y-max = /bits/ 16 <${toString ymax}>; - ti,pressure-min = /bits/ 16 <${toString pmin}>; - ti,pressure-max = /bits/ 16 <${toString pmax}>; - ti,x-plate-ohms = /bits/ 16 <${toString xohms}>; - }; - }; - }; - __overrides__ { - cs = <&ads7846>,"reg:0"; - speed = <&ads7846>,"spi-max-frequency:0"; - penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */ - <&ads7846>,"interrupts:0", - <&ads7846>,"pendown-gpio:4"; - penirq_pull = <&ads7846_pins>,"brcm,pull:0"; - swapxy = <&ads7846>,"ti,swap-xy?"; - xmin = <&ads7846>,"ti,x-min;0"; - ymin = <&ads7846>,"ti,y-min;0"; - xmax = <&ads7846>,"ti,x-max;0"; - ymax = <&ads7846>,"ti,y-max;0"; - pmin = <&ads7846>,"ti,pressure-min;0"; - pmax = <&ads7846>,"ti,pressure-max;0"; - xohms = <&ads7846>,"ti,x-plate-ohms;0"; - }; - }; - ''; - } - ]; - }; -} |
