]> git.gag.com Git - fw/quantimotor/commitdiff
first try at switching to a devicetree overlay
authorBdale Garbee <bdale@gag.com>
Sun, 16 Mar 2025 23:57:13 +0000 (17:57 -0600)
committerBdale Garbee <bdale@gag.com>
Sun, 16 Mar 2025 23:57:13 +0000 (17:57 -0600)
application/quantimotor.py
bcm2837-rpi-zero-2-w.dtb [deleted file]
bcm2837-rpi-zero-2-w.dts [deleted file]
debian/changelog
debian/control
debian/quantimotor.install
devicetree/Makefile
devicetree/append_cmdline.dts [deleted file]
devicetree/quantimotor.dtso [new file with mode: 0644]
raspi-firmware-custom [new file with mode: 0644]
z99-quantimotor

index 9947382e800b71d5ec7b44a49ad886b24ed8cf50..680af04a6ea2778f24e36e9aca4a3b7283acc9a9 100755 (executable)
@@ -18,6 +18,7 @@ VOLTAGES = ['voltage0', 'voltage1']
 from gpiod.line import Direction, Value
 
 def handler(signum, frame):
+    print()
     print('Ctrl+C pressed, shutting down cleanly.')
     set_line_values(
         "/dev/gpiochip0", 
@@ -53,19 +54,19 @@ if __name__ == "__main__":
             "/dev/gpiochip0", 
             {25: Value.ACTIVE,         # take ADS8688 out of reset
               4: Value.ACTIVE,         # indicate 'ready' to LPC
-             16: Value.ACTIVE,         # pyro on
-             17: Value.ACTIVE,         # alarm b on
-             20: Value.ACTIVE,         # turn continuity LED on
+             16: Value.INACTIVE,       # pyro off
+             17: Value.INACTIVE,       # alarm b off
+             20: Value.INACTIVE,       # turn continuity LED off
              21: Value.INACTIVE,       # turn armed LED off
-             27: Value.ACTIVE          # alarm a on
+             27: Value.INACTIVE                # alarm a off
             }
         )
 
         # configure ADC channels
         for id in VOLTAGES:
             chan = ctrl.find_channel(id)
-            chan.attrs['offset'].value = OFFSET
             chan.attrs['scale'].value = SCALE
+            chan.attrs['offset'].value = OFFSET
 
         # Iterate until ctrl/c
         while True:
diff --git a/bcm2837-rpi-zero-2-w.dtb b/bcm2837-rpi-zero-2-w.dtb
deleted file mode 100644 (file)
index bb70310..0000000
Binary files a/bcm2837-rpi-zero-2-w.dtb and /dev/null differ
diff --git a/bcm2837-rpi-zero-2-w.dts b/bcm2837-rpi-zero-2-w.dts
deleted file mode 100644 (file)
index e0cba2f..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2022 Stefan Wahren <stefan.wahren@i2se.com>
- */
-
-/dts-v1/;
-#include "bcm2837.dtsi"
-#include "bcm2836-rpi.dtsi"
-#include "bcm283x-rpi-usb-otg.dtsi"
-#include "bcm283x-rpi-wifi-bt.dtsi"
-
-/ {
-       compatible = "raspberrypi,model-zero-2-w", "brcm,bcm2837";
-       model = "Raspberry Pi Zero 2 W";
-
-       memory@0 {
-               device_type = "memory";
-               reg = <0 0x20000000>;
-       };
-
-       chosen {
-               /* 8250 auxiliary UART instead of pl011 */
-               stdout-path = "serial1:115200n8";
-       };
-
-       leds {
-               led-act {
-                       gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
-               };
-       };
-};
-
-&bt {
-       shutdown-gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
-};
-
-&gpio {
-       /*
-        * This is based on the official GPU firmware DT blob.
-        *
-        * Legend:
-        * "NC" = not connected (no rail from the SoC)
-        * "FOO" = GPIO line named "FOO" on the schematic
-        * "FOO_N" = GPIO line named "FOO" on schematic, active low
-        */
-       gpio-line-names = "ID_SDA",
-                         "ID_SCL",
-                         "SDA1",
-                         "SCL1",
-                         "GPIO_GCLK",
-                         "GPIO5",
-                         "GPIO6",
-                         "SPI_CE1_N",
-                         "SPI_CE0_N",
-                         "SPI_MISO",
-                         "SPI_MOSI",
-                         "SPI_SCLK",
-                         "GPIO12",
-                         "GPIO13",
-                         /* Serial port */
-                         "TXD0",
-                         "RXD0",
-                         "GPIO16",
-                         "GPIO17",
-                         "GPIO18",
-                         "GPIO19",
-                         "GPIO20",
-                         "GPIO21",
-                         "GPIO22",
-                         "GPIO23",
-                         "GPIO24",
-                         "GPIO25",
-                         "GPIO26",
-                         "GPIO27",
-                         "HDMI_HPD_N",
-                         "STATUS_LED_N",
-                         "NC", /* GPIO30 */
-                         "NC", /* GPIO31 */
-                         "NC", /* GPIO32 */
-                         "NC", /* GPIO33 */
-                         "NC", /* GPIO34 */
-                         "NC", /* GPIO35 */
-                         "NC", /* GPIO36 */
-                         "NC", /* GPIO37 */
-                         "NC", /* GPIO38 */
-                         "NC", /* GPIO39 */
-                         "CAM_GPIO0", /* GPIO40 */
-                         "WL_ON", /* GPIO41 */
-                         "BT_ON", /* GPIO42 */
-                         "WIFI_CLK", /* GPIO43 */
-                         "SDA0", /* GPIO44 */
-                         "SCL0", /* GPIO45 */
-                         "SMPS_SCL",
-                         "SMPS_SDA",
-                         /* Used by SD Card */
-                         "SD_CLK_R",
-                         "SD_CMD_R",
-                         "SD_DATA0_R",
-                         "SD_DATA1_R",
-                         "SD_DATA2_R",
-                         "SD_DATA3_R";
-
-       pinctrl-0 = <&gpioout &alt0>;
-};
-
-&hdmi {
-       hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
-       power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
-       status = "okay";
-};
-
-&sdhci {
-       pinctrl-0 = <&emmc_gpio34 &gpclk2_gpio43>;
-};
-
-&sdhost {
-       pinctrl-names = "default";
-       pinctrl-0 = <&sdhost_gpio48>;
-       bus-width = <4>;
-       status = "okay";
-};
-
-&uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart0_gpio32 &uart0_ctsrts_gpio30>;
-};
-
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart1_gpio14>;
-       status = "okay";
-};
-
-&wifi_pwrseq {
-       reset-gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
-};
-
-&spi {
-       status = "okay";
-
-       pinctrl-names = "default";
-       cs-gpios = <&gpio 8 GPIO_ACTIVE_LOW>, <&gpio 7 GPIO_ACTIVE_LOW>;
-
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       ads8688: ads8688@0 {
-               compatible = "ti,ads8688";
-               reg = <0>;
-               spi-max-frequency = <1000000>;
-       };
-};
index 464252fa8c3dbc7abbedffe85a04089a05df2143..5d2c10ed07dcf84dbd33a4ffca55353f4baeeb27 100644 (file)
@@ -1,3 +1,9 @@
+quantimotor (2) UNRELEASED; urgency=medium
+
+  * switch to devicetree overlay instead of complete replacement
+
+ -- Bdale Garbee <bdale@gag.com>  Sun, 16 Mar 2025 17:41:20 -0600
+
 quantimotor (1) UNRELEASED; urgency=medium
 
   * first version of package for QuantiMotor
