From beea6d95258deb04cb334ad57d6be00503865de1 Mon Sep 17 00:00:00 2001 From: James Sarrett Date: Sun, 26 Jan 2025 22:07:02 -0800 Subject: [PATCH 1/2] add shtc3 to i2c-sensors This patch adds the shtc3 device tree parameters to the i2c-sensors overlay. The shtc3 driver needs no other configuration parameters, as the i2c address is permanently baked in to the silicon. --- arch/arm/boot/dts/overlays/README | 3 +++ .../arm/boot/dts/overlays/i2c-sensor-common.dtsi | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 0a26712e40172d..34cdaada82a204 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -2570,6 +2570,9 @@ Params: addr Set the address for the ADT7410, BH1750, BME280, humidity sensors. Valid addresses 0x44-0x45, default 0x44 + shtc3 Select the Sensirion SHTC3 temperature and + humidity sensors. + si7020 Select the Silicon Labs Si7013/20/21 humidity/ temperature sensor diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi index 6f6908b7f0086d..f1662a0de40ac9 100755 --- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi +++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi @@ -547,6 +547,21 @@ }; }; + fragment@36 { + target = <&i2cbus>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + shtc3: shtc3@70 { + compatible = "sensirion,shtc3"; + reg = <0x70>; + status = "okay"; + }; + }; + }; + fragment@99 { target = <&gpio>; __dormant__ { @@ -595,6 +610,7 @@ sht4x = <0>,"+32"; adt7410 = <0>,"+34"; ina238 = <0>,"+35"; + shtc3 = <0>,"+36"; addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", <&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0", From 4b84428b9be50d639fc01e77d010e0d32e1050f3 Mon Sep 17 00:00:00 2001 From: James Sarrett Date: Sun, 26 Jan 2025 23:17:01 -0800 Subject: [PATCH 2/2] enable 6 chip selects on SPI0 --- arch/arm/boot/dts/overlays/Makefile | 1 + arch/arm/boot/dts/overlays/README | 13 +++ .../boot/dts/overlays/spi0-6cs-overlay.dts | 79 +++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 arch/arm/boot/dts/overlays/spi0-6cs-overlay.dts diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile index 05f9f10b1bbe0d..073ccaf472e4a1 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -265,6 +265,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ spi0-1cs.dtbo \ spi0-1cs-inverted.dtbo \ spi0-2cs.dtbo \ + spi0-6cs.dtbo \ spi1-1cs.dtbo \ spi1-2cs.dtbo \ spi1-3cs.dtbo \ diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 34cdaada82a204..04d64429975b49 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -4716,6 +4716,19 @@ Params: cs0_pin GPIO pin for CS0 (default 8) it for other uses. +Name: spi0-6cs +Info: Change the CS pins for SPI0 +Load: dtoverlay=spi0-6cs,= +Params: cs0_pin GPIO pin for CS0 (default 8) + cs1_pin GPIO pin for CS1 (default 13) + cs2_pin GPIO pin for CS1 (default 16) + cs3_pin GPIO pin for CS1 (default 17) + cs4_pin GPIO pin for CS1 (default 18) + cs5_pin GPIO pin for CS1 (default 19) + no_miso Don't claim and use the MISO pin (9), freeing + it for other uses. + + Name: spi0-cs Info: This overlay has been renamed spi0-2cs, keeping spi0-cs as an alias for backwards compatibility. diff --git a/arch/arm/boot/dts/overlays/spi0-6cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-6cs-overlay.dts new file mode 100644 index 00000000000000..16e2dc9f2bd3e6 --- /dev/null +++ b/arch/arm/boot/dts/overlays/spi0-6cs-overlay.dts @@ -0,0 +1,79 @@ +/dts-v1/; +/plugin/; + + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target = <&spi0_cs_pins>; + frag0: __overlay__ { + brcm,pins = <8 13 16 17 18 19>; + }; + }; + + fragment@1 { + target = <&spi0>; + frag1: __overlay__ { + cs-gpios = <&gpio 8 1>, <&gpio 13 1>, <&gpio 16 1>, <&gpio 17 1>, <&gpio 18 1>, <&gpio 19 1>; + status = "okay"; + }; + }; + + fragment@2 { + target = <&spi0_pins>; + __dormant__ { + brcm,pins = <9 10 11>; + }; + }; + + fragment@3 { + target = <&spi0>; + frag3: __overlay__ { + spidev2: spidev@2 { + compatible = "spidev"; + reg = <2>; /* CE2 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; + spidev3: spidev@3 { + compatible = "spidev"; + reg = <3>; /* CE3 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; + spidev4: spidev@4 { + compatible = "spidev"; + reg = <4>; /* CE4 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; + spidev5: spidev@5 { + compatible = "spidev"; + reg = <5>; /* CE5 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <125000000>; + }; + }; + }; + + __overrides__ { + cs0_pin = <&frag0>,"brcm,pins:0", + <&frag1>,"cs-gpios:4"; + cs1_pin = <&frag0>,"brcm,pins:4", + <&frag1>,"cs-gpios:16"; + cs2_pin = <&frag0>,"brcm,pins:8", + <&frag1>,"cs-gpios:28"; + cs3_pin = <&frag0>,"brcm,pins:12", + <&frag1>,"cs-gpios:40"; + cs4_pin = <&frag0>,"brcm,pins:16", + <&frag1>,"cs-gpios:52"; + cs5_pin = <&frag0>,"brcm,pins:20", + <&frag1>,"cs-gpios:64"; + no_miso = <0>,"=2"; + }; +};