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

#include "ste-href-ab8500.dtsi"
#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>;
					};
				};
			};
		};
	};
};
