diff options
| -rw-r--r-- | arch/arm/boot/dts/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-amd-ethanolx.dts | 219 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts | 1231 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts | 42 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts | 466 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts | 152 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts | 79 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts | 11 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-g5.dtsi | 5 | ||||
| -rw-r--r-- | arch/arm/boot/dts/aspeed-g6.dtsi | 15 | 
10 files changed, 2121 insertions, 100 deletions
| diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index e71ff271fa63..8fa6b4be3c5c 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -1359,6 +1359,7 @@ dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb  dtb-$(CONFIG_ARCH_ASPEED) += \  	aspeed-ast2500-evb.dtb \  	aspeed-ast2600-evb.dtb \ +	aspeed-bmc-amd-ethanolx.dtb \  	aspeed-bmc-arm-centriq2400-rep.dtb \  	aspeed-bmc-arm-stardragon4800-rep2.dtb \  	aspeed-bmc-facebook-cmm.dtb \ diff --git a/arch/arm/boot/dts/aspeed-bmc-amd-ethanolx.dts b/arch/arm/boot/dts/aspeed-bmc-amd-ethanolx.dts new file mode 100644 index 000000000000..60ba86f3e5bc --- /dev/null +++ b/arch/arm/boot/dts/aspeed-bmc-amd-ethanolx.dts @@ -0,0 +1,219 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (c) 2020 AMD Inc. +// Author: Supreeth Venkatesh <supreeth.venkatesh@amd.com> +/dts-v1/; + +#include "aspeed-g5.dtsi" +#include <dt-bindings/gpio/aspeed-gpio.h> + +/ { +	model = "AMD EthanolX BMC"; +	compatible = "amd,ethanolx-bmc", "aspeed,ast2500"; + +	memory@80000000 { +		reg = <0x80000000 0x20000000>; +	}; +	aliases { +		serial0 = &uart1; +		serial4 = &uart5; +	}; +	chosen { +		stdout-path = &uart5; +		bootargs = "console=ttyS4,115200 earlyprintk"; +	}; +	leds { +		compatible = "gpio-leds"; + +		fault { +			gpios = <&gpio ASPEED_GPIO(A, 2) GPIO_ACTIVE_LOW>; +		}; + +		identify { +			gpios = <&gpio ASPEED_GPIO(A, 3) GPIO_ACTIVE_LOW>; +		}; +	}; +	iio-hwmon { +		compatible = "iio-hwmon"; +		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>; +	}; +}; + +&fmc { +	status = "okay"; +	flash@0 { +		status = "okay"; +		m25p,fast-read; +		#include "openbmc-flash-layout.dtsi" +	}; +}; + + +&mac0 { +	status = "okay"; + +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_rmii1_default>; +	clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>, +		 <&syscon ASPEED_CLK_MAC1RCLK>; +	clock-names = "MACCLK", "RCLK"; +}; + +&uart1 { +	//Host Console +	status = "okay"; +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_txd1_default +		     &pinctrl_rxd1_default>; +}; + +&uart5 { +	//BMC Console +	status = "okay"; +}; + +&adc { +	status = "okay"; + +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_adc0_default +		     &pinctrl_adc1_default +		     &pinctrl_adc2_default +		     &pinctrl_adc3_default +		     &pinctrl_adc4_default>; +}; + +//APML for P0 +&i2c0 { +	status = "okay"; +}; + +//APML for P1 +&i2c1 { +	status = "okay"; +}; + +// Thermal Sensors +&i2c7 { +	status = "okay"; + +	lm75a@48 { +		compatible = "national,lm75a"; +		reg = <0x48>; +	}; + +	lm75a@49 { +		compatible = "national,lm75a"; +		reg = <0x49>; +	}; + +	lm75a@4a { +		compatible = "national,lm75a"; +		reg = <0x4a>; +	}; + +	lm75a@4b { +		compatible = "national,lm75a"; +		reg = <0x4b>; +	}; + +	lm75a@4c { +		compatible = "national,lm75a"; +		reg = <0x4c>; +	}; + +	lm75a@4d { +		compatible = "national,lm75a"; +		reg = <0x4d>; +	}; + +	lm75a@4e { +		compatible = "national,lm75a"; +		reg = <0x4e>; +	}; + +	lm75a@4f { +		compatible = "national,lm75a"; +		reg = <0x4f>; +	}; +}; + +&kcs1 { +	status = "okay"; +	kcs_addr = <0x60>; +}; + +&kcs2 { +	status = "okay"; +	kcs_addr = <0x62>; +}; + +&kcs4 { +	status = "okay"; +	kcs_addr = <0x97DE>; +}; + +&lpc_snoop { +	status = "okay"; +	snoop-ports = <0x80>; +}; + +&lpc_ctrl { +	//Enable lpc clock +	status = "okay"; +}; + +&pwm_tacho { +	status = "okay"; +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_pwm0_default +	&pinctrl_pwm1_default +	&pinctrl_pwm2_default +	&pinctrl_pwm3_default +	&pinctrl_pwm4_default +	&pinctrl_pwm5_default +	&pinctrl_pwm6_default +	&pinctrl_pwm7_default>; + +	fan@0 { +		reg = <0x00>; +		aspeed,fan-tach-ch = /bits/ 8 <0x00>; +	}; + +	fan@1 { +		reg = <0x01>; +		aspeed,fan-tach-ch = /bits/ 8 <0x01>; +	}; + +	fan@2 { +		reg = <0x02>; +		aspeed,fan-tach-ch = /bits/ 8 <0x02>; +	}; + +	fan@3 { +		reg = <0x03>; +		aspeed,fan-tach-ch = /bits/ 8 <0x03>; +	}; + +	fan@4 { +		reg = <0x04>; +		aspeed,fan-tach-ch = /bits/ 8 <0x04>; +	}; + +	fan@5 { +		reg = <0x05>; +		aspeed,fan-tach-ch = /bits/ 8 <0x05>; +	}; + +	fan@6 { +		reg = <0x06>; +		aspeed,fan-tach-ch = /bits/ 8 <0x06>; +	}; + +	fan@7 { +		reg = <0x07>; +		aspeed,fan-tach-ch = /bits/ 8 <0x07>; +	}; +}; + + + 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 { diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts index 54e508530dce..8ac23ff6b09e 100644 --- a/arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts +++ b/arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts @@ -27,6 +27,11 @@  	memory@40000000 {  		reg = <0x40000000 0x20000000>;  	}; + +	ast-adc-hwmon { +		compatible = "iio-hwmon"; +		io-channels = <&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>; +	};  };  &wdt1 { @@ -115,26 +120,47 @@  	status = "okay";  }; -&i2c9 { +&i2c11 {  	status = "okay";  }; -&i2c10 { +&i2c12 {  	status = "okay";  }; -&i2c11 { +&vhub {  	status = "okay";  }; -&i2c12 { +&adc {  	status = "okay";  }; -&i2c13 { +&pwm_tacho {  	status = "okay"; -}; +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_pwm0_default +		     &pinctrl_pwm1_default +		     &pinctrl_pwm6_default +		     &pinctrl_pwm7_default>; + +	fan@0 { +		reg = <0x00>; +		aspeed,fan-tach-ch = /bits/ 8 <0x00 0x01>; +	}; -&vhub { -	status = "okay"; +	fan@1 { +		reg = <0x01>; +		aspeed,fan-tach-ch = /bits/ 8 <0x02 0x03>; +	}; + +	fan@6 { +		reg = <0x06>; +		aspeed,fan-tach-ch = /bits/ 8 <0x04 0x05>; +	}; + +	fan@7 { +		reg = <0x07>; +		aspeed,fan-tach-ch = /bits/ 8 <0x06 0x07>; +	};  }; diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts index bdfe342bf7c5..b94421f6cbd5 100644 --- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts +++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts @@ -12,6 +12,23 @@  	aliases {  		serial4 = &uart5; +		i2c16 = &i2c2mux0; +		i2c17 = &i2c2mux1; +		i2c18 = &i2c2mux2; +		i2c19 = &i2c2mux3; + +		spi10 = &cfam0_spi0; +		spi11 = &cfam0_spi1; +		spi12 = &cfam0_spi2; +		spi13 = &cfam0_spi3; +		spi20 = &cfam1_spi0; +		spi21 = &cfam1_spi1; +		spi22 = &cfam1_spi2; +		spi23 = &cfam1_spi3; +		spi30 = &cfam2_spi0; +		spi31 = &cfam2_spi1; +		spi32 = &cfam2_spi2; +		spi33 = &cfam2_spi3;  	};  	chosen { @@ -68,12 +85,51 @@  		};  	}; +	i2c2mux: i2cmux { +		compatible = "i2c-mux-gpio"; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "okay"; + +		i2c-parent = <&i2c2>; +		mux-gpios = <&gpio0 ASPEED_GPIO(G, 4) GPIO_ACTIVE_HIGH>, +			    <&gpio0 ASPEED_GPIO(G, 5) GPIO_ACTIVE_HIGH>; +		idle-state = <0>; + +		i2c2mux0: i2c@0 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <0>; +		}; + +		i2c2mux1: i2c@1 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <1>; +		}; + +		i2c2mux2: i2c@2 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <2>; +		}; + +		i2c2mux3: i2c@3 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <3>; +		}; +	}; +}; + +&ehci1 { +	status = "okay";  };  &gpio0 {  	gpio-line-names =  	/*A0-A7*/	"","","","","","","","", -	/*B0-B7*/	"","","","","","","","", +	/*B0-B7*/	"","","","","","","checkstop","",  	/*C0-C7*/	"","","","","","","","",  	/*D0-D7*/	"","","","","","","","",  	/*E0-E7*/	"","","","","","","","", @@ -86,7 +142,7 @@  	/*L0-L7*/	"","","","","","","","",  	/*M0-M7*/	"","","","","","","","",  	/*N0-N7*/	"","","","","","","","", -	/*O0-O7*/	"","","","","","","","", +	/*O0-O7*/	"","","","usb-power","","","","",  	/*P0-P7*/	"","","","","","","","",  	/*Q0-Q7*/	"cfam-reset","","","","","","","",  	/*R0-R7*/	"","","","","","","","", @@ -102,6 +158,20 @@  	/*AA0-AA7*/	"","","","","","","","",  	/*AB0-AB7*/	"","","","","","","","",  	/*AC0-AC7*/	"","","","","","","",""; + +	pin_mclr_vpp { +		gpio-hog; +		gpios = <ASPEED_GPIO(P, 7) GPIO_OPEN_DRAIN>; +		output-high; +		line-name = "mclr_vpp"; +	}; + +	i2c3_mux_oe_n { +		gpio-hog; +		gpios = <ASPEED_GPIO(G, 6) GPIO_ACTIVE_LOW>; +		output-high; +		line-name = "I2C3_MUX_OE_N"; +	};  };  &emmc_controller { @@ -118,6 +188,12 @@  	#address-cells = <2>;  	#size-cells = <0>; +	/* +	 * CFAM Reset is supposed to be active low but pass1 hardware is wired +	 * active high. +	 */ +	cfam-reset-gpios = <&gpio0 ASPEED_GPIO(Q, 0) GPIO_ACTIVE_HIGH>; +  	cfam@0,0 {  		reg = <0 0>;  		#address-cells = <1>; @@ -129,6 +205,84 @@  			reg = <0x1000 0x400>;  		}; +		i2c@1800 { +			compatible = "ibm,fsi-i2c-master"; +			reg = <0x1800 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; +		}; + +		fsi2spi@1c00 { +			compatible = "ibm,fsi2spi"; +			reg = <0x1c00 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; + +			cfam0_spi0: spi@0 { +				reg = <0x0>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam0_spi1: spi@20 { +				reg = <0x20>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam0_spi2: spi@40 { +				reg = <0x40>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam0_spi3: spi@60 { +				reg = <0x60>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; +                }; +  		sbefifo@2400 {  			compatible = "ibm,p9-sbefifo";  			reg = <0x2400 0x400>; @@ -136,7 +290,7 @@  			#size-cells = <0>;  			fsi_occ0: occ { -				compatible = "ibm,p9-occ"; +				compatible = "ibm,p10-occ";  			};  		}; @@ -163,6 +317,84 @@  			reg = <0x1000 0x400>;  		}; +		i2c@1800 { +			compatible = "ibm,fsi-i2c-master"; +			reg = <0x1800 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; +		}; + +		fsi2spi@1c00 { +			compatible = "ibm,fsi2spi"; +			reg = <0x1c00 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; + +			cfam1_spi0: spi@0 { +				reg = <0x0>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam1_spi1: spi@20 { +				reg = <0x20>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam1_spi2: spi@40 { +				reg = <0x40>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam1_spi3: spi@60 { +				reg = <0x60>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; +                }; +  		sbefifo@2400 {  			compatible = "ibm,p9-sbefifo";  			reg = <0x2400 0x400>; @@ -170,7 +402,7 @@  			#size-cells = <0>;  			fsi_occ1: occ { -				compatible = "ibm,p9-occ"; +				compatible = "ibm,p10-occ";  			};  		}; @@ -183,6 +415,116 @@  			no-scan-on-init;  		};  	}; + +	cfam@2,0 { +		reg = <2 0>; +		#address-cells = <1>; +		#size-cells = <1>; +		chip-id = <2>; + +		scom@1000 { +			compatible = "ibm,fsi2pib"; +			reg = <0x1000 0x400>; +		}; + +		i2c@1800 { +			compatible = "ibm,fsi-i2c-master"; +			reg = <0x1800 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; +		}; + +		fsi2spi@1c00 { +			compatible = "ibm,fsi2spi"; +			reg = <0x1c00 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; + +			cfam2_spi0: spi@0 { +				reg = <0x0>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam2_spi1: spi@20 { +				reg = <0x20>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam2_spi2: spi@40 { +				reg = <0x40>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; + +			cfam2_spi3: spi@60 { +				reg = <0x60>; +				#address-cells = <1>; +				#size-cells = <0>; + +				eeprom@0 { +					at25,byte-len = <0x80000>; +					at25,addr-mode = <4>; +					at25,page-size = <256>; + +					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <1000000>; +				}; +			}; +		}; + +		sbefifo@2400 { +			compatible = "ibm,p9-sbefifo"; +			reg = <0x2400 0x400>; +			#address-cells = <1>; +			#size-cells = <0>; + +			fsi_occ2: occ { +				compatible = "ibm,p10-occ"; +			}; +		}; + +		fsi_hub2: hub@3400 { +			compatible = "fsi-master-hub"; +			reg = <0x3400 0x400>; +			#address-cells = <2>; +			#size-cells = <0>; + +			no-scan-on-init; +		}; +	};  };  /* Legacy OCC numbering (to get rid of when userspace is fixed) */ @@ -194,6 +536,10 @@  	reg = <2>;  }; +&fsi_occ2 { +	reg = <3>; +}; +  &ibt {  	status = "okay";  }; @@ -205,6 +551,21 @@  		compatible = "atmel,24c64";  		reg = <0x51>;  	}; + +	tca9554@40 { +		compatible = "ti,tca9554"; +		reg = <0x40>; +		gpio-controller; +		#gpio-cells = <2>; + +		smbus0 { +			gpio-hog; +			gpios = <4 GPIO_ACTIVE_HIGH>; +			output-high; +			line-name = "smbus0"; +		}; +	}; +  };  &i2c1 { @@ -519,6 +880,96 @@  		compatible = "atmel,24c64";  		reg = <0x51>;  	}; + +	pca1: pca9552@61 { +		compatible = "nxp,pca9552"; +		reg = <0x61>; +		#address-cells = <1>; +		#size-cells = <0>; +		gpio-controller; +		#gpio-cells = <2>; + +		gpio@0 { +			reg = <0>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@1 { +			reg = <1>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@2 { +			reg = <2>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@3 { +			reg = <3>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@4 { +			reg = <4>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@5 { +			reg = <5>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@6 { +			reg = <6>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@7 { +			reg = <7>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@8 { +			reg = <8>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@9 { +			reg = <9>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@10 { +			reg = <10>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@11 { +			reg = <11>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@12 { +			reg = <12>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@13 { +			reg = <13>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@14 { +			reg = <14>; +			type = <PCA955X_TYPE_GPIO>; +		}; + +		gpio@15 { +			reg = <15>; +			type = <PCA955X_TYPE_GPIO>; +		}; +	}; +  };  &i2c9 { @@ -656,13 +1107,6 @@  		spi-max-frequency = <50000000>;  #include "openbmc-flash-layout-128.dtsi"  	}; - -	flash@1 { -		status = "okay"; -		m25p,fast-read; -		label = "alt-bmc"; -		spi-max-frequency = <50000000>; -	};  };  &spi1 { diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts b/arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts index 60e545b6396f..cb85168f6761 100644 --- a/arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts +++ b/arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts @@ -820,12 +820,50 @@  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <0>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus0 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus0"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus9_mux232: i2c@1 {  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <1>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus1 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus1"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus9_mux233: i2c@2 { @@ -855,12 +893,50 @@  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <0>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus2 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus2"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus9_mux236: i2c@1 {  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <1>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus3 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus3"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus9_mux237: i2c@2 { @@ -909,12 +985,50 @@  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <0>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus4 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus4"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus10_mux240: i2c@1 {  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <1>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus5 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus5"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus10_mux241: i2c@2 { @@ -944,12 +1058,50 @@  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <0>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus6 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus6"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus10_mux244: i2c@1 {  			#address-cells = <1>;  			#size-cells = <0>;  			reg = <1>; + +			tca9554@39 { +				compatible = "ti,tca9554"; +				reg = <0x39>; +				gpio-controller; +				#gpio-cells = <2>; + +				smbus7 { +					gpio-hog; +					gpios = <4 GPIO_ACTIVE_HIGH>; +					output-high; +					line-name = "smbus7"; +				}; +			}; + +			tmp431@4c { +				compatible = "ti,tmp401"; +				reg = <0x4c>; +			};  		};  		bus10_mux245: i2c@2 { diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts index 13c4aa02f4de..5f4ee67ac787 100644 --- a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts +++ b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts @@ -29,76 +29,17 @@  			no-map;  			reg = <0xb8000000 0x4000000>; /* 64M */  		}; -	}; - -	gpio-keys { -		compatible = "gpio-keys"; - -		checkstop { -			label = "checkstop"; -			gpios = <&gpio0 ASPEED_GPIO(E, 3) GPIO_ACTIVE_LOW>; -			linux,code = <ASPEED_GPIO(E, 3)>; -		}; - -		ps0-presence { -			label = "ps0-presence"; -			gpios = <&gpio0 ASPEED_GPIO(H, 3) GPIO_ACTIVE_LOW>; -			linux,code = <ASPEED_GPIO(H, 3)>; -		}; - -		ps1-presence { -			label = "ps1-presence"; -			gpios = <&gpio0 ASPEED_GPIO(E, 5) GPIO_ACTIVE_LOW>; -			linux,code = <ASPEED_GPIO(E, 5)>; -		}; -	}; - -	gpio-keys-polled { -		compatible = "gpio-keys-polled"; -		#address-cells = <1>; -		#size-cells = <0>; -		poll-interval = <1000>; - -		fan0-presence { -			label = "fan0-presence"; -			gpios = <&pca0 4 GPIO_ACTIVE_LOW>; -			linux,code = <4>; -		}; - -		fan1-presence { -			label = "fan1-presence"; -			gpios = <&pca0 5 GPIO_ACTIVE_LOW>; -			linux,code = <5>; -		}; -		fan2-presence { -			label = "fan2-presence"; -			gpios = <&pca0 6 GPIO_ACTIVE_LOW>; -			linux,code = <6>; -		}; - -		fan3-presence { -			label = "fan3-presence"; -			gpios = <&pca0 7 GPIO_ACTIVE_LOW>; -			linux,code = <7>; +		vga_memory: region@bf000000 { +			no-map; +			compatible = "shared-dma-pool"; +			reg = <0xbf000000 0x01000000>;	/* 16M */  		};  	};  	gpio-keys {  		compatible = "gpio-keys"; -		air-water { -			label = "air-water"; -			gpios = <&gpio0 ASPEED_GPIO(Q, 7) GPIO_ACTIVE_LOW>; -			linux,code = <ASPEED_GPIO(Q, 7)>; -		}; - -		checkstop { -			label = "checkstop"; -			gpios = <&gpio0 ASPEED_GPIO(E, 3) GPIO_ACTIVE_LOW>; -			linux,code = <ASPEED_GPIO(E, 3)>; -		}; -  		ps0-presence {  			label = "ps0-presence";  			gpios = <&gpio0 ASPEED_GPIO(H, 3) GPIO_ACTIVE_LOW>; @@ -154,6 +95,10 @@  	};  }; +&ehci1 { +	status = "okay"; +}; +  &gpio0 {  	gpio-line-names =  	/*A0-A7*/	"","","","","","","","", @@ -170,7 +115,7 @@  	/*L0-L7*/	"","","","","","","","",  	/*M0-M7*/	"","","","","","","","",  	/*N0-N7*/	"","","","","","","","", -	/*O0-O7*/	"led-rear-power","led-rear-id","","","","","","", +	/*O0-O7*/	"led-rear-power","led-rear-id","","usb-power","","","","",  	/*P0-P7*/	"","","","","","","","",  	/*Q0-Q7*/	"cfam-reset","","","","","","","fsi-routing",  	/*R0-R7*/	"","","","","","","","", @@ -244,6 +189,7 @@  	fsi-routing-gpios = <&gpio0 ASPEED_GPIO(Q, 7) GPIO_ACTIVE_HIGH>;  	fsi-mux-gpios = <&gpio0 ASPEED_GPIO(B, 0) GPIO_ACTIVE_HIGH>; +	cfam-reset-gpios = <&gpio0 ASPEED_GPIO(Q, 0) GPIO_ACTIVE_LOW>;  	cfam@0,0 {  		reg = <0 0>; @@ -912,3 +858,8 @@  	pinctrl-0 = <&pinctrl_lpc_default>,  		    <&pinctrl_lsirq_default>;  }; + +&xdma { +	status = "okay"; +	memory-region = <&vga_memory>; +}; diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts index a0f99e34ac8e..85d58a63ae90 100644 --- a/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts +++ b/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts @@ -27,6 +27,12 @@  			reg = <0x98000000 0x04000000>; /* 64M */  		}; +		vga_memory: region@9f000000 { +			no-map; +			compatible = "shared-dma-pool"; +			reg = <0x9f000000 0x01000000>; /* 16M */ +		}; +  		gfx_memory: framebuffer {  			size = <0x01000000>;  			alignment = <0x01000000>; @@ -690,4 +696,9 @@  	memory-region = <&video_engine_memory>;  }; +&xdma { +	status = "okay"; +	memory-region = <&vga_memory>; +}; +  #include "ibm-power9-dual.dtsi" diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi index de7fd80b022a..9c91afb2b404 100644 --- a/arch/arm/boot/dts/aspeed-g5.dtsi +++ b/arch/arm/boot/dts/aspeed-g5.dtsi @@ -1,5 +1,6 @@  // SPDX-License-Identifier: GPL-2.0+  #include <dt-bindings/clock/aspeed-clock.h> +#include <dt-bindings/interrupt-controller/aspeed-scu-ic.h>  / {  	model = "Aspeed BMC"; @@ -267,8 +268,8 @@  				reg = <0x1e6e7000 0x100>;  				clocks = <&syscon ASPEED_CLK_GATE_BCLK>;  				resets = <&syscon ASPEED_RESET_XDMA>; -				interrupts-extended = <&vic 6>, <&scu_ic 2>; -				pcie-device = "bmc"; +				interrupts-extended = <&vic 6>, <&scu_ic ASPEED_AST2500_SCU_IC_PCIE_RESET_LO_TO_HI>; +				aspeed,pcie-device = "bmc";  				aspeed,scu = <&syscon>;  				status = "disabled";  			}; diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi index 9d8d8e18bc90..b58220a49cbd 100644 --- a/arch/arm/boot/dts/aspeed-g6.dtsi +++ b/arch/arm/boot/dts/aspeed-g6.dtsi @@ -2,6 +2,7 @@  // Copyright 2019 IBM Corp.  #include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/interrupt-controller/aspeed-scu-ic.h>  #include <dt-bindings/clock/ast2600-clock.h>  / { @@ -346,22 +347,12 @@  				resets = <&syscon ASPEED_RESET_DEV_XDMA>, <&syscon ASPEED_RESET_RC_XDMA>;  				reset-names = "device", "root-complex";  				interrupts-extended = <&gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, -						      <&scu_ic0 2>; -				pcie-device = "bmc"; +						      <&scu_ic0 ASPEED_AST2600_SCU_IC0_PCIE_PERST_LO_TO_HI>; +				aspeed,pcie-device = "bmc";  				aspeed,scu = <&syscon>;  				status = "disabled";  			}; -			video: video@1e700000 { -				compatible = "aspeed,ast2600-video-engine"; -				reg = <0x1e700000 0x1000>; -				clocks = <&syscon ASPEED_CLK_GATE_VCLK>, -					 <&syscon ASPEED_CLK_GATE_ECLK>; -				clock-names = "vclk", "eclk"; -				interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; -				status = "disabled"; -			}; -  			gpio0: gpio@1e780000 {  				#gpio-cells = <2>;  				gpio-controller; | 
