ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/marvell/linux/arch/arm/boot/dts/asr1806-p301-pose.dts b/marvell/linux/arch/arm/boot/dts/asr1806-p301-pose.dts
new file mode 100644
index 0000000..14972aa
--- /dev/null
+++ b/marvell/linux/arch/arm/boot/dts/asr1806-p301-pose.dts
@@ -0,0 +1,1018 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2023 ASR Microelectronics Co., Ltd.
+ */
+
+/dts-v1/;
+#include "asr1806.dtsi"
+
+/* #define CONFIG_FB_ASR_MIPI_CMD 1 */
+
+/ {
+ model = "ASR 1806(FALCON-T) Board EVB";
+ compatible = "asr,1803-evb", "asr,1803";
+
+ chosen {
+ bootargs = "root=/dev/mtdblock5 rootfstype=squashfs init=/etc/preinit noinitrd console=ttyS0,115200 mem=128M";
+ };
+
+ memory {
+ reg = <0x00000000 0x10000000>;
+ };
+
+ firmware {
+ optee {
+ compatible = "linaro,optee-tz";
+ method = "smc";
+ };
+ };
+
+ soc {
+ axi@d4200000 { /* AXI */
+ lcd: lcd@d420a000 {
+ compatible = "asr,fb";
+ pinctrl-names = "default";
+ pinctrl-0 = <&lcd_pmx_func>;
+ interrupts = <51>;
+ lpm-qos = <PM_QOS_CPUIDLE_BLOCK_AXI>;
+ reg = <0xd420a000 0x800>;
+ dsi_base = <0xd420a800>;
+ #ifdef CONFIG_FB_ASR_MIPI_CMD
+ panel_type = <1>; /* cmd */
+ #else
+ panel_type = <0>; /* video */
+ #endif
+
+ gpio_ctrl = <1>;
+
+ #ifdef CONFIG_FB_ASR_MIPI_CMD
+ power_gpio = <&gpio 127 0>;
+ #endif
+ reset_gpio = <&gpio 31 0>;
+ vsync_gpio = <&gpio 32 0>;
+ //avdd-supply = <&ldo1>;
+ status = "okay";
+ };
+
+ backlight: pwm_bl {
+ compatible = "pwm-backlight";
+ pwms = <&pwm2 50000>;
+ brightness-levels = <0 4 8 16 32 64 128 255>;
+ default-brightness-level = <6>;
+ #ifdef CONFIG_FB_ASR_MIPI_CMD
+ status = "disabled";
+ #else
+ status = "okay";
+ #endif
+ };
+
+ usbphy: usbphy@d4207000 {
+ status = "okay";
+ };
+#ifdef CONFIG_USB_DWC2_ASR_OTG /* otg mode */
+ usb: usb@c0000000 {
+ dr_mode = "otg";
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&usb_id_pinmux &usb_host_pinmux>;
+ pinctrl-1 = <&usb_id_pinmux_slp &usb_host_pinmux>;
+ usbid_gpio = <99>;
+ edge_detect_gpio = <99>;
+ otg,use-gpio-vbus;
+ gpio-num = <122>;
+ status = "okay";
+ };
+#else
+ usb: usb@c0000000 {
+ status = "okay";
+ };
+#endif
+ eth0: asr-eth@0xd4281800 {
+ compatible = "asr,asr-eth";
+ pinctrl-names = "default", "rgmii-pins";
+ pinctrl-0 = <&emac_pmx_func0 &emac_pmx_func2 &emac_pmx_func3>;
+ pinctrl-1 = <&emac_pmx_func0 &emac_pmx_func1 &emac_pmx_func2 &emac_pmx_func3>;
+ reg = <0xd4281800 0x200>;
+ interrupts = <10 11>;
+ lpm-qos = <PM_QOS_CPUIDLE_BLOCK_AXI>;
+ clocks = <&soc_clocks ASR1803_CLK_EMAC
+ &soc_clocks ASR1803_CLK_EMAC_PTP>;
+ clock-names = "emac-clk", "ptp-clk";
+ ptp-support;
+ ptp-clk-rate = <100000000>;
+ status = "okay";
+
+ reset-gpio = <&gpio 20 0>;
+ reset-active-low;
+ reset-delays-us = <0 100000 100000>;
+
+ ldo-gpio = <&gpio 118 0>;
+ ldo-active-low;
+ ldo-delays-us = <0 100000 100000>;
+
+ clk-tuning-enable;
+ /* clk-config(32bit)
+ *
+ * clk_sel(clk-config[23:16])
+ * RGMII:
+ * tx | clk_sel: 0 - from external RX clock
+ * 1 - from inverted external RX clock
+ * rx | clk_sel: 0 - from external RX clock
+ * 1 - from inverted external RX clock
+ *
+ * RMII:
+ * tx | clk_sel: 0 - RMII clock
+ * 1 - Inverted RMII clock
+ * rx | clk_sel: 0 - RMII clock
+ * 1 - Inverted RMII clock
+ *
+ */
+ tx-clk-config = <0x0>;
+ rx-clk-config = <0x0>;
+#if 0
+ /* enable 1000M phy*/
+ 3v3-enable = <0>; /* IO voltage, 1 - 3.3v, 0 - 1.8v */
+ phy-handle = <&phy0>;
+#else
+ /* enable 100M phy*/
+ 3v3-enable = <1>; /* IO voltage, 1 - 3.3v, 0 - 1.8v */
+ phy-handle = <&phy3>;
+#endif
+ /* enable fix link for ethernet switch */
+ /*
+ fixed-link {
+ speed = <100>;
+ full-duplex;
+ phy-mode = "rmii";
+ };
+ */
+
+ mdio: mdio-bus {
+ #address-cells = <0x1>;
+ #size-cells = <0x0>;
+ /* YT8521 10M/100M/100OM 1.8V RGMII PHY */
+ phy0: phy@0 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ device_type = "ethernet-phy";
+ reg = <0x0>; /* set phy address*/
+ phy-mode = "rgmii";
+ tx_rx_delay = <0xb 0x0>; /* 150ps per step*/
+ };
+
+ /* YT8512B 10M/100M 3.3V RMII PHY */
+ phy3: phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ device_type = "ethernet-phy";
+ reg = <0x3>; /* set phy address*/
+ phy-mode = "rmii";
+ driver_strength = <0x3>;
+ };
+
+ /* IP175D 10M/100M 3.3V RMII SWITCH */
+ phy1: phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ device_type = "ethernet-phy";
+ reg = <0x1>; /* set phy address*/
+ phy-mode = "rmii";
+ };
+ };
+ };
+ qspi: spi@0xd420b000 {
+ asr,qspi-freq = <78000000>;
+ status = "okay";
+ };
+ /* SD card */
+ sdh0: sdh@d4280000 {
+ pinctrl-names = "default", "slow", "fast";
+ pinctrl-0 = <&sdh0_pmx_func1 &sdh0_pmx_func2 &sdh0_pmx_func3>;
+ pinctrl-1 = <&sdh0_pmx_func1_slow &sdh0_pmx_func2_slow &sdh0_pmx_func3>;
+ pinctrl-2 = <&sdh0_pmx_func1_fast &sdh0_pmx_func2_fast &sdh0_pmx_func3>;
+ /*
+ * Genernal use, juse set vmmc-supply and vqmmc-supply
+ * vmmc-supply = <&supply1>
+ * vqmmc-supply = <&supply2>
+ *
+ * For compatibility, to select one from two supply source
+ * vmmc-supply = <&supply1 &supply1_backup>;
+ * vqmmc-supply = <&supply2 &supply2_backup>;
+ * vmmc2-supply = <&supply1_backup &supply1>;
+ * vqmmc2-supply = <&supply2_backup &supply2>;
+ */
+ vmmc-supply = <&vcc_sdh1>;
+ vqmmc-supply = <&pm802ldo6>;
+#ifndef CONFIG_ASR_DSDS
+ vmmc2-supply = <&vcc_sdh1 &pm802ldo4>;
+ vqmmc2-supply = <&pm803ldo8 &pm802ldo6>;
+#endif
+ bus-width = <4>;
+ no-mmc;
+ no-sdio;
+ non-removable;
+ broken-cd;
+ wp-inverted;
+ asr,sdh-pm-runtime-en;
+ asr,sdh-host-caps-disable = <(MMC_CAP_UHS_SDR104)>;
+ asr,sdh-quirks = <(
+ SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_BROKEN_TIMEOUT_VAL
+ )>;
+ asr,sdh-quirks2 = <(
+ SDHCI_QUIRK2_SET_AIB_MMC |
+ SDHCI_QUIRK2_PRESET_VALUE_BROKEN
+ )>;
+ /* prop "sdh-dtr-data":
+ <timing preset_rate src_rate tx_delay rx_delay tx_dline_reg rx_dline_reg> */
+ asr,sdh-dtr-data =
+ <PXA_MMC_TIMING_LEGACY PXA_SDH_DTR_26M PXA_SDH_DTR_104M 0 0 0 0>,
+ <PXA_MMC_TIMING_SD_HS PXA_SDH_DTR_52M PXA_SDH_DTR_104M 0 0 0 0>,
+ <PXA_MMC_TIMING_UHS_DDR50 PXA_SDH_DTR_52M PXA_SDH_DTR_104M 0 0 0 3>,
+ <PXA_MMC_TIMING_UHS_SDR50 PXA_SDH_DTR_104M PXA_SDH_DTR_208M 0 0 0 0>,
+ <PXA_MMC_TIMING_UHS_SDR104 PXA_SDH_DTR_208M PXA_SDH_DTR_208M 0 0 0 0>,
+ <PXA_MMC_TIMING_MAX PXA_SDH_DTR_PS_NONE PXA_SDH_DTR_104M 0 0 0 0>;
+ status = "okay";
+ };
+
+ /* SDIO */
+ sdh1: sdh@d4280800 {
+ pinctrl-names = "default", "fast", "sleep";
+ pinctrl-0 = <&sdh1_pmx_func1 &sdh1_pmx_func2 &sdh1_pmx_func3>;
+ pinctrl-1 = <&sdh1_pmx_func1_fast &sdh1_pmx_func2_fast &sdh1_pmx_func3>;
+ pinctrl-2 = <&sdh1_pmx_edge_wakeup>;
+ bus-width = <4>;
+ no-mmc;
+ no-sd;
+ non-removable;
+ keep-power-in-suspend;
+ enable-sdio-wakeup;
+ /* clk-scaling-config:
+ <up_threshold down_threshold polling_interval> */
+ clk-scaling-config = <25 12 200>;
+ min-ddr-qos = <156000 312000 400000>;
+ asr,sdh-pm-runtime-en;
+ asr,sdh-quirks = <(
+ SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_BROKEN_TIMEOUT_VAL
+ )>;
+ asr,sdh-quirks2 = <(
+ SDHCI_QUIRK2_NO_TIMER_RETUNING |
+ SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
+ SDHCI_QUIRK2_BASE_CLOCK_ALWAYS_ON
+ )>;
+ asr,sdh-pm-caps = <(MMC_PM_KEEP_POWER)>;
+ asr,sdh-host-caps2 = <(
+ MMC_CAP2_ONLY_1_8V |
+ MMC_CAP2_DISABLE_PROBE_CDSCAN |
+ MMC_CAP2_CLK_SCALE |
+ MMC_CAP2_BUS_CLK_NO_SCALE
+ )>;
+ /* prop "sdh-dtr-data":
+ <timing preset_rate src_rate tx_delay rx_delay tx_dline_reg rx_dline_reg> */
+ asr,sdh-dtr-data =
+ <PXA_MMC_TIMING_LEGACY PXA_SDH_DTR_26M PXA_SDH_DTR_104M 0 0 0 0>,
+ <PXA_MMC_TIMING_SD_HS PXA_SDH_DTR_45M PXA_SDH_DTR_89M 0 0 0 0>,
+ <PXA_MMC_TIMING_UHS_DDR50 PXA_SDH_DTR_52M PXA_SDH_DTR_104M 0 0 0 3>,
+ <PXA_MMC_TIMING_UHS_SDR50 PXA_SDH_DTR_83M PXA_SDH_DTR_83M 0 0 0 3>,
+ <PXA_MMC_TIMING_UHS_SDR104 PXA_SDH_DTR_208M PXA_SDH_DTR_208M 0 0 0 0>,
+ <PXA_MMC_TIMING_MAX PXA_SDH_DTR_PS_NONE PXA_SDH_DTR_89M 0 0 0 0>;
+ status = "okay";
+ };
+
+ pcie0: pcie@0xd4288000{
+ reset-gpios = <&gpio 42 0 >;
+ status = "okay";
+ };
+ pciephy0: pcie-phy@d4206000 {
+ status = "okay";
+ };
+ camera: camera@d420d000 {
+ compatible = "asr,camera";
+ reg = <0xd420d000 0x1000>, /* IPE registers */
+ <0xd420f000 0x1000>; /* ISP registers */
+ reg-names = "ipe", "isp";
+ interrupts = <64>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&isp_spi_data>;
+ lpm-qos = <PM_QOS_CPUIDLE_BLOCK_AXI>;
+ clock-frequency = <24>;
+ clocks = <&soc_clocks ASR1803_CLK_CAMERA>;
+ clock-names = "cam_clk";
+ status = "okay";
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ spi_in_cam: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&gc0312_out>;
+ };
+ };
+ };
+ };
+
+ apb@d4000000 {
+ pwm2: pwm@d401a800 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pwm2>;
+ #ifdef CONFIG_FB_ASR_MIPI_CMD
+ status = "disabled";
+ #else
+ status = "okay";
+ #endif
+ };
+ mfpr: mfpr@d401e000 {
+ status = "okay";
+ };
+ timer0: timer@d4014000 {
+ status = "okay";
+ };
+ uart1: uart@d4017000 { /* nezhas evb use ap uart */
+ pinctrl-names = "default","sleep";
+ pinctrl-0 = <&uart1_pmx_func1 &uart1_pmx_func2>;
+ pinctrl-1 = <&uart1_pmx_func1_sleep &uart1_pmx_func2>;
+ edge-wakeup-gpio = <&gpio 29 0>; /* GPIO29: AP UART rx pin */
+ status = "okay";
+ };
+ uart2: uart@d4036000 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&gps_pmx_uart_rxd &gps_pmx_uart_txd>;
+ status = "okay";
+ };
+ rtc: rtc@d4010000 {
+ status = "okay";
+ };
+ pmx: pinmux@d401e000 {
+ /* pin base = base_addr / 4, nr pins & gpio function */
+ pinctrl-single,gpio-range = <
+ /*
+ * GPIO number is hardcoded for range at here.
+ * In gpio chip, GPIO number is not hardcoded for range.
+ * Since one gpio pin may be routed to multiple pins,
+ * define these gpio range in pxa910-dkb.dts not pxa910.dtsi.
+ */
+ /*&range 80 4 0 */ /* GPIO25 ~ GPIO28 */
+ &range 55 32 0 /* GPIO0 ~ GPIO31 */
+ &range 87 32 0 /* GPIO32 ~ GPIO63 */
+ &range 119 32 0 /* GPIO64 ~ GPIO95 */
+ &range 151 32 0 /* GPIO96 ~ GPIO127 */
+ >;
+
+ lcd_pmx_func: lcd_pmx_func {
+ pinctrl-single,pins = <
+ /* mipi */
+ GPIO31 AF0 /* reset */
+ GPIO32 AF0 /* vsync */
+ #ifdef CONFIG_FB_ASR_MIPI_CMD
+ VCXO_OUT AF1
+ #endif
+ >;
+ /* NOTE: need to PULL_UP here */
+ DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_NONE;
+ };
+
+ pinctrl_pwm2: pmw2grp {
+ pinctrl-single,pins = <
+ VCXO_OUT AF2 /* pwm2 */
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_NONE;
+ };
+
+ tp_pinmux: tp_pinmux {
+ pinctrl-single,pins = <
+ GPIO54 AF0 /* TP_INT */
+ GPIO08 AF0 /* TP_RST */
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_NONE;
+ };
+
+ ssp0_pmx_func: ssp0_pmx_func {
+ pinctrl-single,pins = <
+ GPIO36 AF1 /* TXD */
+ GPIO35 AF1 /* RXD */
+ GPIO34 AF1 /* FRM */
+ /*GPIO34 AF0*/ /* FRM *//* DXS101 Use the config of Cs-gpios */
+ GPIO33 AF1 /* SCLK */
+ >;
+ DS_MEDIUM;PULL_NONE;EDGE_NONE;SL_NORMAL;
+ };
+
+ uart1_pmx_func1: uart1_pmx_func1 {
+ pinctrl-single,pins = <
+ GPIO29 AF1
+ >;
+ MFP_DEFAULT;
+ };
+ uart1_pmx_func2: uart1_pmx_func2 {
+ pinctrl-single,pins = <
+ GPIO30 AF1
+ >;
+ MFP_DEFAULT;
+ };
+ uart1_pmx_func1_sleep: uart1_pmx_func1_sleep {
+ pinctrl-single,pins = <
+ GPIO29 AF1
+ >;
+ DS_MEDIUM;PULL_NONE;EDGE_BOTH;SL_NORMAL;
+ };
+ twsi0_pmx_func: twsi0_pmx_func {
+ pinctrl-single,pins = <
+ GPIO49 AF1
+ GPIO50 AF1
+ >;
+ MFP_LPM_FLOAT;
+ };
+ twsi0_pmx_gpio: twsi0_pmx_gpio {
+ pinctrl-single,pins = <
+ GPIO49 AF0
+ GPIO50 AF0
+ >;
+ MFP_LPM_FLOAT;
+ };
+ twsi1_pmx_func: twsi1_pmx_func {
+ pinctrl-single,pins = <
+ GPIO10 AF1
+ GPIO11 AF1
+ >;
+ MFP_LPM_FLOAT;
+ };
+ twsi1_pmx_gpio: twsi1_pmx_gpio {
+ pinctrl-single,pins = <
+ GPIO10 AF0
+ GPIO11 AF0
+ >;
+ MFP_LPM_FLOAT;
+ };
+ /* no pull, no LPM */
+ dvc_pmx_func: dvc_pmx_func {
+ /* hw-dvc */
+ pinctrl-single,pins = <
+ TDS_DIO0 AF0
+ TDS_DIO1 AF0
+ >;
+ DS_MEDIUM;PULL_FLOAT;EDGE_NONE;SL_NORMAL;
+ };
+ leds_pmx_func: leds_pmx_func {
+ pinctrl-single,pins = <
+ DF_IO10 AF1
+ DF_IO11 AF1
+ DF_IO12 AF1
+ >;
+ DS_MEDIUM;PULL_FLOAT;EDGE_NONE;SL_NORMAL;
+ };
+
+ gps_pmx_onoff: gps_pmx_onoff {
+ pinctrl-single,pins = <
+ TDS_TXREV AF1
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_NORMAL;
+ };
+ gps_pmx_reset: gps_pmx_reset {
+ pinctrl-single,pins = <
+ TDS_RXON AF1
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_NORMAL;
+ };
+ gps_pmx_uart_rxd: gps_pmx_uart_rxd {
+ /* gps dedicated uart */
+ pinctrl-single,pins = <
+ GPIO51 AF1
+ /* conflict with mipi */
+ /* GPIO32 AF1 */
+ >;
+ MFP_DEFAULT;
+ };
+ gps_pmx_uart_txd: gps_pmx_uart_txd {
+ /* gps dedicated uart */
+ pinctrl-single,pins = <
+ GPIO52 AF1
+ /* conflict with mipi */
+ /* GPIO31 AF1 */
+ >;
+ MFP_DEFAULT;
+ };
+
+ sd_ldo_en: sd_ldo_en {
+ pinctrl-single,pins = <
+ GPIO45 AF0
+ >;
+ MFP_PULL_DOWN;
+ };
+ sdh0_pmx_func1: sdh0_pmx_func1 {
+ pinctrl-single,pins = <
+ MMC1_DAT3 AF0
+ MMC1_DAT2 AF0
+ MMC1_DAT1 AF0
+ MMC1_DAT0 AF0
+ MMC1_CMD AF0
+ >;
+ DS_MEDIUM;PULL_NONE;EDGE_NONE;SL_NORMAL;
+ };
+ sdh0_pmx_func2: sdh0_pmx_func2 {
+ pinctrl-single,pins = <
+ MMC1_CLK AF0
+ >;
+ DS_MEDIUM;PULL_NONE;EDGE_NONE;
+ };
+ sdh0_pmx_func3: sdh0_pmx_func3 {
+ pinctrl-single,pins = <
+ MMC1_CD AF0
+ >;
+ MFP_PULL_UP;
+ };
+ sdh0_pmx_func1_slow: sdh0_pmx_func1_slow {
+ pinctrl-single,pins = <
+ MMC1_DAT3 AF0
+ MMC1_DAT2 AF0
+ MMC1_DAT1 AF0
+ MMC1_DAT0 AF0
+ MMC1_CMD AF0
+ >;
+ DS_FAST0;PULL_NONE;EDGE_NONE;SL_NORMAL;
+ };
+ sdh0_pmx_func2_slow: sdh0_pmx_func2_slow {
+ pinctrl-single,pins = <
+ MMC1_CLK AF0
+ >;
+ DS_FAST0;PULL_NONE;EDGE_NONE;
+ };
+ sdh0_pmx_func1_fast: sdh0_pmx_func1_fast {
+ pinctrl-single,pins = <
+ MMC1_DAT3 AF0
+ MMC1_DAT2 AF0
+ MMC1_DAT1 AF0
+ MMC1_DAT0 AF0
+ MMC1_CMD AF0
+ >;
+ DS_FAST1;PULL_NONE;EDGE_NONE;SL_NORMAL;
+ };
+ sdh0_pmx_func2_fast: sdh0_pmx_func2_fast {
+ pinctrl-single,pins = <
+ MMC1_CLK AF0
+ >;
+ DS_FAST1;PULL_NONE;EDGE_NONE;
+ };
+
+ sdh1_pmx_func1_fast: sdh1_pmx_func1_fast {
+ pinctrl-single,pins = <
+ TDS_DIO13 AF0 /* WLAN_DAT3 */
+ TDS_DIO14 AF0 /* WLAN_DAT2 */
+ TDS_DIO15 AF0 /* WLAN_DAT1 */
+ TDS_DIO16 AF0 /* WLAN_DAT0 */
+ TDS_DIO17 AF0 /* WLAN_CMD */
+ >;
+ DS_FAST0;PULL_NONE;EDGE_NONE;SL_NORMAL;
+ };
+ sdh1_pmx_func2_fast: sdh1_pmx_func2_fast {
+ pinctrl-single,pins = <
+ TDS_DIO18 AF0 /* WLAN_CLK */
+ >;
+ DS_FAST0;PULL_DOWN;EDGE_NONE;SL_NORMAL;
+ };
+ sdh1_pmx_func1: sdh1_pmx_func1 {
+ pinctrl-single,pins = <
+ TDS_DIO13 AF0 /* WLAN_DAT3 */
+ TDS_DIO14 AF0 /* WLAN_DAT2 */
+ TDS_DIO15 AF0 /* WLAN_DAT1 */
+ TDS_DIO16 AF0 /* WLAN_DAT0 */
+ TDS_DIO17 AF0 /* WLAN_CMD */
+ >;
+ DS_MEDIUM;PULL_NONE;EDGE_NONE;SL_LOW;
+ };
+ sdh1_pmx_func2: sdh1_pmx_func2 {
+ pinctrl-single,pins = <
+ TDS_DIO18 AF0 /* WLAN_CLK */
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_LOW;
+ };
+ sdh1_pmx_func3: sdh1_pmx_func3 {
+ pinctrl-single,pins = <
+ PRI_TDI AF1 /* WLAN_WAKE_HOST */
+ >;
+ MFP_PULL_DOWN;
+ };
+ sdh1_pmx_edge_wakeup: sdh1_pmx_edge_wakeup {
+ pinctrl-single,pins = <
+ PRI_TDI AF1 /* WLAN_WAKE_HOST */
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_RISE;SL_NORMAL;
+ };
+ sdh1_pmx_pd_rst_off: sdh1_pmx_pd_rst_off {
+ pinctrl-single,pins = <
+ PRI_TDO AF1 /* WLAN_PDn */
+ GPIO41 AF0 /* LDO_EN */
+ >;
+ MFP_PULL_DOWN;
+ };
+ sdh1_pmx_pd_rst_on: sdh1_pmx_pd_rst_on {
+ pinctrl-single,pins = <
+ PRI_TDO AF1 /* WLAN_PDn */
+ GPIO41 AF0 /* LDO_EN */
+ >;
+ MFP_PULL_UP;
+ };
+
+ otg_vbus_func: otg_vbus_func {
+ pinctrl-single,pins = <
+ VBUS_DRV AF1 /* GPIO[122] */
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;
+ };
+
+ emac_pmx_func0: emac_pmx_func0 {
+ pinctrl-single,pins = <
+ GPIO00 AF1 /* GMAC1_RX_DV */
+ GPIO01 AF1 /* GMAC1_RX_D0 */
+ GPIO02 AF1 /* GMAC1_RX_D1 */
+ GPIO03 AF1 /* GMAC1_RX_CLK */
+ /* GPIO04 AF1 GMAC1_RX_D2 */
+ /* GPIO05 AF1 GMAC1_RX_D3 */
+ GPIO06 AF1 /* GMAC1_TX_D0 */
+ GPIO07 AF1 /* GMAC1_TX_D1 */
+ /* GPIO12 AF1 GMAC1_TX_CLK */
+ /* GPIO13 AF1 GMAC1_TX_D2 */
+ /* GPIO14 AF1 GMAC1_TX_D3 */
+ GPIO15 AF1 /* GMAC1_TX_EN */
+ GPIO16 AF1 /* GMAC1_TX_MDC */
+ /* GPIO17 AF1 GMAC1_TX_MDIO */
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_NORMAL;
+ };
+ emac_pmx_func1: emac_pmx_func1 {
+ pinctrl-single,pins = <
+ GPIO04 AF1 /* GMAC1_RX_D2 */
+ GPIO05 AF1 /* GMAC1_RX_D3 */
+ GPIO12 AF1 /* GMAC1_TX_CLK */
+ GPIO13 AF1 /* GMAC1_TX_D2 */
+ GPIO14 AF1 /* GMAC1_TX_D3 */
+ >;
+ DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_NORMAL;
+ };
+ emac_pmx_func2: emac_pmx_func2 {
+ pinctrl-single,pins = <
+ GPIO17 AF1 /* GMAC1_TX_MDIO */
+ GPIO18 AF1 /* GMAC1_TX_INT_N */
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;SL_NORMAL;
+ };
+ emac_pmx_func3: emac_pmx_func3 {
+ pinctrl-single,pins = <
+ GPIO20 AF0 /* RESET */
+ PRI_TMS AF1 /* LDO_EN */
+ >;
+ DS_SLOW0;PULL_FLOAT;EDGE_NONE;SL_NORMAL;
+ };
+ usim1_pmx_func: usim1_pmx_func {
+ pinctrl-single,pins = <
+ GPIO19 AF0
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;SL_NORMAL;
+ };
+ usim1_pmx_func_sleep: usim1_pmx_func_sleep {
+ pinctrl-single,pins = <
+ GPIO19 AF0
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_BOTH;SL_NORMAL;
+ };
+ usim2_pmx_func: usim2_pmx_func {
+ pinctrl-single,pins = <
+ GPIO44 AF0
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;SL_NORMAL;
+ };
+ usim2_pmx_func_sleep: usim2_pmx_func_sleep {
+ pinctrl-single,pins = <
+ GPIO44 AF0
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_BOTH;SL_NORMAL;
+ };
+ pcie_pmx_pd_rst_off: pcie_pmx_pd_rst_off {
+ pinctrl-single,pins = <
+ GPIO42 AF0 /* PERST_N */
+ GPIO53 AF0 /* DC_EN */
+ >;
+ MFP_PULL_DOWN;
+ };
+ pcie_pmx_pd_rst_on: pcie_pmx_pd_rst_on {
+ pinctrl-single,pins = <
+ GPIO42 AF0 /* PERST_N */
+ GPIO53 AF0 /* DC_EN */
+ >;
+ MFP_PULL_UP;
+ };
+
+ gc032a_pmx_func: gc032a_pmx_func {
+ pinctrl-single,pins = <
+ GPIO21 AF2 /* mclk */
+ >;
+ DS_SLOW0;PULL_FLOAT;EDGE_NONE;SL_NORMAL;
+ };
+ isp_spi_data: isp_spi_data {
+ pinctrl-single,pins = <
+ /* spi_data0 ... spi_data1 */
+ GPIO24 AF2
+ GPIO23 AF2
+ /* camera spi clk */
+ GPIO22 AF2
+ >;
+ DS_MEDIUM;PULL_FLOAT;EDGE_NONE;SL_NORMAL;
+ };
+ usb_id_pinmux: usb_id_pinmux {
+ pinctrl-single,pins = <
+ USB_ID AF1/* usbid-gpio99 */
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_NONE;
+ };
+ usb_id_pinmux_slp: usb_id_pinmux_slp {
+ pinctrl-single,pins = <
+ USB_ID AF1 /* usbid-gpio99 */
+ >;
+ DS_MEDIUM;PULL_UP;EDGE_BOTH;LPM_NONE;
+ };
+ usb_host_pinmux: usb_host_pinmux {
+ pinctrl-single,pins = <
+ VBUS_DRV AF1 /* gpio-122 */
+ >;
+ DS_MEDIUM;PULL_FLOAT;EDGE_NONE;LPM_NONE;
+ };
+ };
+
+ ssp0: spi@d401b000 {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&ssp0_pmx_func>;
+ asr,spi-inc-mode;
+ };
+ twsi0: i2c@d4011000 {
+ status= "okay";
+ /*
+ pmic4: 88pm805@38 {
+ compatible = "marvell,88pm805";
+ reg = <0x38>;
+ };
+ */
+ };
+ twsi1: i2c@d4010800 {
+ pinctrl-names = "default","gpio";
+ pinctrl-0 = <&twsi1_pmx_func>;
+ pinctrl-1 = <&twsi1_pmx_gpio>;
+ i2c-gpio = <&gpio 10 0 &gpio 11 0>;
+ status= "okay";
+ nau8810@1a {
+ compatible = "marvell,nau8810";
+ reg = <0x1a>;
+ };
+ ft6336: touchscreen@38 {
+ compatible = "focaltech,ft6236";
+ reg = <0x38>;
+ interrupt-parent = <&gpio>;
+ interrupts = <54 0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&tp_pinmux>;
+ reset-gpios = <&gpio 8 1>; /* active low */
+ touchscreen-inverted-y;
+ /* hw ts resolution does not match display */
+ touchscreen-size-y = <854>;
+ touchscreen-size-x = <480>;
+ touchscreen-swapped-x-y;
+ };
+ gc032a: gc032a@21{
+ compatible = "galaxycore,gc032a";
+ reg = <0x21>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&gc032a_pmx_func>;
+ pwdn-gpios = <&gpio 37 0>;
+ power-gpios = <&gpio 40 0>;
+ /*avdd-supply = <&pm802ldo6>;//2v8
+ iovdd-supply = <&pm802ldo5>;//1v8*/
+
+ status = "okay";
+ port {
+ gc0312_out: endpoint {
+ remote-endpoint = <&spi_in_cam>;
+ };
+ };
+ };
+ };
+ twsi2: i2c@d4037000 {
+ status = "okay";
+
+ pmic4: 88pm805@38 {
+ compatible = "marvell,88pm805";
+ reg = <0x38>;
+ };
+
+ pmic5: pm802@0 {
+ compatible = "asr,pm802";
+ reg = <0x00>;
+ interrupts = <4>;
+ interrupt-parent = <&intc>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ chg_irq_from_exton;
+ scs-int-active-high;
+ battery {
+ compatible = "asr,pm802-bat";
+ status = "disabled";
+
+ online-gpadc = <1>;
+ temperature-gpadc = <1>;
+
+ hi-volt-online = <1150>; /* mV */
+ lo-volt-online = <20>; /* mV */
+ hi-volt-temp = <1150>; /* mV */
+ lo-volt-temp = <200>; /* mV */
+
+ sw-fg-use-ntc;
+ full-capacity = <2050>; /* mAh */
+ r1-resistor = <40>; /* mohm */
+ r2-resistor = <30>; /* mohm */
+ rs-resistor = <120>; /* mohm */
+ roff-resistor = <0>; /* mohm */
+ roff-initial-resistor = <0>; /* mohm */
+
+ times-in-zero-degree = <1>;
+ offset-in-zero-degree = <0>;
+
+ times-in-ten-degree = <2>;
+ offset-in-ten-degree = <100>;
+
+ power-off-threshold = <3350>; /* mV */
+ safe-power-off-threshold = <3200>; /* mV */
+
+ online-gp-bias-curr = <11>; /* uA */
+
+ soc-ramp-up-interval = <150>; /* s */
+ /* choose -20C, 0C, 10C, 40C, 45C, 55C as threshold */
+ tbat-threshold = <20 0 10 40 45 55>; /* ohm */
+ ntc-table-size = <88>;
+ stop-chg-for-vbatmeas;
+ /* -24C, -23C, ..., 62C, 63C */
+ ntc-table = <
+ 89680 85130 80840 76790 72970 69360 65960 62740
+ 59700 56830 54130 51530 49100 46800 44610 42550
+ 40590 38730 36970 35300 33710 32210 30780 29420
+ 28130 26910 25750 24640 23590 22580 21630 20720
+ 19860 19030 18250 17500 16790 16110 15460 14840
+ 14250 13690 13150 12640 12150 11680 11230 10800
+ 10390 10000 9620 9270 8920 8590 8280 7980
+ 7690 7410 7150 6890 6650 6410 6190 5970
+ 5770 5570 5380 5190 5020 4850 4680 4530
+ 4380 4230 4100 3960 3830 3710 3590 3480
+ 3370 3260 3160 3060 2960 2870 2780 2700
+ >;
+ };
+ usb {
+ status = "disabled";
+ vbus_gpio = <0xff>; /* set_vbus */
+ id-gpadc = <0xff>; /* usb-id */
+ vchg-from-exton = <1>;
+ vbus-detect = <1>; /* vbus-irq */
+ get-vbus = <1>; /* get-vbus */
+ };
+ };
+ pmic6: pm803@30 {
+ compatible = "asr,pm803";
+ reg = <0x30>;
+ interrupts = <4>;
+ interrupt-parent = <&intc>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ chg_irq_from_exton;
+ scs-int-active-high;
+ battery {
+ compatible = "asr,pm803-bat";
+ status = "disabled";
+
+ online-gpadc = <1>;
+ temperature-gpadc = <1>;
+
+ hi-volt-online = <1150>; /* mV */
+ lo-volt-online = <20>; /* mV */
+ hi-volt-temp = <1150>; /* mV */
+ lo-volt-temp = <200>; /* mV */
+
+ sw-fg-use-ntc;
+ full-capacity = <2050>; /* mAh */
+ r1-resistor = <40>; /* mohm */
+ r2-resistor = <30>; /* mohm */
+ rs-resistor = <120>; /* mohm */
+ roff-resistor = <0>; /* mohm */
+ roff-initial-resistor = <0>; /* mohm */
+
+ times-in-zero-degree = <1>;
+ offset-in-zero-degree = <0>;
+
+ times-in-ten-degree = <2>;
+ offset-in-ten-degree = <100>;
+
+ power-off-threshold = <3350>; /* mV */
+ safe-power-off-threshold = <3200>; /* mV */
+
+ online-gp-bias-curr = <11>; /* uA */
+
+ soc-ramp-up-interval = <150>; /* s */
+ /* choose -20C, 0C, 10C, 40C, 45C, 55C as threshold */
+ tbat-threshold = <20 0 10 40 45 55>; /* ohm */
+ ntc-table-size = <88>;
+ stop-chg-for-vbatmeas;
+ /* -24C, -23C, ..., 62C, 63C */
+ ntc-table = <
+ 89680 85130 80840 76790 72970 69360 65960 62740
+ 59700 56830 54130 51530 49100 46800 44610 42550
+ 40590 38730 36970 35300 33710 32210 30780 29420
+ 28130 26910 25750 24640 23590 22580 21630 20720
+ 19860 19030 18250 17500 16790 16110 15460 14840
+ 14250 13690 13150 12640 12150 11680 11230 10800
+ 10390 10000 9620 9270 8920 8590 8280 7980
+ 7690 7410 7150 6890 6650 6410 6190 5970
+ 5770 5570 5380 5190 5020 4850 4680 4530
+ 4380 4230 4100 3960 3830 3710 3590 3480
+ 3370 3260 3160 3060 2960 2870 2780 2700
+ >;
+ };
+ usb {
+ status = "disabled";
+ vbus_gpio = <0xff>; /* set_vbus */
+ id-gpadc = <0xff>; /* usb-id */
+ vchg-from-exton = <1>;
+ vbus-detect = <1>; /* vbus-irq */
+ get-vbus = <1>; /* get-vbus */
+ };
+ };
+ };
+ };
+ };
+
+ vcc_sdh1: sd-regulator {
+ compatible = "regulator-fixed";
+ pinctrl-names = "default";
+ pinctrl-0 = <&sd_ldo_en>;
+ regulator-name = "SDH1 VCC";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpio 45 0>;
+ enable-active-high;
+ status = "okay";
+ };
+
+ asr-rfkill {
+ compatible = "asr,asr-rfkill";
+ pinctrl-names = "off", "on";
+ pinctrl-0 = <&sdh1_pmx_pd_rst_off>;
+ pinctrl-1 = <&sdh1_pmx_pd_rst_on>;
+ sd-host = <&sdh1>;
+ pd-gpio = <&gpio 120 0>;
+ 3v3-ldo-gpio = <&gpio 41 0>;
+ edge-wakeup-gpio = <&gpio 117 0>;
+ status = "okay";
+ };
+
+ pcie-rfkill {
+ compatible = "mrvl,pcie-rfkill";
+ pinctrl-names = "off", "on";
+ pinctrl-0 = <&pcie_pmx_pd_rst_off>;
+ pinctrl-1 = <&pcie_pmx_pd_rst_on>;
+ rst-gpio = <&gpio 42 0>;
+ 3v3-ldo-gpio = <&gpio 53 0>;
+ status = "okay";
+ };
+
+ usim1: usim1 {
+ compatible = "asr,usim1";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&usim1_pmx_func>;
+ pinctrl-1 = <&usim1_pmx_func_sleep>;
+ edge_detect_gpio = <19>; /* GPIO19: SIM detect pin */
+ status = "okay";
+ };
+ usim2: usim2 {
+ compatible = "asr,usim2";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&usim2_pmx_func>;
+ pinctrl-1 = <&usim2_pmx_func_sleep>;
+ edge_detect_gpio = <44>; /* GPIO44: SIM detect pin */
+#ifdef CONFIG_ASR_DSDS
+ status = "okay";
+#else
+ status = "disabled";
+#endif
+ };
+
+ audio_regs {
+ compatible = "ASRMICRO,audio-registers";
+ reg = <0xD4050044 0x4>;
+ status = "okay";
+ };
+};
+#ifdef CONFIG_ASR_DSDS
+#include "asr_pm802_2usim.dtsi"
+#include "88pm805.dtsi"
+#include "asr_pm803_2usim.dtsi"
+#else
+#include "asr_pm802.dtsi"
+#include "88pm805.dtsi"
+#include "asr_pm803.dtsi"
+#endif
+
+#ifdef CONFIG_AB_SYSTEM
+#include "asr1806_ab_flash_layout.dtsi"
+#else
+#include "asr1806_flash_layout.dtsi"
+#endif