From 4d204851b1a2451570a61e85325775ad143dc5d7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 31 May 2017 15:27:39 +0100 Subject: [PATCH] BCM270X_DT: Improve i2c-sensor and i2c-rtc overlay Use the "__dormant__" feature to permit multiple instances of each overlay, which is more useful now that changing the "reg" property also changes the node address. Although the overlay grows slightly, when applied only the requested node is included. Usage does not change, except that the "lm75addr" parameter of the i2c-sensor overlay has been deprecated in favour of the generic "addr" parameter. Signed-off-by: Phil Elwell --- arch/arm/boot/dts/overlays/README | 8 +- .../arm/boot/dts/overlays/i2c-rtc-overlay.dts | 119 +++++++++++++++--- .../boot/dts/overlays/i2c-sensor-overlay.dts | 87 ++++++++++--- 3 files changed, 175 insertions(+), 39 deletions(-) diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 2f762bcf2385..bd7563be019c 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -660,8 +660,8 @@ Name: i2c-sensor Info: Adds support for a number of I2C barometric pressure and temperature sensors on i2c_arm Load: dtoverlay=i2c-sensor,= -Params: addr Set the address for the BME280, BMP280 or - TMP102 +Params: addr Set the address for the BME280, BMP280, TMP102 + or LM75 bme280 Select the Bosch Sensortronic BME280 Valid addresses 0x76-0x77, default 0x76 @@ -674,9 +674,9 @@ Params: addr Set the address for the BME280, BMP280 or Valid addresses 0x76-0x77, default 0x76 lm75 Select the Maxim LM75 temperature sensor + Valid addresses 0x48-0x4f, default 0x4f - lm75addr Choose the address for the LM75 (0x48-0x4f - - default 0x4f) + lm75addr Deprecated - use addr parameter instead si7020 Select the Silicon Labs Si7013/20/21 humidity/ temperature sensor diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts index 1efcf0b712c9..b73f902289c8 100644 --- a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts @@ -7,7 +7,7 @@ fragment@0 { target = <&i2c_arm>; - __overlay__ { + __dormant__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; @@ -17,61 +17,142 @@ reg = <0x69>; abracon,tc-diode = "standard"; abracon,tc-resistor = <0>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@1 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + ds1307: ds1307@68 { compatible = "maxim,ds1307"; reg = <0x68>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@2 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + ds1339: ds1339@68 { compatible = "dallas,ds1339"; trickle-resistor-ohms = <0>; reg = <0x68>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@3 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + mcp7940x: mcp7940x@6f { compatible = "microchip,mcp7940x"; reg = <0x6f>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@4 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + mcp7941x: mcp7941x@6f { compatible = "microchip,mcp7941x"; reg = <0x6f>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@5 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + ds3231: ds3231@68 { compatible = "maxim,ds3231"; reg = <0x68>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@6 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pcf2127: pcf2127@51 { compatible = "nxp,pcf2127"; reg = <0x51>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@7 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pcf8523: pcf8523@68 { compatible = "nxp,pcf8523"; reg = <0x68>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@8 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pcf8563: pcf8563@51 { compatible = "nxp,pcf8563"; reg = <0x51>; - status = "disable"; + status = "okay"; }; }; }; + __overrides__ { - abx80x = <&abx80x>,"status"; - ds1307 = <&ds1307>,"status"; - ds1339 = <&ds1339>,"status"; - ds3231 = <&ds3231>,"status"; - mcp7940x = <&mcp7940x>,"status"; - mcp7941x = <&mcp7941x>,"status"; - pcf2127 = <&pcf2127>,"status"; - pcf8523 = <&pcf8523>,"status"; - pcf8563 = <&pcf8563>,"status"; + abx80x = <0>,"+0"; + ds1307 = <0>,"+1"; + ds1339 = <0>,"+2"; + ds3231 = <0>,"+3"; + mcp7940x = <0>,"+4"; + mcp7941x = <0>,"+5"; + pcf2127 = <0>,"+6"; + pcf8523 = <0>,"+7"; + pcf8563 = <0>,"+8"; trickle-diode-type = <&abx80x>,"abracon,tc-diode"; trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0", <&abx80x>,"abracon,tc-resistor"; diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts index e86a13f92c3f..d2f0008addfa 100644 --- a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts +++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts @@ -7,7 +7,7 @@ fragment@0 { target = <&i2c_arm>; - __overlay__ { + __dormant__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; @@ -15,57 +15,112 @@ bme280: bme280@76 { compatible = "bosch,bme280"; reg = <0x76>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@1 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; bmp085: bmp085@77 { compatible = "bosch,bmp085"; reg = <0x77>; default-oversampling = <3>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@2 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; bmp180: bmp180@77 { compatible = "bosch,bmp180"; reg = <0x77>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@3 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; bmp280: bmp280@76 { compatible = "bosch,bmp280"; reg = <0x76>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@4 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; lm75: lm75@4f { compatible = "lm75"; reg = <0x4f>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@5 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; si7020: si7020@40 { compatible = "si7020"; reg = <0x40>; - status = "disable"; + status = "okay"; }; + }; + }; + + fragment@6 { + target = <&i2c_arm>; + __dormant__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; tmp102: tmp102@48 { compatible = "ti,tmp102"; reg = <0x48>; - status = "disable"; + status = "okay"; }; }; }; __overrides__ { - addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0"; - bme280 = <&bme280>,"status"; - bmp085 = <&bmp085>,"status"; - bmp180 = <&bmp180>,"status"; - bmp280 = <&bmp280>,"status"; - lm75 = <&lm75>,"status"; + addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0", + <&lm75>,"reg:0"; + bme280 = <0>,"+0"; + bmp085 = <0>,"+1"; + bmp180 = <0>,"+2"; + bmp280 = <0>,"+3"; + lm75 = <0>,"+4"; lm75addr = <&lm75>,"reg:0"; - si7020 = <&si7020>,"status"; - tmp102 = <&tmp102>,"status"; + si7020 = <0>,"+5"; + tmp102 = <0>,"+6"; }; }; -- 2.30.2