2b1c6b21b5
As usual these patches were extracted and rebased from the raspberry pi repo: https://github.com/raspberrypi/linux/tree/rpi-4.4.y Also adds support for Raspberry Pi Compute Module 3 (untested). Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
133 lines
3.5 KiB
Diff
133 lines
3.5 KiB
Diff
From 07207eccca9d4439d69e56fb5df378ac669087bf 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
|