1b255e126SJianxin Pan// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2b255e126SJianxin Pan/* 3b255e126SJianxin Pan * Copyright (c) 2019 Amlogic, Inc. All rights reserved. 4b255e126SJianxin Pan */ 5b255e126SJianxin Pan 6af07cc67SDmitry Rokosov#include <dt-bindings/clock/amlogic,a1-pll-clkc.h> 7af07cc67SDmitry Rokosov#include <dt-bindings/clock/amlogic,a1-peripherals-clkc.h> 8e6eeb92dSQianggui Song#include <dt-bindings/gpio/meson-a1-gpio.h> 97124c482SDmitry Rokosov#include <dt-bindings/interrupt-controller/arm-gic.h> 107124c482SDmitry Rokosov#include <dt-bindings/interrupt-controller/irq.h> 11d3261b54SDmitry Rokosov#include <dt-bindings/power/meson-a1-power.h> 12d3261b54SDmitry Rokosov#include <dt-bindings/reset/amlogic,meson-a1-reset.h> 13b255e126SJianxin Pan 14b255e126SJianxin Pan/ { 15b255e126SJianxin Pan compatible = "amlogic,a1"; 16b255e126SJianxin Pan 17b255e126SJianxin Pan interrupt-parent = <&gic>; 18b255e126SJianxin Pan #address-cells = <2>; 19b255e126SJianxin Pan #size-cells = <2>; 20b255e126SJianxin Pan 21b255e126SJianxin Pan cpus { 22b255e126SJianxin Pan #address-cells = <2>; 23b255e126SJianxin Pan #size-cells = <0>; 24b255e126SJianxin Pan 25b255e126SJianxin Pan cpu0: cpu@0 { 26b255e126SJianxin Pan device_type = "cpu"; 27b255e126SJianxin Pan compatible = "arm,cortex-a35"; 28b255e126SJianxin Pan reg = <0x0 0x0>; 29b255e126SJianxin Pan enable-method = "psci"; 30b255e126SJianxin Pan next-level-cache = <&l2>; 31947bde90SDmitry Rokosov #cooling-cells = <2>; 32b255e126SJianxin Pan }; 33b255e126SJianxin Pan 34b255e126SJianxin Pan cpu1: cpu@1 { 35b255e126SJianxin Pan device_type = "cpu"; 36b255e126SJianxin Pan compatible = "arm,cortex-a35"; 37b255e126SJianxin Pan reg = <0x0 0x1>; 38b255e126SJianxin Pan enable-method = "psci"; 39b255e126SJianxin Pan next-level-cache = <&l2>; 40947bde90SDmitry Rokosov #cooling-cells = <2>; 41b255e126SJianxin Pan }; 42b255e126SJianxin Pan 43b255e126SJianxin Pan l2: l2-cache0 { 44b255e126SJianxin Pan compatible = "cache"; 4549f65e2eSPierre Gondois cache-level = <2>; 46c2258a94SKrzysztof Kozlowski cache-unified; 47b255e126SJianxin Pan }; 48b255e126SJianxin Pan }; 49b255e126SJianxin Pan 5028b2f803SAlexey Romanov efuse: efuse { 5128b2f803SAlexey Romanov compatible = "amlogic,meson-gxbb-efuse"; 5228b2f803SAlexey Romanov clocks = <&clkc_periphs CLKID_OTP>; 5328b2f803SAlexey Romanov #address-cells = <1>; 5428b2f803SAlexey Romanov #size-cells = <1>; 5528b2f803SAlexey Romanov secure-monitor = <&sm>; 5628b2f803SAlexey Romanov power-domains = <&pwrc PWRC_OTP_ID>; 5728b2f803SAlexey Romanov }; 5828b2f803SAlexey Romanov 59b255e126SJianxin Pan psci { 60b255e126SJianxin Pan compatible = "arm,psci-1.0"; 61b255e126SJianxin Pan method = "smc"; 62b255e126SJianxin Pan }; 63b255e126SJianxin Pan 64b255e126SJianxin Pan reserved-memory { 65b255e126SJianxin Pan #address-cells = <2>; 66b255e126SJianxin Pan #size-cells = <2>; 67b255e126SJianxin Pan ranges; 68b255e126SJianxin Pan 69b255e126SJianxin Pan linux,cma { 70b255e126SJianxin Pan compatible = "shared-dma-pool"; 71b255e126SJianxin Pan reusable; 72b255e126SJianxin Pan size = <0x0 0x800000>; 73b255e126SJianxin Pan alignment = <0x0 0x400000>; 74b255e126SJianxin Pan linux,cma-default; 75b255e126SJianxin Pan }; 76b255e126SJianxin Pan }; 77b255e126SJianxin Pan 78b255e126SJianxin Pan sm: secure-monitor { 79b255e126SJianxin Pan compatible = "amlogic,meson-gxbb-sm"; 8004dd0b65SJianxin Pan 8104dd0b65SJianxin Pan pwrc: power-controller { 8204dd0b65SJianxin Pan compatible = "amlogic,meson-a1-pwrc"; 8304dd0b65SJianxin Pan #power-domain-cells = <1>; 8404dd0b65SJianxin Pan }; 85b255e126SJianxin Pan }; 86b255e126SJianxin Pan 87b255e126SJianxin Pan soc { 88b255e126SJianxin Pan compatible = "simple-bus"; 89b255e126SJianxin Pan #address-cells = <2>; 90b255e126SJianxin Pan #size-cells = <2>; 91b255e126SJianxin Pan ranges; 92b255e126SJianxin Pan 938a398729SMartin Kurbanov spifc: spi@fd000400 { 948a398729SMartin Kurbanov compatible = "amlogic,a1-spifc"; 958a398729SMartin Kurbanov reg = <0x0 0xfd000400 0x0 0x290>; 968a398729SMartin Kurbanov clocks = <&clkc_periphs CLKID_SPIFC>; 978a398729SMartin Kurbanov #address-cells = <1>; 988a398729SMartin Kurbanov #size-cells = <0>; 998a398729SMartin Kurbanov power-domains = <&pwrc PWRC_SPIFC_ID>; 1008a398729SMartin Kurbanov status = "disabled"; 1018a398729SMartin Kurbanov }; 1028a398729SMartin Kurbanov 103b255e126SJianxin Pan apb: bus@fe000000 { 104b255e126SJianxin Pan compatible = "simple-bus"; 105b255e126SJianxin Pan reg = <0x0 0xfe000000 0x0 0x1000000>; 106b255e126SJianxin Pan #address-cells = <2>; 107b255e126SJianxin Pan #size-cells = <2>; 108b255e126SJianxin Pan ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x1000000>; 109b255e126SJianxin Pan 11003f2dea7SXingyu Chen reset: reset-controller@0 { 11103f2dea7SXingyu Chen compatible = "amlogic,meson-a1-reset"; 11203f2dea7SXingyu Chen reg = <0x0 0x0 0x0 0x8c>; 11303f2dea7SXingyu Chen #reset-cells = <1>; 11403f2dea7SXingyu Chen }; 11503f2dea7SXingyu Chen 116d9421d6cSKevin Hilman periphs_pinctrl: pinctrl@400 { 117e6eeb92dSQianggui Song compatible = "amlogic,meson-a1-periphs-pinctrl"; 118e6eeb92dSQianggui Song #address-cells = <2>; 119e6eeb92dSQianggui Song #size-cells = <2>; 120e6eeb92dSQianggui Song ranges; 121e6eeb92dSQianggui Song 122d9421d6cSKevin Hilman gpio: bank@400 { 123e6eeb92dSQianggui Song reg = <0x0 0x0400 0x0 0x003c>, 124e6eeb92dSQianggui Song <0x0 0x0480 0x0 0x0118>; 125e6eeb92dSQianggui Song reg-names = "mux", "gpio"; 126e6eeb92dSQianggui Song gpio-controller; 127e6eeb92dSQianggui Song #gpio-cells = <2>; 128e6eeb92dSQianggui Song gpio-ranges = <&periphs_pinctrl 0 0 62>; 129e6eeb92dSQianggui Song }; 130e6eeb92dSQianggui Song 131f2d2200eSDmitry Rokosov i2c0_f11_pins: i2c0-f11 { 132f2d2200eSDmitry Rokosov mux { 133f2d2200eSDmitry Rokosov groups = "i2c0_sck_f11", 134f2d2200eSDmitry Rokosov "i2c0_sda_f12"; 135f2d2200eSDmitry Rokosov function = "i2c0"; 136f2d2200eSDmitry Rokosov bias-pull-up; 137f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 138f2d2200eSDmitry Rokosov }; 139f2d2200eSDmitry Rokosov }; 140f2d2200eSDmitry Rokosov 141f2d2200eSDmitry Rokosov i2c0_f9_pins: i2c0-f9 { 142f2d2200eSDmitry Rokosov mux { 143f2d2200eSDmitry Rokosov groups = "i2c0_sck_f9", 144f2d2200eSDmitry Rokosov "i2c0_sda_f10"; 145f2d2200eSDmitry Rokosov function = "i2c0"; 146f2d2200eSDmitry Rokosov bias-pull-up; 147f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 148f2d2200eSDmitry Rokosov }; 149f2d2200eSDmitry Rokosov }; 150f2d2200eSDmitry Rokosov 151f2d2200eSDmitry Rokosov i2c1_x_pins: i2c1-x { 152f2d2200eSDmitry Rokosov mux { 153f2d2200eSDmitry Rokosov groups = "i2c1_sck_x", 154f2d2200eSDmitry Rokosov "i2c1_sda_x"; 155f2d2200eSDmitry Rokosov function = "i2c1"; 156f2d2200eSDmitry Rokosov bias-pull-up; 157f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 158f2d2200eSDmitry Rokosov }; 159f2d2200eSDmitry Rokosov }; 160f2d2200eSDmitry Rokosov 161f2d2200eSDmitry Rokosov i2c1_a_pins: i2c1-a { 162f2d2200eSDmitry Rokosov mux { 163f2d2200eSDmitry Rokosov groups = "i2c1_sck_a", 164f2d2200eSDmitry Rokosov "i2c1_sda_a"; 165f2d2200eSDmitry Rokosov function = "i2c1"; 166f2d2200eSDmitry Rokosov bias-pull-up; 167f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 168f2d2200eSDmitry Rokosov }; 169f2d2200eSDmitry Rokosov }; 170f2d2200eSDmitry Rokosov 171f2d2200eSDmitry Rokosov i2c2_x0_pins: i2c2-x0 { 172f2d2200eSDmitry Rokosov mux { 173f2d2200eSDmitry Rokosov groups = "i2c2_sck_x0", 174f2d2200eSDmitry Rokosov "i2c2_sda_x1"; 175f2d2200eSDmitry Rokosov function = "i2c2"; 176f2d2200eSDmitry Rokosov bias-pull-up; 177f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 178f2d2200eSDmitry Rokosov }; 179f2d2200eSDmitry Rokosov }; 180f2d2200eSDmitry Rokosov 181f2d2200eSDmitry Rokosov i2c2_x15_pins: i2c2-x15 { 182f2d2200eSDmitry Rokosov mux { 183f2d2200eSDmitry Rokosov groups = "i2c2_sck_x15", 184f2d2200eSDmitry Rokosov "i2c2_sda_x16"; 185f2d2200eSDmitry Rokosov function = "i2c2"; 186f2d2200eSDmitry Rokosov bias-pull-up; 187f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 188f2d2200eSDmitry Rokosov }; 189f2d2200eSDmitry Rokosov }; 190f2d2200eSDmitry Rokosov 191f2d2200eSDmitry Rokosov i2c2_a4_pins: i2c2-a4 { 192f2d2200eSDmitry Rokosov mux { 193f2d2200eSDmitry Rokosov groups = "i2c2_sck_a4", 194f2d2200eSDmitry Rokosov "i2c2_sda_a5"; 195f2d2200eSDmitry Rokosov function = "i2c2"; 196f2d2200eSDmitry Rokosov bias-pull-up; 197f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 198f2d2200eSDmitry Rokosov }; 199f2d2200eSDmitry Rokosov }; 200f2d2200eSDmitry Rokosov 201f2d2200eSDmitry Rokosov i2c2_a8_pins: i2c2-a8 { 202f2d2200eSDmitry Rokosov mux { 203f2d2200eSDmitry Rokosov groups = "i2c2_sck_a8", 204f2d2200eSDmitry Rokosov "i2c2_sda_a9"; 205f2d2200eSDmitry Rokosov function = "i2c2"; 206f2d2200eSDmitry Rokosov bias-pull-up; 207f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 208f2d2200eSDmitry Rokosov }; 209f2d2200eSDmitry Rokosov }; 210f2d2200eSDmitry Rokosov 211f2d2200eSDmitry Rokosov i2c3_x_pins: i2c3-x { 212f2d2200eSDmitry Rokosov mux { 213f2d2200eSDmitry Rokosov groups = "i2c3_sck_x", 214f2d2200eSDmitry Rokosov "i2c3_sda_x"; 215f2d2200eSDmitry Rokosov function = "i2c3"; 216f2d2200eSDmitry Rokosov bias-pull-up; 217f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 218f2d2200eSDmitry Rokosov }; 219f2d2200eSDmitry Rokosov }; 220f2d2200eSDmitry Rokosov 221f2d2200eSDmitry Rokosov i2c3_f_pins: i2c3-f { 222f2d2200eSDmitry Rokosov mux { 223f2d2200eSDmitry Rokosov groups = "i2c3_sck_f", 224f2d2200eSDmitry Rokosov "i2c3_sda_f"; 225f2d2200eSDmitry Rokosov function = "i2c3"; 226f2d2200eSDmitry Rokosov bias-pull-up; 227f2d2200eSDmitry Rokosov drive-strength-microamp = <3000>; 228f2d2200eSDmitry Rokosov }; 229f2d2200eSDmitry Rokosov }; 230f2d2200eSDmitry Rokosov 231dba516faSOleg Lyovin uart_a_pins: uart-a { 232dba516faSOleg Lyovin mux { 233dba516faSOleg Lyovin groups = "uart_a_tx", 234dba516faSOleg Lyovin "uart_a_rx"; 235dba516faSOleg Lyovin function = "uart_a"; 236*f254ae62SMartin Blumenstingl bias-pull-up; 237dba516faSOleg Lyovin }; 238dba516faSOleg Lyovin }; 239dba516faSOleg Lyovin 240dba516faSOleg Lyovin uart_a_cts_rts_pins: uart-a-cts-rts { 241dba516faSOleg Lyovin mux { 242dba516faSOleg Lyovin groups = "uart_a_cts", 243dba516faSOleg Lyovin "uart_a_rts"; 244dba516faSOleg Lyovin function = "uart_a"; 245dba516faSOleg Lyovin bias-pull-down; 246dba516faSOleg Lyovin }; 247dba516faSOleg Lyovin }; 2484d860a98SJan Dakinevich 2495774b1e2SGeorge Stark pwm_a_pins1: pwm-a-pins1 { 2505774b1e2SGeorge Stark mux { 2515774b1e2SGeorge Stark groups = "pwm_a_x6"; 2525774b1e2SGeorge Stark function = "pwm_a"; 2535774b1e2SGeorge Stark }; 2545774b1e2SGeorge Stark }; 2555774b1e2SGeorge Stark 2565774b1e2SGeorge Stark pwm_a_pins2: pwm-a-pins2 { 2575774b1e2SGeorge Stark mux { 2585774b1e2SGeorge Stark groups = "pwm_a_x7"; 2595774b1e2SGeorge Stark function = "pwm_a"; 2605774b1e2SGeorge Stark }; 2615774b1e2SGeorge Stark }; 2625774b1e2SGeorge Stark 2635774b1e2SGeorge Stark pwm_a_pins3: pwm-a-pins3 { 2645774b1e2SGeorge Stark mux { 2655774b1e2SGeorge Stark groups = "pwm_a_f10"; 2665774b1e2SGeorge Stark function = "pwm_a"; 2675774b1e2SGeorge Stark }; 2685774b1e2SGeorge Stark }; 2695774b1e2SGeorge Stark 2705774b1e2SGeorge Stark pwm_a_pins4: pwm-a-pins4 { 2715774b1e2SGeorge Stark mux { 2725774b1e2SGeorge Stark groups = "pwm_a_f6"; 2735774b1e2SGeorge Stark function = "pwm_a"; 2745774b1e2SGeorge Stark }; 2755774b1e2SGeorge Stark }; 2765774b1e2SGeorge Stark 2775774b1e2SGeorge Stark pwm_a_pins5: pwm-a-pins5 { 2785774b1e2SGeorge Stark mux { 2795774b1e2SGeorge Stark groups = "pwm_a_a"; 2805774b1e2SGeorge Stark function = "pwm_a"; 2815774b1e2SGeorge Stark }; 2825774b1e2SGeorge Stark }; 2835774b1e2SGeorge Stark 2845774b1e2SGeorge Stark pwm_b_pins1: pwm-b-pins1 { 2855774b1e2SGeorge Stark mux { 2865774b1e2SGeorge Stark groups = "pwm_b_x"; 2875774b1e2SGeorge Stark function = "pwm_b"; 2885774b1e2SGeorge Stark }; 2895774b1e2SGeorge Stark }; 2905774b1e2SGeorge Stark 2915774b1e2SGeorge Stark pwm_b_pins2: pwm-b-pins2 { 2925774b1e2SGeorge Stark mux { 2935774b1e2SGeorge Stark groups = "pwm_b_f"; 2945774b1e2SGeorge Stark function = "pwm_b"; 2955774b1e2SGeorge Stark }; 2965774b1e2SGeorge Stark }; 2975774b1e2SGeorge Stark 2985774b1e2SGeorge Stark pwm_b_pins3: pwm-b-pins3 { 2995774b1e2SGeorge Stark mux { 3005774b1e2SGeorge Stark groups = "pwm_b_a"; 3015774b1e2SGeorge Stark function = "pwm_b"; 3025774b1e2SGeorge Stark }; 3035774b1e2SGeorge Stark }; 3045774b1e2SGeorge Stark 3055774b1e2SGeorge Stark pwm_c_pins1: pwm-c-pins1 { 3065774b1e2SGeorge Stark mux { 3075774b1e2SGeorge Stark groups = "pwm_c_x"; 3085774b1e2SGeorge Stark function = "pwm_c"; 3095774b1e2SGeorge Stark }; 3105774b1e2SGeorge Stark }; 3115774b1e2SGeorge Stark 3125774b1e2SGeorge Stark pwm_c_pins2: pwm-c-pins2 { 3135774b1e2SGeorge Stark mux { 3145774b1e2SGeorge Stark groups = "pwm_c_f3"; 3155774b1e2SGeorge Stark function = "pwm_c"; 3165774b1e2SGeorge Stark }; 3175774b1e2SGeorge Stark }; 3185774b1e2SGeorge Stark 3195774b1e2SGeorge Stark pwm_c_pins3: pwm-c-pins3 { 3205774b1e2SGeorge Stark mux { 3215774b1e2SGeorge Stark groups = "pwm_c_f8"; 3225774b1e2SGeorge Stark function = "pwm_c"; 3235774b1e2SGeorge Stark }; 3245774b1e2SGeorge Stark }; 3255774b1e2SGeorge Stark 3265774b1e2SGeorge Stark pwm_c_pins4: pwm-c-pins4 { 3275774b1e2SGeorge Stark mux { 3285774b1e2SGeorge Stark groups = "pwm_c_a"; 3295774b1e2SGeorge Stark function = "pwm_c"; 3305774b1e2SGeorge Stark }; 3315774b1e2SGeorge Stark }; 3325774b1e2SGeorge Stark 3335774b1e2SGeorge Stark pwm_d_pins1: pwm-d-pins1 { 3345774b1e2SGeorge Stark mux { 3355774b1e2SGeorge Stark groups = "pwm_d_x15"; 3365774b1e2SGeorge Stark function = "pwm_d"; 3375774b1e2SGeorge Stark }; 3385774b1e2SGeorge Stark }; 3395774b1e2SGeorge Stark 3405774b1e2SGeorge Stark pwm_d_pins2: pwm-d-pins2 { 3415774b1e2SGeorge Stark mux { 3425774b1e2SGeorge Stark groups = "pwm_d_x13"; 3435774b1e2SGeorge Stark function = "pwm_d"; 3445774b1e2SGeorge Stark }; 3455774b1e2SGeorge Stark }; 3465774b1e2SGeorge Stark 3475774b1e2SGeorge Stark pwm_d_pins3: pwm-d-pins3 { 3485774b1e2SGeorge Stark mux { 3495774b1e2SGeorge Stark groups = "pwm_d_x10"; 3505774b1e2SGeorge Stark function = "pwm_d"; 3515774b1e2SGeorge Stark }; 3525774b1e2SGeorge Stark }; 3535774b1e2SGeorge Stark 3545774b1e2SGeorge Stark pwm_d_pins4: pwm-d-pins4 { 3555774b1e2SGeorge Stark mux { 3565774b1e2SGeorge Stark groups = "pwm_d_f"; 3575774b1e2SGeorge Stark function = "pwm_d"; 3585774b1e2SGeorge Stark }; 3595774b1e2SGeorge Stark }; 3605774b1e2SGeorge Stark 3615774b1e2SGeorge Stark pwm_e_pins1: pwm-e-pins1 { 3625774b1e2SGeorge Stark mux { 3635774b1e2SGeorge Stark groups = "pwm_e_p"; 3645774b1e2SGeorge Stark function = "pwm_e"; 3655774b1e2SGeorge Stark }; 3665774b1e2SGeorge Stark }; 3675774b1e2SGeorge Stark 3685774b1e2SGeorge Stark pwm_e_pins2: pwm-e-pins2 { 3695774b1e2SGeorge Stark mux { 3705774b1e2SGeorge Stark groups = "pwm_e_x16"; 3715774b1e2SGeorge Stark function = "pwm_e"; 3725774b1e2SGeorge Stark }; 3735774b1e2SGeorge Stark }; 3745774b1e2SGeorge Stark 3755774b1e2SGeorge Stark pwm_e_pins3: pwm-e-pins3 { 3765774b1e2SGeorge Stark mux { 3775774b1e2SGeorge Stark groups = "pwm_e_x14"; 3785774b1e2SGeorge Stark function = "pwm_e"; 3795774b1e2SGeorge Stark }; 3805774b1e2SGeorge Stark }; 3815774b1e2SGeorge Stark 3825774b1e2SGeorge Stark pwm_e_pins4: pwm-e-pins4 { 3835774b1e2SGeorge Stark mux { 3845774b1e2SGeorge Stark groups = "pwm_e_x2"; 3855774b1e2SGeorge Stark function = "pwm_e"; 3865774b1e2SGeorge Stark }; 3875774b1e2SGeorge Stark }; 3885774b1e2SGeorge Stark 3895774b1e2SGeorge Stark pwm_e_pins5: pwm-e-pins5 { 3905774b1e2SGeorge Stark mux { 3915774b1e2SGeorge Stark groups = "pwm_e_f"; 3925774b1e2SGeorge Stark function = "pwm_e"; 3935774b1e2SGeorge Stark }; 3945774b1e2SGeorge Stark }; 3955774b1e2SGeorge Stark 3965774b1e2SGeorge Stark pwm_e_pins6: pwm-e-pins6 { 3975774b1e2SGeorge Stark mux { 3985774b1e2SGeorge Stark groups = "pwm_e_a"; 3995774b1e2SGeorge Stark function = "pwm_e"; 4005774b1e2SGeorge Stark }; 4015774b1e2SGeorge Stark }; 4025774b1e2SGeorge Stark 4035774b1e2SGeorge Stark pwm_f_pins1: pwm-f-pins1 { 4045774b1e2SGeorge Stark mux { 4055774b1e2SGeorge Stark groups = "pwm_f_b"; 4065774b1e2SGeorge Stark function = "pwm_f"; 4075774b1e2SGeorge Stark }; 4085774b1e2SGeorge Stark }; 4095774b1e2SGeorge Stark 4105774b1e2SGeorge Stark pwm_f_pins2: pwm-f-pins2 { 4115774b1e2SGeorge Stark mux { 4125774b1e2SGeorge Stark groups = "pwm_f_x"; 4135774b1e2SGeorge Stark function = "pwm_f"; 4145774b1e2SGeorge Stark }; 4155774b1e2SGeorge Stark }; 4165774b1e2SGeorge Stark 4175774b1e2SGeorge Stark pwm_f_pins3: pwm-f-pins3 { 4185774b1e2SGeorge Stark mux { 4195774b1e2SGeorge Stark groups = "pwm_f_f4"; 4205774b1e2SGeorge Stark function = "pwm_f"; 4215774b1e2SGeorge Stark }; 4225774b1e2SGeorge Stark }; 4235774b1e2SGeorge Stark 4245774b1e2SGeorge Stark pwm_f_pins4: pwm-f-pins4 { 4255774b1e2SGeorge Stark mux { 4265774b1e2SGeorge Stark groups = "pwm_f_f12"; 4275774b1e2SGeorge Stark function = "pwm_f"; 4285774b1e2SGeorge Stark }; 4295774b1e2SGeorge Stark }; 4305774b1e2SGeorge Stark 4314d860a98SJan Dakinevich sdio_pins: sdio { 4324d860a98SJan Dakinevich mux0 { 4334d860a98SJan Dakinevich groups = "sdcard_d0_x", 4344d860a98SJan Dakinevich "sdcard_d1_x", 4354d860a98SJan Dakinevich "sdcard_d2_x", 4364d860a98SJan Dakinevich "sdcard_d3_x", 4374d860a98SJan Dakinevich "sdcard_cmd_x"; 4384d860a98SJan Dakinevich function = "sdcard"; 4394d860a98SJan Dakinevich bias-pull-up; 4404d860a98SJan Dakinevich }; 4414d860a98SJan Dakinevich 4424d860a98SJan Dakinevich mux1 { 4434d860a98SJan Dakinevich groups = "sdcard_clk_x"; 4444d860a98SJan Dakinevich function = "sdcard"; 4454d860a98SJan Dakinevich bias-disable; 4464d860a98SJan Dakinevich }; 4474d860a98SJan Dakinevich }; 4484d860a98SJan Dakinevich 4494d860a98SJan Dakinevich sdio_clk_gate_pins: sdio-clk-gate { 4504d860a98SJan Dakinevich mux { 4514d860a98SJan Dakinevich groups = "sdcard_clk_x"; 4524d860a98SJan Dakinevich function = "sdcard"; 4534d860a98SJan Dakinevich bias-pull-down; 4544d860a98SJan Dakinevich }; 4554d860a98SJan Dakinevich }; 4564985d0b3SIgor Prusov 4574985d0b3SIgor Prusov spifc_pins: spifc { 4584985d0b3SIgor Prusov mux { 4594985d0b3SIgor Prusov groups = "spif_mo", 4604985d0b3SIgor Prusov "spif_mi", 4614985d0b3SIgor Prusov "spif_clk", 4624985d0b3SIgor Prusov "spif_cs", 4634985d0b3SIgor Prusov "spif_hold_n", 4644985d0b3SIgor Prusov "spif_wp_n"; 4654985d0b3SIgor Prusov function = "spif"; 4664985d0b3SIgor Prusov }; 4674985d0b3SIgor Prusov }; 468e6eeb92dSQianggui Song }; 469e6eeb92dSQianggui Song 47090da39d5SDmitry Rokosov gpio_intc: interrupt-controller@440 { 47190da39d5SDmitry Rokosov compatible = "amlogic,meson-a1-gpio-intc", 47290da39d5SDmitry Rokosov "amlogic,meson-gpio-intc"; 47390da39d5SDmitry Rokosov reg = <0x0 0x0440 0x0 0x14>; 47490da39d5SDmitry Rokosov interrupt-controller; 47590da39d5SDmitry Rokosov #interrupt-cells = <2>; 47690da39d5SDmitry Rokosov amlogic,channel-interrupts = 47790da39d5SDmitry Rokosov <49 50 51 52 53 54 55 56>; 47890da39d5SDmitry Rokosov }; 47990da39d5SDmitry Rokosov 480af07cc67SDmitry Rokosov clkc_periphs: clock-controller@800 { 481af07cc67SDmitry Rokosov compatible = "amlogic,a1-peripherals-clkc"; 482af07cc67SDmitry Rokosov reg = <0 0x800 0 0x104>; 483af07cc67SDmitry Rokosov #clock-cells = <1>; 484af07cc67SDmitry Rokosov clocks = <&clkc_pll CLKID_FCLK_DIV2>, 485af07cc67SDmitry Rokosov <&clkc_pll CLKID_FCLK_DIV3>, 486af07cc67SDmitry Rokosov <&clkc_pll CLKID_FCLK_DIV5>, 487af07cc67SDmitry Rokosov <&clkc_pll CLKID_FCLK_DIV7>, 488af07cc67SDmitry Rokosov <&clkc_pll CLKID_HIFI_PLL>, 489af07cc67SDmitry Rokosov <&xtal>; 490af07cc67SDmitry Rokosov clock-names = "fclk_div2", "fclk_div3", 491af07cc67SDmitry Rokosov "fclk_div5", "fclk_div7", 492af07cc67SDmitry Rokosov "hifi_pll", "xtal"; 493af07cc67SDmitry Rokosov }; 494af07cc67SDmitry Rokosov 495f2d2200eSDmitry Rokosov i2c0: i2c@1400 { 496f2d2200eSDmitry Rokosov compatible = "amlogic,meson-axg-i2c"; 497f2d2200eSDmitry Rokosov status = "disabled"; 498f2d2200eSDmitry Rokosov reg = <0x0 0x1400 0x0 0x20>; 499f2d2200eSDmitry Rokosov interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>; 500f2d2200eSDmitry Rokosov #address-cells = <1>; 501f2d2200eSDmitry Rokosov #size-cells = <0>; 502f2d2200eSDmitry Rokosov clocks = <&clkc_periphs CLKID_I2C_M_A>; 503f2d2200eSDmitry Rokosov power-domains = <&pwrc PWRC_I2C_ID>; 504f2d2200eSDmitry Rokosov }; 505f2d2200eSDmitry Rokosov 506b255e126SJianxin Pan uart_AO: serial@1c00 { 5076d71ded2SDmitry Rokosov compatible = "amlogic,meson-a1-uart", 508b255e126SJianxin Pan "amlogic,meson-ao-uart"; 509b255e126SJianxin Pan reg = <0x0 0x1c00 0x0 0x18>; 510b255e126SJianxin Pan interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>; 511b255e126SJianxin Pan clocks = <&xtal>, <&xtal>, <&xtal>; 512b255e126SJianxin Pan clock-names = "xtal", "pclk", "baud"; 513b255e126SJianxin Pan status = "disabled"; 514b255e126SJianxin Pan }; 515b255e126SJianxin Pan 516b255e126SJianxin Pan uart_AO_B: serial@2000 { 5176d71ded2SDmitry Rokosov compatible = "amlogic,meson-a1-uart", 518b255e126SJianxin Pan "amlogic,meson-ao-uart"; 519b255e126SJianxin Pan reg = <0x0 0x2000 0x0 0x18>; 520b255e126SJianxin Pan interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>; 521b255e126SJianxin Pan clocks = <&xtal>, <&xtal>, <&xtal>; 522b255e126SJianxin Pan clock-names = "xtal", "pclk", "baud"; 523b255e126SJianxin Pan status = "disabled"; 524b255e126SJianxin Pan }; 525af07cc67SDmitry Rokosov 5265774b1e2SGeorge Stark pwm_ab: pwm@2400 { 5275774b1e2SGeorge Stark compatible = "amlogic,meson-a1-pwm", 5285774b1e2SGeorge Stark "amlogic,meson-s4-pwm"; 5295774b1e2SGeorge Stark reg = <0x0 0x2400 0x0 0x24>; 5305774b1e2SGeorge Stark #pwm-cells = <3>; 5315774b1e2SGeorge Stark clocks = <&clkc_periphs CLKID_PWM_A>, 5325774b1e2SGeorge Stark <&clkc_periphs CLKID_PWM_B>; 5335774b1e2SGeorge Stark power-domains = <&pwrc PWRC_I2C_ID>; 5345774b1e2SGeorge Stark status = "disabled"; 5355774b1e2SGeorge Stark }; 5365774b1e2SGeorge Stark 5375774b1e2SGeorge Stark pwm_cd: pwm@2800 { 5385774b1e2SGeorge Stark compatible = "amlogic,meson-a1-pwm", 5395774b1e2SGeorge Stark "amlogic,meson-s4-pwm"; 5405774b1e2SGeorge Stark reg = <0x0 0x2800 0x0 0x24>; 5415774b1e2SGeorge Stark #pwm-cells = <3>; 5425774b1e2SGeorge Stark clocks = <&clkc_periphs CLKID_PWM_C>, 5435774b1e2SGeorge Stark <&clkc_periphs CLKID_PWM_D>; 5445774b1e2SGeorge Stark power-domains = <&pwrc PWRC_I2C_ID>; 5455774b1e2SGeorge Stark status = "disabled"; 5465774b1e2SGeorge Stark }; 5475774b1e2SGeorge Stark 54892a24cebSGeorge Stark saradc: adc@2c00 { 54992a24cebSGeorge Stark compatible = "amlogic,meson-g12a-saradc", 55092a24cebSGeorge Stark "amlogic,meson-saradc"; 55192a24cebSGeorge Stark reg = <0x0 0x2c00 0x0 0x48>; 55292a24cebSGeorge Stark #io-channel-cells = <1>; 55392a24cebSGeorge Stark power-domains = <&pwrc PWRC_I2C_ID>; 55492a24cebSGeorge Stark interrupts = <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>; 55592a24cebSGeorge Stark clocks = <&xtal>, 55692a24cebSGeorge Stark <&clkc_periphs CLKID_SARADC_EN>, 55792a24cebSGeorge Stark <&clkc_periphs CLKID_SARADC>, 55892a24cebSGeorge Stark <&clkc_periphs CLKID_SARADC_SEL>; 55992a24cebSGeorge Stark clock-names = "clkin", "core", 56092a24cebSGeorge Stark "adc_clk", "adc_sel"; 56192a24cebSGeorge Stark status = "disabled"; 56292a24cebSGeorge Stark }; 56392a24cebSGeorge Stark 564f2d2200eSDmitry Rokosov i2c1: i2c@5c00 { 565f2d2200eSDmitry Rokosov compatible = "amlogic,meson-axg-i2c"; 566f2d2200eSDmitry Rokosov status = "disabled"; 567f2d2200eSDmitry Rokosov reg = <0x0 0x5c00 0x0 0x20>; 568f2d2200eSDmitry Rokosov interrupts = <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>; 569f2d2200eSDmitry Rokosov #address-cells = <1>; 570f2d2200eSDmitry Rokosov #size-cells = <0>; 571f2d2200eSDmitry Rokosov clocks = <&clkc_periphs CLKID_I2C_M_B>; 572f2d2200eSDmitry Rokosov power-domains = <&pwrc PWRC_I2C_ID>; 573f2d2200eSDmitry Rokosov }; 574f2d2200eSDmitry Rokosov 575f2d2200eSDmitry Rokosov i2c2: i2c@6800 { 576f2d2200eSDmitry Rokosov compatible = "amlogic,meson-axg-i2c"; 577f2d2200eSDmitry Rokosov status = "disabled"; 578f2d2200eSDmitry Rokosov reg = <0x0 0x6800 0x0 0x20>; 579f2d2200eSDmitry Rokosov interrupts = <GIC_SPI 76 IRQ_TYPE_EDGE_RISING>; 580f2d2200eSDmitry Rokosov #address-cells = <1>; 581f2d2200eSDmitry Rokosov #size-cells = <0>; 582f2d2200eSDmitry Rokosov clocks = <&clkc_periphs CLKID_I2C_M_C>; 583f2d2200eSDmitry Rokosov power-domains = <&pwrc PWRC_I2C_ID>; 584f2d2200eSDmitry Rokosov }; 585f2d2200eSDmitry Rokosov 586f2d2200eSDmitry Rokosov i2c3: i2c@6c00 { 587f2d2200eSDmitry Rokosov compatible = "amlogic,meson-axg-i2c"; 588f2d2200eSDmitry Rokosov status = "disabled"; 589f2d2200eSDmitry Rokosov reg = <0x0 0x6c00 0x0 0x20>; 590f2d2200eSDmitry Rokosov interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>; 591f2d2200eSDmitry Rokosov #address-cells = <1>; 592f2d2200eSDmitry Rokosov #size-cells = <0>; 593f2d2200eSDmitry Rokosov clocks = <&clkc_periphs CLKID_I2C_M_D>; 594f2d2200eSDmitry Rokosov power-domains = <&pwrc PWRC_I2C_ID>; 595f2d2200eSDmitry Rokosov }; 596f2d2200eSDmitry Rokosov 597d3261b54SDmitry Rokosov usb2_phy1: phy@4000 { 598d3261b54SDmitry Rokosov compatible = "amlogic,a1-usb2-phy"; 599d3261b54SDmitry Rokosov clocks = <&clkc_periphs CLKID_USB_PHY_IN>; 600d3261b54SDmitry Rokosov clock-names = "xtal"; 601d3261b54SDmitry Rokosov reg = <0x0 0x4000 0x0 0x60>; 602d3261b54SDmitry Rokosov resets = <&reset RESET_USBPHY>; 603d3261b54SDmitry Rokosov reset-names = "phy"; 604d3261b54SDmitry Rokosov #phy-cells = <0>; 605d3261b54SDmitry Rokosov power-domains = <&pwrc PWRC_USB_ID>; 606d3261b54SDmitry Rokosov }; 607d3261b54SDmitry Rokosov 608049d1411SDmitry Rokosov cpu_temp: temperature-sensor@4c00 { 609049d1411SDmitry Rokosov compatible = "amlogic,a1-cpu-thermal"; 610049d1411SDmitry Rokosov reg = <0x0 0x4c00 0x0 0x50>; 611049d1411SDmitry Rokosov interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; 612049d1411SDmitry Rokosov clocks = <&clkc_periphs CLKID_TS>; 613049d1411SDmitry Rokosov assigned-clocks = <&clkc_periphs CLKID_TS>; 614049d1411SDmitry Rokosov assigned-clock-rates = <500000>; 615049d1411SDmitry Rokosov #thermal-sensor-cells = <0>; 616049d1411SDmitry Rokosov amlogic,ao-secure = <&sec_AO>; 6177e3b4f56SGeorge Stark power-domains = <&pwrc PWRC_I2C_ID>; 618049d1411SDmitry Rokosov }; 619049d1411SDmitry Rokosov 6202466460aSAlexey Romanov hwrng: rng@5118 { 6212466460aSAlexey Romanov compatible = "amlogic,meson-rng"; 6222466460aSAlexey Romanov reg = <0x0 0x5118 0x0 0x4>; 6232466460aSAlexey Romanov power-domains = <&pwrc PWRC_OTP_ID>; 6242466460aSAlexey Romanov }; 6252466460aSAlexey Romanov 6264cc74a6bSAlexey Romanov sec_AO: ao-secure@5a20 { 6274cc74a6bSAlexey Romanov compatible = "amlogic,meson-gx-ao-secure", "syscon"; 6284cc74a6bSAlexey Romanov reg = <0x0 0x5a20 0x0 0x140>; 6294cc74a6bSAlexey Romanov amlogic,has-chip-id; 6304cc74a6bSAlexey Romanov }; 6314cc74a6bSAlexey Romanov 6325774b1e2SGeorge Stark pwm_ef: pwm@5400 { 6335774b1e2SGeorge Stark compatible = "amlogic,meson-a1-pwm", 6345774b1e2SGeorge Stark "amlogic,meson-s4-pwm"; 6355774b1e2SGeorge Stark reg = <0x0 0x5400 0x0 0x24>; 6365774b1e2SGeorge Stark #pwm-cells = <3>; 6375774b1e2SGeorge Stark clocks = <&clkc_periphs CLKID_PWM_E>, 6385774b1e2SGeorge Stark <&clkc_periphs CLKID_PWM_F>; 6395774b1e2SGeorge Stark power-domains = <&pwrc PWRC_I2C_ID>; 6405774b1e2SGeorge Stark status = "disabled"; 6415774b1e2SGeorge Stark }; 6425774b1e2SGeorge Stark 643af07cc67SDmitry Rokosov clkc_pll: pll-clock-controller@7c80 { 644af07cc67SDmitry Rokosov compatible = "amlogic,a1-pll-clkc"; 645af07cc67SDmitry Rokosov reg = <0 0x7c80 0 0x18c>; 646af07cc67SDmitry Rokosov #clock-cells = <1>; 647af07cc67SDmitry Rokosov clocks = <&clkc_periphs CLKID_FIXPLL_IN>, 648af07cc67SDmitry Rokosov <&clkc_periphs CLKID_HIFIPLL_IN>; 649af07cc67SDmitry Rokosov clock-names = "fixpll_in", "hifipll_in"; 650af07cc67SDmitry Rokosov }; 6514d860a98SJan Dakinevich 652ea99706aSNeil Armstrong sd_emmc: mmc@10000 { 6534d860a98SJan Dakinevich compatible = "amlogic,meson-axg-mmc"; 6544d860a98SJan Dakinevich reg = <0x0 0x10000 0x0 0x800>; 6554d860a98SJan Dakinevich interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; 6564d860a98SJan Dakinevich clocks = <&clkc_periphs CLKID_SD_EMMC_A>, 6574d860a98SJan Dakinevich <&clkc_periphs CLKID_SD_EMMC>, 6584d860a98SJan Dakinevich <&clkc_pll CLKID_FCLK_DIV2>; 6594d860a98SJan Dakinevich clock-names = "core", 6604d860a98SJan Dakinevich "clkin0", 6614d860a98SJan Dakinevich "clkin1"; 6624d860a98SJan Dakinevich assigned-clocks = <&clkc_periphs CLKID_SD_EMMC_SEL2>; 6634d860a98SJan Dakinevich assigned-clock-parents = <&xtal>; 6644d860a98SJan Dakinevich resets = <&reset RESET_SD_EMMC_A>; 6654d860a98SJan Dakinevich power-domains = <&pwrc PWRC_SD_EMMC_ID>; 6664d860a98SJan Dakinevich status = "disabled"; 6674d860a98SJan Dakinevich }; 668b255e126SJianxin Pan }; 669b255e126SJianxin Pan 670d3261b54SDmitry Rokosov usb: usb@fe004400 { 671d3261b54SDmitry Rokosov status = "disabled"; 672d3261b54SDmitry Rokosov compatible = "amlogic,meson-a1-usb-ctrl"; 673d3261b54SDmitry Rokosov reg = <0x0 0xfe004400 0x0 0xa0>; 674d3261b54SDmitry Rokosov interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; 675d3261b54SDmitry Rokosov #address-cells = <2>; 676d3261b54SDmitry Rokosov #size-cells = <2>; 677d3261b54SDmitry Rokosov ranges; 678d3261b54SDmitry Rokosov 679d3261b54SDmitry Rokosov clocks = <&clkc_periphs CLKID_USB_CTRL>, 680d3261b54SDmitry Rokosov <&clkc_periphs CLKID_USB_BUS>, 681d3261b54SDmitry Rokosov <&clkc_periphs CLKID_USB_CTRL_IN>; 682d3261b54SDmitry Rokosov clock-names = "usb_ctrl", "usb_bus", "xtal_usb_ctrl"; 683d1159418SAlexey Romanov assigned-clocks = <&clkc_periphs CLKID_USB_BUS>; 684d1159418SAlexey Romanov assigned-clock-rates = <64000000>; 685d3261b54SDmitry Rokosov resets = <&reset RESET_USBCTRL>; 686d3261b54SDmitry Rokosov 687d3261b54SDmitry Rokosov dr_mode = "otg"; 688d3261b54SDmitry Rokosov 689d3261b54SDmitry Rokosov phys = <&usb2_phy1>; 690d3261b54SDmitry Rokosov phy-names = "usb2-phy1"; 691d3261b54SDmitry Rokosov 692d3261b54SDmitry Rokosov dwc3: usb@ff400000 { 693d3261b54SDmitry Rokosov compatible = "snps,dwc3"; 694d3261b54SDmitry Rokosov reg = <0x0 0xff400000 0x0 0x100000>; 695d3261b54SDmitry Rokosov interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; 696d3261b54SDmitry Rokosov dr_mode = "host"; 697d3261b54SDmitry Rokosov snps,dis_u2_susphy_quirk; 698d3261b54SDmitry Rokosov snps,quirk-frame-length-adjustment = <0x20>; 699d3261b54SDmitry Rokosov snps,parkmode-disable-ss-quirk; 700d3261b54SDmitry Rokosov }; 701d3261b54SDmitry Rokosov 702d3261b54SDmitry Rokosov dwc2: usb@ff500000 { 703d3261b54SDmitry Rokosov compatible = "amlogic,meson-a1-usb", "snps,dwc2"; 704d3261b54SDmitry Rokosov reg = <0x0 0xff500000 0x0 0x40000>; 705d3261b54SDmitry Rokosov interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; 706d3261b54SDmitry Rokosov phys = <&usb2_phy1>; 707d3261b54SDmitry Rokosov phy-names = "usb2-phy"; 708d3261b54SDmitry Rokosov clocks = <&clkc_periphs CLKID_USB_PHY>; 709d3261b54SDmitry Rokosov clock-names = "otg"; 710d3261b54SDmitry Rokosov dr_mode = "peripheral"; 711d3261b54SDmitry Rokosov g-rx-fifo-size = <192>; 712d3261b54SDmitry Rokosov g-np-tx-fifo-size = <128>; 713d3261b54SDmitry Rokosov g-tx-fifo-size = <128 128 16 16 16>; 714d3261b54SDmitry Rokosov }; 715d3261b54SDmitry Rokosov }; 716d3261b54SDmitry Rokosov 717b255e126SJianxin Pan gic: interrupt-controller@ff901000 { 718b255e126SJianxin Pan compatible = "arm,gic-400"; 719b255e126SJianxin Pan reg = <0x0 0xff901000 0x0 0x1000>, 720b255e126SJianxin Pan <0x0 0xff902000 0x0 0x2000>, 721b255e126SJianxin Pan <0x0 0xff904000 0x0 0x2000>, 722b255e126SJianxin Pan <0x0 0xff906000 0x0 0x2000>; 723b255e126SJianxin Pan interrupt-controller; 724b255e126SJianxin Pan interrupts = <GIC_PPI 9 725b255e126SJianxin Pan (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>; 726b255e126SJianxin Pan #interrupt-cells = <3>; 727b255e126SJianxin Pan #address-cells = <0>; 728b255e126SJianxin Pan }; 729b255e126SJianxin Pan }; 730b255e126SJianxin Pan 731b255e126SJianxin Pan timer { 732b255e126SJianxin Pan compatible = "arm,armv8-timer"; 733b255e126SJianxin Pan interrupts = <GIC_PPI 13 734b255e126SJianxin Pan (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 735b255e126SJianxin Pan <GIC_PPI 14 736b255e126SJianxin Pan (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 737b255e126SJianxin Pan <GIC_PPI 11 738b255e126SJianxin Pan (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>, 739b255e126SJianxin Pan <GIC_PPI 10 740b255e126SJianxin Pan (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>; 741b255e126SJianxin Pan }; 742b255e126SJianxin Pan 743b255e126SJianxin Pan xtal: xtal-clk { 744b255e126SJianxin Pan compatible = "fixed-clock"; 745b255e126SJianxin Pan clock-frequency = <24000000>; 746b255e126SJianxin Pan clock-output-names = "xtal"; 747b255e126SJianxin Pan #clock-cells = <0>; 748b255e126SJianxin Pan }; 749b255e126SJianxin Pan}; 750