From: Bdale Garbee Date: Sun, 16 Mar 2025 23:57:13 +0000 (-0600) Subject: first try at switching to a devicetree overlay X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=1172b444b83a32f19005a1f391e478990ff417bc;p=fw%2Fquantimotor first try at switching to a devicetree overlay --- diff --git a/application/quantimotor.py b/application/quantimotor.py index 9947382..680af04 100755 --- a/application/quantimotor.py +++ b/application/quantimotor.py @@ -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 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 index e0cba2f..0000000 --- a/bcm2837-rpi-zero-2-w.dts +++ /dev/null @@ -1,152 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * Copyright (C) 2022 Stefan Wahren - */ - -/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>; - }; -}; diff --git a/debian/changelog b/debian/changelog index 464252f..5d2c10e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +quantimotor (2) UNRELEASED; urgency=medium + + * switch to devicetree overlay instead of complete replacement + + -- Bdale Garbee Sun, 16 Mar 2025 17:41:20 -0600 + quantimotor (1) UNRELEASED; urgency=medium * first version of package for QuantiMotor diff --git a/debian/control b/debian/control index 51ba1b9..08abd44 100644 --- a/debian/control +++ b/debian/control @@ -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}, diff --git a/debian/quantimotor.install b/debian/quantimotor.install index 91d935b..057b469 100644 --- a/debian/quantimotor.install +++ b/debian/quantimotor.install @@ -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 diff --git a/devicetree/Makefile b/devicetree/Makefile index 4957e57..3f4fb4b 100644 --- a/devicetree/Makefile +++ b/devicetree/Makefile @@ -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 index 3f9509f..0000000 --- a/devicetree/append_cmdline.dts +++ /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 index 0000000..2a58749 --- /dev/null +++ b/devicetree/quantimotor.dtso @@ -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 index 0000000..83554b6 --- /dev/null +++ b/raspi-firmware-custom @@ -0,0 +1 @@ +dtoverlay=quantimotor diff --git a/z99-quantimotor b/z99-quantimotor index 3fefa02..272fd02 100755 --- a/z99-quantimotor +++ b/z99-quantimotor @@ -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