diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile index d61ab8ab377d..321b5384e554 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile @@ -25,6 +25,7 @@ dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += i2c-gpio-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 35b11452d8dd..caed90e875f6 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -284,6 +284,17 @@ Params: speed Display SPI bus speed ledgpio GPIO used to control backlight +Name: i2c-gpio +Info: Adds support for software i2c controller on gpio pins +Load: dtoverlay=i2c-gpio, +Params: 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-rtc Info: Adds support for a number of I2C Real Time Clock devices Load: dtoverlay=i2c-rtc, diff --git a/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts new file mode 100644 index 000000000000..2a2dc986770c --- /dev/null +++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts @@ -0,0 +1,28 @@ +// Overlay for i2c_gpio bitbanging host bus. +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + i2c_gpio: i2c@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>; + }; + }; + }; + __overrides__ { + 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"; + }; +}; + diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig index 639d00e2b9a9..b45ff3db37b8 100644 --- a/arch/arm/configs/bcm2709_defconfig +++ b/arch/arm/configs/bcm2709_defconfig @@ -595,6 +595,7 @@ CONFIG_RAW_DRIVER=y CONFIG_I2C=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_BCM2708=m +CONFIG_I2C_GPIO=m CONFIG_SPI=y CONFIG_SPI_BCM2835=m CONFIG_SPI_BCM2708=m diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig index 6347f3d124d6..529930a675b3 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -588,6 +588,7 @@ CONFIG_RAW_DRIVER=y CONFIG_I2C=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_BCM2708=m +CONFIG_I2C_GPIO=m CONFIG_SPI=y CONFIG_SPI_BCM2835=m CONFIG_SPI_BCM2708=m