New i2c-rtc-gpio device overlay (#2092)
authorSteve Conner <connermcsteve@gmail.com>
Thu, 29 Jun 2017 14:56:19 +0000 (15:56 +0100)
committerRaspbian kernel package updater <root@raspbian.org>
Sun, 8 Oct 2017 01:08:15 +0000 (01:08 +0000)
Created new i2c-rtc-gpio device overlay by combining i2c-rtc and i2c-gpio. Tested with PCF2127 on CM3.

arch/arm/boot/dts/overlays/Makefile
arch/arm/boot/dts/overlays/README
arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts [new file with mode: 0644]

index eca81982c0f19988abd05165fc62a80d26f539cb..8a3131f5a4bc90d4a597b416416953e8e49d41ec 100644 (file)
@@ -42,6 +42,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
        i2c-mux.dtbo \
        i2c-pwm-pca9685a.dtbo \
        i2c-rtc.dtbo \
+       i2c-rtc-gpio.dtbo \
        i2c-sensor.dtbo \
        i2c0-bcm2708.dtbo \
        i2c1-bcm2708.dtbo \
index 19df6883be4277240283d5f63f27e34a22a2eec5..a69e3a0d8dce1633598dd3cd8e00cad9509eee03 100644 (file)
@@ -662,6 +662,47 @@ Params: abx80x                  Select one of the ABx80x family:
                                 source
 
 
+Name:   i2c-rtc-gpio
+Info:   Adds support for a number of I2C Real Time Clock devices
+        using the software i2c controller
+Load:   dtoverlay=i2c-rtc-gpio,<param>=<val>
+Params: abx80x                  Select one of the ABx80x family:
+                                  AB0801, AB0803, AB0804, AB0805,
+                                  AB1801, AB1803, AB1804, AB1805
+
+        ds1307                  Select the DS1307 device
+
+        ds1339                  Select the DS1339 device
+
+        ds3231                  Select the DS3231 device
+
+        mcp7940x                Select the MCP7940x device
+
+        mcp7941x                Select the MCP7941x device
+
+        pcf2127                 Select the PCF2127 device
+
+        pcf8523                 Select the PCF8523 device
+
+        pcf8563                 Select the PCF8563 device
+
+        trickle-diode-type      Diode type for trickle charge - "standard" or
+                                "schottky" (ABx80x only)
+
+        trickle-resistor-ohms   Resistor value for trickle charge (DS1339,
+                                ABx80x)
+
+        wakeup-source           Specify that the RTC can be used as a wakeup
+                                source
+
+        i2c_gpio_sda            GPIO used for I2C data (default "23")
+
+        i2c_gpio_scl            GPIO used for I2C clock (default "24")
+
+        i2c_gpio_delay_us       Clock delay in microseconds
+                                (default "2" = ~100kHz)
+
+
 Name:   i2c-sensor
 Info:   Adds support for a number of I2C barometric pressure and temperature
         sensors on i2c_arm
diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
new file mode 100644 (file)
index 0000000..8415e60
--- /dev/null
@@ -0,0 +1,183 @@
+// Definitions for several I2C based Real Time Clocks
+// Available through i2c-gpio
+/dts-v1/;
+/plugin/;
+
+/ {
+       compatible = "brcm,bcm2708";
+
+       fragment@0 {
+               target-path = "/";
+               __overlay__ {
+                       i2c_gpio: i2c-gpio-rtc@0 {
+                               compatible = "i2c-gpio";
+                               gpios = <&gpio 23 0 /* sda */
+                                        &gpio 24 0 /* scl */
+                                       >;
+                               i2c-gpio,delay-us = <2>;        /* ~100 kHz */
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+       };
+
+       fragment@1 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       abx80x: abx80x@69 {
+                               compatible = "abracon,abx80x";
+                               reg = <0x69>;
+                               abracon,tc-diode = "standard";
+                               abracon,tc-resistor = <0>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@2 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       ds1307: ds1307@68 {
+                               compatible = "maxim,ds1307";
+                               reg = <0x68>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@3 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       ds1339: ds1339@68 {
+                               compatible = "dallas,ds1339";
+                               trickle-resistor-ohms = <0>;
+                               reg = <0x68>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@4 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       ds3231: ds3231@68 {
+                               compatible = "maxim,ds3231";
+                               reg = <0x68>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@5 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       mcp7940x: mcp7940x@6f {
+                               compatible = "microchip,mcp7940x";
+                               reg = <0x6f>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@6 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       mcp7941x: mcp7941x@6f {
+                               compatible = "microchip,mcp7941x";
+                               reg = <0x6f>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@7 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       pcf2127: pcf2127@51 {
+                               compatible = "nxp,pcf2127";
+                               reg = <0x51>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@8 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       pcf8523: pcf8523@68 {
+                               compatible = "nxp,pcf8523";
+                               reg = <0x68>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       fragment@9 {
+               target = <&i2c_gpio>;
+               __dormant__ {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       pcf8563: pcf8563@51 {
+                               compatible = "nxp,pcf8563";
+                               reg = <0x51>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       __overrides__ {
+               abx80x = <0>,"+1";
+               ds1307 = <0>,"+2";
+               ds1339 = <0>,"+3";
+               ds3231 = <0>,"+4";
+               mcp7940x = <0>,"+5";
+               mcp7941x = <0>,"+6";
+               pcf2127 = <0>,"+7";
+               pcf8523 = <0>,"+8";
+               pcf8563 = <0>,"+9";
+               trickle-diode-type = <&abx80x>,"abracon,tc-diode";
+               trickle-resistor-ohms = <&ds1339>,"trickle-resistor-ohms:0",
+                                       <&abx80x>,"abracon,tc-resistor";
+               wakeup-source = <&ds1339>,"wakeup-source?",
+                               <&ds3231>,"wakeup-source?",
+                               <&mcp7940x>,"wakeup-source?",
+                                       <&mcp7941x>,"wakeup-source?";
+               i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
+               i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
+               i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
+       };
+};