Skip to content

Commit d321f11

Browse files
ali1234popcornmix
authored andcommitted
Build i2c_gpio module and add a device tree overlay to configure it.
1 parent a48e386 commit d321f11

File tree

5 files changed

+42
-0
lines changed

5 files changed

+42
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb
2525
dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb
2626
dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb
2727
dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb
28+
dtb-$(RPI_DT_OVERLAYS) += i2c-gpio-overlay.dtb
2829
dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb
2930
dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb
3031
dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb

arch/arm/boot/dts/overlays/README

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,17 @@ Params: speed Display SPI bus speed
284284
ledgpio GPIO used to control backlight
285285

286286

287+
Name: i2c-gpio
288+
Info: Adds support for software i2c controller on gpio pins
289+
Load: dtoverlay=i2c-gpio,<param>
290+
Params: i2c_gpio_sda GPIO used for I2C data (default "23")
291+
292+
i2c_gpio_scl GPIO used for I2C clock (default "24")
293+
294+
i2c_gpio_delay_us Clock delay in microseconds
295+
(default "2" = ~100kHz)
296+
297+
287298
Name: i2c-rtc
288299
Info: Adds support for a number of I2C Real Time Clock devices
289300
Load: dtoverlay=i2c-rtc,<param>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Overlay for i2c_gpio bitbanging host bus.
2+
/dts-v1/;
3+
/plugin/;
4+
5+
/ {
6+
compatible = "brcm,bcm2708";
7+
8+
fragment@0 {
9+
target-path = "/";
10+
__overlay__ {
11+
i2c_gpio: i2c@0 {
12+
compatible = "i2c-gpio";
13+
gpios = <&gpio 23 0 /* sda */
14+
&gpio 24 0 /* scl */
15+
>;
16+
i2c-gpio,delay-us = <2>; /* ~100 kHz */
17+
#address-cells = <1>;
18+
#size-cells = <0>;
19+
};
20+
};
21+
};
22+
__overrides__ {
23+
i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
24+
i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
25+
i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
26+
};
27+
};
28+

arch/arm/configs/bcm2709_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ CONFIG_BCM_VC_SM=y
595595
CONFIG_I2C=y
596596
CONFIG_I2C_CHARDEV=m
597597
CONFIG_I2C_BCM2708=m
598+
CONFIG_I2C_GPIO=m
598599
CONFIG_SPI=y
599600
CONFIG_SPI_BCM2835=m
600601
CONFIG_SPI_BCM2708=m

arch/arm/configs/bcmrpi_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,7 @@ CONFIG_BCM_VC_SM=y
588588
CONFIG_I2C=y
589589
CONFIG_I2C_CHARDEV=m
590590
CONFIG_I2C_BCM2708=m
591+
CONFIG_I2C_GPIO=m
591592
CONFIG_SPI=y
592593
CONFIG_SPI_BCM2835=m
593594
CONFIG_SPI_BCM2708=m

0 commit comments

Comments
 (0)