| // SPDX-License-Identifier: GPL-2.0-only | 
 | /dts-v1/; | 
 |  | 
 | #include "ste-db8500.dtsi" | 
 | #include "ste-ab8505.dtsi" | 
 | #include "ste-dbx5x0-pinctrl.dtsi" | 
 | #include <dt-bindings/gpio/gpio.h> | 
 | #include <dt-bindings/input/input.h> | 
 | #include <dt-bindings/interrupt-controller/irq.h> | 
 |  | 
 | /* | 
 |  * Note: This device tree cannot be booted directly with the Samsung bootloader. | 
 |  * You need an intermediate, device-tree compatible bootloader | 
 |  * that locks the L2 cache. Otherwise the kernel will crash after decompression. | 
 |  * | 
 |  * There is a port of (mainline) U-Boot, see | 
 |  * https://wiki.postmarketos.org/wiki/ST-Ericsson_NovaThor_U8500#U-Boot | 
 |  */ | 
 | / { | 
 | 	model = "Samsung Galaxy S III mini (GT-I8190)"; | 
 | 	compatible = "samsung,golden", "st-ericsson,u8500"; | 
 |  | 
 | 	chosen { | 
 | 		stdout-path = &serial2; | 
 | 	}; | 
 |  | 
 | 	i2c-gpio-1 { | 
 | 		compatible = "i2c-gpio"; | 
 | 		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; | 
 | 		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&i2c_gpio_1_default>; | 
 |  | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <0>; | 
 |  | 
 | 		magnetometer@c { | 
 | 			compatible = "alps,hscdtd008a"; | 
 | 			reg = <0x0c>; | 
 |  | 
 | 			avdd-supply = <&ab8500_ldo_aux1_reg>; | 
 | 			dvdd-supply = <&ab8500_ldo_aux8_reg>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	soc { | 
 | 		/* External Micro SD card slot */ | 
 | 		sdi0_per1@80126000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			arm,primecell-periphid = <0x10480180>; | 
 | 			max-frequency = <100000000>; | 
 | 			bus-width = <4>; | 
 |  | 
 | 			non-removable; | 
 | 			/* | 
 | 			 * Unfortunately, there is no way to enable the UHS | 
 | 			 * modes due to a limitation of the SD level translator: | 
 | 			 * It will either translate to 2.9V or disconnect the | 
 | 			 * DATA lines, so switching to 1.8V signal voltage fails. | 
 | 			 */ | 
 | 			cap-sd-highspeed; | 
 | 			cap-mmc-highspeed; | 
 | 			st,sig-pin-fbclk; | 
 | 			full-pwr-cycle; | 
 |  | 
 | 			vmmc-supply = <&ab8500_ldo_aux3_reg>; | 
 | 			vqmmc-supply = <&sd_level_translator>; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&mc0_a_2_default>; | 
 | 			pinctrl-1 = <&mc0_a_2_sleep>; | 
 | 		}; | 
 |  | 
 | 		/* WLAN SDIO */ | 
 | 		sdi1_per2@80118000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			arm,primecell-periphid = <0x10480180>; | 
 | 			max-frequency = <50000000>; | 
 | 			bus-width = <4>; | 
 |  | 
 | 			non-removable; | 
 | 			cap-sd-highspeed; | 
 |  | 
 | 			vmmc-supply = <&wl_reg_on>; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&mc1_a_2_default>; | 
 | 			pinctrl-1 = <&mc1_a_2_sleep>; | 
 |  | 
 | 			#address-cells = <1>; | 
 | 			#size-cells = <0>; | 
 |  | 
 | 			wifi@1 { | 
 | 				compatible = "brcm,bcm4329-fmac"; | 
 | 				reg = <1>; | 
 |  | 
 | 				/* GPIO216 (WLAN_HOST_WAKE) */ | 
 | 				interrupt-parent = <&gpio6>; | 
 | 				interrupts = <24 IRQ_TYPE_EDGE_FALLING>; | 
 | 				interrupt-names = "host-wake"; | 
 |  | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&wlan_default>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		/* eMMC */ | 
 | 		sdi2_per3@80005000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			arm,primecell-periphid = <0x10480180>; | 
 | 			max-frequency = <100000000>; | 
 | 			bus-width = <8>; | 
 |  | 
 | 			non-removable; | 
 | 			cap-mmc-highspeed; | 
 | 			mmc-ddr-1_8v; | 
 |  | 
 | 			vmmc-supply = <&vmem_3v3>; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&mc2_a_1_default>; | 
 | 			pinctrl-1 = <&mc2_a_1_sleep>; | 
 | 		}; | 
 |  | 
 | 		/* BT UART */ | 
 | 		uart@80120000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&u0_a_1_default>; | 
 | 			pinctrl-1 = <&u0_a_1_sleep>; | 
 |  | 
 | 			bluetooth { | 
 | 				compatible = "brcm,bcm4330-bt"; | 
 | 				/* GPIO222 (BT_VREG_ON) */ | 
 | 				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; | 
 | 				/* GPIO199 (BT_WAKE) */ | 
 | 				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; | 
 | 				/* GPIO97 (BT_HOST_WAKE) */ | 
 | 				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>; | 
 |  | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&bluetooth_default>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		/* GPF UART */ | 
 | 		uart@80121000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>; | 
 | 			pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>; | 
 | 		}; | 
 |  | 
 | 		/* Debugging console UART */ | 
 | 		uart@80007000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&u2rxtx_c_1_default>; | 
 | 			pinctrl-1 = <&u2rxtx_c_1_sleep>; | 
 | 		}; | 
 |  | 
 | 		i2c@80004000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&i2c0_a_1_default>; | 
 | 			pinctrl-1 = <&i2c0_a_1_sleep>; | 
 |  | 
 | 			proximity@44 { | 
 | 				compatible = "sharp,gp2ap002s00f"; | 
 | 				reg = <0x44>; | 
 |  | 
 | 				/* GPIO146 (PS_INT) */ | 
 | 				interrupt-parent = <&gpio4>; | 
 | 				interrupts = <18 IRQ_TYPE_EDGE_FALLING>; | 
 |  | 
 | 				vdd-supply = <&ab8500_ldo_aux1_reg>; | 
 | 				vio-supply = <&ab8500_ldo_aux8_reg>; | 
 |  | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&proximity_default>; | 
 |  | 
 | 				sharp,proximity-far-hysteresis = <0x40>; | 
 | 				sharp,proximity-close-hysteresis = <0x0f>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		i2c@80128000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&i2c2_b_2_default>; | 
 | 			pinctrl-1 = <&i2c2_b_2_sleep>; | 
 |  | 
 | 			imu@68 { | 
 | 				compatible = "invensense,mpu6050"; | 
 | 				reg = <0x68>; | 
 |  | 
 | 				/* GPIO206 (ACC_INT) */ | 
 | 				interrupt-parent = <&gpio6>; | 
 | 				interrupts = <14 IRQ_TYPE_EDGE_RISING>; | 
 |  | 
 | 				mount-matrix = "0", "1", "0", | 
 | 					      "-1", "0", "0", | 
 | 					       "0", "0", "1"; | 
 |  | 
 | 				vdd-supply = <&ab8500_ldo_aux1_reg>; | 
 | 				vddio-supply = <&ab8500_ldo_aux8_reg>; | 
 |  | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&imu_default>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		i2c@80110000 { | 
 | 			status = "okay"; | 
 |  | 
 | 			pinctrl-names = "default", "sleep"; | 
 | 			pinctrl-0 = <&i2c3_c_2_default>; | 
 | 			pinctrl-1 = <&i2c3_c_2_sleep>; | 
 |  | 
 | 			touchscreen@4a { | 
 | 				compatible = "atmel,maxtouch"; | 
 | 				reg = <0x4a>; | 
 |  | 
 | 				/* GPIO218 (TSP_INT_1V8) */ | 
 | 				interrupt-parent = <&gpio6>; | 
 | 				interrupts = <26 IRQ_TYPE_EDGE_FALLING>; | 
 |  | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&tsp_default>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		prcmu@80157000 { | 
 | 			ab8505 { | 
 | 				ab8500_usb { | 
 | 					pinctrl-names = "default", "sleep"; | 
 | 					pinctrl-0 = <&usb_a_1_default>; | 
 | 					pinctrl-1 = <&usb_a_1_sleep>; | 
 | 				}; | 
 |  | 
 | 				ab8505-regulators { | 
 | 					ab8500_ldo_aux1 { | 
 | 						regulator-name = "sensor_3v"; | 
 | 						regulator-min-microvolt = <3000000>; | 
 | 						regulator-max-microvolt = <3000000>; | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux2 { | 
 | 						regulator-name = "vreg_tsp_a3v3"; | 
 | 						regulator-min-microvolt = <3300000>; | 
 | 						regulator-max-microvolt = <3300000>; | 
 | 						regulator-always-on; /* FIXME */ | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux3 { | 
 | 						regulator-name = "vdd_tf_2v91"; | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux4 { | 
 | 						regulator-name = "key_led_3.3v"; | 
 | 						regulator-min-microvolt = <3300000>; | 
 | 						regulator-max-microvolt = <3300000>; | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux5 { | 
 | 						regulator-name = "vreg_tsp_1v8"; | 
 | 						regulator-min-microvolt = <1800000>; | 
 | 						regulator-max-microvolt = <1800000>; | 
 | 						regulator-always-on; /* FIXME */ | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux6 { | 
 | 						regulator-name = "touch_key_2.2v"; | 
 | 						regulator-min-microvolt = <2200000>; | 
 | 						regulator-max-microvolt = <2200000>; | 
 | 					}; | 
 |  | 
 | 					ab8500_ldo_aux8 { | 
 | 						regulator-name = "sensor_1v8"; | 
 | 					}; | 
 | 				}; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	gpio-keys { | 
 | 		compatible = "gpio-keys"; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&gpio_keys_default>; | 
 |  | 
 | 		label = "GPIO Buttons"; | 
 |  | 
 | 		volume-up { | 
 | 			label = "Volume Up"; | 
 | 			/* GPIO67 (VOL_UP) */ | 
 | 			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>; | 
 | 			linux,code = <KEY_VOLUMEUP>; | 
 | 		}; | 
 |  | 
 | 		volume-down { | 
 | 			label = "Volume Down"; | 
 | 			/* GPIO92 (VOL_DOWN) */ | 
 | 			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; | 
 | 			linux,code = <KEY_VOLUMEDOWN>; | 
 | 		}; | 
 |  | 
 | 		home { | 
 | 			label = "Home"; | 
 | 			/* GPIO91 (HOME_KEY) */ | 
 | 			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>; | 
 | 			linux,code = <KEY_HOMEPAGE>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	vibrator { | 
 | 		compatible = "gpio-vibrator"; | 
 | 		/* GPIO195 (MOT_EN) */ | 
 | 		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&vibrator_default>; | 
 | 	}; | 
 |  | 
 | 	/* External LDO for eMMC */ | 
 | 	vmem_3v3: regulator-vmem { | 
 | 		compatible = "regulator-fixed"; | 
 |  | 
 | 		regulator-name = "vmem_3v3"; | 
 | 		regulator-min-microvolt = <3300000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 | 		regulator-boot-on; | 
 |  | 
 | 		startup-delay-us = <200>; | 
 |  | 
 | 		/* GPIO223 (MEM_LDO_EN) */ | 
 | 		gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>; | 
 | 		enable-active-high; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&mem_ldo_default>; | 
 | 	}; | 
 |  | 
 | 	/* TI TXS0206-29 level translator for 2.9 V */ | 
 | 	sd_level_translator: regulator-sd-level-translator { | 
 | 		compatible = "regulator-fixed"; | 
 |  | 
 | 		regulator-name = "sd-level-translator"; | 
 | 		regulator-min-microvolt = <2900000>; | 
 | 		regulator-max-microvolt = <2900000>; | 
 |  | 
 | 		startup-delay-us = <200>; | 
 |  | 
 | 		/* GPIO87 (TXS0206-29_EN) */ | 
 | 		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>; | 
 | 		enable-active-high; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&sd_level_translator_default>; | 
 | 	}; | 
 |  | 
 | 	/* | 
 | 	 * WL_REG_ON takes WLAN out of reset and enables the internal regulators. | 
 | 	 * The voltage specified here is only used to determine the OCR mask, | 
 | 	 * the BCM chip is actually connected directly to VBAT. | 
 | 	 */ | 
 | 	wl_reg_on: regulator-wl-reg-on { | 
 | 		compatible = "regulator-fixed"; | 
 |  | 
 | 		regulator-name = "wl-reg-on"; | 
 | 		regulator-min-microvolt = <3000000>; | 
 | 		regulator-max-microvolt = <3000000>; | 
 |  | 
 | 		startup-delay-us = <100000>; | 
 |  | 
 | 		/* GPIO215 (WLAN_EN) */ | 
 | 		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>; | 
 | 		enable-active-high; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&wlan_en_default>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &pinctrl { | 
 | 	gpio-keys { | 
 | 		gpio_keys_default: gpio_keys_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO67",	/* VOL_UP */ | 
 | 				       "GPIO91",	/* HOME_KEY */ | 
 | 				       "GPIO92";	/* VOL_DOWN */ | 
 | 				ste,config = <&gpio_in_pu>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	i2c-gpio-1 { | 
 | 		i2c_gpio_1_default: i2c_gpio_1 { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO151",	/* COMP_SCL */ | 
 | 				       "GPIO152";	/* COMP_SDA */ | 
 | 				ste,config = <&gpio_in_nopull>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	sdi0 { | 
 | 		sd_level_translator_default: sd_level_translator_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO87_B3";	/* TXS0206-29_EN */ | 
 | 				ste,config = <&gpio_out_lo>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	sdi2 { | 
 | 		mem_ldo_default: mem_ldo_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO223_AH9";	/* MEM_LDO_EN */ | 
 | 				ste,config = <&gpio_out_hi>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	proximity { | 
 | 		proximity_default: proximity_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO146_D13";	/* PS_INT */ | 
 | 				ste,config = <&gpio_in_nopull>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	imu { | 
 | 		imu_default: imu_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO206_AG24";	/* ACC_INT */ | 
 | 				ste,config = <&gpio_in_pd>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	tsp { | 
 | 		tsp_default: tsp_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO218_AH11";	/* TSP_INT_1V8 */ | 
 | 				ste,config = <&gpio_in_nopull>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	wlan { | 
 | 		wlan_default: wlan_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO216_AG12";	/* WLAN_HOST_WAKE */ | 
 | 				ste,config = <&gpio_in_pd>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		wlan_en_default: wlan_en_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO215_AH13";	/* WLAN_EN */ | 
 | 				ste,config = <&gpio_out_lo>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	bluetooth { | 
 | 		bluetooth_default: bluetooth_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO199_AH23",	/* BT_WAKE */ | 
 | 				       "GPIO222_AJ9";	/* BT_VREG_ON */ | 
 | 				ste,config = <&gpio_out_lo>; | 
 | 			}; | 
 | 			golden_cfg2 { | 
 | 				pins = "GPIO97_D9";	/* BT_HOST_WAKE */ | 
 | 				ste,config = <&gpio_in_nopull>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	vibrator { | 
 | 		vibrator_default: vibrator_default { | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO195_AG28";	/* MOT_EN */ | 
 | 				ste,config = <&gpio_out_lo>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &ab8505_gpio { | 
 | 	/* Hog a few default settings */ | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&gpio_default>; | 
 |  | 
 | 	gpio { | 
 | 		gpio_default: gpio_default { | 
 | 			golden_mux { | 
 | 				/* Change unused pins to GPIO mode */ | 
 | 				function = "gpio"; | 
 | 				groups = "gpio3_a_1",	/* default: SysClkReq4 */ | 
 | 					 "gpio14_a_1";	/* default: PWMOut1 */ | 
 | 			}; | 
 | 			golden_cfg1 { | 
 | 				pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4"; | 
 | 				bias-disable; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; |