On Thu, 23 Jul 2020 at 23:08, <rentao.bupt@xxxxxxxxx> wrote: > > From: Tao Ren <rentao.bupt@xxxxxxxxx> > > Create all the i2c switches in device tree and use aliases to assign > child channels with consistent bus numbers. > > Besides, "i2c-mux-idle-disconnect" is set for all the i2c switches to > avoid potential conflicts when multiple devices (beind the switches) > use the same device address. > > Signed-off-by: Tao Ren <rentao.bupt@xxxxxxxxx> Reviewed-by: Joel Stanley <joel@xxxxxxxxx> I have merged this patch into the aspeed dt-for-5.9 branch. Cheers, Joel > --- > Changes in v2: > - Nothing changed. Resending the patch just in case the previous > email was not delivered. > > arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts | 1231 ++++++++++++++++- > 1 file changed, 1228 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts > index 016bbcb99bb6..7bc7df7ed428 100644 > --- a/arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts > +++ b/arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts > @@ -19,8 +19,8 @@ > serial3 = &uart4; > > /* > - * Hardcode the bus number of i2c switches' channels to > - * avoid breaking the legacy applications. > + * PCA9548 (1-0077) provides 8 channels for connecting to > + * 4 Line Cards and 4 Fabric Cards. > */ > i2c16 = &imux16; > i2c17 = &imux17; > @@ -30,6 +30,11 @@ > i2c21 = &imux21; > i2c22 = &imux22; > i2c23 = &imux23; > + > + /* > + * PCA9548 (2-0071) provides 8 channels for connecting to > + * Power Distribution Board. > + */ > i2c24 = &imux24; > i2c25 = &imux25; > i2c26 = &imux26; > @@ -38,6 +43,11 @@ > i2c29 = &imux29; > i2c30 = &imux30; > i2c31 = &imux31; > + > + /* > + * PCA9548 (8-0077) provides 8 channels and the first 4 > + * channels are connecting to 4 Fan Control Boards. > + */ > i2c32 = &imux32; > i2c33 = &imux33; > i2c34 = &imux34; > @@ -46,6 +56,226 @@ > i2c37 = &imux37; > i2c38 = &imux38; > i2c39 = &imux39; > + > + /* > + * 2 PCA9548 (18-0070 & 18-0073), 16 channels connecting > + * to Line Card #1. > + */ > + i2c40 = &imux40; > + i2c41 = &imux41; > + i2c42 = &imux42; > + i2c43 = &imux43; > + i2c44 = &imux44; > + i2c45 = &imux45; > + i2c46 = &imux46; > + i2c47 = &imux47; > + i2c48 = &imux48; > + i2c49 = &imux49; > + i2c50 = &imux50; > + i2c51 = &imux51; > + i2c52 = &imux52; > + i2c53 = &imux53; > + i2c54 = &imux54; > + i2c55 = &imux55; > + > + /* > + * 2 PCA9548 (19-0070 & 19-0073), 16 channels connecting > + * to Line Card #2. > + */ > + i2c56 = &imux56; > + i2c57 = &imux57; > + i2c58 = &imux58; > + i2c59 = &imux59; > + i2c60 = &imux60; > + i2c61 = &imux61; > + i2c62 = &imux62; > + i2c63 = &imux63; > + i2c64 = &imux64; > + i2c65 = &imux65; > + i2c66 = &imux66; > + i2c67 = &imux67; > + i2c68 = &imux68; > + i2c69 = &imux69; > + i2c70 = &imux70; > + i2c71 = &imux71; > + > + /* > + * 2 PCA9548 (20-0070 & 20-0073), 16 channels connecting > + * to Line Card #3. > + */ > + i2c72 = &imux72; > + i2c73 = &imux73; > + i2c74 = &imux74; > + i2c75 = &imux75; > + i2c76 = &imux76; > + i2c77 = &imux77; > + i2c78 = &imux78; > + i2c79 = &imux79; > + i2c80 = &imux80; > + i2c81 = &imux81; > + i2c82 = &imux82; > + i2c83 = &imux83; > + i2c84 = &imux84; > + i2c85 = &imux85; > + i2c86 = &imux86; > + i2c87 = &imux87; > + > + /* > + * 2 PCA9548 (21-0070 & 21-0073), 16 channels connecting > + * to Line Card #4. > + */ > + i2c88 = &imux88; > + i2c89 = &imux89; > + i2c90 = &imux90; > + i2c91 = &imux91; > + i2c92 = &imux92; > + i2c93 = &imux93; > + i2c94 = &imux94; > + i2c95 = &imux95; > + i2c96 = &imux96; > + i2c97 = &imux97; > + i2c98 = &imux98; > + i2c99 = &imux99; > + i2c100 = &imux100; > + i2c101 = &imux101; > + i2c102 = &imux102; > + i2c103 = &imux103; > + > + /* > + * 2 PCA9548 (16-0070 & 16-0073), 16 channels connecting > + * to Fabric Card #1. > + */ > + i2c104 = &imux104; > + i2c105 = &imux105; > + i2c106 = &imux106; > + i2c107 = &imux107; > + i2c108 = &imux108; > + i2c109 = &imux109; > + i2c110 = &imux110; > + i2c111 = &imux111; > + i2c112 = &imux112; > + i2c113 = &imux113; > + i2c114 = &imux114; > + i2c115 = &imux115; > + i2c116 = &imux116; > + i2c117 = &imux117; > + i2c118 = &imux118; > + i2c119 = &imux119; > + > + /* > + * 2 PCA9548 (17-0070 & 17-0073), 16 channels connecting > + * to Fabric Card #2. > + */ > + i2c120 = &imux120; > + i2c121 = &imux121; > + i2c122 = &imux122; > + i2c123 = &imux123; > + i2c124 = &imux124; > + i2c125 = &imux125; > + i2c126 = &imux126; > + i2c127 = &imux127; > + i2c128 = &imux128; > + i2c129 = &imux129; > + i2c130 = &imux130; > + i2c131 = &imux131; > + i2c132 = &imux132; > + i2c133 = &imux133; > + i2c134 = &imux134; > + i2c135 = &imux135; > + > + /* > + * 2 PCA9548 (22-0070 & 22-0073), 16 channels connecting > + * to Fabric Card #3. > + */ > + i2c136 = &imux136; > + i2c137 = &imux137; > + i2c138 = &imux138; > + i2c139 = &imux139; > + i2c140 = &imux140; > + i2c141 = &imux141; > + i2c142 = &imux142; > + i2c143 = &imux143; > + i2c144 = &imux144; > + i2c145 = &imux145; > + i2c146 = &imux146; > + i2c147 = &imux147; > + i2c148 = &imux148; > + i2c149 = &imux149; > + i2c150 = &imux150; > + i2c151 = &imux151; > + > + /* > + * 2 PCA9548 (23-0070 & 23-0073), 16 channels connecting > + * to Fabric Card #4. > + */ > + i2c152 = &imux152; > + i2c153 = &imux153; > + i2c154 = &imux154; > + i2c155 = &imux155; > + i2c156 = &imux156; > + i2c157 = &imux157; > + i2c158 = &imux158; > + i2c159 = &imux159; > + i2c160 = &imux160; > + i2c161 = &imux161; > + i2c162 = &imux162; > + i2c163 = &imux163; > + i2c164 = &imux164; > + i2c165 = &imux165; > + i2c166 = &imux166; > + i2c167 = &imux167; > + > + /* > + * PCA9548 (32-0070), 8 channels connecting to Fan Control > + # Board #1. > + */ > + i2c168 = &imux168; > + i2c169 = &imux169; > + i2c170 = &imux170; > + i2c171 = &imux171; > + i2c172 = &imux172; > + i2c173 = &imux173; > + i2c174 = &imux174; > + i2c175 = &imux175; > + > + /* > + * PCA9548 (33-0070), 8 channels connecting to Fan Control > + # Board #2. > + */ > + i2c176 = &imux176; > + i2c177 = &imux177; > + i2c178 = &imux178; > + i2c179 = &imux179; > + i2c180 = &imux180; > + i2c181 = &imux181; > + i2c182 = &imux182; > + i2c183 = &imux183; > + > + /* > + * PCA9548 (34-0070), 8 channels connecting to Fan Control > + # Board #3. > + */ > + i2c184 = &imux184; > + i2c185 = &imux185; > + i2c186 = &imux186; > + i2c187 = &imux187; > + i2c188 = &imux188; > + i2c189 = &imux189; > + i2c190 = &imux190; > + i2c191 = &imux191; > + > + /* > + * PCA9548 (35-0070), 8 channels connecting to Fan Control > + # Board #4. > + */ > + i2c192 = &imux192; > + i2c193 = &imux193; > + i2c194 = &imux194; > + i2c195 = &imux195; > + i2c196 = &imux196; > + i2c197 = &imux197; > + i2c198 = &imux198; > + i2c199 = &imux199; > }; > > chosen { > @@ -103,53 +333,846 @@ > #address-cells = <1>; > #size-cells = <0>; > reg = <0x77>; > + i2c-mux-idle-disconnect; > > + /* To Fabric Card #1 */ > imux16: i2c@0 { > #address-cells = <1>; > #size-cells = <0>; > reg = <0>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux104: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux105: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux106: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux107: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux108: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux109: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux110: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux111: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux112: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux113: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux114: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux115: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux116: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux117: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux118: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux119: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fabric Card #2 */ > imux17: i2c@1 { > #address-cells = <1>; > #size-cells = <0>; > reg = <1>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux120: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux121: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux122: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux123: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux124: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux125: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux126: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux127: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux128: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux129: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux130: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux131: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux132: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux133: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux134: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux135: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Line Card #1 */ > imux18: i2c@2 { > #address-cells = <1>; > #size-cells = <0>; > reg = <2>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux40: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux41: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux42: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux43: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux44: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux45: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux46: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux47: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux48: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux49: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux50: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux51: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux52: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux53: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux54: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux55: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Line Card #2 */ > imux19: i2c@3 { > #address-cells = <1>; > #size-cells = <0>; > reg = <3>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux56: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux57: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux58: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux59: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux60: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux61: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux62: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux63: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux64: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux65: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux66: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux67: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux68: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux69: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux70: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux71: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To LC3 SCM */ > imux20: i2c@4 { > #address-cells = <1>; > #size-cells = <0>; > reg = <4>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux72: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux73: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux74: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux75: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux76: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux77: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux78: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux79: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux80: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux81: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux82: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux83: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux84: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux85: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux86: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux87: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Line Card #4 */ > imux21: i2c@5 { > #address-cells = <1>; > #size-cells = <0>; > reg = <5>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux88: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux89: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux90: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux91: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux92: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux93: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux94: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux95: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux96: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux97: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux98: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux99: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux100: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux101: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux102: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux103: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fabric Card #3 */ > imux22: i2c@6 { > #address-cells = <1>; > #size-cells = <0>; > reg = <6>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux136: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux137: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux138: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux139: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux140: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux141: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux142: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux143: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux144: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux145: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux146: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux147: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux148: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux149: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux150: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux151: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fabric Card #4 */ > imux23: i2c@7 { > #address-cells = <1>; > #size-cells = <0>; > reg = <7>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux152: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux153: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux154: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux155: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux156: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux157: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux158: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux159: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > + > + i2c-switch@73 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x73>; > + i2c-mux-idle-disconnect; > + > + imux160: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux161: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux162: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux163: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux164: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux165: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux166: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux167: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > }; > }; > @@ -165,6 +1188,7 @@ > #address-cells = <1>; > #size-cells = <0>; > reg = <0x71>; > + i2c-mux-idle-disconnect; > > imux24: i2c@0 { > #address-cells = <1>; > @@ -252,7 +1276,7 @@ > }; > > /* > - * I2C bus to Fan Control Board. > + * I2C bus to Fan Control Boards. > */ > &i2c8 { > status = "okay"; > @@ -262,29 +1286,230 @@ > #address-cells = <1>; > #size-cells = <0>; > reg = <0x77>; > + i2c-mux-idle-disconnect; > > + /* To Fan Control Board #1 */ > imux32: i2c@0 { > #address-cells = <1>; > #size-cells = <0>; > reg = <0>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux168: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux169: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux170: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux171: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux172: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux173: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux174: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux175: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fan Control Board #2 */ > imux33: i2c@1 { > #address-cells = <1>; > #size-cells = <0>; > reg = <1>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux176: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux177: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux178: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux179: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux180: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux181: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux182: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux183: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fan Control Board #3 */ > imux34: i2c@2 { > #address-cells = <1>; > #size-cells = <0>; > reg = <2>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux184: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux185: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux186: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux187: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux188: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux189: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux190: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux191: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > + /* To Fan Control Board #4 */ > imux35: i2c@3 { > #address-cells = <1>; > #size-cells = <0>; > reg = <3>; > + > + i2c-switch@70 { > + compatible = "nxp,pca9548"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0x70>; > + i2c-mux-idle-disconnect; > + > + imux192: i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0>; > + }; > + imux193: i2c@1 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <1>; > + }; > + imux194: i2c@2 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <2>; > + }; > + imux195: i2c@3 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <3>; > + }; > + imux196: i2c@4 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <4>; > + }; > + imux197: i2c@5 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <5>; > + }; > + imux198: i2c@6 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <6>; > + }; > + imux199: i2c@7 { > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <7>; > + }; > + }; > }; > > imux36: i2c@4 { > -- > 2.17.1 >