brcm2708: update linux 4.4 patches to latest version
[librecmc/librecmc.git] / target / linux / brcm2708 / patches-4.4 / 0213-Add-configs-and-overlay-for-PCA9548-I2C-mux.patch
1 From 031f69058a890ac8df5834cde9e0f6301b9a75d3 Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <6by9@users.noreply.github.com>
3 Date: Thu, 17 Mar 2016 18:16:16 +0000
4 Subject: [PATCH 213/304] Add configs and overlay for PCA9548 I2C mux
5
6 Adds kernel configs for I2C muxes and a dt overlay for PCA9548
7 that adds the 8 muxed I2C buses and mux device.
8 ---
9  arch/arm/boot/dts/overlays/Makefile                |  1 +
10  arch/arm/boot/dts/overlays/README                  |  6 ++
11  .../boot/dts/overlays/i2c-mux-pca9548a-overlay.dts | 67 ++++++++++++++++++++++
12  arch/arm/configs/bcm2709_defconfig                 |  2 +
13  arch/arm/configs/bcmrpi_defconfig                  |  2 +
14  5 files changed, 78 insertions(+)
15  create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
16
17 --- a/arch/arm/boot/dts/overlays/Makefile
18 +++ b/arch/arm/boot/dts/overlays/Makefile
19 @@ -29,6 +29,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo
20  dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo
21  dtbo-$(RPI_DT_OVERLAYS) += i2c-rtc.dtbo
22  dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo
23 +dtbo-$(RPI_DT_OVERLAYS) += i2c-mux-pca9548a.dtbo
24  dtbo-$(RPI_DT_OVERLAYS) += i2c0-bcm2708.dtbo
25  dtbo-$(RPI_DT_OVERLAYS) += i2c1-bcm2708.dtbo
26  dtbo-$(RPI_DT_OVERLAYS) += i2s-mmap.dtbo
27 --- a/arch/arm/boot/dts/overlays/README
28 +++ b/arch/arm/boot/dts/overlays/README
29 @@ -360,6 +360,12 @@ Params: i2c_gpio_sda            GPIO use
30                                  (default "2" = ~100kHz)
31  
32  
33 +Name:   i2c-mux-pca9548a
34 +Info:   Adds support for an NXP PCA9548A I2C multiplexer on i2c_arm
35 +Load:   dtoverlay=i2c-mux-pca9548a,<param>=<val>
36 +Params: addr                    I2C address of PCA9548A (default 0x70)
37 +
38 +
39  Name:   i2c-rtc
40  Info:   Adds support for a number of I2C Real Time Clock devices
41  Load:   dtoverlay=i2c-rtc,<param>=<val>
42 --- /dev/null
43 +++ b/arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
44 @@ -0,0 +1,67 @@
45 +// Definitions for NXP PCA9548A I2C mux on ARM I2C bus.
46 +/dts-v1/;
47 +/plugin/;
48 +
49 +/{
50 +       compatible = "brcm,bcm2708";
51 +
52 +       fragment@0 {
53 +               target = <&i2c_arm>;
54 +               __overlay__ {
55 +                       #address-cells = <1>;
56 +                       #size-cells = <0>;
57 +                       status = "okay";
58 +
59 +                       i2cmux: mux@70 {
60 +                               compatible = "nxp,pca9548";
61 +                               reg = <0x70>;
62 +                               #address-cells = <1>;
63 +                               #size-cells = <0>;
64 +
65 +                               i2c@0 {
66 +                                       #address-cells = <1>;
67 +                                       #size-cells = <0>;
68 +                                       reg = <0>;
69 +                               };
70 +                               i2c@1 {
71 +                                       #address-cells = <1>;
72 +                                       #size-cells = <0>;
73 +                                       reg = <1>;
74 +                               };
75 +                               i2c@2 {
76 +                                       #address-cells = <1>;
77 +                                       #size-cells = <0>;
78 +                                       reg = <2>;
79 +                               };
80 +                               i2c@3 {
81 +                                       #address-cells = <1>;
82 +                                       #size-cells = <0>;
83 +                                       reg = <3>;
84 +                               };
85 +                               i2c@4 {
86 +                                       #address-cells = <1>;
87 +                                       #size-cells = <0>;
88 +                                       reg = <4>;
89 +                               };
90 +                               i2c@5 {
91 +                                       #address-cells = <1>;
92 +                                       #size-cells = <0>;
93 +                                       reg = <5>;
94 +                               };
95 +                               i2c@6 {
96 +                                       #address-cells = <1>;
97 +                                       #size-cells = <0>;
98 +                                       reg = <6>;
99 +                               };
100 +                               i2c@7 {
101 +                                       #address-cells = <1>;
102 +                                       #size-cells = <0>;
103 +                                       reg = <7>;
104 +                               };
105 +                       };
106 +               };
107 +       };
108 +       __overrides__ {
109 +               addr = <&i2cmux>,"reg:0";
110 +       };
111 +};
112 --- a/arch/arm/configs/bcm2709_defconfig
113 +++ b/arch/arm/configs/bcm2709_defconfig
114 @@ -600,6 +600,8 @@ CONFIG_I2C=y
115  CONFIG_I2C_CHARDEV=m
116  CONFIG_I2C_BCM2708=m
117  CONFIG_I2C_GPIO=m
118 +CONFIG_I2C_MUX=m
119 +CONFIG_I2C_MUX_PCA954x=m
120  CONFIG_SPI=y
121  CONFIG_SPI_BCM2835=m
122  CONFIG_SPI_BCM2835AUX=m
123 --- a/arch/arm/configs/bcmrpi_defconfig
124 +++ b/arch/arm/configs/bcmrpi_defconfig
125 @@ -593,6 +593,8 @@ CONFIG_I2C=y
126  CONFIG_I2C_CHARDEV=m
127  CONFIG_I2C_BCM2708=m
128  CONFIG_I2C_GPIO=m
129 +CONFIG_I2C_MUX=m
130 +CONFIG_I2C_MUX_PCA954x=m
131  CONFIG_SPI=y
132  CONFIG_SPI_BCM2835=m
133  CONFIG_SPI_BCM2835AUX=m