123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- From 7a08c498e9f5c7ddd27e7f1956fa532cba009cd4 Mon Sep 17 00:00:00 2001
- From: Dave Stevenson <6by9@users.noreply.github.com>
- Date: Thu, 17 Mar 2016 18:16:16 +0000
- Subject: [PATCH] Add configs and overlay for PCA9548 I2C mux
- Adds kernel configs for I2C muxes and a dt overlay for PCA9548
- that adds the 8 muxed I2C buses and mux device.
- ---
- arch/arm/boot/dts/overlays/Makefile | 1 +
- arch/arm/boot/dts/overlays/README | 6 ++
- .../boot/dts/overlays/i2c-mux-pca9548a-overlay.dts | 67 ++++++++++++++++++++++
- arch/arm/configs/bcm2709_defconfig | 2 +
- arch/arm/configs/bcmrpi_defconfig | 2 +
- 5 files changed, 78 insertions(+)
- create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
- --- a/arch/arm/boot/dts/overlays/Makefile
- +++ b/arch/arm/boot/dts/overlays/Makefile
- @@ -29,6 +29,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += i2c-rtc.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo
- +dtbo-$(RPI_DT_OVERLAYS) += i2c-mux-pca9548a.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += i2c0-bcm2708.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += i2c1-bcm2708.dtbo
- dtbo-$(RPI_DT_OVERLAYS) += i2s-mmap.dtbo
- --- a/arch/arm/boot/dts/overlays/README
- +++ b/arch/arm/boot/dts/overlays/README
- @@ -360,6 +360,12 @@ Params: i2c_gpio_sda GPIO use
- (default "2" = ~100kHz)
-
-
- +Name: i2c-mux-pca9548a
- +Info: Adds support for an NXP PCA9548A I2C multiplexer on i2c_arm
- +Load: dtoverlay=i2c-mux-pca9548a,<param>=<val>
- +Params: addr I2C address of PCA9548A (default 0x70)
- +
- +
- Name: i2c-rtc
- Info: Adds support for a number of I2C Real Time Clock devices
- Load: dtoverlay=i2c-rtc,<param>=<val>
- --- /dev/null
- +++ b/arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
- @@ -0,0 +1,67 @@
- +// Definitions for NXP PCA9548A I2C mux on ARM I2C bus.
- +/dts-v1/;
- +/plugin/;
- +
- +/{
- + compatible = "brcm,bcm2708";
- +
- + fragment@0 {
- + target = <&i2c_arm>;
- + __overlay__ {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + status = "okay";
- +
- + i2cmux: mux@70 {
- + compatible = "nxp,pca9548";
- + reg = <0x70>;
- + #address-cells = <1>;
- + #size-cells = <0>;
- +
- + i2c@0 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <0>;
- + };
- + i2c@1 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <1>;
- + };
- + i2c@2 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <2>;
- + };
- + i2c@3 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <3>;
- + };
- + i2c@4 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <4>;
- + };
- + i2c@5 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <5>;
- + };
- + i2c@6 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <6>;
- + };
- + i2c@7 {
- + #address-cells = <1>;
- + #size-cells = <0>;
- + reg = <7>;
- + };
- + };
- + };
- + };
- + __overrides__ {
- + addr = <&i2cmux>,"reg:0";
- + };
- +};
- --- a/arch/arm/configs/bcm2709_defconfig
- +++ b/arch/arm/configs/bcm2709_defconfig
- @@ -600,6 +600,8 @@ CONFIG_I2C=y
- CONFIG_I2C_CHARDEV=m
- CONFIG_I2C_BCM2708=m
- CONFIG_I2C_GPIO=m
- +CONFIG_I2C_MUX=m
- +CONFIG_I2C_MUX_PCA954x=m
- CONFIG_SPI=y
- CONFIG_SPI_BCM2835=m
- CONFIG_SPI_BCM2835AUX=m
- --- a/arch/arm/configs/bcmrpi_defconfig
- +++ b/arch/arm/configs/bcmrpi_defconfig
- @@ -593,6 +593,8 @@ CONFIG_I2C=y
- CONFIG_I2C_CHARDEV=m
- CONFIG_I2C_BCM2708=m
- CONFIG_I2C_GPIO=m
- +CONFIG_I2C_MUX=m
- +CONFIG_I2C_MUX_PCA954x=m
- CONFIG_SPI=y
- CONFIG_SPI_BCM2835=m
- CONFIG_SPI_BCM2835AUX=m
|