Skip to content

Day28 - SPI IRQ Integration

Objective

  • Add IRQ support to SPI sensor
  • Integrate IRQ into core layer
  • Validate hybrid update model

1. SPI Driver Update

SPI probe passes IRQ into core:

return mysensor_core_probe(&spi->dev,
                           spi,
                           &mysensor_spi_bus_ops,
                           spi->irq);

2. Device Tree (SPI)

Example overlay:

mysensor@0 {
    compatible = "myvendor,mysensor-spi";
    reg = <0>;

    spi-max-frequency = <100000>;

    interrupt-parent = <&rp1_gpio>;
    interrupts = <23 2>;

    pinctrl-names = "default";
    pinctrl-0 = <&mysensor_spi_irq_pins>;
};

3. Core Layer IRQ Handling

Core receives IRQ and registers handler:

  • use devm_request_threaded_irq()
  • trigger refresh inside IRQ thread

4. Debug Status Implementation

Custom sysfs node:

cat /sys/class/hwmon/hwmonX/debug_status

Displays:

  • mode
  • transport
  • counters
  • timestamps

5. Build & Deploy

Build

make -f Makefile.cross

Copy

scp *.ko *.dtbo pi:~

Install

sudo cp *.dtbo /boot/firmware/overlays/
sudo dtoverlay mysensor-spi
sudo insmod mysensor_spi_drv.ko

6. Verification

Check IRQ:

cat /proc/interrupts

Check driver:

dmesg | grep mysensor

Check hwmon:

cat /sys/class/hwmon/hwmonX/debug_status