from gpiod.line import Direction, Value
def handler(signum, frame):
+ print()
print('Ctrl+C pressed, shutting down cleanly.')
set_line_values(
"/dev/gpiochip0",
"/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:
+++ /dev/null
-// 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>;
- };
-};
+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
Package: quantimotor
Architecture: all
+Pre-Depends: raspi-firmware
Depends:
${shlibs:Depends},
${misc:Depends},
-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
-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
+++ /dev/null
-/dts-v1/;
-/plugin/;
-
-/ {
- compatible = "brcm,bcm2835";
-
- fragment@0 {
- target = <&chosen>;
- frag0: __overlay__ {
- };
- };
-
- __overrides__ {
- append = <&frag0>, "bootargs";
- };
-};
--- /dev/null
+/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>;
+ };
+ };
+ };
+};
--- /dev/null
+dtoverlay=quantimotor
#!/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