| // 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>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| }; |