// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2012 ST-Ericsson AB
 */

#include "ste-href.dtsi"

/ {
	model = "ST-Ericsson HREF (v60+) platform with Device Tree";
	compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";

	thermal-zones {
		chassis-thermal {
			/* Poll every 20 seconds */
			polling-delay = <20000>;
			/* Poll every 2nd second when cooling */
			polling-delay-passive = <2000>;

			thermal-sensors = <&therm1>, <&therm2>;

			/* Tripping points made from rough guess about operating conditions */
			trips {
				chassis_alert: chassis-alert {
					/* At 50 degrees take down the CPU frequency */
					temperature = <50000>;
					hysteresis = <3000>;
					type = "active";
				};
				chassis_crit: chassis-crit {
					/* Just shut down at 70 degrees */
					temperature = <70000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};

			/* Push down the operating frequency of the SoC when it gets hot */
			cooling-maps {
				map0 {
					trip = <&chassis_alert>;
					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
					contribution = <100>;
				};
			};
		};
	};

	/*
	 * Thermistors on the board, formally to monitor battery temperatures
	 * but what they measure is the board temperature.
	 */
	therm1: thermistor@0 {
		compatible = "murata,ncp18wb473";
		io-channels = <&gpadc 0x06>; /* AUX1 */
		pullup-uv = <1800000>;
		pullup-ohm = <220000>;
		pulldown-ohm = <0>;
		#thermal-sensor-cells = <0>;
	};

	therm2: thermistor@1 {
		compatible = "murata,ncp18wb473";
		io-channels = <&gpadc 0x07>; /* AUX2 */
		pullup-uv = <1800000>;
		pullup-ohm = <220000>;
		pulldown-ohm = <0>;
		#thermal-sensor-cells = <0>;
	};

	soc {
		/* Name the GPIO muxed rails on the HREF boards */
		gpio@8012e000 {
			/* GPIOs 0 - 31 */
			gpio-line-names =
				     /* GPIO0,1 used for UART0 BT RX/TX */
				     "", "",
				     "UART_WAKE",
				     "BT_WAKE",
				     "",
				     "SDMMC_1V8_3V_SEL",
				     "FLASH_LED_SYNC (FLASH_CTRL_0)",
				     "XENON_READY (FLASH_CTRL_1)",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "",
				     "",
				     "FLASH_LED_EN (FLASH_CTRL_3)",
				     "", "",
				     "", "", "", "", "",
				     /* Used by UART2 (console) */
				     "", "",
				     "MAGNETOMETER_INT";
		};

		gpio@8012e080 {
			/* GPIOs 32 - 63 */
			gpio-line-names =
				     "MAGNETOMETER_DRDY",
				     "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "";
		};

		gpio@8000e000 {
			/* GPIOs 64 - 95 */
			gpio-line-names = "XENON_EN2 (FLASH_CTRL_4)",
				     "DISP1_RST",
				     "DISP2_RST",
				     "TOUCH_INT2",
				     "LCD_VSI0_A",
				     "LCD_VSI1_A",
				     /* GPIO 70-77 used for ETM */
				     "", "", "", "", "", "", "", "",
				     /* GPIO 78-81 used for YCBCR */
				     "", "", "", "",
				     "ACCELEROMETER_INT1_RDY",
				     "ACCELEROMETER_INT2",
				     "TOUCH_INT",
				     "WLAN_ENA",
				     "", "", "", "", "",
				     "FORCE_SENSING_INT",
				     "FORCE_SENSING_RESET",
				     "", "",
				     "SDMMC_CD";
		};

		gpio@8000e080 {
			/* GPIOs 96 - 127 */
			gpio-line-names = "",
				     "FORCE_SENSING_WU",
				     "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "";
		};

		gpio@8000e100 {
			/* GPIOs 128 - 159 */
			gpio-line-names = "", "", "", "", "", "", "", "",
				     "", "", "",
				     "DIPRO_INT", /* GPIO139 */
				     "XSHUTDOWN_SECONDARY_SENSOR",
				     "XSHUTDOWN_PRIMARY_SENSOR",
				     "NFC_RST (NFC_CTRL_",
				     "TOUCH_RST",
				     "NFC_IRQ (NFC_CTRL_1)",
				     "HAL_SW",
				     "TOUCH_RST2",
				     "", "",
				     "VAUDIO_HF_EN", /* GPIO149 */
				     "", "", "", "", "", "", "", "", "", "";
		};

		gpio@8000e180 {
			/* GPIOs 160 - 191 */
			gpio-line-names = "", "", "", "", "", "", "", "",
				     "",
				     "SDMMC_EN",
				     "XENON_CHARGE (FLASH_CONTROL_5)",
				     "GBF_ENA_RESET",
				     "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "";
		};

		gpio@8011e000 {
			/* GPIOs 192 - 223 */
			gpio-line-names = "HDTV_INTN",
				     "", "", "",
				     "HDTV_RSTN",
				     "", "", "",
				     "", /* GPIO200 */
				     "", "", "", "", "", "", "",
				     /* GPIO208-216 used for WGBF_MC1 */
				     "", "", "", "", "", "", "", "", "",
				     "SW_FRONT_PROXIMITY", /* GPIO217 */
				     "KPD_CTRL_INT", /* Keypad controller */
				     "", "", "", "", "";
		};

		gpio@8011e080 {
			/* GPIOs 224 - 255 */
			gpio-line-names = "", "",
				     "HSIT_ACWAKE0",
				     "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "",
				     "", "", "", "", "", "", "", "";
		};

		// External Micro SD slot
		mmc@80126000 {
			cd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>; // 95
		};

		pinctrl {
			/*
			 * Set this up using hogs, as time goes by and as seems fit, these
			 * can be moved over to being controlled by respective device.
			 */
			pinctrl-names = "default";
			pinctrl-0 = <&ipgpio_hrefv60_mode>,
				  <&etm_hrefv60_mode>,
				  <&nahj_hrefv60_mode>,
				  <&nfc_hrefv60_mode>,
				  <&force_hrefv60_mode>,
				  <&dipro_hrefv60_mode>,
				  <&vaudio_hf_hrefv60_mode>,
				  <&gbf_hrefv60_mode>,
				  <&hdtv_hrefv60_mode>,
				  <&gpios_hrefv60_mode>;

			sdi0 {
				sdi0_default_mode: sdi0_default {
					/* SD card detect GPIO pin, extend default state */
					default_hrefv60_cfg1 {
						pins = "GPIO95_E8";
						ste,config = <&gpio_in_pu>;
					};
				};
			};
			ipgpio {
				/*
				 * XENON Flashgun on image processor GPIO (controlled from image
				 * processor firmware), mux in these image processor GPIO lines 0
				 * (XENON_FLASH_ID), 1 (XENON_READY) and there is an assistant
				 * LED on IP GPIO 4 (XENON_EN2) on altfunction C, that need bias
				 * from GPIO21 so pull up 0, 1 and drive 4 and GPIO21 low as output.
				 */
				ipgpio_hrefv60_mode: ipgpio_hrefv60 {
					hrefv60_mux {
						function = "ipgpio";
						groups = "ipgpio0_c_1", "ipgpio1_c_1", "ipgpio4_c_1";
					};
					hrefv60_cfg1 {
						pins = "GPIO6_AF6", "GPIO7_AG5";
						ste,config = <&in_pu>;
					};
					hrefv60_cfg2 {
						pins = "GPIO21_AB3";
						ste,config = <&gpio_out_lo>;
					};
					hrefv60_cfg3 {
						pins = "GPIO64_F3";
						ste,config = <&out_lo>;
					};
				};
			};
			etm {
				/*
				 * Drive D19-D23 for the ETM PTM trace interface low,
				 * (presumably pins are unconnected therefore grounded here,
				 * the "other alt C1" setting enables these pins)
				 */
				etm_hrefv60_mode: etm_hrefv60 {
					hrefv60_cfg1 {
						pins =
						"GPIO70_G5",
						"GPIO71_G4",
						"GPIO72_H4",
						"GPIO73_H3",
						"GPIO74_J3";
						ste,config = <&gpio_out_lo>;
					};
				 };
			};
			nahj {
				nahj_hrefv60_mode: nahj_hrefv60 {
					/* NAHJ CTRL on GPIO76 to low, CTRL_INV on GPIO216 to high */
					hrefv60_cfg1 {
						pins = "GPIO76_J2";
						ste,config = <&gpio_out_lo>;
					};
					hrefv60_cfg2 {
						pins = "GPIO216_AG12";
						ste,config = <&gpio_out_hi>;
					};
				 };
			};
			nfc {
				nfc_hrefv60_mode: nfc_hrefv60 {
					/* NFC ENA and RESET to low, pulldown IRQ line */
					hrefv60_cfg1 {
						pins =
						"GPIO77_H1", /* NFC_ENA */
						"GPIO142_C11"; /* NFC_RESET */
						ste,config = <&gpio_out_lo>;
					};
					hrefv60_cfg2 {
						pins = "GPIO144_B13"; /* NFC_IRQ */
						ste,config = <&gpio_in_pd>;
					};
				 };
			};
			force {
				force_hrefv60_mode: force_hrefv60 {
					hrefv60_cfg1 {
						pins = "GPIO91_B6"; /* FORCE_SENSING_INT */
						ste,config = <&gpio_in_pu>;
					};
					hrefv60_cfg2 {
						pins =
						"GPIO92_D6", /* FORCE_SENSING_RST */
						"GPIO97_D9"; /* FORCE_SENSING_WU */
						ste,config = <&gpio_out_lo>;
					};
				 };
			};
			dipro {
				dipro_hrefv60_mode: dipro_hrefv60 {
					hrefv60_cfg1 {
						pins = "GPIO139_C9"; /* DIPRO_INT */
						ste,config = <&gpio_in_pu>;
					};
				 };
			};
			vaudio_hf {
				vaudio_hf_hrefv60_mode: vaudio_hf_hrefv60 {
					/* Audio Amplifier HF enable GPIO */
					hrefv60_cfg1 {
						pins = "GPIO149_B14"; /* VAUDIO_HF_EN, enable MAX8968 */
						ste,config = <&gpio_out_hi>;
					};
				 };
			};
			gbf {
				gbf_hrefv60_mode: gbf_hrefv60 {
					/*
					 * GBF (GPS, Bluetooth, FM-radio) interface,
					 * pull low to reset state
					 */
					hrefv60_cfg1 {
						pins = "GPIO171_D23"; /* GBF_ENA_RESET */
						ste,config = <&gpio_out_lo>;
					};
				 };
			};
			hdtv {
				hdtv_hrefv60_mode: hdtv_hrefv60 {
					/* MSP : HDTV INTERFACE GPIO line */
					hrefv60_cfg1 {
						pins = "GPIO192_AJ27";
						ste,config = <&gpio_in_pd>;
					};
				 };
			};
			mcde {
				lcd_hrefv60_mode: lcd_hrefv60 {
					/*
					 * Display Interface 1 uses GPIO 65 for RST (reset).
					 * Display Interface 2 uses GPIO 66 for RST (reset).
					 * Drive DISP1 reset high (not reset), driver DISP2 reset low (reset)
					 */
					hrefv60_cfg1 {
						pins = "GPIO65_F1";
						ste,config = <&gpio_out_hi>;
					};
					hrefv60_cfg2 {
						pins = "GPIO66_G3";
						ste,config = <&gpio_out_lo>;
					};
				};
			};
			gpios {
				/* Dangling GPIO pins */
				gpios_hrefv60_mode: gpios_hrefv60 {
					default_cfg1 {
						/* Normally UART1 RXD, now dangling */
						pins = "GPIO4_AH6";
						ste,config = <&in_pu>;
					};
				};
			};
		};
	};
};