index 51ba1b9f316b81ffbfb8dd68237ea55c3c7e861b..08abd441bd7ed6900f789075ac744a85428029ca 100644 (file)
@@ -13,6 +13,7 @@ Vcs-Browser: https://git.gag.com/?p=fw/quantimotor
 
 Package: quantimotor
 Architecture: all
+Pre-Depends: raspi-firmware
 Depends:
  ${shlibs:Depends},
  ${misc:Depends},
index 91d935b30612cb4adea31fc2095fb4d5ed23f205..057b469d5590002093d1b4f62297ea586f5c574b 100644 (file)
@@ -1,3 +1,4 @@
-bcm2837-rpi-zero-2-w.dtb usr/share/quantimotor
+devicetree/*.dtbo boot/firmware/overlays
 raspi-extra-cmdline etc/default
+raspi-firmware-custom etc/default
 z99-quantimotor etc/kernel/postinst.d
index 4957e57a3bd1b21c98b8743f2f1b71de9cd6bded..3f4fb4bf3cbf58bf7034dae79ad0665e8138c9f4 100644 (file)
@@ -1,9 +1,9 @@
-all: append_cmdline.dtbo
+all: quantimotor.dtbo
 
-append_cmdline.dtbo: append_cmdline.dts
+quantimotor.dtbo: quantimotor.dtso
        dtc -I dts -O dtb -o $@ $<
 
 clean:
-       rm -f append_cmdline.dtbo
+       rm -f quantimotor.dtbo
 
 .PHONY: clean
diff --git a/devicetree/append_cmdline.dts b/devicetree/append_cmdline.dts
deleted file mode 100644 (file)
index 3f9509f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-/plugin/;
-
-/ {
-        compatible = "brcm,bcm2835";
-
-        fragment@0 {
-                target = <&chosen>;
-                frag0:  __overlay__ {
-                };
-        };
-
-               __overrides__ {
-                       append = <&frag0>, "bootargs";
-               };
-};
diff --git a/devicetree/quantimotor.dtso b/devicetree/quantimotor.dtso
new file mode 100644 (file)
index 0000000..2a58749
--- /dev/null
@@ -0,0 +1,21 @@
+/dts-v1/;
+/plugin/;
+
+/ {
+        compatible = "brcm,bcm2837";
+
+       fragment@0 {
+               target = <&spi0>;
+                __overlay__ {
+                        /* needed to avoid dtc warning */
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+
+                       ads8688: ads8688@0 {
+                                       compatible = "ti,ads8688";
+                               reg = <0>;
+                               spi-max-frequency = <1000000>;
+                       };
+               };
+        };
+};
diff --git a/raspi-firmware-custom b/raspi-firmware-custom
new file mode 100644 (file)
index 0000000..83554b6
--- /dev/null
@@ -0,0 +1 @@
+dtoverlay=quantimotor
index 3fefa02f7e928c86201fabace2c9e82935b13cc5..272fd02e7ceacc3e5d6695882f206e3892122f43 100755 (executable)
@@ -1,7 +1,6 @@
 #!/bin/sh
 
-# force /boot/firmware/bcm2837-rpi-zero-2-w.dtb to be the QuantiMotor dtb
-
-cp /usr/share/quantimotor/bcm2837-rpi-zero-2-w.dtb \
-  /boot/firmware/bcm2837-rpi-zero-2-w.dtb
+# Manually trigger the kernel postinst hook to ensure our new content 
+# (overlayd and command line content) gets into the initrd
+DEB_MAINT_PARAMS="configure" /etc/kernel/postinst.d/z50-raspi-firmware