mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	Update OpenWRT
This commit is contained in:
		
							parent
							
								
									55c3e7cde4
								
							
						
					
					
						commit
						948aebf05a
					
				
					 1080 changed files with 8134 additions and 328613 deletions
				
			
		|  | @ -1,311 +0,0 @@ | |||
| /* | ||||
|  * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd | ||||
|  * | ||||
|  * This file is dual-licensed: you can use it either under the terms | ||||
|  * of the GPL or the X11 license, at your option. Note that this dual | ||||
|  * licensing only applies to this file, and not this project as a | ||||
|  * whole. | ||||
|  * | ||||
|  *  a) This library is free software; you can redistribute it and/or | ||||
|  *     modify it under the terms of the GNU General Public License as | ||||
|  *     published by the Free Software Foundation; either version 2 of the | ||||
|  *     License, or (at your option) any later version. | ||||
|  * | ||||
|  *     This library is distributed in the hope that it will be useful, | ||||
|  *     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  *     GNU General Public License for more details. | ||||
|  * | ||||
|  * Or, alternatively, | ||||
|  * | ||||
|  *  b) Permission is hereby granted, free of charge, to any person | ||||
|  *     obtaining a copy of this software and associated documentation | ||||
|  *     files (the "Software"), to deal in the Software without | ||||
|  *     restriction, including without limitation the rights to use, | ||||
|  *     copy, modify, merge, publish, distribute, sublicense, and/or | ||||
|  *     sell copies of the Software, and to permit persons to whom the | ||||
|  *     Software is furnished to do so, subject to the following | ||||
|  *     conditions: | ||||
|  * | ||||
|  *     The above copyright notice and this permission notice shall be | ||||
|  *     included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||||
|  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
|  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||
|  *     OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| #include <dt-bindings/clock/rockchip-ddr.h> | ||||
| #include <dt-bindings/memory/rk3328-dram.h> | ||||
| 
 | ||||
| / { | ||||
| 	ddr_timing: ddr_timing { | ||||
| 		compatible = "rockchip,ddr-timing"; | ||||
| 		ddr3_speed_bin = <DDR3_DEFAULT>; | ||||
| 		ddr4_speed_bin = <DDR4_DEFAULT>; | ||||
| 		pd_idle = <0>; | ||||
| 		sr_idle = <0>; | ||||
| 		sr_mc_gate_idle = <0>; | ||||
| 		srpd_lite_idle	= <0>; | ||||
| 		standby_idle = <0>; | ||||
| 
 | ||||
| 		auto_pd_dis_freq = <1066>; | ||||
| 		auto_sr_dis_freq = <800>; | ||||
| 		ddr3_dll_dis_freq = <300>; | ||||
| 		ddr4_dll_dis_freq = <625>; | ||||
| 		phy_dll_dis_freq = <400>; | ||||
| 
 | ||||
| 		ddr3_odt_dis_freq = <100>; | ||||
| 		phy_ddr3_odt_dis_freq = <100>; | ||||
| 		ddr3_drv = <DDR3_DS_40ohm>; | ||||
| 		ddr3_odt = <DDR3_ODT_120ohm>; | ||||
| 		phy_ddr3_ca_drv = <PHY_DDR3_RON_RTT_34ohm>; | ||||
| 		phy_ddr3_ck_drv = <PHY_DDR3_RON_RTT_45ohm>; | ||||
| 		phy_ddr3_dq_drv = <PHY_DDR3_RON_RTT_34ohm>; | ||||
| 		phy_ddr3_odt = <PHY_DDR3_RON_RTT_225ohm>; | ||||
| 
 | ||||
| 		lpddr3_odt_dis_freq = <666>; | ||||
| 		phy_lpddr3_odt_dis_freq = <666>; | ||||
| 		lpddr3_drv = <LP3_DS_40ohm>; | ||||
| 		lpddr3_odt = <LP3_ODT_240ohm>; | ||||
| 		phy_lpddr3_ca_drv = <PHY_DDR4_LPDDR3_RON_RTT_34ohm>; | ||||
| 		phy_lpddr3_ck_drv = <PHY_DDR4_LPDDR3_RON_RTT_43ohm>; | ||||
| 		phy_lpddr3_dq_drv = <PHY_DDR4_LPDDR3_RON_RTT_34ohm>; | ||||
| 		phy_lpddr3_odt = <PHY_DDR4_LPDDR3_RON_RTT_240ohm>; | ||||
| 
 | ||||
| 		lpddr4_odt_dis_freq = <800>; | ||||
| 		phy_lpddr4_odt_dis_freq = <800>; | ||||
| 		lpddr4_drv = <LP4_PDDS_60ohm>; | ||||
| 		lpddr4_dq_odt = <LP4_DQ_ODT_40ohm>; | ||||
| 		lpddr4_ca_odt = <LP4_CA_ODT_40ohm>; | ||||
| 		phy_lpddr4_ca_drv = <PHY_DDR4_LPDDR3_RON_RTT_40ohm>; | ||||
| 		phy_lpddr4_ck_cs_drv = <PHY_DDR4_LPDDR3_RON_RTT_80ohm>; | ||||
| 		phy_lpddr4_dq_drv = <PHY_DDR4_LPDDR3_RON_RTT_80ohm>; | ||||
| 		phy_lpddr4_odt = <PHY_DDR4_LPDDR3_RON_RTT_60ohm>; | ||||
| 
 | ||||
| 		ddr4_odt_dis_freq = <666>; | ||||
| 		phy_ddr4_odt_dis_freq = <666>; | ||||
| 		ddr4_drv = <DDR4_DS_34ohm>; | ||||
| 		ddr4_odt = <DDR4_RTT_NOM_240ohm>; | ||||
| 		phy_ddr4_ca_drv = <PHY_DDR4_LPDDR3_RON_RTT_34ohm>; | ||||
| 		phy_ddr4_ck_drv = <PHY_DDR4_LPDDR3_RON_RTT_43ohm>; | ||||
| 		phy_ddr4_dq_drv = <PHY_DDR4_LPDDR3_RON_RTT_34ohm>; | ||||
| 		phy_ddr4_odt = <PHY_DDR4_LPDDR3_RON_RTT_240ohm>; | ||||
| 
 | ||||
| 		/* CA de-skew, one step is 47.8ps, range 0-15 */ | ||||
| 		ddr3a1_ddr4a9_de-skew = <7>; | ||||
| 		ddr3a0_ddr4a10_de-skew = <7>; | ||||
| 		ddr3a3_ddr4a6_de-skew = <8>; | ||||
| 		ddr3a2_ddr4a4_de-skew = <8>; | ||||
| 		ddr3a5_ddr4a8_de-skew = <7>; | ||||
| 		ddr3a4_ddr4a5_de-skew = <9>; | ||||
| 		ddr3a7_ddr4a11_de-skew = <7>; | ||||
| 		ddr3a6_ddr4a7_de-skew = <9>; | ||||
| 		ddr3a9_ddr4a0_de-skew = <8>; | ||||
| 		ddr3a8_ddr4a13_de-skew = <7>; | ||||
| 		ddr3a11_ddr4a3_de-skew = <9>; | ||||
| 		ddr3a10_ddr4cs0_de-skew = <7>; | ||||
| 		ddr3a13_ddr4a2_de-skew = <8>; | ||||
| 		ddr3a12_ddr4ba1_de-skew = <7>; | ||||
| 		ddr3a15_ddr4odt0_de-skew = <7>; | ||||
| 		ddr3a14_ddr4a1_de-skew = <8>; | ||||
| 		ddr3ba1_ddr4a15_de-skew = <7>; | ||||
| 		ddr3ba0_ddr4bg0_de-skew = <7>; | ||||
| 		ddr3ras_ddr4cke_de-skew = <7>; | ||||
| 		ddr3ba2_ddr4ba0_de-skew = <8>; | ||||
| 		ddr3we_ddr4bg1_de-skew = <8>; | ||||
| 		ddr3cas_ddr4a12_de-skew = <7>; | ||||
| 		ddr3ckn_ddr4ckn_de-skew = <8>; | ||||
| 		ddr3ckp_ddr4ckp_de-skew = <8>; | ||||
| 		ddr3cke_ddr4a16_de-skew = <8>; | ||||
| 		ddr3odt0_ddr4a14_de-skew = <7>; | ||||
| 		ddr3cs0_ddr4act_de-skew = <8>; | ||||
| 		ddr3reset_ddr4reset_de-skew = <7>; | ||||
| 		ddr3cs1_ddr4cs1_de-skew = <7>; | ||||
| 		ddr3odt1_ddr4odt1_de-skew = <7>; | ||||
| 
 | ||||
| 		/* DATA de-skew | ||||
| 		 * RX one step is 25.1ps, range 0-15 | ||||
| 		 * TX one step is 47.8ps, range 0-15 | ||||
| 		 */ | ||||
| 		cs0_dm0_rx_de-skew = <7>; | ||||
| 		cs0_dm0_tx_de-skew = <8>; | ||||
| 		cs0_dq0_rx_de-skew = <7>; | ||||
| 		cs0_dq0_tx_de-skew = <8>; | ||||
| 		cs0_dq1_rx_de-skew = <7>; | ||||
| 		cs0_dq1_tx_de-skew = <8>; | ||||
| 		cs0_dq2_rx_de-skew = <7>; | ||||
| 		cs0_dq2_tx_de-skew = <8>; | ||||
| 		cs0_dq3_rx_de-skew = <7>; | ||||
| 		cs0_dq3_tx_de-skew = <8>; | ||||
| 		cs0_dq4_rx_de-skew = <7>; | ||||
| 		cs0_dq4_tx_de-skew = <8>; | ||||
| 		cs0_dq5_rx_de-skew = <7>; | ||||
| 		cs0_dq5_tx_de-skew = <8>; | ||||
| 		cs0_dq6_rx_de-skew = <7>; | ||||
| 		cs0_dq6_tx_de-skew = <8>; | ||||
| 		cs0_dq7_rx_de-skew = <7>; | ||||
| 		cs0_dq7_tx_de-skew = <8>; | ||||
| 		cs0_dqs0_rx_de-skew = <6>; | ||||
| 		cs0_dqs0p_tx_de-skew = <9>; | ||||
| 		cs0_dqs0n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs0_dm1_rx_de-skew = <7>; | ||||
| 		cs0_dm1_tx_de-skew = <7>; | ||||
| 		cs0_dq8_rx_de-skew = <7>; | ||||
| 		cs0_dq8_tx_de-skew = <8>; | ||||
| 		cs0_dq9_rx_de-skew = <7>; | ||||
| 		cs0_dq9_tx_de-skew = <7>; | ||||
| 		cs0_dq10_rx_de-skew = <7>; | ||||
| 		cs0_dq10_tx_de-skew = <8>; | ||||
| 		cs0_dq11_rx_de-skew = <7>; | ||||
| 		cs0_dq11_tx_de-skew = <7>; | ||||
| 		cs0_dq12_rx_de-skew = <7>; | ||||
| 		cs0_dq12_tx_de-skew = <8>; | ||||
| 		cs0_dq13_rx_de-skew = <7>; | ||||
| 		cs0_dq13_tx_de-skew = <7>; | ||||
| 		cs0_dq14_rx_de-skew = <7>; | ||||
| 		cs0_dq14_tx_de-skew = <8>; | ||||
| 		cs0_dq15_rx_de-skew = <7>; | ||||
| 		cs0_dq15_tx_de-skew = <7>; | ||||
| 		cs0_dqs1_rx_de-skew = <7>; | ||||
| 		cs0_dqs1p_tx_de-skew = <9>; | ||||
| 		cs0_dqs1n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs0_dm2_rx_de-skew = <7>; | ||||
| 		cs0_dm2_tx_de-skew = <8>; | ||||
| 		cs0_dq16_rx_de-skew = <7>; | ||||
| 		cs0_dq16_tx_de-skew = <8>; | ||||
| 		cs0_dq17_rx_de-skew = <7>; | ||||
| 		cs0_dq17_tx_de-skew = <8>; | ||||
| 		cs0_dq18_rx_de-skew = <7>; | ||||
| 		cs0_dq18_tx_de-skew = <8>; | ||||
| 		cs0_dq19_rx_de-skew = <7>; | ||||
| 		cs0_dq19_tx_de-skew = <8>; | ||||
| 		cs0_dq20_rx_de-skew = <7>; | ||||
| 		cs0_dq20_tx_de-skew = <8>; | ||||
| 		cs0_dq21_rx_de-skew = <7>; | ||||
| 		cs0_dq21_tx_de-skew = <8>; | ||||
| 		cs0_dq22_rx_de-skew = <7>; | ||||
| 		cs0_dq22_tx_de-skew = <8>; | ||||
| 		cs0_dq23_rx_de-skew = <7>; | ||||
| 		cs0_dq23_tx_de-skew = <8>; | ||||
| 		cs0_dqs2_rx_de-skew = <6>; | ||||
| 		cs0_dqs2p_tx_de-skew = <9>; | ||||
| 		cs0_dqs2n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs0_dm3_rx_de-skew = <7>; | ||||
| 		cs0_dm3_tx_de-skew = <7>; | ||||
| 		cs0_dq24_rx_de-skew = <7>; | ||||
| 		cs0_dq24_tx_de-skew = <8>; | ||||
| 		cs0_dq25_rx_de-skew = <7>; | ||||
| 		cs0_dq25_tx_de-skew = <7>; | ||||
| 		cs0_dq26_rx_de-skew = <7>; | ||||
| 		cs0_dq26_tx_de-skew = <7>; | ||||
| 		cs0_dq27_rx_de-skew = <7>; | ||||
| 		cs0_dq27_tx_de-skew = <7>; | ||||
| 		cs0_dq28_rx_de-skew = <7>; | ||||
| 		cs0_dq28_tx_de-skew = <7>; | ||||
| 		cs0_dq29_rx_de-skew = <7>; | ||||
| 		cs0_dq29_tx_de-skew = <7>; | ||||
| 		cs0_dq30_rx_de-skew = <7>; | ||||
| 		cs0_dq30_tx_de-skew = <7>; | ||||
| 		cs0_dq31_rx_de-skew = <7>; | ||||
| 		cs0_dq31_tx_de-skew = <7>; | ||||
| 		cs0_dqs3_rx_de-skew = <7>; | ||||
| 		cs0_dqs3p_tx_de-skew = <9>; | ||||
| 		cs0_dqs3n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs1_dm0_rx_de-skew = <7>; | ||||
| 		cs1_dm0_tx_de-skew = <8>; | ||||
| 		cs1_dq0_rx_de-skew = <7>; | ||||
| 		cs1_dq0_tx_de-skew = <8>; | ||||
| 		cs1_dq1_rx_de-skew = <7>; | ||||
| 		cs1_dq1_tx_de-skew = <8>; | ||||
| 		cs1_dq2_rx_de-skew = <7>; | ||||
| 		cs1_dq2_tx_de-skew = <8>; | ||||
| 		cs1_dq3_rx_de-skew = <7>; | ||||
| 		cs1_dq3_tx_de-skew = <8>; | ||||
| 		cs1_dq4_rx_de-skew = <7>; | ||||
| 		cs1_dq4_tx_de-skew = <8>; | ||||
| 		cs1_dq5_rx_de-skew = <7>; | ||||
| 		cs1_dq5_tx_de-skew = <8>; | ||||
| 		cs1_dq6_rx_de-skew = <7>; | ||||
| 		cs1_dq6_tx_de-skew = <8>; | ||||
| 		cs1_dq7_rx_de-skew = <7>; | ||||
| 		cs1_dq7_tx_de-skew = <8>; | ||||
| 		cs1_dqs0_rx_de-skew = <6>; | ||||
| 		cs1_dqs0p_tx_de-skew = <9>; | ||||
| 		cs1_dqs0n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs1_dm1_rx_de-skew = <7>; | ||||
| 		cs1_dm1_tx_de-skew = <7>; | ||||
| 		cs1_dq8_rx_de-skew = <7>; | ||||
| 		cs1_dq8_tx_de-skew = <8>; | ||||
| 		cs1_dq9_rx_de-skew = <7>; | ||||
| 		cs1_dq9_tx_de-skew = <7>; | ||||
| 		cs1_dq10_rx_de-skew = <7>; | ||||
| 		cs1_dq10_tx_de-skew = <8>; | ||||
| 		cs1_dq11_rx_de-skew = <7>; | ||||
| 		cs1_dq11_tx_de-skew = <7>; | ||||
| 		cs1_dq12_rx_de-skew = <7>; | ||||
| 		cs1_dq12_tx_de-skew = <8>; | ||||
| 		cs1_dq13_rx_de-skew = <7>; | ||||
| 		cs1_dq13_tx_de-skew = <7>; | ||||
| 		cs1_dq14_rx_de-skew = <7>; | ||||
| 		cs1_dq14_tx_de-skew = <8>; | ||||
| 		cs1_dq15_rx_de-skew = <7>; | ||||
| 		cs1_dq15_tx_de-skew = <7>; | ||||
| 		cs1_dqs1_rx_de-skew = <7>; | ||||
| 		cs1_dqs1p_tx_de-skew = <9>; | ||||
| 		cs1_dqs1n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs1_dm2_rx_de-skew = <7>; | ||||
| 		cs1_dm2_tx_de-skew = <8>; | ||||
| 		cs1_dq16_rx_de-skew = <7>; | ||||
| 		cs1_dq16_tx_de-skew = <8>; | ||||
| 		cs1_dq17_rx_de-skew = <7>; | ||||
| 		cs1_dq17_tx_de-skew = <8>; | ||||
| 		cs1_dq18_rx_de-skew = <7>; | ||||
| 		cs1_dq18_tx_de-skew = <8>; | ||||
| 		cs1_dq19_rx_de-skew = <7>; | ||||
| 		cs1_dq19_tx_de-skew = <8>; | ||||
| 		cs1_dq20_rx_de-skew = <7>; | ||||
| 		cs1_dq20_tx_de-skew = <8>; | ||||
| 		cs1_dq21_rx_de-skew = <7>; | ||||
| 		cs1_dq21_tx_de-skew = <8>; | ||||
| 		cs1_dq22_rx_de-skew = <7>; | ||||
| 		cs1_dq22_tx_de-skew = <8>; | ||||
| 		cs1_dq23_rx_de-skew = <7>; | ||||
| 		cs1_dq23_tx_de-skew = <8>; | ||||
| 		cs1_dqs2_rx_de-skew = <6>; | ||||
| 		cs1_dqs2p_tx_de-skew = <9>; | ||||
| 		cs1_dqs2n_tx_de-skew = <9>; | ||||
| 
 | ||||
| 		cs1_dm3_rx_de-skew = <7>; | ||||
| 		cs1_dm3_tx_de-skew = <7>; | ||||
| 		cs1_dq24_rx_de-skew = <7>; | ||||
| 		cs1_dq24_tx_de-skew = <8>; | ||||
| 		cs1_dq25_rx_de-skew = <7>; | ||||
| 		cs1_dq25_tx_de-skew = <7>; | ||||
| 		cs1_dq26_rx_de-skew = <7>; | ||||
| 		cs1_dq26_tx_de-skew = <7>; | ||||
| 		cs1_dq27_rx_de-skew = <7>; | ||||
| 		cs1_dq27_tx_de-skew = <7>; | ||||
| 		cs1_dq28_rx_de-skew = <7>; | ||||
| 		cs1_dq28_tx_de-skew = <7>; | ||||
| 		cs1_dq29_rx_de-skew = <7>; | ||||
| 		cs1_dq29_tx_de-skew = <7>; | ||||
| 		cs1_dq30_rx_de-skew = <7>; | ||||
| 		cs1_dq30_tx_de-skew = <7>; | ||||
| 		cs1_dq31_rx_de-skew = <7>; | ||||
| 		cs1_dq31_tx_de-skew = <7>; | ||||
| 		cs1_dqs3_rx_de-skew = <7>; | ||||
| 		cs1_dqs3p_tx_de-skew = <9>; | ||||
| 		cs1_dqs3n_tx_de-skew = <9>; | ||||
| 	}; | ||||
| }; | ||||
|  | @ -1,733 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/pwm/pwm.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include "rk3399.dtsi" | ||||
| #include "rk3399-opp.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Dilusense DLFR100"; | ||||
| 	compatible = "dilusense,dlfr100", "rockchip,rk3399"; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	clkin_gmac: external-gmac-clock { | ||||
| 		compatible = "fixed-clock"; | ||||
| 		clock-frequency = <125000000>; | ||||
| 		clock-output-names = "clkin_gmac"; | ||||
| 		#clock-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		clocks = <&rk808 1>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&wifi_enable_h>; | ||||
| 		reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_host: vcc5v0-host-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_host_en>; | ||||
| 		regulator-name = "vcc5v0_host"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_phy: vcc-phy-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_phy"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sd: vcc-sd { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc_sd_h>; | ||||
| 		regulator-name = "vcc_sd"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	adc-keys { | ||||
| 		compatible = "adc-keys"; | ||||
| 		io-channels = <&saradc 1>; | ||||
| 		io-channel-names = "buttons"; | ||||
| 		keyup-threshold-microvolt = <1800000>; | ||||
| 		poll-interval = <100>; | ||||
| 
 | ||||
| 		button-up { | ||||
| 			label = "Volume Up"; | ||||
| 			linux,code = <KEY_VOLUMEUP>; | ||||
| 			press-threshold-microvolt = <100000>; | ||||
| 		}; | ||||
| 
 | ||||
| 		button-down { | ||||
| 			label = "Volume Down"; | ||||
| 			linux,code = <KEY_VOLUMEDOWN>; | ||||
| 			press-threshold-microvolt = <300000>; | ||||
| 		}; | ||||
| 
 | ||||
| 		back { | ||||
| 			label = "Back"; | ||||
| 			linux,code = <KEY_BACK>; | ||||
| 			press-threshold-microvolt = <985000>; | ||||
| 		}; | ||||
| 
 | ||||
| 		menu { | ||||
| 			label = "Menu"; | ||||
| 			linux,code = <KEY_MENU>; | ||||
| 			press-threshold-microvolt = <0x1314000>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		autorepeat; | ||||
| 		pinctrl-0 = <&pwr_btn>; | ||||
| 
 | ||||
| 		power { | ||||
| 			debounce-interval = <100>; | ||||
| 			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; | ||||
| 			label = "GPIO Key Power"; | ||||
| 			linux,code = <KEY_POWER>; | ||||
| 			wakeup-source; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rt5640-sound { | ||||
| 		compatible = "simple-audio-card"; | ||||
| 		simple-audio-card,name = "realtek,rt5640-codec"; | ||||
| 		simple-audio-card,format = "i2s"; | ||||
| 		simple-audio-card,mclk-fs = <256>; | ||||
| 		simple-audio-card,widgets = | ||||
| 			"Microphone", "Mic Jack", | ||||
| 			"Headphone", "Headphones"; | ||||
| 		simple-audio-card,routing = | ||||
| 			"Mic Jack", "micbias1", | ||||
| 			"Headphones", "HPOL", | ||||
| 			"Headphones", "HPOR"; | ||||
| 		simple-audio-card,cpu { | ||||
| 			sound-dai = <&i2s0>; | ||||
| 		}; | ||||
| 		simple-audio-card,codec { | ||||
| 			sound-dai = <&rt5640>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l0 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l1 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l2 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l3 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b0 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b1 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &emmc_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac { | ||||
| 	assigned-clocks = <&cru SCLK_RMII_SRC>; | ||||
| 	assigned-clock-parents = <&clkin_gmac>; | ||||
| 	clock_in_out = "input"; | ||||
| 	phy-supply = <&vcc_phy>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	phy-handle = <&rtl8211e>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&rgmii_pins>, <&phy_intb>, <&phy_rstb>; | ||||
| 	tx_delay = <0x28>; | ||||
| 	rx_delay = <0x11>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 
 | ||||
| 		rtl8211e: ethernet-phy@1 { | ||||
| 			reg = <1>; | ||||
| 			interrupt-parent = <&gpio3>; | ||||
| 			interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	rk808: pmic@1b { | ||||
| 		compatible = "rockchip,rk808"; | ||||
| 		reg = <0x1b>; | ||||
| 		interrupt-parent = <&gpio1>; | ||||
| 		interrupts = <21 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int_l &pmic_dvs2>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-output-names = "rk808-clkout1", "rk808-clkout2"; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 		vcc10-supply = <&vcc3v3_sys>; | ||||
| 		vcc11-supply = <&vcc3v3_sys>; | ||||
| 		vcc12-supply = <&vcc3v3_sys>; | ||||
| 		vddio-supply = <&vcc1v8_pmu>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_center: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_center"; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_cpu_l: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_cpu_l"; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG4 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc1v8_dvp: LDO_REG1 { | ||||
| 				regulator-name = "vcc1v8_dvp"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v0_tp: LDO_REG2 { | ||||
| 				regulator-name = "vcc3v0_tp"; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc1v8_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vcc1v8_pmu"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_sdio: LDO_REG4 { | ||||
| 				regulator-name = "vcc_sdio"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca3v0_codec: LDO_REG5 { | ||||
| 				regulator-name = "vcca3v0_codec"; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v5: LDO_REG6 { | ||||
| 				regulator-name = "vcc_1v5"; | ||||
| 				regulator-min-microvolt = <1500000>; | ||||
| 				regulator-max-microvolt = <1500000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1500000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_codec: LDO_REG7 { | ||||
| 				regulator-name = "vcca1v8_codec"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v0: LDO_REG8 { | ||||
| 				regulator-name = "vcc_3v0"; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc3v3_s3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s0: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_s0"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_cpu_b: regulator@40 { | ||||
| 		compatible = "silergy,syr827"; | ||||
| 		reg = <0x40>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		pinctrl-0 = <&vsel1_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		regulator-name = "vdd_cpu_b"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-initial-state = <3>; | ||||
| 		vsel-gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_gpu: regulator@41 { | ||||
| 		compatible = "silergy,syr828"; | ||||
| 		reg = <0x41>; | ||||
| 		pinctrl-0 = <&vsel2_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_gpu"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-initial-state = <3>; | ||||
| 		vsel-gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	isl1208@6f { | ||||
| 		compatible = "isil,isl1208"; | ||||
| 		reg = <0x6f>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c1 { | ||||
| 	i2c-scl-rising-time-ns = <300>; | ||||
| 	i2c-scl-falling-time-ns = <15>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	rt5640: rt5640@1c { | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		compatible = "realtek,rt5640"; | ||||
| 		reg = <0x1c>; | ||||
| 		realtek,in1-differential; | ||||
| 		pinctrl-0 = <&i2s_8ch_mclk>; | ||||
| 		clocks = <&cru SCLK_I2S_8CH_OUT>; | ||||
| 		clock-names = "mclk"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c3 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s0 { | ||||
| 	rockchip,playback-channels = <8>; | ||||
| 	rockchip,capture-channels = <8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &io_domains { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	bt656-supply = <&vcc_3v0>; | ||||
| 	audio-supply = <&vcca1v8_codec>; | ||||
| 	sdmmc-supply = <&vcc_sdio>; | ||||
| 	gpio1830-supply = <&vcc_3v0>; | ||||
| }; | ||||
| 
 | ||||
| &pcie_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie0 { | ||||
| 	ep-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; | ||||
| 	max-link-speed = <1>; | ||||
| 	num-lanes = <1>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie_clkreqn_cpm>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0 { | ||||
| 		reg = <0x00000000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		pcie-eth@0,0 { | ||||
| 			compatible = "realtek,r8168"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 			realtek,led-data = <0x87>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	buttons { | ||||
| 		pwr_btn: pwr-btn { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	i2s0 { | ||||
| 		i2s_8ch_mclk: i2s-8ch-mclk { | ||||
| 			rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int_l: pmic-int-l { | ||||
| 			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel1_pin: vsel1-pin { | ||||
| 			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel2_pin: vsel2-pin { | ||||
| 			rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pmic_dvs2:pmic-dvs2 { | ||||
| 			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio-pwrseq { | ||||
| 		wifi_enable_h: wifi-enable-h { | ||||
| 			rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb2 { | ||||
| 		vcc5v0_host_en: vcc5v0-host-en { | ||||
| 			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sd { | ||||
| 		vcc_sd_h: vcc-sd-h { | ||||
| 			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	gmac { | ||||
| 		phy_intb: phy-intb { | ||||
| 			rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		phy_rstb: phy-rstb { | ||||
| 			rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pwm0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm3 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdio0 { | ||||
| 	bus-width = <4>; | ||||
| 	disable-wp; | ||||
| 	cap-sd-highspeed; | ||||
| 	cap-sdio-irq; | ||||
| 	keep-power-in-suspend; | ||||
| 	clock-frequency = <50000000>; | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cap-mmc-highspeed; | ||||
| 	clock-frequency = <150000000>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_cd>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc_sd>; | ||||
| 	vqmmc-supply = <&vcc_sdio>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	mmc-hs400-1_8v; | ||||
| 	mmc-hs400-enhanced-strobe; | ||||
| 	non-removable; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	/* tshut mode 0:CRU 1:GPIO */ | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	/* tshut polarity 0:LOW 1:HIGH */ | ||||
| 	rockchip,hw-tshut-polarity = <1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart0 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&uart0_xfer &uart0_cts>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_0 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_1 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &vopb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopb_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,664 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include "rk3399.dtsi" | ||||
| #include "rk3399-opp.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "SHAREVDI GuangMiao G4C"; | ||||
| 	compatible = "sharevdi,guangmiao-g4c", "rockchip,rk3399"; | ||||
| 
 | ||||
| 	/delete-node/ display-subsystem; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		led-boot = &status_led; | ||||
| 		led-failsafe = &status_led; | ||||
| 		led-running = &status_led; | ||||
| 		led-upgrade = &status_led; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	clkin_gmac: external-gmac-clock { | ||||
| 		compatible = "fixed-clock"; | ||||
| 		clock-frequency = <125000000>; | ||||
| 		clock-output-names = "clkin_gmac"; | ||||
| 		#clock-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sys: vcc-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc_sys"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_0v9: vcc-0v9 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <900000>; | ||||
| 		regulator-max-microvolt = <900000>; | ||||
| 		regulator-name = "vcc_0v9"; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_host0: vcc5v0-host0 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-name = "vcc5v0_host0"; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_log: vdd-log { | ||||
| 		compatible = "pwm-regulator"; | ||||
| 		pwms = <&pwm2 0 25000 1>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1400000>; | ||||
| 		regulator-name = "vdd_log"; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&reset_button_pin>; | ||||
| 
 | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			debounce-interval = <100>; | ||||
| 			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&lan_led_pin>, <&status_led_pin>, <&wan_led_pin>; | ||||
| 
 | ||||
| 		lan_led: led-lan { | ||||
| 			gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:lan"; | ||||
| 		}; | ||||
| 
 | ||||
| 		status_led: led-status { | ||||
| 			gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:status"; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led: led-wan { | ||||
| 			gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:wan"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b0 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b1 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l0 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l1 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l2 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l3 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &emmc_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac { | ||||
| 	assigned-clock-parents = <&clkin_gmac>; | ||||
| 	assigned-clocks = <&cru SCLK_RMII_SRC>; | ||||
| 	clock_in_out = "input"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&rgmii_pins>, <&phy_intb>, <&phy_pmeb>, <&phy_rstb>; | ||||
| 	phy-handle = <&rtl8211e>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	phy-supply = <&vcc3v3_s3>; | ||||
| 	tx_delay = <0x28>; | ||||
| 	rx_delay = <0x11>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 
 | ||||
| 		rtl8211e: ethernet-phy@1 { | ||||
| 			reg = <1>; | ||||
| 			interrupt-parent = <&gpio3>; | ||||
| 			interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	clock-frequency = <400000>; | ||||
| 	i2c-scl-rising-time-ns = <160>; | ||||
| 	i2c-scl-falling-time-ns = <30>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu_b: regulator@40 { | ||||
| 		compatible = "silergy,syr827"; | ||||
| 		reg = <0x40>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&cpu_b_sleep>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-name = "vdd_cpu_b"; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_gpu: regulator@41 { | ||||
| 		compatible = "silergy,syr828"; | ||||
| 		reg = <0x41>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&gpu_sleep>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-name = "vdd_gpu"; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk808: pmic@1b { | ||||
| 		compatible = "rockchip,rk808"; | ||||
| 		reg = <0x1b>; | ||||
| 		clock-output-names = "rtc_clko_soc", "rtc_clko_wifi"; | ||||
| 		#clock-cells = <1>; | ||||
| 		interrupt-parent = <&gpio1>; | ||||
| 		interrupts = <21 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int_l>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc_sys>; | ||||
| 		vcc2-supply = <&vcc_sys>; | ||||
| 		vcc3-supply = <&vcc_sys>; | ||||
| 		vcc4-supply = <&vcc_sys>; | ||||
| 		vcc6-supply = <&vcc_sys>; | ||||
| 		vcc7-supply = <&vcc_sys>; | ||||
| 		vcc8-supply = <&vcc_3v0>; | ||||
| 		vcc9-supply = <&vcc_sys>; | ||||
| 		vcc10-supply = <&vcc_sys>; | ||||
| 		vcc11-supply = <&vcc_sys>; | ||||
| 		vcc12-supply = <&vcc_sys>; | ||||
| 		vddio-supply = <&vcc_3v0>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_center: DCDC_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_center"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_cpu_l: DCDC_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_cpu_l"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_vldo1: LDO_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_vldo1"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_vldo2: LDO_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_vldo2"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_sdio: LDO_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vcc_sdio"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v0_sd: LDO_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-name = "vcc3v0_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v5: LDO_REG6 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1500000>; | ||||
| 				regulator-max-microvolt = <1500000>; | ||||
| 				regulator-name = "vcc_1v5"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1500000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_codec: LDO_REG7 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_codec"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v0: LDO_REG8 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				regulator-name = "vcc_3v0"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s3: SWITCH_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_s3"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s0: SWITCH_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_s0"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c3 { | ||||
| 	i2c-scl-rising-time-ns = <450>; | ||||
| 	i2c-scl-falling-time-ns = <15>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &io_domains { | ||||
| 	bt656-supply = <&vcc_1v8>; | ||||
| 	audio-supply = <&vcca1v8_codec>; | ||||
| 	sdmmc-supply = <&vcc_sdio>; | ||||
| 	gpio1830-supply = <&vcc_3v0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie_phy { | ||||
| 	assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>; | ||||
| 	assigned-clock-rates = <100000000>; | ||||
| 	assigned-clocks = <&cru SCLK_PCIEPHY_REF>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie0 { | ||||
| 	ep-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; | ||||
| 	max-link-speed = <1>; | ||||
| 	num-lanes = <1>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie_clkreqnb_cpm>; | ||||
| 	vpcie0v9-supply = <&vcc_0v9>; | ||||
| 	vpcie1v8-supply = <&vcca_1v8>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_sys>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0 { | ||||
| 		reg = <0x00000000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		pcie-eth@0,0 { | ||||
| 			compatible = "realtek,r8168"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 
 | ||||
| 			realtek,led-data = <0x87>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	gpio-leds { | ||||
| 		lan_led_pin: lan-led-pin { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		status_led_pin: status-led-pin { | ||||
| 			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led_pin: wan-led-pin { | ||||
| 			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	gmac { | ||||
| 		phy_intb: phy-intb { | ||||
| 			rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		phy_pmeb: phy-pmeb { | ||||
| 			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		phy_rstb: phy-rstb { | ||||
| 			rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		cpu_b_sleep: cpu-b-sleep { | ||||
| 			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		gpu_sleep: gpu-sleep { | ||||
| 			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pmic_int_l: pmic-int-l { | ||||
| 			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rockchip-key { | ||||
| 		reset_button_pin: reset-button-pin { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio { | ||||
| 		bt_reg_on_h: bt-reg-on-h { | ||||
| 			/* external pullup to VCC1V8_PMUPLL */ | ||||
| 			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdmmc { | ||||
| 		sdmmc0_det_l: sdmmc0-det-l { | ||||
| 			rockchip,pins = <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmu1830-supply = <&vcc_3v0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	pinctrl-names = "active"; | ||||
| 	pinctrl-0 = <&pwm2_pin_pull_down>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcc_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	non-removable; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc { | ||||
| 	bus-width = <4>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc0_det_l>; | ||||
| 	vqmmc-supply = <&vcc_sdio>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_host0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_host0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_0 { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_1 { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopb_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,837 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/input/linux-event-codes.h> | ||||
| #include "rk3399.dtsi" | ||||
| #include "rk3399-opp.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "SHAREVDI H3399PC"; | ||||
| 	compatible = "sharevdi,h3399pc", "rockchip,rk3399"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		mmc0 = &sdio0; | ||||
| 		mmc1 = &sdmmc; | ||||
| 		mmc2 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	clkin_gmac: external-gmac-clock { | ||||
| 		compatible = "fixed-clock"; | ||||
| 		clock-frequency = <125000000>; | ||||
| 		clock-output-names = "clkin_gmac"; | ||||
| 		#clock-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	dc_12v: dc-12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "dc_12v"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		autorepeat; | ||||
| 
 | ||||
| 		power { | ||||
| 			debounce-interval = <100>; | ||||
| 			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; | ||||
| 			label = "GPIO Key Power"; | ||||
| 			linux,code = <KEY_POWER>; | ||||
| 			wakeup-source; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&work_led_pin>, <&diy_led_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 
 | ||||
| 		work_led: led-0 { | ||||
| 			label = "work"; | ||||
| 			default-state = "on"; | ||||
| 			gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 
 | ||||
| 		diy_led: led-1 { | ||||
| 			label = "diy"; | ||||
| 			default-state = "off"; | ||||
| 			gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sound: sound { | ||||
| 		compatible = "audio-graph-card"; | ||||
| 		label = "Analog"; | ||||
| 		dais = <&i2s0_p0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sound-dit { | ||||
| 		compatible = "audio-graph-card"; | ||||
| 		label = "SPDIF"; | ||||
| 		dais = <&spdif_p0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	spdif-dit { | ||||
| 		compatible = "linux,spdif-dit"; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 
 | ||||
| 		port { | ||||
| 			dit_p0_0: endpoint { | ||||
| 				remote-endpoint = <&spdif_p0_0>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		clocks = <&rk808 1>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&wifi_enable_h>; | ||||
| 
 | ||||
| 		/* | ||||
| 		 * On the module itself this is one of these (depending | ||||
| 		 * on the actual card populated): | ||||
| 		 * - SDIO_RESET_L_WL_REG_ON | ||||
| 		 * - PDN (power down when low) | ||||
| 		 */ | ||||
| 		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sound-dit { | ||||
| 		compatible = "audio-graph-card"; | ||||
| 		label = "SPDIF"; | ||||
| 		dais = <&spdif_p0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	spdif-dit { | ||||
| 		compatible = "linux,spdif-dit"; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 
 | ||||
| 		port { | ||||
| 			dit_p0_0: endpoint { | ||||
| 				remote-endpoint = <&spdif_p0_0>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* switched by pmic_sleep */ | ||||
| 	vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc1v8_s3"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_1v8>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc1v8_sys: vcc1v8-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc1v8_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_pwr_en>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_3g: vcc3v3-3g-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_3g_drv>; | ||||
| 		regulator-name = "vcc3v3_3g"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */ | ||||
| 	vcc5v0_host: vcc5v0-host-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_host_en &vcc5v0_host3_en>; | ||||
| 		regulator-name = "vcc5v0_host"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_hub: vcc5v0-hub-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_hub_en>; | ||||
| 		regulator-name = "vcc5v0_host"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sys: vcc-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_log: vdd-log { | ||||
| 		compatible = "pwm-regulator"; | ||||
| 		pwms = <&pwm2 0 25000 1>; | ||||
| 		regulator-name = "vdd_log"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1100000>; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_phy: vcc-phy-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_phy"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l0 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l1 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l2 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l3 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b0 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b1 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &emmc_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac { | ||||
| 	assigned-clocks = <&cru SCLK_RMII_SRC>; | ||||
| 	assigned-clock-parents = <&clkin_gmac>; | ||||
| 	clock_in_out = "input"; | ||||
| 	phy-supply = <&vcc_lan>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&rgmii_pins>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 10000 50000>; | ||||
| 	tx_delay = <0x28>; | ||||
| 	rx_delay = <0x11>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	ddc-i2c-bus = <&i2c3>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&hdmi_cec>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	clock-frequency = <400000>; | ||||
| 	i2c-scl-rising-time-ns = <168>; | ||||
| 	i2c-scl-falling-time-ns = <4>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	rk808: pmic@1b { | ||||
| 		compatible = "rockchip,rk808"; | ||||
| 		reg = <0x1b>; | ||||
| 		interrupt-parent = <&gpio1>; | ||||
| 		interrupts = <21 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-output-names = "xin32k", "rk808-clkout2"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int_l>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 		vcc10-supply = <&vcc3v3_sys>; | ||||
| 		vcc11-supply = <&vcc3v3_sys>; | ||||
| 		vcc12-supply = <&vcc3v3_sys>; | ||||
| 		vddio-supply = <&vcc1v8_pmu>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_center: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_center"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_cpu_l: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_cpu_l"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG4 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc2v8_dvp: LDO_REG1 { | ||||
| 				regulator-name = "vcc2v8_dvp"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <2800000>; | ||||
| 				regulator-max-microvolt = <2800000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 
 | ||||
| 			vcc1v8_dvp: LDO_REG2 { | ||||
| 				regulator-name = "vcc1v8_dvp"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc1v8_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vcc1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_sdio: LDO_REG4 { | ||||
| 				regulator-name = "vcc_sdio"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca3v0_codec: LDO_REG5 { | ||||
| 				regulator-name = "vcca3v0_codec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v5: LDO_REG6 { | ||||
| 				regulator-name = "vcc_1v5"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1500000>; | ||||
| 				regulator-max-microvolt = <1500000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1500000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_codec: LDO_REG7 { | ||||
| 				regulator-name = "vcca1v8_codec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v0: LDO_REG8 { | ||||
| 				regulator-name = "vcc_3v0"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s3: vcc_lan: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc3v3_s3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s0: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_s0"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_cpu_b: regulator@40 { | ||||
| 		compatible = "silergy,syr827"; | ||||
| 		reg = <0x40>; | ||||
| 		fcs,suspend-voltage-selector = <0>; | ||||
| 		regulator-name = "vdd_cpu_b"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_gpu: regulator@41 { | ||||
| 		compatible = "silergy,syr828"; | ||||
| 		reg = <0x41>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_gpu"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		vin-supply = <&vcc_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c1 { | ||||
| 	i2c-scl-rising-time-ns = <300>; | ||||
| 	i2c-scl-falling-time-ns = <15>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	es8316: codec@11 { | ||||
| 		compatible = "everest,es8316"; | ||||
| 		reg = <0x11>; | ||||
| 		clocks = <&cru SCLK_I2S_8CH_OUT>; | ||||
| 		clock-names = "mclk"; | ||||
| 		#sound-dai-cells = <0>; | ||||
|         	pinctrl-0 = <&i2s_8ch_mclk>; | ||||
| 		spk-con-gpio = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 		hp-det-gpio = <&gpio3 RK_PD7 GPIO_ACTIVE_HIGH>; | ||||
| 
 | ||||
| 		port { | ||||
| 			es8316_p0_0: endpoint { | ||||
| 				remote-endpoint = <&i2s0_p0_0>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s0 { | ||||
| 	rockchip,playback-channels = <8>; | ||||
| 	rockchip,capture-channels = <8>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	i2s0_p0: port { | ||||
| 		i2s0_p0_0: endpoint { | ||||
| 			dai-format = "i2s"; | ||||
| 			mclk-fs = <256>; | ||||
| 			remote-endpoint = <&es8316_p0_0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2s1 { | ||||
| 	rockchip,playback-channels = <2>; | ||||
| 	rockchip,capture-channels = <2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &io_domains { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	bt656-supply = <&vcc1v8_dvp>; | ||||
| 	audio-supply = <&vcca1v8_codec>; | ||||
| 	sdmmc-supply = <&vcc_sdio>; | ||||
| 	gpio1830-supply = <&vcc_3v0>; | ||||
| }; | ||||
| 
 | ||||
| &pcie_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie0 { | ||||
| 	ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; | ||||
| 	max-link-speed = <1>; | ||||
| 	num-lanes = <1>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie_clkreqn_cpm>; | ||||
| 	status = "okay"; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 
 | ||||
| 	pcie@0 { | ||||
| 		reg = <0x00000000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		pcie-eth@0,0 { | ||||
| 			compatible = "realtek,r8168"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 			realtek,led-data = <0x87>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmu1830-supply = <&vcc_3v0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
|     	i2s0 { | ||||
| 		i2s_8ch_mclk: i2s-8ch-mclk { | ||||
| 			rockchip,pins = <4 RK_PB4 1 &pcfg_pull_none>; | ||||
| 		}; | ||||
|     	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		work_led_pin: work-led-pin { | ||||
| 			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		diy_led_pin: diy-led-pin { | ||||
| 			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie { | ||||
| 		pcie_pwr_en: pcie-pwr-en { | ||||
| 			rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie_3g_drv: pcie-3g-drv { | ||||
| 			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int_l: pmic-int-l { | ||||
| 			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel1_pin: vsel1-pin { | ||||
| 			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel2_pin: vsel2-pin { | ||||
| 			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio-pwrseq { | ||||
| 		wifi_enable_h: wifi-enable-h { | ||||
| 			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb2 { | ||||
| 		vcc5v0_host_en: vcc5v0-host-en { | ||||
| 			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
|         	vcc5v0_host3_en: vcc5v0-host3-en { | ||||
| 			rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_hub_en: vcc5v0-hub-en { | ||||
| 			rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pwm0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca1v8_s3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdio0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sdio-irq; | ||||
| 	cap-sd-highspeed; | ||||
| 	keep-power-in-suspend; | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; | ||||
| 	sd-uhs-sdr104; | ||||
| 
 | ||||
| 	/* Power supply */ | ||||
| 	vqmmc-supply = <&vcc1v8_s3>;	/* IO line */ | ||||
| 	vmmc-supply = <&vcc_sdio>;	/* card's power */ | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc { | ||||
| 	bus-width = <4>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	cap-sd-highspeed; | ||||
| 	disable-wp; | ||||
| 	cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>; | ||||
| 	max-frequency = <150000000>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	mmc-hs400-1_8v; | ||||
| 	mmc-hs400-enhanced-strobe; | ||||
| 	non-removable; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &spdif { | ||||
| 	pinctrl-0 = <&spdif_bus_1>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	spdif_p0: port { | ||||
| 		spdif_p0_0: endpoint { | ||||
| 			remote-endpoint = <&dit_p0_0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &tcphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	/* tshut mode 0:CRU 1:GPIO */ | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	/* tshut polarity 0:LOW 1:HIGH */ | ||||
| 	rockchip,hw-tshut-polarity = <1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart0 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&uart0_xfer &uart0_cts>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_0 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_1 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &vopb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopb_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,687 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include "rk3399.dtsi" | ||||
| #include "rk3399-opp.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Rocktech MPC1903"; | ||||
| 	compatible = "rocktech,mpc1903", "rockchip,rk3399"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		mmc0 = &sdmmc; | ||||
| 		mmc1 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	clkin_gmac: external-gmac-clock { | ||||
| 		compatible = "fixed-clock"; | ||||
| 		clock-frequency = <125000000>; | ||||
| 		clock-output-names = "clkin_gmac"; | ||||
| 		#clock-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		clocks = <&rk808 1>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&wifi_enable_h>; | ||||
| 		reset-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc12v_dcin: dc-12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc12v_dcin"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_host: vcc5v0-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_host_en>; | ||||
| 		regulator-name = "vcc5v0_host"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_hub: vcc5v0-hub { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_hub_en>; | ||||
| 		regulator-name = "vcc5v0_hub"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_gsm: vcc3v3-gsm { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc3v3_gsm_en>; | ||||
| 		regulator-name = "vcc3v3_gsm"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_lan: vcc-phy { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_lan"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_log: vdd-log { | ||||
| 		compatible = "pwm-regulator"; | ||||
| 		pwms = <&pwm2 0 25000 1>; | ||||
| 		regulator-name = "vdd_log"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1400000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&status_led_pin>; | ||||
| 
 | ||||
| 		status_led: status-led { | ||||
| 			label = "status_led"; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 			gpios = <&gpio1 RK_PD0 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l0 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l1 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l2 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_l3 { | ||||
| 	cpu-supply = <&vdd_cpu_l>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b0 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &cpu_b1 { | ||||
| 	cpu-supply = <&vdd_cpu_b>; | ||||
| }; | ||||
| 
 | ||||
| &emmc_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac { | ||||
| 	assigned-clocks = <&cru SCLK_RMII_SRC>; | ||||
| 	assigned-clock-parents = <&clkin_gmac>; | ||||
| 	clock_in_out = "input"; | ||||
| 	phy-supply = <&vcc_lan>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&rgmii_pins>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 10000 50000>; | ||||
| 	tx_delay = <0x28>; | ||||
| 	rx_delay = <0x11>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	ddc-i2c-bus = <&i2c3>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&hdmi_i2c_xfer>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	clock-frequency = <400000>; | ||||
| 	i2c-scl-rising-time-ns = <168>; | ||||
| 	i2c-scl-falling-time-ns = <4>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	rk808: pmic@1b { | ||||
| 		compatible = "rockchip,rk808"; | ||||
| 		reg = <0x1b>; | ||||
| 		interrupt-parent = <&gpio1>; | ||||
| 		interrupts = <21 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-output-names = "xin32k", "rk808-clkout2"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int_l>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc5v0_sys>; | ||||
| 		vcc2-supply = <&vcc5v0_sys>; | ||||
| 		vcc3-supply = <&vcc5v0_sys>; | ||||
| 		vcc4-supply = <&vcc5v0_sys>; | ||||
| 		vcc6-supply = <&vcc5v0_sys>; | ||||
| 		vcc7-supply = <&vcc5v0_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc5v0_sys>; | ||||
| 		vcc10-supply = <&vcc5v0_sys>; | ||||
| 		vcc11-supply = <&vcc5v0_sys>; | ||||
| 		vcc12-supply = <&vcc3v3_sys>; | ||||
| 		vddio-supply = <&vcc_3v0>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_center: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_center"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_cpu_l: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_cpu_l"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <750000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG4 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			gen_1v8: LDO_REG1 { | ||||
| 				regulator-name = "gen_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			gen_3v0: LDO_REG2 { | ||||
| 				regulator-name = "gen_3v0"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc1v8_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vcc1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_sdio: LDO_REG4 { | ||||
| 				regulator-name = "vcc_sdio"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca3v0_codec: LDO_REG5 { | ||||
| 				regulator-name = "vcca3v0_codec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v5: LDO_REG6 { | ||||
| 				regulator-name = "vcc_1v5"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1500000>; | ||||
| 				regulator-max-microvolt = <1500000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc1v8_codec: LDO_REG7 { | ||||
| 				regulator-name = "vcc1v8_codec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v0: LDO_REG8 { | ||||
| 				regulator-name = "vcc_3v0"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3000000>; | ||||
| 				regulator-max-microvolt = <3000000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3000000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s3: SWITCH_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_s3"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_s0: SWITCH_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_s0"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_cpu_b: regulator@40 { | ||||
| 		compatible = "silergy,syr827"; | ||||
| 		reg = <0x40>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vsel1_pin>; | ||||
| 		regulator-name = "vdd_cpu_b"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_gpu: regulator@41 { | ||||
| 		compatible = "silergy,syr828"; | ||||
| 		reg = <0x41>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vsel2_pin>; | ||||
| 		regulator-name = "vdd_gpu"; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1500000>; | ||||
| 		regulator-ramp-delay = <1000>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rtc: pcf85263@51 { | ||||
| 		compatible = "nxp,pcf85263"; | ||||
| 		reg = <0x51>; | ||||
| 		pinctrl-0 = <&rtc_int>; | ||||
| 		rtc_int_gpio = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c1 { | ||||
| 	i2c-scl-rising-time-ns = <300>; | ||||
| 	i2c-scl-falling-time-ns = <15>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c4 { | ||||
| 	clock-frequency = <400000>; | ||||
| 	i2c-scl-rising-time-ns = <450>; | ||||
| 	i2c-scl-falling-time-ns = <15>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2c6 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s0 { | ||||
| 	rockchip,i2s-broken-burst-len; | ||||
| 	rockchip,playback-channels = <8>; | ||||
| 	rockchip,capture-channels = <8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &i2s2 { | ||||
| 	rockchip,bclk-fs = <128>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &io_domains { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	bt656-supply = <&vcc_3v0>; | ||||
| 	audio-supply = <&vcc1v8_codec>; | ||||
| 	sdmmc-supply = <&vcc_sdio>; | ||||
| 	gpio1830-supply = <&vcc_3v0>; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pmu1830-supply = <&vcc_3v0>; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	bt { | ||||
| 		bt_enable_h: bt-enable-h { | ||||
| 			rockchip,pins = <2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int_l: pmic-int-l { | ||||
| 			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel1_pin: vsel1-pin { | ||||
| 			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vsel2_pin: vsel2-pin { | ||||
| 			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb2 { | ||||
| 		vcc5v0_host_en: vcc5v0-host-en { | ||||
| 			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_hub_en: vcc5v0-hub-en { | ||||
| 			rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc3v3_gsm_en: vcc3v3-gsm-en { | ||||
| 			rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	wifi { | ||||
| 		wifi_enable_h: wifi-enable-h { | ||||
| 			rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rtc { | ||||
| 		rtc_int: rtc-int { | ||||
| 			rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	led { | ||||
| 		status_led_pin: status-led-pin { | ||||
| 			rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rockchip-key { | ||||
| 		power_key: power-key { | ||||
| 			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vref-supply = <&vcc_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &sdio0 { | ||||
| 	bus-width = <4>; | ||||
| 	clock-frequency = <50000000>; | ||||
| 	cap-sdio-irq; | ||||
| 	cap-sd-highspeed; | ||||
| 	keep-power-in-suspend; | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; | ||||
| 	sd-uhs-sdr104; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc { | ||||
| 	bus-width = <4>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	max-frequency = <150000000>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc_clk &sdmmc_cd &sdmmc_cmd &sdmmc_bus4>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	mmc-hs400-1_8v; | ||||
| 	mmc-hs400-enhanced-strobe; | ||||
| 	non-removable; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tcphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	status = "okay"; | ||||
| 	rockchip,hw-tshut-temp = <120000>; | ||||
| 	/* tshut mode 0:CRU 1:GPIO */ | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	/* tshut polarity 0:LOW 1:HIGH */ | ||||
| 	rockchip,hw-tshut-polarity = <1>; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy0_host { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &u2phy1_host { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart0 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_0 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd3_1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usbdrd_dwc3_1 { | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| &vopb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopb_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vopl_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,18 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include "rk3399-nanopi-r4s.dts" | ||||
| 
 | ||||
| / { | ||||
| 	model = "FriendlyElec NanoPi R4SE"; | ||||
| 	compatible = "friendlyarm,nanopi-r4se", "rockchip,rk3399"; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| &emmc_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,526 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	aliases { | ||||
| 		led-boot = &led_work; | ||||
| 		led-failsafe = &led_work; | ||||
| 		led-running = &led_work; | ||||
| 		led-upgrade = &led_work; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc12v_dcin: vcc12v-dcin { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 		regulator-name = "vcc12v_dcin"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb: vcc5v0-usb { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_usb"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_otg: vcc5v0-usb-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_otg_en>; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_usb_otg"; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&reset_button_pin>; | ||||
| 
 | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			debounce-interval = <50>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&led_work_en>; | ||||
| 
 | ||||
| 		led_work: led-0 { | ||||
| 			label = "blue:work-led"; | ||||
| 			gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &display_subsystem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
| 
 | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <950000>; | ||||
| 				regulator-max-microvolt = <950000>; | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <950000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-init-microvolt = <950000>; | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <950000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00100000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_1: pcie-eth@10,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 
 | ||||
| 			realtek,led-data = <0x238>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00200000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_2: pcie-eth@20,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 
 | ||||
| 			realtek,led-data = <0x238>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		led_work_en: led_work_en { | ||||
| 			rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rockchip-key { | ||||
| 		reset_button_pin: reset-button-pin { | ||||
| 			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,660 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2022 AmadeusGhost <amadeus@jmu.edu.cn> | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	aliases { | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 
 | ||||
| 		led-boot = &led_work; | ||||
| 		led-failsafe = &led_work; | ||||
| 		led-running = &led_work; | ||||
| 		led-upgrade = &led_work; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&reset_button_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 
 | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			debounce-interval = <50>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&led_net_en>, <&led_sata_en>, <&led_work_en>; | ||||
| 
 | ||||
| 		net { | ||||
| 			label = "blue:net"; | ||||
| 			gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 
 | ||||
| 		sata { | ||||
| 			label = "amber:sata"; | ||||
| 			gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_work: work { | ||||
| 			label = "green:work"; | ||||
| 			gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc12v_dcin: vcc12v-dcin { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 		regulator-name = "vcc12v_dcin"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb: vcc5v0-usb { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_usb"; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_host: vcc5v0-usb-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_host_en>; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_usb_host"; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		startup-delay-us = <5000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809-sound { | ||||
| 		compatible = "simple-audio-card"; | ||||
| 		simple-audio-card,format = "i2s"; | ||||
| 		simple-audio-card,name = "Analog RK809"; | ||||
| 		simple-audio-card,mclk-fs = <256>; | ||||
| 
 | ||||
| 		simple-audio-card,cpu { | ||||
| 			sound-dai = <&i2s1_8ch>; | ||||
| 		}; | ||||
| 		simple-audio-card,codec { | ||||
| 			sound-dai = <&rk809>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		assigned-clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-names = "mclk"; | ||||
| 		clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		codec { | ||||
| 			mic-in-differential; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c5 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2s1_8ch { | ||||
| 	rockchip,trcm-sync-tx-only; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00100000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_1: pcie-eth@10,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00200000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_2: pcie-eth@20,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	button { | ||||
| 		reset_button_pin: reset-button-pin { | ||||
| 			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		led_net_en: led_net_en { | ||||
| 			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_sata_en: led_sata_en { | ||||
| 			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_work_en: led_work_en { | ||||
| 			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio2-supply = <&vcc_1v8>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sata0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,119 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2023 mleaf <mleaf90@gmail.com> | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-mrkaio-m68s.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "EZPRO Mrkaio M68S PLUS"; | ||||
| 	compatible = "ezpro,mrkaio-m68s-plus", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		led-boot = &led_sys; | ||||
| 		led-failsafe = &led_sys; | ||||
| 		led-running = &led_sys; | ||||
| 		led-upgrade = &led_sys; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&led_sys_en>; | ||||
| 
 | ||||
| 		led_sys: sys { | ||||
| 			label = "red:sys"; | ||||
| 			gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	switch_otg: switch-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&usb_otg_switch_en>; | ||||
| 		regulator-name = "switch_otg"; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		startup-delay-us = <5000>; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00000000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		r8125_1: pcie@01,0 { | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@0,0 { | ||||
| 		reg = <0x00100000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		r8125_2: pcie@10,0 { | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	max-link-speed = <2>; | ||||
| 	num-ib-windows = <8>; | ||||
| 	num-ob-windows = <8>; | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		led_sys_en: led_sys_en { | ||||
| 			rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 		 | ||||
| 		usb_otg_switch_en: usb-otg-switch_en { | ||||
| 			rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | @ -1,154 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2022 AmadeusGhost <amadeus@jmu.edu.cn> | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-mrkaio-m68s.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "EZPRO Mrkaio M68S"; | ||||
| 	compatible = "ezpro,mrkaio-m68s", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 
 | ||||
| 		led-boot = &led_sys; | ||||
| 		led-failsafe = &led_sys; | ||||
| 		led-running = &led_sys; | ||||
| 		led-upgrade = &led_sys; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&led_sata_en>, <&led_sys_en>; | ||||
| 
 | ||||
| 		sata { | ||||
| 			label = "blue:sata"; | ||||
| 			gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_sys: sys { | ||||
| 			label = "red:sys"; | ||||
| 			gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	switch_otg: switch-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&usb_otg_switch_en>; | ||||
| 		regulator-name = "switch_otg"; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_ahci: vcc5v0-ahci { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&sata_pwr_en>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_ahci"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x42>; | ||||
| 	rx_delay = <0x28>; | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		led_sata_en: led_sata_en { | ||||
| 			rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_sys_en: led_sys_en { | ||||
| 			rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sata { | ||||
| 		sata_pwr_en: sata-pwr-en { | ||||
| 			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		usb_otg_switch_en: usb-otg-switch_en { | ||||
| 			rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &sata2 { | ||||
| 	target-supply = <&vcc5v0_ahci>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,523 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	aliases { | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	dc_12v: dc-12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 		regulator-name = "dc_12v"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_host: vcc5v0-usb-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_host_en>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-name = "vcc5v0_usb_host"; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_otg: vcc5v0-usb-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_otg_en>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-name = "vcc5v0_usb_otg"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio2-supply = <&vcc_1v8>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,681 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2021 FriendlyElec Computer Tech. Co., Ltd. | ||||
|  * (http://www.friendlyarm.com) | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "FriendlyElec NanoPi R5C"; | ||||
| 	compatible = "friendlyarm,nanopi-r5c","rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &rtl8125_1; | ||||
| 		ethernet1 = &rtl8125_2; | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 
 | ||||
| 		led-boot = &sys_led; | ||||
| 		led-failsafe = &sys_led; | ||||
| 		led-running = &sys_led; | ||||
| 		led-upgrade = &sys_led; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen: chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&sys_led_pin>, <&lan_led_pin>, | ||||
| 			    <&wan_led_pin>, <&wlan_led_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 
 | ||||
| 		sys_led: led-0 { | ||||
| 			gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "red:power"; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led: led-1 { | ||||
| 			gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:wan"; | ||||
| 		}; | ||||
| 
 | ||||
| 		lan_led: led-2 { | ||||
| 			gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:lan"; | ||||
| 		}; | ||||
| 
 | ||||
| 		wlan_led: led-3 { | ||||
| 			gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:wlan"; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_5v: vdd-5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vdd_5v"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vdd_5v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sysp: vcc3v3-sysp { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sysp"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vdd_5v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sysp: vcc5v0-sysp { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sysp"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc3v3_sysp>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_host: vcc5v0-usb-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_host_en>; | ||||
| 		regulator-name = "vcc5v0_usb_host"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_sysp>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_otg: vcc5v0-usb-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_otg_en>; | ||||
| 		regulator-name = "vcc5v0_usb_otg"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_sysp>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	i2c-scl-rising-time-ns = <160>; | ||||
| 	i2c-scl-falling-time-ns = <30>; | ||||
| 	clock-frequency = <400000>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-init-microvolt = <900000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c5 { | ||||
| 	i2c-scl-rising-time-ns = <160>; | ||||
| 	i2c-scl-falling-time-ns = <30>; | ||||
| 	clock-frequency = <400000>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	hym8563: hym8563@51 { | ||||
| 		compatible = "haoyu,hym8563"; | ||||
| 		reg = <0x51>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <0>; | ||||
| 		clock-frequency = <32768>; | ||||
| 		clock-output-names = "xin32k"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&hym8563_int>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	num-viewport = <4>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&m2_w_disable_pin>; | ||||
| 	reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@10 { | ||||
| 		reg = <0x00100000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_1: pcie-eth@10,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 
 | ||||
| 			realtek,led-data = <0x78>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@20 { | ||||
| 		reg = <0x00200000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		rtl8125_2: pcie-eth@20,0 { | ||||
| 			compatible = "pci10ec,8125"; | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 
 | ||||
| 			realtek,led-data = <0x78>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		sys_led_pin: sys-led-pin { | ||||
| 			rockchip,pins = <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		lan_led_pin: lan-led-pin { | ||||
| 			rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led_pin: wan-led-pin { | ||||
| 			rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		wlan_led_pin: wlan-led-pin { | ||||
| 			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	hym8563 { | ||||
| 		hym8563_int: hym8563-int { | ||||
| 			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	m2-pins { | ||||
| 		m2_w_disable_pin: m2-w-disable-pin { | ||||
| 			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_output_high>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,710 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2021 FriendlyElec Computer Tech. Co., Ltd. | ||||
|  * (http://www.friendlyarm.com) | ||||
|  * | ||||
|  * Copyright (c) 2022 Marty Jones <mj8263788@gmail.com> | ||||
|  * Copyright (c) 2022 Tianling Shen <cnsztl@gmail.com> | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "FriendlyElec NanoPi R5S"; | ||||
| 	compatible = "friendlyarm,nanopi-r5s","rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 
 | ||||
| 		led-boot = &sys_led; | ||||
| 		led-failsafe = &sys_led; | ||||
| 		led-running = &sys_led; | ||||
| 		led-upgrade = &sys_led; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen: chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&lan1_led_pin>, <&lan2_led_pin>, | ||||
| 			    <&sys_led_pin>, <&wan_led_pin>; | ||||
| 		pinctrl-names = "default"; | ||||
| 
 | ||||
| 		lan1_led: led-0 { | ||||
| 			gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:lan1"; | ||||
| 		}; | ||||
| 
 | ||||
| 		lan2_led: led-1 { | ||||
| 			gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:lan2"; | ||||
| 		}; | ||||
| 
 | ||||
| 		sys_led: led-2 { | ||||
| 			gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "red:power"; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led: led-3 { | ||||
| 			gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; | ||||
| 			label = "green:wan"; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_5v: vdd-5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vdd_5v"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vdd_5v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sysp: vcc3v3-sysp { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sysp"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vdd_5v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sysp: vcc5v0-sysp { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sysp"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc3v3_sysp>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_host: vcc5v0-usb-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_host_en>; | ||||
| 		regulator-name = "vcc5v0_usb_host"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_sysp>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		startup-delay-us = <5000>; | ||||
| 		vin-supply = <&vcc3v3_sysp>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	clock_in_out = "output"; | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 15ms, 50ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 15000 50000>; | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	i2c-scl-rising-time-ns = <160>; | ||||
| 	i2c-scl-falling-time-ns = <30>; | ||||
| 	clock-frequency = <400000>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-init-microvolt = <900000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c5 { | ||||
| 	i2c-scl-rising-time-ns = <160>; | ||||
| 	i2c-scl-falling-time-ns = <30>; | ||||
| 	clock-frequency = <400000>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	hym8563: hym8563@51 { | ||||
| 		compatible = "haoyu,hym8563"; | ||||
| 		reg = <0x51>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <0>; | ||||
| 		clock-frequency = <32768>; | ||||
| 		clock-output-names = "xin32k"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&hym8563_int>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: phy@1 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x1>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PC4 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&gmac_int>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@00 { | ||||
| 		reg = <0x00000000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		r8125_1: pcie@01,0 { | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	pcie@10 { | ||||
| 		reg = <0x00100000 0 0 0 0>; | ||||
| 		#address-cells = <3>; | ||||
| 		#size-cells = <2>; | ||||
| 
 | ||||
| 		r8125_2: pcie@10,0 { | ||||
| 			reg = <0x000000 0 0 0 0>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	max-link-speed = <2>; | ||||
| 	num-ib-windows = <8>; | ||||
| 	num-ob-windows = <8>; | ||||
| 	num-viewport = <4>; | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		lan1_led_pin: lan1-led-pin { | ||||
| 			rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		lan2_led_pin: lan2-led-pin { | ||||
| 			rockchip,pins = <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		sys_led_pin: sys-led-pin { | ||||
| 			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		wan_led_pin: wan-led-pin { | ||||
| 			rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	eth_phy { | ||||
| 		gmac_int: gmac-int { | ||||
| 			rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	hym8563 { | ||||
| 		hym8563_int: hym8563-int { | ||||
| 			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	dr_mode = "host"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,20 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2022 AmadeusGhost <amadeus@jmu.edu.cn> | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-hinlink-opc.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "HINLINK OPC-H66K Board"; | ||||
| 	compatible = "hinlink,opc-h66k", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &rtl8125_1; | ||||
| 		ethernet1 = &rtl8125_2; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &vcc3v3_pcie { | ||||
| 	gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; | ||||
| }; | ||||
|  | @ -1,76 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2022 AmadeusGhost <amadeus@jmu.edu.cn> | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-hinlink-opc.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "HINLINK OPC-H68K Board"; | ||||
| 	compatible = "hinlink,opc-h68k", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x4f>; | ||||
| 	rx_delay = <0x26>; | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &vcc3v3_pcie { | ||||
| 	gpio = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; | ||||
| }; | ||||
|  | @ -1,89 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| // Copyright (c) 2023 AmadeusGhost <amadeus@jmu.edu.cn> | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-hinlink-opc.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "HINLINK OPC-H69K Board"; | ||||
| 	compatible = "hinlink,opc-h69k", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cpu0_opp_table { | ||||
| 	/delete-node/ opp-1608000000; | ||||
| 	/delete-node/ opp-1800000000; | ||||
| 	/delete-node/ opp-1992000000; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu_opp_table { | ||||
| 	/delete-node/ opp-700000000; | ||||
| 	/delete-node/ opp-800000000; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x4f>; | ||||
| 	rx_delay = <0x26>; | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &vcc3v3_pcie { | ||||
| 	gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; | ||||
| }; | ||||
|  | @ -1,592 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Ariaboard Photonicat"; | ||||
| 	compatible = "ariaboard,photonicat", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 		mmc0 = &sdhci; | ||||
| 		mmc1 = &sdmmc0; | ||||
| 		mmc2 = &sdmmc1; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen: chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	gmac0_xpcsclk: xpcs-gmac0-clock { | ||||
| 		compatible = "fixed-clock"; | ||||
| 		clock-frequency = <125000000>; | ||||
| 		clock-output-names = "clk_gmac0_xpcs_mii"; | ||||
| 		#clock-cells = <0>; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	modem-rfkill { | ||||
| 		compatible = "rfkill-gpio"; | ||||
| 		name = "modem-rfkill"; | ||||
| 		type = "wwan"; | ||||
| 		reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; | ||||
| 		shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		clocks = <&pmucru CLK_RTC_32K>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&wifi_enable_h &clk32k_out1>; | ||||
| 		reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_1v8: vcc-1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_1v8"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_3v3: vcc-3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_3v3"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sysin: vcc-sysin { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_sysin"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_syson: vcc-syson { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_syson"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_sysin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdda_0v9: vdda-0v9 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vdda_0v9"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <900000>; | ||||
| 		regulator-max-microvolt = <900000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcca_1v8: vcca-1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcca_1v8"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* pi6c pcie clock generator */ | ||||
| 	vcc3v3_pi6c: vcc3v3-pi6c { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_pi6c"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc_syson>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* actually fed by vcc_syson, dependent | ||||
| 	 * on pi6c clock generator | ||||
| 	 */ | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_pi6c>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_ngff: vcc3v3-ngff { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&ngffpcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_ngff"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sd: vcc3v3_sd { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc_sd_h>; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-name = "vcc3v3_sd"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc_syson>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_otg: vcc5v0-usb-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_otg_en>; | ||||
| 		regulator-name = "vcc5v0_usb_otg"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_sysin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_gpu: vdd-gpu { | ||||
| 		compatible = "pwm-regulator"; | ||||
| 		regulator-name = "vdd_gpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-init-microvolt = <900000>; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1350000>; | ||||
| 		regulator-ramp-delay = <6001>; | ||||
| 		regulator-settling-time-up-us = <250>; | ||||
| 
 | ||||
| 		pwms = <&pwm2 0 5000 1>; | ||||
| 		pwm-supply = <&vcc_syson>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vdd_logic: vdd-logic { | ||||
| 		compatible = "pwm-regulator"; | ||||
| 		regulator-name = "vdd_logic"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-init-microvolt = <900000>; | ||||
| 		regulator-min-microvolt = <500000>; | ||||
| 		regulator-max-microvolt = <1350000>; | ||||
| 		regulator-ramp-delay = <6001>; | ||||
| 		regulator-settling-time-up-us = <250>; | ||||
| 
 | ||||
| 		pwms = <&pwm1 0 5000 1>; | ||||
| 		pwm-supply = <&vcc_syson>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>; | ||||
| 	assigned-clock-parents = <&gmac0_xpcsclk>; | ||||
| 	power-domains = <&power RK3568_PD_PIPE>; | ||||
| 	phys = <&combphy2 PHY_TYPE_SGMII>; | ||||
| 	phy-handle = <&sgmii_phy>; | ||||
| 	phy-mode = "sgmii"; | ||||
| 	phy-supply = <&vcc_3v3>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim>; | ||||
| 	rockchip,xpcs = <&xpcs>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0xff>; | ||||
| 	rx_delay = <0xff>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-handle = <&rgmii_phy>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	phy-supply = <&vcc_3v3>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x30>; | ||||
| 	rx_delay = <0x10>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda_0v9>; | ||||
| 	avdd-1v8-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-init-microvolt = <900000>; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc_syson>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c2 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&i2c2m1_xfer>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	sgmii_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	phy-supply = <&vcc3v3_pi6c>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	bt { | ||||
| 		bt_enable_h: bt-enable-h { | ||||
| 			rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie { | ||||
| 		pcie_enable_h: pcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio-pwrseq { | ||||
| 		wifi_enable_h: wifi-enable-h { | ||||
| 			rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		ngffpcie_enable_h: ngffpcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_sd { | ||||
| 		vcc_sd_h: vcc-sd-h { | ||||
| 			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc_3v3>; | ||||
| 	pmuio2-supply = <&vcc_3v3>; | ||||
| 	vccio1-supply = <&vcc_3v3>; | ||||
| 	vccio3-supply = <&vcc_3v3>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_3v3>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&vcc_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	no-1-8-v; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc1 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	keep-power-in-suspend; | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_clk &sdmmc1_cmd>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sys>; | ||||
| 	vqmmc-supply = <&vcc_1v8>; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	sdio_wifi@1 { | ||||
| 		reg = <1>; | ||||
| 		interrupt-parent = <&gpio2>; | ||||
| 		interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>; | ||||
| 		interrupt-names = "host-wake"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart1 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>; | ||||
| 	status = "okay"; | ||||
| 	uart-has-rtscts; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "qcom,qca9377-bt"; | ||||
| 		enable-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; | ||||
| 		clocks = <&pmucru CLK_RTC_32K>; | ||||
| 		clock-names = "lpo"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&bt_enable_h>; | ||||
| 		vddio-supply = <&vcc_1v8>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart3 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart4 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	extcon = <&usb2phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc3v3_ngff>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &xin32k { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&clk32k_out1>; | ||||
| }; | ||||
| 
 | ||||
| &xpcs { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,26 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-fastrhino.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "FastRhino R66S"; | ||||
| 	compatible = "fastrhino,r66s", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		mmc0 = &sdmmc0; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,83 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "rk3568-fastrhino.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "FastRhino R68S"; | ||||
| 	compatible = "fastrhino,r68s", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 		mmc0 = &sdhci; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x4f>; | ||||
| 	rx_delay = <0x26>; | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,418 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "radxa,cm3i", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		mmc0 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	gpio-leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 
 | ||||
| 		led_user: led-0 { | ||||
| 			gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 			function = LED_FUNCTION_HEARTBEAT; | ||||
| 			color = <LED_COLOR_ID_GREEN>; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 			pinctrl-names = "default"; | ||||
| 			pinctrl-0 = <&led_user_en>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd0v9: pcie30-avdd0v9-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd0v9"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <900000>; | ||||
| 		regulator-max-microvolt = <900000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd1v8: pcie30-avdd1v8-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd1v8"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v_input>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v_input>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* labeled +5v_input in schematic */ | ||||
| 	vcc5v_input: vcc5v-input-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v_input"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &display_subsystem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
| 
 | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1150000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v_input>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <1>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		led_user_en: led_user_en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio2-supply = <&vcc_1v8>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&vcc_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	extcon = <&usb2phy0>; | ||||
| }; | ||||
|  | @ -1,251 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include "rk3568-radxa-cm3i.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Radxa E25 Carrier Board"; | ||||
| 	compatible = "radxa,e25", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		mmc1 = &sdmmc0; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	adc-keys { | ||||
| 		compatible = "adc-keys"; | ||||
| 		io-channels = <&saradc 0>; | ||||
| 		io-channel-names = "buttons"; | ||||
| 		keyup-threshold-microvolt = <1750000>; | ||||
| 
 | ||||
| 		button-power { | ||||
| 			label = "Power"; | ||||
| 			linux,code = <KEY_POWER>; | ||||
| 			press-threshold-microvolt = <0>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pwm-leds { | ||||
| 		compatible = "pwm-leds-multicolor"; | ||||
| 
 | ||||
| 		multi-led { | ||||
| 			color = <LED_COLOR_ID_RGB>; | ||||
| 			max-brightness = <255>; | ||||
| 
 | ||||
| 			led-red { | ||||
| 				color = <LED_COLOR_ID_RED>; | ||||
| 				pwms = <&pwm1 0 1000000 0>; | ||||
| 			}; | ||||
| 
 | ||||
| 			led-green { | ||||
| 				color = <LED_COLOR_ID_GREEN>; | ||||
| 				pwms = <&pwm2 0 1000000 0>; | ||||
| 			}; | ||||
| 
 | ||||
| 			led-blue { | ||||
| 				color = <LED_COLOR_ID_BLUE>; | ||||
| 				pwms = <&pwm12 0 1000000 0>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vbus_typec: vbus-typec-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vbus_typec_en>; | ||||
| 		regulator-name = "vbus_typec"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_minipcie: vcc3v3-minipcie-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&minipcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_minipcie"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_ngff: vcc3v3-ngff-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&ngffpcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_ngff"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* actually fed by vcc5v0_sys, dependent | ||||
| 	 * on pi6c clock generator | ||||
| 	 */ | ||||
| 	vcc3v3_pcie30x1: vcc3v3-pcie30x1-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie30x1_enable_h>; | ||||
| 		regulator-name = "vcc3v3_pcie30x1"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_pi6c_05>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pi6c_05: vcc3v3-pi6c-05-regulator { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie20_reset_h>; | ||||
| 	reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pi6c_05>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	data-lanes = <1 2>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x1 { | ||||
| 	num-lanes = <1>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie30x1m0_pins>; | ||||
| 	reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie30x1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	num-lanes = <1>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie30x2_reset_h>; | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pi6c_05>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	pcie { | ||||
| 		pcie20_reset_h: pcie20-reset-h { | ||||
| 			rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie30x1_enable_h: pcie30x1-enable-h { | ||||
| 			rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie30x2_reset_h: pcie30x2-reset-h { | ||||
| 			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie_enable_h: pcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		minipcie_enable_h: minipcie-enable-h { | ||||
| 			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		ngffpcie_enable_h: ngffpcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vbus_typec_en: vbus_typec_en { | ||||
| 			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pwm1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pwm12 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pwm12m1_pins>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sata1 { | ||||
| 	ahci-supply = <&vcc3v3_pi6c_05>; | ||||
| 	target-supply = <&vcc3v3_pcie30x1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	/* Also used in pcie30x1_clkreqnm0 */ | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vbus_typec>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc3v3_minipcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc3v3_ngff>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | @ -1,796 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Firefly Station P2"; | ||||
| 	compatible = "firefly,rk3568-roc-pc", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac0; | ||||
| 		ethernet1 = &gmac1; | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen: chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&led_work_en>, <&led_user_en>; | ||||
| 
 | ||||
| 		led-work { | ||||
| 			label = "blue:work"; | ||||
| 			gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 		}; | ||||
| 
 | ||||
| 		led-user { | ||||
| 			label = "yellow:user"; | ||||
| 			gpios = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809-sound { | ||||
| 		compatible = "simple-audio-card"; | ||||
| 		simple-audio-card,format = "i2s"; | ||||
| 		simple-audio-card,name = "Analog RK809"; | ||||
| 		simple-audio-card,mclk-fs = <256>; | ||||
| 
 | ||||
| 		simple-audio-card,cpu { | ||||
| 			sound-dai = <&i2s1_8ch>; | ||||
| 		}; | ||||
| 		simple-audio-card,codec { | ||||
| 			sound-dai = <&rk809>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		clocks = <&rk809 1>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&wifi_enable_h>; | ||||
| 		reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; | ||||
| 		post-power-on-delay-ms = <100>; | ||||
| 	}; | ||||
| 
 | ||||
| 	dc_12v: dc-12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "dc_12v"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb: vcc5v0-usb { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_usb"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&dc_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd0v9: pcie30-avdd0v9 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd0v9"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <900000>; | ||||
| 		regulator-max-microvolt = <900000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd1v8: pcie30-avdd1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd1v8"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie_pi6c_oe: pcie-pi6c-oe { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie_pi6c_oe_en"; | ||||
| 		regulator-always-on; | ||||
| 		gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_pi6c_oe_en>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3_pi6c: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-always-on; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_host: vcc5v0-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_host"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_host_en>; | ||||
| 		regulator-always-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_otg: vcc5v0-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_otg"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_otg_en>; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_hub_reset: vcc-hub-reset { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc_hub_reset"; | ||||
| 		regulator-always-on; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc_hub_reset_en>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_lcd0_n: vcc3v3-lcd0-n { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_lcd0_n"; | ||||
| 		regulator-boot-on; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_lcd1_n: vcc3v3-lcd1-n { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_lcd1_n"; | ||||
| 		regulator-boot-on; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &gmac0 { | ||||
| 	phy-mode = "rgmii"; | ||||
| 	clock_in_out = "output"; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 
 | ||||
| 	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 
 | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac0_miim | ||||
| 		     &gmac0_tx_bus2 | ||||
| 		     &gmac0_rx_bus2 | ||||
| 		     &gmac0_rgmii_clk | ||||
| 		     &gmac0_rgmii_bus | ||||
| 		     &gmac0_clkinout>; | ||||
| 
 | ||||
| 	tx_delay = <0x3c>; | ||||
| 	rx_delay = <0x2f>; | ||||
| 
 | ||||
| 	phy-handle = <&rgmii_phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	phy-mode = "rgmii"; | ||||
| 	clock_in_out = "output"; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 
 | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 
 | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus | ||||
| 		     &gmac1m1_clkinout>; | ||||
| 
 | ||||
| 	tx_delay = <0x4f>; | ||||
| 	rx_delay = <0x26>; | ||||
| 
 | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <712500>; | ||||
| 		regulator-max-microvolt = <1390000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		assigned-clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-names = "mclk"; | ||||
| 		clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2s1_8ch { | ||||
| 	rockchip,trcm-sync-tx-only; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio0 { | ||||
| 	rgmii_phy0: phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	leds { | ||||
| 		led_work_en: led_work_en { | ||||
| 			rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		led_user_en: led_user_en { | ||||
| 			rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio-pwrseq { | ||||
| 		wifi_enable_h: wifi-enable-h { | ||||
| 			rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_host_en: vcc5v0-host-en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_otg_en: vcc5v0-otg-en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc_hub_reset_en: vcc-hub-reset-en { | ||||
| 			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	fusb0_int { | ||||
| 		fusb0_int: fusb0-int { | ||||
| 			rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie { | ||||
| 		pcie_enable_h: pcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie_reset_h: pcie-reset-h { | ||||
| 			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie_pi6c_oe_en: pcie-pi6c-oe-en { | ||||
| 			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	phy-supply = <&pcie_pi6c_oe>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie_reset_h>; | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio2-supply = <&vcc_1v8>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sata2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc2 { | ||||
| 	max-frequency = <150000000>; | ||||
| 	supports-sdio; | ||||
| 	bus-width = <4>; | ||||
| 	disable-wp; | ||||
| 	cap-sd-highspeed; | ||||
| 	cap-sdio-irq; | ||||
| 	keep-power-in-suspend; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 	non-removable; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	extcon = <&usb2phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,770 +0,0 @@ | |||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| 
 | ||||
| /dts-v1/; | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/leds/common.h> | ||||
| #include <dt-bindings/pinctrl/rockchip.h> | ||||
| #include <dt-bindings/soc/rockchip,vop2.h> | ||||
| #include "rk3568.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	model = "Radxa ROCK3 Model A"; | ||||
| 	compatible = "radxa,rock3a", "rockchip,rk3568"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		ethernet0 = &gmac1; | ||||
| 		mmc0 = &sdmmc0; | ||||
| 		mmc1 = &sdhci; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen: chosen { | ||||
| 		stdout-path = "serial2:1500000n8"; | ||||
| 	}; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| 	hdmi-con { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_con_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_out_con>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 
 | ||||
| 		led_user: led-0 { | ||||
| 			gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; | ||||
| 			function = LED_FUNCTION_HEARTBEAT; | ||||
| 			color = <LED_COLOR_ID_BLUE>; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 			pinctrl-names = "default"; | ||||
| 			pinctrl-0 = <&led_user_en>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809-sound { | ||||
| 		compatible = "simple-audio-card"; | ||||
| 		simple-audio-card,format = "i2s"; | ||||
| 		simple-audio-card,name = "Analog RK809"; | ||||
| 		simple-audio-card,mclk-fs = <256>; | ||||
| 
 | ||||
| 		simple-audio-card,cpu { | ||||
| 			sound-dai = <&i2s1_8ch>; | ||||
| 		}; | ||||
| 
 | ||||
| 		simple-audio-card,codec { | ||||
| 			sound-dai = <&rk809>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc12v_dcin: vcc12v-dcin { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc12v_dcin"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_sys: vcc3v3-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_sys: vcc5v0-sys { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_sys"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb: vcc5v0-usb { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc5v0_usb"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc12v_dcin>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_host: vcc5v0-usb-host { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_host_en>; | ||||
| 		regulator-name = "vcc5v0_usb_host"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_hub: vcc5v0-usb-hub { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_hub_en>; | ||||
| 		regulator-name = "vcc5v0_usb_hub"; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc5v0_usb_otg: vcc5v0-usb-otg { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc5v0_usb_otg_en>; | ||||
| 		regulator-name = "vcc5v0_usb_otg"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc5v0_usb>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd0v9: pcie30-avdd0v9 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd0v9"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <900000>; | ||||
| 		regulator-max-microvolt = <900000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie30_avdd1v8: pcie30-avdd1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "pcie30_avdd1v8"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* pi6c pcie clock generator */ | ||||
| 	vcc3v3_pi6c_03: vcc3v3-pi6c-03 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "vcc3v3_pi6c_03"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc3v3_pcie: vcc3v3-pcie { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pcie_enable_h>; | ||||
| 		regulator-name = "vcc3v3_pcie"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_cam: vcc-cam { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc_cam_en>; | ||||
| 		regulator-name = "vcc_cam"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_mipi: vcc-mipi { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		enable-active-high; | ||||
| 		gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&vcc_mipi_en>; | ||||
| 		regulator-name = "vcc_mipi"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &combphy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &combphy2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cpu0 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu1 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu2 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &cpu3 { | ||||
| 	cpu-supply = <&vdd_cpu>; | ||||
| }; | ||||
| 
 | ||||
| &gmac1 { | ||||
| 	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; | ||||
| 	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; | ||||
| 	assigned-clock-rates = <0>, <125000000>; | ||||
| 	clock_in_out = "output"; | ||||
| 	phy-handle = <&rgmii_phy1>; | ||||
| 	phy-mode = "rgmii-id"; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&gmac1m1_miim | ||||
| 		     &gmac1m1_tx_bus2 | ||||
| 		     &gmac1m1_rx_bus2 | ||||
| 		     &gmac1m1_rgmii_clk | ||||
| 		     &gmac1m1_rgmii_bus>; | ||||
| 	snps,reset-gpio = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; | ||||
| 	snps,reset-active-low; | ||||
| 	/* Reset time is 20ms, 100ms for rtl8211f */ | ||||
| 	snps,reset-delays-us = <0 20000 100000>; | ||||
| 	tx_delay = <0x42>; | ||||
| 	rx_delay = <0x28>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &gpu { | ||||
| 	mali-supply = <&vdd_gpu>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi { | ||||
| 	avdd-0v9-supply = <&vdda0v9_image>; | ||||
| 	avdd-1v8-supply = <&vcca1v8_image>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_in { | ||||
| 	hdmi_in_vp0: endpoint { | ||||
| 		remote-endpoint = <&vp0_out_hdmi>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_out { | ||||
| 	hdmi_out_con: endpoint { | ||||
| 		remote-endpoint = <&hdmi_con_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_sound { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	vdd_cpu: regulator@1c { | ||||
| 		compatible = "tcs,tcs4525"; | ||||
| 		reg = <0x1c>; | ||||
| 		fcs,suspend-voltage-selector = <1>; | ||||
| 		regulator-name = "vdd_cpu"; | ||||
| 		regulator-always-on; | ||||
| 		regulator-boot-on; | ||||
| 		regulator-min-microvolt = <800000>; | ||||
| 		regulator-max-microvolt = <1150000>; | ||||
| 		regulator-ramp-delay = <2300>; | ||||
| 		vin-supply = <&vcc5v0_sys>; | ||||
| 
 | ||||
| 		regulator-state-mem { | ||||
| 			regulator-off-in-suspend; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	rk809: pmic@20 { | ||||
| 		compatible = "rockchip,rk809"; | ||||
| 		reg = <0x20>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		assigned-clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; | ||||
| 		#clock-cells = <1>; | ||||
| 		clock-names = "mclk"; | ||||
| 		clocks = <&cru I2S1_MCLKOUT_TX>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>; | ||||
| 		rockchip,system-power-controller; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		wakeup-source; | ||||
| 
 | ||||
| 		vcc1-supply = <&vcc3v3_sys>; | ||||
| 		vcc2-supply = <&vcc3v3_sys>; | ||||
| 		vcc3-supply = <&vcc3v3_sys>; | ||||
| 		vcc4-supply = <&vcc3v3_sys>; | ||||
| 		vcc5-supply = <&vcc3v3_sys>; | ||||
| 		vcc6-supply = <&vcc3v3_sys>; | ||||
| 		vcc7-supply = <&vcc3v3_sys>; | ||||
| 		vcc8-supply = <&vcc3v3_sys>; | ||||
| 		vcc9-supply = <&vcc3v3_sys>; | ||||
| 
 | ||||
| 		regulators { | ||||
| 			vdd_logic: DCDC_REG1 { | ||||
| 				regulator-name = "vdd_logic"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_gpu: DCDC_REG2 { | ||||
| 				regulator-name = "vdd_gpu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_ddr: DCDC_REG3 { | ||||
| 				regulator-name = "vcc_ddr"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdd_npu: DCDC_REG4 { | ||||
| 				regulator-name = "vdd_npu"; | ||||
| 				regulator-init-microvolt = <900000>; | ||||
| 				regulator-initial-mode = <0x2>; | ||||
| 				regulator-min-microvolt = <500000>; | ||||
| 				regulator-max-microvolt = <1350000>; | ||||
| 				regulator-ramp-delay = <6001>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_1v8: DCDC_REG5 { | ||||
| 				regulator-name = "vcc_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_image: LDO_REG1 { | ||||
| 				regulator-name = "vdda0v9_image"; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda_0v9: LDO_REG2 { | ||||
| 				regulator-name = "vdda_0v9"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vdda0v9_pmu: LDO_REG3 { | ||||
| 				regulator-name = "vdda0v9_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <900000>; | ||||
| 				regulator-max-microvolt = <900000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <900000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_acodec: LDO_REG4 { | ||||
| 				regulator-name = "vccio_acodec"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vccio_sd: LDO_REG5 { | ||||
| 				regulator-name = "vccio_sd"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_pmu: LDO_REG6 { | ||||
| 				regulator-name = "vcc3v3_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <3300000>; | ||||
| 				regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <3300000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca_1v8: LDO_REG7 { | ||||
| 				regulator-name = "vcca_1v8"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_pmu: LDO_REG8 { | ||||
| 				regulator-name = "vcca1v8_pmu"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-on-in-suspend; | ||||
| 					regulator-suspend-microvolt = <1800000>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcca1v8_image: LDO_REG9 { | ||||
| 				regulator-name = "vcca1v8_image"; | ||||
| 				regulator-min-microvolt = <1800000>; | ||||
| 				regulator-max-microvolt = <1800000>; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc_3v3: SWITCH_REG1 { | ||||
| 				regulator-name = "vcc_3v3"; | ||||
| 				regulator-always-on; | ||||
| 				regulator-boot-on; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			vcc3v3_sd: SWITCH_REG2 { | ||||
| 				regulator-name = "vcc3v3_sd"; | ||||
| 
 | ||||
| 				regulator-state-mem { | ||||
| 					regulator-off-in-suspend; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		codec { | ||||
| 			mic-in-differential; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c5 { | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	hym8563: rtc@51 { | ||||
| 		compatible = "haoyu,hym8563"; | ||||
| 		reg = <0x51>; | ||||
| 		interrupt-parent = <&gpio0>; | ||||
| 		interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		#clock-cells = <0>; | ||||
| 		clock-output-names = "rtcic_32kout"; | ||||
| 		pinctrl-names = "default"; | ||||
| 		pinctrl-0 = <&hym8563_int>; | ||||
| 		wakeup-source; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &i2s0_8ch { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| &i2s1_8ch { | ||||
| 	rockchip,trcm-sync-tx-only; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &mdio1 { | ||||
| 	rgmii_phy1: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-ieee802.3-c22"; | ||||
| 		reg = <0x0>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pcie2x1 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie_reset_h>; | ||||
| 	reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie30phy { | ||||
| 	phy-supply = <&vcc3v3_pi6c_03>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pcie3x2 { | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pcie30x2m1_pins>; | ||||
| 	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; | ||||
| 	vpcie3v3-supply = <&vcc3v3_pcie>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &pinctrl { | ||||
| 	cam { | ||||
| 		vcc_cam_en: vcc_cam_en { | ||||
| 			rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	display { | ||||
| 		vcc_mipi_en: vcc_mipi_en { | ||||
| 			rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	hym8563 { | ||||
| 		hym8563_int: hym8563-int { | ||||
| 			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		led_user_en: led_user_en { | ||||
| 			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pcie { | ||||
| 		pcie_enable_h: pcie-enable-h { | ||||
| 			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		pcie_reset_h: pcie-reset-h { | ||||
| 			rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	pmic { | ||||
| 		pmic_int: pmic_int { | ||||
| 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb { | ||||
| 		vcc5v0_usb_host_en: vcc5v0_usb_host_en { | ||||
| 			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_usb_hub_en: vcc5v0_usb_hub_en { | ||||
| 			rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 
 | ||||
| 		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en { | ||||
| 			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &pmu_io_domains { | ||||
| 	pmuio1-supply = <&vcc3v3_pmu>; | ||||
| 	pmuio2-supply = <&vcc3v3_pmu>; | ||||
| 	vccio1-supply = <&vccio_acodec>; | ||||
| 	vccio2-supply = <&vcc_1v8>; | ||||
| 	vccio3-supply = <&vccio_sd>; | ||||
| 	vccio4-supply = <&vcc_1v8>; | ||||
| 	vccio5-supply = <&vcc_3v3>; | ||||
| 	vccio6-supply = <&vcc_1v8>; | ||||
| 	vccio7-supply = <&vcc_3v3>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &rng { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	vref-supply = <&vcca_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdhci { | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&vcc_1v8>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &sdmmc0 { | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; | ||||
| 	disable-wp; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; | ||||
| 	sd-uhs-sdr104; | ||||
| 	vmmc-supply = <&vcc3v3_sd>; | ||||
| 	vqmmc-supply = <&vccio_sd>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tsadc { | ||||
| 	rockchip,hw-tshut-mode = <1>; | ||||
| 	rockchip,hw-tshut-polarity = <0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart2 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host0_xhci { | ||||
| 	extcon = <&usb2phy0>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ehci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_ohci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb_host1_xhci { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy0_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_otg>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1 { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_host { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &usb2phy1_otg { | ||||
| 	phy-supply = <&vcc5v0_usb_host>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| #ifdef DTS_NO_LEGACY | ||||
| &vop { | ||||
| 	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; | ||||
| 	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vop_mmu { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &vp0 { | ||||
| 	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { | ||||
| 		reg = <ROCKCHIP_VOP2_EP_HDMI0>; | ||||
| 		remote-endpoint = <&hdmi_in_vp0>; | ||||
| 	}; | ||||
| }; | ||||
| #endif | ||||
|  | @ -1,310 +0,0 @@ | |||
| // SPDX-License-Identifier: GPL-2.0
 | ||||
| /*
 | ||||
|  * rockchip-rng.c Random Number Generator driver for the Rockchip | ||||
|  * | ||||
|  * Copyright (c) 2018, Fuzhou Rockchip Electronics Co., Ltd. | ||||
|  * Author: Lin Jinhan <troy.lin@rock-chips.com> | ||||
|  * | ||||
|  */ | ||||
| #include <linux/clk.h> | ||||
| #include <linux/hw_random.h> | ||||
| #include <linux/iopoll.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/mod_devicetable.h> | ||||
| #include <linux/of.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/pm_runtime.h> | ||||
| 
 | ||||
| #define _SBF(s, v)	((v) << (s)) | ||||
| #define HIWORD_UPDATE(val, mask, shift) \ | ||||
| 			((val) << (shift) | (mask) << ((shift) + 16)) | ||||
| 
 | ||||
| #define ROCKCHIP_AUTOSUSPEND_DELAY		100 | ||||
| #define ROCKCHIP_POLL_PERIOD_US			100 | ||||
| #define ROCKCHIP_POLL_TIMEOUT_US		10000 | ||||
| #define RK_MAX_RNG_BYTE				(32) | ||||
| 
 | ||||
| /* start of CRYPTO V1 register define */ | ||||
| #define CRYPTO_V1_CTRL				0x0008 | ||||
| #define CRYPTO_V1_RNG_START			BIT(8) | ||||
| #define CRYPTO_V1_RNG_FLUSH			BIT(9) | ||||
| 
 | ||||
| #define CRYPTO_V1_TRNG_CTRL			0x0200 | ||||
| #define CRYPTO_V1_OSC_ENABLE			BIT(16) | ||||
| #define CRYPTO_V1_TRNG_SAMPLE_PERIOD(x)		(x) | ||||
| 
 | ||||
| #define CRYPTO_V1_TRNG_DOUT_0			0x0204 | ||||
| /* end of CRYPTO V1 register define */ | ||||
| 
 | ||||
| /* start of CRYPTO V2 register define */ | ||||
| #define CRYPTO_V2_RNG_CTL			0x0400 | ||||
| #define CRYPTO_V2_RNG_64_BIT_LEN		_SBF(4, 0x00) | ||||
| #define CRYPTO_V2_RNG_128_BIT_LEN		_SBF(4, 0x01) | ||||
| #define CRYPTO_V2_RNG_192_BIT_LEN		_SBF(4, 0x02) | ||||
| #define CRYPTO_V2_RNG_256_BIT_LEN		_SBF(4, 0x03) | ||||
| #define CRYPTO_V2_RNG_FATESY_SOC_RING		_SBF(2, 0x00) | ||||
| #define CRYPTO_V2_RNG_SLOWER_SOC_RING_0		_SBF(2, 0x01) | ||||
| #define CRYPTO_V2_RNG_SLOWER_SOC_RING_1		_SBF(2, 0x02) | ||||
| #define CRYPTO_V2_RNG_SLOWEST_SOC_RING		_SBF(2, 0x03) | ||||
| #define CRYPTO_V2_RNG_ENABLE			BIT(1) | ||||
| #define CRYPTO_V2_RNG_START			BIT(0) | ||||
| #define CRYPTO_V2_RNG_SAMPLE_CNT		0x0404 | ||||
| #define CRYPTO_V2_RNG_DOUT_0			0x0410 | ||||
| /* end of CRYPTO V2 register define */ | ||||
| 
 | ||||
| struct rk_rng_soc_data { | ||||
| 	int (*rk_rng_read)(struct hwrng *rng, void *buf, size_t max, bool wait); | ||||
| }; | ||||
| 
 | ||||
| struct rk_rng { | ||||
| 	struct device		*dev; | ||||
| 	struct hwrng		rng; | ||||
| 	void __iomem		*mem; | ||||
| 	struct rk_rng_soc_data	*soc_data; | ||||
| 	int			clk_num; | ||||
| 	struct clk_bulk_data	*clk_bulks; | ||||
| }; | ||||
| 
 | ||||
| static void rk_rng_writel(struct rk_rng *rng, u32 val, u32 offset) | ||||
| { | ||||
| 	__raw_writel(val, rng->mem + offset); | ||||
| } | ||||
| 
 | ||||
| static u32 rk_rng_readl(struct rk_rng *rng, u32 offset) | ||||
| { | ||||
| 	return __raw_readl(rng->mem + offset); | ||||
| } | ||||
| 
 | ||||
| static int rk_rng_init(struct hwrng *rng) | ||||
| { | ||||
| 	int ret; | ||||
| 	struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); | ||||
| 
 | ||||
| 	dev_dbg(rk_rng->dev, "clk_bulk_prepare_enable.\n"); | ||||
| 
 | ||||
| 	ret = clk_bulk_prepare_enable(rk_rng->clk_num, rk_rng->clk_bulks); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(rk_rng->dev, "failed to enable clks %d\n", ret); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static void rk_rng_cleanup(struct hwrng *rng) | ||||
| { | ||||
| 	struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); | ||||
| 
 | ||||
| 	dev_dbg(rk_rng->dev, "clk_bulk_disable_unprepare.\n"); | ||||
| 	clk_bulk_disable_unprepare(rk_rng->clk_num, rk_rng->clk_bulks); | ||||
| } | ||||
| 
 | ||||
| static void rk_rng_read_regs(struct rk_rng *rng, u32 offset, void *buf, | ||||
| 			     size_t size) | ||||
| { | ||||
| 	u32 i; | ||||
| 
 | ||||
| 	for (i = 0; i < size; i += 4) | ||||
| 		*(u32 *)(buf + i) = be32_to_cpu(rk_rng_readl(rng, offset + i)); | ||||
| } | ||||
| 
 | ||||
| static int rk_rng_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 	u32 reg_ctrl = 0; | ||||
| 	struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); | ||||
| 
 | ||||
| 	ret = pm_runtime_get_sync(rk_rng->dev); | ||||
| 	if (ret < 0) { | ||||
| 		pm_runtime_put_noidle(rk_rng->dev); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	/* enable osc_ring to get entropy, sample period is set as 100 */ | ||||
| 	reg_ctrl = CRYPTO_V1_OSC_ENABLE | CRYPTO_V1_TRNG_SAMPLE_PERIOD(100); | ||||
| 	rk_rng_writel(rk_rng, reg_ctrl, CRYPTO_V1_TRNG_CTRL); | ||||
| 
 | ||||
| 	reg_ctrl = HIWORD_UPDATE(CRYPTO_V1_RNG_START, CRYPTO_V1_RNG_START, 0); | ||||
| 
 | ||||
| 	rk_rng_writel(rk_rng, reg_ctrl, CRYPTO_V1_CTRL); | ||||
| 
 | ||||
| 	ret = readl_poll_timeout(rk_rng->mem + CRYPTO_V1_CTRL, reg_ctrl, | ||||
| 				 !(reg_ctrl & CRYPTO_V1_RNG_START), | ||||
| 				 ROCKCHIP_POLL_PERIOD_US, | ||||
| 				 ROCKCHIP_POLL_TIMEOUT_US); | ||||
| 	if (ret < 0) | ||||
| 		goto out; | ||||
| 
 | ||||
| 	ret = min_t(size_t, max, RK_MAX_RNG_BYTE); | ||||
| 
 | ||||
| 	rk_rng_read_regs(rk_rng, CRYPTO_V1_TRNG_DOUT_0, buf, ret); | ||||
| 
 | ||||
| out: | ||||
| 	/* close TRNG */ | ||||
| 	rk_rng_writel(rk_rng, HIWORD_UPDATE(0, CRYPTO_V1_RNG_START, 0), | ||||
| 		      CRYPTO_V1_CTRL); | ||||
| 
 | ||||
| 	pm_runtime_mark_last_busy(rk_rng->dev); | ||||
| 	pm_runtime_put_sync_autosuspend(rk_rng->dev); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int rk_rng_v2_read(struct hwrng *rng, void *buf, size_t max, bool wait) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 	u32 reg_ctrl = 0; | ||||
| 	struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); | ||||
| 
 | ||||
| 	ret = pm_runtime_get_sync(rk_rng->dev); | ||||
| 	if (ret < 0) { | ||||
| 		pm_runtime_put_noidle(rk_rng->dev); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	/* enable osc_ring to get entropy, sample period is set as 100 */ | ||||
| 	rk_rng_writel(rk_rng, 100, CRYPTO_V2_RNG_SAMPLE_CNT); | ||||
| 
 | ||||
| 	reg_ctrl |= CRYPTO_V2_RNG_256_BIT_LEN; | ||||
| 	reg_ctrl |= CRYPTO_V2_RNG_SLOWER_SOC_RING_0; | ||||
| 	reg_ctrl |= CRYPTO_V2_RNG_ENABLE; | ||||
| 	reg_ctrl |= CRYPTO_V2_RNG_START; | ||||
| 
 | ||||
| 	rk_rng_writel(rk_rng, HIWORD_UPDATE(reg_ctrl, 0xffff, 0), | ||||
| 			CRYPTO_V2_RNG_CTL); | ||||
| 
 | ||||
| 	ret = readl_poll_timeout(rk_rng->mem + CRYPTO_V2_RNG_CTL, reg_ctrl, | ||||
| 				 !(reg_ctrl & CRYPTO_V2_RNG_START), | ||||
| 				 ROCKCHIP_POLL_PERIOD_US, | ||||
| 				 ROCKCHIP_POLL_TIMEOUT_US); | ||||
| 	if (ret < 0) | ||||
| 		goto out; | ||||
| 
 | ||||
| 	ret = min_t(size_t, max, RK_MAX_RNG_BYTE); | ||||
| 
 | ||||
| 	rk_rng_read_regs(rk_rng, CRYPTO_V2_RNG_DOUT_0, buf, ret); | ||||
| 
 | ||||
| out: | ||||
| 	/* close TRNG */ | ||||
| 	rk_rng_writel(rk_rng, HIWORD_UPDATE(0, 0xffff, 0), CRYPTO_V2_RNG_CTL); | ||||
| 
 | ||||
| 	pm_runtime_mark_last_busy(rk_rng->dev); | ||||
| 	pm_runtime_put_sync_autosuspend(rk_rng->dev); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static const struct rk_rng_soc_data rk_rng_v1_soc_data = { | ||||
| 	.rk_rng_read = rk_rng_v1_read, | ||||
| }; | ||||
| 
 | ||||
| static const struct rk_rng_soc_data rk_rng_v2_soc_data = { | ||||
| 	.rk_rng_read = rk_rng_v2_read, | ||||
| }; | ||||
| 
 | ||||
| static const struct of_device_id rk_rng_dt_match[] = { | ||||
| 	{ | ||||
| 		.compatible = "rockchip,cryptov1-rng", | ||||
| 		.data = (void *)&rk_rng_v1_soc_data, | ||||
| 	}, | ||||
| 	{ | ||||
| 		.compatible = "rockchip,cryptov2-rng", | ||||
| 		.data = (void *)&rk_rng_v2_soc_data, | ||||
| 	}, | ||||
| 	{ }, | ||||
| }; | ||||
| 
 | ||||
| MODULE_DEVICE_TABLE(of, rk_rng_dt_match); | ||||
| 
 | ||||
| static int rk_rng_probe(struct platform_device *pdev) | ||||
| { | ||||
| 	int ret; | ||||
| 	struct rk_rng *rk_rng; | ||||
| 	struct device_node *np = pdev->dev.of_node; | ||||
| 	const struct of_device_id *match; | ||||
| 
 | ||||
| 	dev_dbg(&pdev->dev, "probing...\n"); | ||||
| 	rk_rng = devm_kzalloc(&pdev->dev, sizeof(struct rk_rng), GFP_KERNEL); | ||||
| 	if (!rk_rng) | ||||
| 		return -ENOMEM; | ||||
| 
 | ||||
| 	match = of_match_node(rk_rng_dt_match, np); | ||||
| 	rk_rng->soc_data = (struct rk_rng_soc_data *)match->data; | ||||
| 
 | ||||
| 	rk_rng->dev = &pdev->dev; | ||||
| 	rk_rng->rng.name    = "rockchip"; | ||||
| #ifndef CONFIG_PM | ||||
| 	rk_rng->rng.init    = rk_rng_init; | ||||
| 	rk_rng->rng.cleanup = rk_rng_cleanup, | ||||
| #endif | ||||
| 	rk_rng->rng.read    = rk_rng->soc_data->rk_rng_read; | ||||
| 	rk_rng->rng.quality = 999; | ||||
| 
 | ||||
| 	rk_rng->mem = devm_of_iomap(&pdev->dev, pdev->dev.of_node, 0, NULL); | ||||
| 	if (IS_ERR(rk_rng->mem)) | ||||
| 		return PTR_ERR(rk_rng->mem); | ||||
| 
 | ||||
| 	rk_rng->clk_num = devm_clk_bulk_get_all(&pdev->dev, &rk_rng->clk_bulks); | ||||
| 	if (rk_rng->clk_num < 0) { | ||||
| 		dev_err(&pdev->dev, "failed to get clks property\n"); | ||||
| 		return -ENODEV; | ||||
| 	} | ||||
| 
 | ||||
| 	platform_set_drvdata(pdev, rk_rng); | ||||
| 
 | ||||
| 	pm_runtime_set_autosuspend_delay(&pdev->dev, | ||||
| 					ROCKCHIP_AUTOSUSPEND_DELAY); | ||||
| 	pm_runtime_use_autosuspend(&pdev->dev); | ||||
| 	pm_runtime_enable(&pdev->dev); | ||||
| 
 | ||||
| 	ret = devm_hwrng_register(&pdev->dev, &rk_rng->rng); | ||||
| 	if (ret) { | ||||
| 		pm_runtime_dont_use_autosuspend(&pdev->dev); | ||||
| 		pm_runtime_disable(&pdev->dev); | ||||
| 	} | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_PM | ||||
| static int rk_rng_runtime_suspend(struct device *dev) | ||||
| { | ||||
| 	struct rk_rng *rk_rng = dev_get_drvdata(dev); | ||||
| 
 | ||||
| 	rk_rng_cleanup(&rk_rng->rng); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int rk_rng_runtime_resume(struct device *dev) | ||||
| { | ||||
| 	struct rk_rng *rk_rng = dev_get_drvdata(dev); | ||||
| 
 | ||||
| 	return rk_rng_init(&rk_rng->rng); | ||||
| } | ||||
| 
 | ||||
| static const struct dev_pm_ops rk_rng_pm_ops = { | ||||
| 	SET_RUNTIME_PM_OPS(rk_rng_runtime_suspend, | ||||
| 				rk_rng_runtime_resume, NULL) | ||||
| 	SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, | ||||
| 				pm_runtime_force_resume) | ||||
| }; | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| static struct platform_driver rk_rng_driver = { | ||||
| 	.driver	= { | ||||
| 		.name	= "rockchip-rng", | ||||
| #ifdef CONFIG_PM | ||||
| 		.pm	= &rk_rng_pm_ops, | ||||
| #endif | ||||
| 		.of_match_table = rk_rng_dt_match, | ||||
| 	}, | ||||
| 	.probe	= rk_rng_probe, | ||||
| }; | ||||
| 
 | ||||
| module_platform_driver(rk_rng_driver); | ||||
| 
 | ||||
| MODULE_DESCRIPTION("ROCKCHIP H/W Random Number Generator driver"); | ||||
| MODULE_AUTHOR("Lin Jinhan <troy.lin@rock-chips.com>"); | ||||
| MODULE_LICENSE("GPL v2"); | ||||
|  | @ -1,852 +0,0 @@ | |||
| // SPDX-License-Identifier: GPL-2.0-only
 | ||||
| /*
 | ||||
|  * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd. | ||||
|  * Author: Lin Huang <hl@rock-chips.com> | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/arm-smccc.h> | ||||
| #include <linux/clk.h> | ||||
| #include <linux/delay.h> | ||||
| #include <linux/devfreq.h> | ||||
| #include <linux/devfreq-event.h> | ||||
| #include <linux/interrupt.h> | ||||
| #include <linux/iversion.h> | ||||
| #include <linux/mfd/syscon.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/of.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/pm_opp.h> | ||||
| #include <linux/regmap.h> | ||||
| #include <linux/regulator/consumer.h> | ||||
| #include <linux/rwsem.h> | ||||
| #include <linux/suspend.h> | ||||
| #include <linux/version.h> | ||||
| 
 | ||||
| #include <soc/rockchip/rockchip_sip.h> | ||||
| 
 | ||||
| #define DTS_PAR_OFFSET		(4096) | ||||
| 
 | ||||
| struct share_params { | ||||
| 	u32 hz; | ||||
| 	u32 lcdc_type; | ||||
| 	u32 vop; | ||||
| 	u32 vop_dclk_mode; | ||||
| 	u32 sr_idle_en; | ||||
| 	u32 addr_mcu_el3; | ||||
| 	/*
 | ||||
| 	 * 1: need to wait flag1 | ||||
| 	 * 0: never wait flag1 | ||||
| 	 */ | ||||
| 	u32 wait_flag1; | ||||
| 	/*
 | ||||
| 	 * 1: need to wait flag1 | ||||
| 	 * 0: never wait flag1 | ||||
| 	 */ | ||||
| 	u32 wait_flag0; | ||||
| 	u32 complt_hwirq; | ||||
| 	/* if need, add parameter after */ | ||||
| }; | ||||
| 
 | ||||
| static struct share_params *ddr_psci_param; | ||||
| 
 | ||||
| /* hope this define can adapt all future platform */ | ||||
| static const char * const rk3328_dts_timing[] = { | ||||
| 	"ddr3_speed_bin", | ||||
| 	"ddr4_speed_bin", | ||||
| 	"pd_idle", | ||||
| 	"sr_idle", | ||||
| 	"sr_mc_gate_idle", | ||||
| 	"srpd_lite_idle", | ||||
| 	"standby_idle", | ||||
| 
 | ||||
| 	"auto_pd_dis_freq", | ||||
| 	"auto_sr_dis_freq", | ||||
| 	"ddr3_dll_dis_freq", | ||||
| 	"ddr4_dll_dis_freq", | ||||
| 	"phy_dll_dis_freq", | ||||
| 
 | ||||
| 	"ddr3_odt_dis_freq", | ||||
| 	"phy_ddr3_odt_dis_freq", | ||||
| 	"ddr3_drv", | ||||
| 	"ddr3_odt", | ||||
| 	"phy_ddr3_ca_drv", | ||||
| 	"phy_ddr3_ck_drv", | ||||
| 	"phy_ddr3_dq_drv", | ||||
| 	"phy_ddr3_odt", | ||||
| 
 | ||||
| 	"lpddr3_odt_dis_freq", | ||||
| 	"phy_lpddr3_odt_dis_freq", | ||||
| 	"lpddr3_drv", | ||||
| 	"lpddr3_odt", | ||||
| 	"phy_lpddr3_ca_drv", | ||||
| 	"phy_lpddr3_ck_drv", | ||||
| 	"phy_lpddr3_dq_drv", | ||||
| 	"phy_lpddr3_odt", | ||||
| 
 | ||||
| 	"lpddr4_odt_dis_freq", | ||||
| 	"phy_lpddr4_odt_dis_freq", | ||||
| 	"lpddr4_drv", | ||||
| 	"lpddr4_dq_odt", | ||||
| 	"lpddr4_ca_odt", | ||||
| 	"phy_lpddr4_ca_drv", | ||||
| 	"phy_lpddr4_ck_cs_drv", | ||||
| 	"phy_lpddr4_dq_drv", | ||||
| 	"phy_lpddr4_odt", | ||||
| 
 | ||||
| 	"ddr4_odt_dis_freq", | ||||
| 	"phy_ddr4_odt_dis_freq", | ||||
| 	"ddr4_drv", | ||||
| 	"ddr4_odt", | ||||
| 	"phy_ddr4_ca_drv", | ||||
| 	"phy_ddr4_ck_drv", | ||||
| 	"phy_ddr4_dq_drv", | ||||
| 	"phy_ddr4_odt", | ||||
| }; | ||||
| 
 | ||||
| static const char * const rk3328_dts_ca_timing[] = { | ||||
| 	"ddr3a1_ddr4a9_de-skew", | ||||
| 	"ddr3a0_ddr4a10_de-skew", | ||||
| 	"ddr3a3_ddr4a6_de-skew", | ||||
| 	"ddr3a2_ddr4a4_de-skew", | ||||
| 	"ddr3a5_ddr4a8_de-skew", | ||||
| 	"ddr3a4_ddr4a5_de-skew", | ||||
| 	"ddr3a7_ddr4a11_de-skew", | ||||
| 	"ddr3a6_ddr4a7_de-skew", | ||||
| 	"ddr3a9_ddr4a0_de-skew", | ||||
| 	"ddr3a8_ddr4a13_de-skew", | ||||
| 	"ddr3a11_ddr4a3_de-skew", | ||||
| 	"ddr3a10_ddr4cs0_de-skew", | ||||
| 	"ddr3a13_ddr4a2_de-skew", | ||||
| 	"ddr3a12_ddr4ba1_de-skew", | ||||
| 	"ddr3a15_ddr4odt0_de-skew", | ||||
| 	"ddr3a14_ddr4a1_de-skew", | ||||
| 	"ddr3ba1_ddr4a15_de-skew", | ||||
| 	"ddr3ba0_ddr4bg0_de-skew", | ||||
| 	"ddr3ras_ddr4cke_de-skew", | ||||
| 	"ddr3ba2_ddr4ba0_de-skew", | ||||
| 	"ddr3we_ddr4bg1_de-skew", | ||||
| 	"ddr3cas_ddr4a12_de-skew", | ||||
| 	"ddr3ckn_ddr4ckn_de-skew", | ||||
| 	"ddr3ckp_ddr4ckp_de-skew", | ||||
| 	"ddr3cke_ddr4a16_de-skew", | ||||
| 	"ddr3odt0_ddr4a14_de-skew", | ||||
| 	"ddr3cs0_ddr4act_de-skew", | ||||
| 	"ddr3reset_ddr4reset_de-skew", | ||||
| 	"ddr3cs1_ddr4cs1_de-skew", | ||||
| 	"ddr3odt1_ddr4odt1_de-skew", | ||||
| }; | ||||
| 
 | ||||
| static const char * const rk3328_dts_cs0_timing[] = { | ||||
| 	"cs0_dm0_rx_de-skew", | ||||
| 	"cs0_dm0_tx_de-skew", | ||||
| 	"cs0_dq0_rx_de-skew", | ||||
| 	"cs0_dq0_tx_de-skew", | ||||
| 	"cs0_dq1_rx_de-skew", | ||||
| 	"cs0_dq1_tx_de-skew", | ||||
| 	"cs0_dq2_rx_de-skew", | ||||
| 	"cs0_dq2_tx_de-skew", | ||||
| 	"cs0_dq3_rx_de-skew", | ||||
| 	"cs0_dq3_tx_de-skew", | ||||
| 	"cs0_dq4_rx_de-skew", | ||||
| 	"cs0_dq4_tx_de-skew", | ||||
| 	"cs0_dq5_rx_de-skew", | ||||
| 	"cs0_dq5_tx_de-skew", | ||||
| 	"cs0_dq6_rx_de-skew", | ||||
| 	"cs0_dq6_tx_de-skew", | ||||
| 	"cs0_dq7_rx_de-skew", | ||||
| 	"cs0_dq7_tx_de-skew", | ||||
| 	"cs0_dqs0_rx_de-skew", | ||||
| 	"cs0_dqs0p_tx_de-skew", | ||||
| 	"cs0_dqs0n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs0_dm1_rx_de-skew", | ||||
| 	"cs0_dm1_tx_de-skew", | ||||
| 	"cs0_dq8_rx_de-skew", | ||||
| 	"cs0_dq8_tx_de-skew", | ||||
| 	"cs0_dq9_rx_de-skew", | ||||
| 	"cs0_dq9_tx_de-skew", | ||||
| 	"cs0_dq10_rx_de-skew", | ||||
| 	"cs0_dq10_tx_de-skew", | ||||
| 	"cs0_dq11_rx_de-skew", | ||||
| 	"cs0_dq11_tx_de-skew", | ||||
| 	"cs0_dq12_rx_de-skew", | ||||
| 	"cs0_dq12_tx_de-skew", | ||||
| 	"cs0_dq13_rx_de-skew", | ||||
| 	"cs0_dq13_tx_de-skew", | ||||
| 	"cs0_dq14_rx_de-skew", | ||||
| 	"cs0_dq14_tx_de-skew", | ||||
| 	"cs0_dq15_rx_de-skew", | ||||
| 	"cs0_dq15_tx_de-skew", | ||||
| 	"cs0_dqs1_rx_de-skew", | ||||
| 	"cs0_dqs1p_tx_de-skew", | ||||
| 	"cs0_dqs1n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs0_dm2_rx_de-skew", | ||||
| 	"cs0_dm2_tx_de-skew", | ||||
| 	"cs0_dq16_rx_de-skew", | ||||
| 	"cs0_dq16_tx_de-skew", | ||||
| 	"cs0_dq17_rx_de-skew", | ||||
| 	"cs0_dq17_tx_de-skew", | ||||
| 	"cs0_dq18_rx_de-skew", | ||||
| 	"cs0_dq18_tx_de-skew", | ||||
| 	"cs0_dq19_rx_de-skew", | ||||
| 	"cs0_dq19_tx_de-skew", | ||||
| 	"cs0_dq20_rx_de-skew", | ||||
| 	"cs0_dq20_tx_de-skew", | ||||
| 	"cs0_dq21_rx_de-skew", | ||||
| 	"cs0_dq21_tx_de-skew", | ||||
| 	"cs0_dq22_rx_de-skew", | ||||
| 	"cs0_dq22_tx_de-skew", | ||||
| 	"cs0_dq23_rx_de-skew", | ||||
| 	"cs0_dq23_tx_de-skew", | ||||
| 	"cs0_dqs2_rx_de-skew", | ||||
| 	"cs0_dqs2p_tx_de-skew", | ||||
| 	"cs0_dqs2n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs0_dm3_rx_de-skew", | ||||
| 	"cs0_dm3_tx_de-skew", | ||||
| 	"cs0_dq24_rx_de-skew", | ||||
| 	"cs0_dq24_tx_de-skew", | ||||
| 	"cs0_dq25_rx_de-skew", | ||||
| 	"cs0_dq25_tx_de-skew", | ||||
| 	"cs0_dq26_rx_de-skew", | ||||
| 	"cs0_dq26_tx_de-skew", | ||||
| 	"cs0_dq27_rx_de-skew", | ||||
| 	"cs0_dq27_tx_de-skew", | ||||
| 	"cs0_dq28_rx_de-skew", | ||||
| 	"cs0_dq28_tx_de-skew", | ||||
| 	"cs0_dq29_rx_de-skew", | ||||
| 	"cs0_dq29_tx_de-skew", | ||||
| 	"cs0_dq30_rx_de-skew", | ||||
| 	"cs0_dq30_tx_de-skew", | ||||
| 	"cs0_dq31_rx_de-skew", | ||||
| 	"cs0_dq31_tx_de-skew", | ||||
| 	"cs0_dqs3_rx_de-skew", | ||||
| 	"cs0_dqs3p_tx_de-skew", | ||||
| 	"cs0_dqs3n_tx_de-skew", | ||||
| }; | ||||
| 
 | ||||
| static const char * const rk3328_dts_cs1_timing[] = { | ||||
| 	"cs1_dm0_rx_de-skew", | ||||
| 	"cs1_dm0_tx_de-skew", | ||||
| 	"cs1_dq0_rx_de-skew", | ||||
| 	"cs1_dq0_tx_de-skew", | ||||
| 	"cs1_dq1_rx_de-skew", | ||||
| 	"cs1_dq1_tx_de-skew", | ||||
| 	"cs1_dq2_rx_de-skew", | ||||
| 	"cs1_dq2_tx_de-skew", | ||||
| 	"cs1_dq3_rx_de-skew", | ||||
| 	"cs1_dq3_tx_de-skew", | ||||
| 	"cs1_dq4_rx_de-skew", | ||||
| 	"cs1_dq4_tx_de-skew", | ||||
| 	"cs1_dq5_rx_de-skew", | ||||
| 	"cs1_dq5_tx_de-skew", | ||||
| 	"cs1_dq6_rx_de-skew", | ||||
| 	"cs1_dq6_tx_de-skew", | ||||
| 	"cs1_dq7_rx_de-skew", | ||||
| 	"cs1_dq7_tx_de-skew", | ||||
| 	"cs1_dqs0_rx_de-skew", | ||||
| 	"cs1_dqs0p_tx_de-skew", | ||||
| 	"cs1_dqs0n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs1_dm1_rx_de-skew", | ||||
| 	"cs1_dm1_tx_de-skew", | ||||
| 	"cs1_dq8_rx_de-skew", | ||||
| 	"cs1_dq8_tx_de-skew", | ||||
| 	"cs1_dq9_rx_de-skew", | ||||
| 	"cs1_dq9_tx_de-skew", | ||||
| 	"cs1_dq10_rx_de-skew", | ||||
| 	"cs1_dq10_tx_de-skew", | ||||
| 	"cs1_dq11_rx_de-skew", | ||||
| 	"cs1_dq11_tx_de-skew", | ||||
| 	"cs1_dq12_rx_de-skew", | ||||
| 	"cs1_dq12_tx_de-skew", | ||||
| 	"cs1_dq13_rx_de-skew", | ||||
| 	"cs1_dq13_tx_de-skew", | ||||
| 	"cs1_dq14_rx_de-skew", | ||||
| 	"cs1_dq14_tx_de-skew", | ||||
| 	"cs1_dq15_rx_de-skew", | ||||
| 	"cs1_dq15_tx_de-skew", | ||||
| 	"cs1_dqs1_rx_de-skew", | ||||
| 	"cs1_dqs1p_tx_de-skew", | ||||
| 	"cs1_dqs1n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs1_dm2_rx_de-skew", | ||||
| 	"cs1_dm2_tx_de-skew", | ||||
| 	"cs1_dq16_rx_de-skew", | ||||
| 	"cs1_dq16_tx_de-skew", | ||||
| 	"cs1_dq17_rx_de-skew", | ||||
| 	"cs1_dq17_tx_de-skew", | ||||
| 	"cs1_dq18_rx_de-skew", | ||||
| 	"cs1_dq18_tx_de-skew", | ||||
| 	"cs1_dq19_rx_de-skew", | ||||
| 	"cs1_dq19_tx_de-skew", | ||||
| 	"cs1_dq20_rx_de-skew", | ||||
| 	"cs1_dq20_tx_de-skew", | ||||
| 	"cs1_dq21_rx_de-skew", | ||||
| 	"cs1_dq21_tx_de-skew", | ||||
| 	"cs1_dq22_rx_de-skew", | ||||
| 	"cs1_dq22_tx_de-skew", | ||||
| 	"cs1_dq23_rx_de-skew", | ||||
| 	"cs1_dq23_tx_de-skew", | ||||
| 	"cs1_dqs2_rx_de-skew", | ||||
| 	"cs1_dqs2p_tx_de-skew", | ||||
| 	"cs1_dqs2n_tx_de-skew", | ||||
| 
 | ||||
| 	"cs1_dm3_rx_de-skew", | ||||
| 	"cs1_dm3_tx_de-skew", | ||||
| 	"cs1_dq24_rx_de-skew", | ||||
| 	"cs1_dq24_tx_de-skew", | ||||
| 	"cs1_dq25_rx_de-skew", | ||||
| 	"cs1_dq25_tx_de-skew", | ||||
| 	"cs1_dq26_rx_de-skew", | ||||
| 	"cs1_dq26_tx_de-skew", | ||||
| 	"cs1_dq27_rx_de-skew", | ||||
| 	"cs1_dq27_tx_de-skew", | ||||
| 	"cs1_dq28_rx_de-skew", | ||||
| 	"cs1_dq28_tx_de-skew", | ||||
| 	"cs1_dq29_rx_de-skew", | ||||
| 	"cs1_dq29_tx_de-skew", | ||||
| 	"cs1_dq30_rx_de-skew", | ||||
| 	"cs1_dq30_tx_de-skew", | ||||
| 	"cs1_dq31_rx_de-skew", | ||||
| 	"cs1_dq31_tx_de-skew", | ||||
| 	"cs1_dqs3_rx_de-skew", | ||||
| 	"cs1_dqs3p_tx_de-skew", | ||||
| 	"cs1_dqs3n_tx_de-skew", | ||||
| }; | ||||
| 
 | ||||
| struct rk3328_ddr_dts_config_timing { | ||||
| 	unsigned int ddr3_speed_bin; | ||||
| 	unsigned int ddr4_speed_bin; | ||||
| 	unsigned int pd_idle; | ||||
| 	unsigned int sr_idle; | ||||
| 	unsigned int sr_mc_gate_idle; | ||||
| 	unsigned int srpd_lite_idle; | ||||
| 	unsigned int standby_idle; | ||||
| 
 | ||||
| 	unsigned int auto_pd_dis_freq; | ||||
| 	unsigned int auto_sr_dis_freq; | ||||
| 	/* for ddr3 only */ | ||||
| 	unsigned int ddr3_dll_dis_freq; | ||||
| 	/* for ddr4 only */ | ||||
| 	unsigned int ddr4_dll_dis_freq; | ||||
| 	unsigned int phy_dll_dis_freq; | ||||
| 
 | ||||
| 	unsigned int ddr3_odt_dis_freq; | ||||
| 	unsigned int phy_ddr3_odt_dis_freq; | ||||
| 	unsigned int ddr3_drv; | ||||
| 	unsigned int ddr3_odt; | ||||
| 	unsigned int phy_ddr3_ca_drv; | ||||
| 	unsigned int phy_ddr3_ck_drv; | ||||
| 	unsigned int phy_ddr3_dq_drv; | ||||
| 	unsigned int phy_ddr3_odt; | ||||
| 
 | ||||
| 	unsigned int lpddr3_odt_dis_freq; | ||||
| 	unsigned int phy_lpddr3_odt_dis_freq; | ||||
| 	unsigned int lpddr3_drv; | ||||
| 	unsigned int lpddr3_odt; | ||||
| 	unsigned int phy_lpddr3_ca_drv; | ||||
| 	unsigned int phy_lpddr3_ck_drv; | ||||
| 	unsigned int phy_lpddr3_dq_drv; | ||||
| 	unsigned int phy_lpddr3_odt; | ||||
| 
 | ||||
| 	unsigned int lpddr4_odt_dis_freq; | ||||
| 	unsigned int phy_lpddr4_odt_dis_freq; | ||||
| 	unsigned int lpddr4_drv; | ||||
| 	unsigned int lpddr4_dq_odt; | ||||
| 	unsigned int lpddr4_ca_odt; | ||||
| 	unsigned int phy_lpddr4_ca_drv; | ||||
| 	unsigned int phy_lpddr4_ck_cs_drv; | ||||
| 	unsigned int phy_lpddr4_dq_drv; | ||||
| 	unsigned int phy_lpddr4_odt; | ||||
| 
 | ||||
| 	unsigned int ddr4_odt_dis_freq; | ||||
| 	unsigned int phy_ddr4_odt_dis_freq; | ||||
| 	unsigned int ddr4_drv; | ||||
| 	unsigned int ddr4_odt; | ||||
| 	unsigned int phy_ddr4_ca_drv; | ||||
| 	unsigned int phy_ddr4_ck_drv; | ||||
| 	unsigned int phy_ddr4_dq_drv; | ||||
| 	unsigned int phy_ddr4_odt; | ||||
| 
 | ||||
| 	unsigned int ca_skew[15]; | ||||
| 	unsigned int cs0_skew[44]; | ||||
| 	unsigned int cs1_skew[44]; | ||||
| 
 | ||||
| 	unsigned int available; | ||||
| }; | ||||
| 
 | ||||
| struct rk3328_ddr_de_skew_setting { | ||||
| 	unsigned int ca_de_skew[30]; | ||||
| 	unsigned int cs0_de_skew[84]; | ||||
| 	unsigned int cs1_de_skew[84]; | ||||
| }; | ||||
| 
 | ||||
| struct rk3328_dmcfreq { | ||||
| 	struct device *dev; | ||||
| 	struct devfreq *devfreq; | ||||
| 	struct devfreq_simple_ondemand_data ondemand_data; | ||||
| 	struct clk *dmc_clk; | ||||
| 	struct devfreq_event_dev *edev; | ||||
| 	struct mutex lock; | ||||
| 	struct regulator *vdd_center; | ||||
| 	unsigned long rate, target_rate; | ||||
| 	unsigned long volt, target_volt; | ||||
| 
 | ||||
| 	int (*set_auto_self_refresh)(u32 en); | ||||
| }; | ||||
| 
 | ||||
| static void | ||||
| rk3328_de_skew_setting_2_register(struct rk3328_ddr_de_skew_setting *de_skew, | ||||
| 				  struct rk3328_ddr_dts_config_timing *tim) | ||||
| { | ||||
| 	u32 n; | ||||
| 	u32 offset; | ||||
| 	u32 shift; | ||||
| 
 | ||||
| 	memset_io(tim->ca_skew, 0, sizeof(tim->ca_skew)); | ||||
| 	memset_io(tim->cs0_skew, 0, sizeof(tim->cs0_skew)); | ||||
| 	memset_io(tim->cs1_skew, 0, sizeof(tim->cs1_skew)); | ||||
| 
 | ||||
| 	/* CA de-skew */ | ||||
| 	for (n = 0; n < ARRAY_SIZE(de_skew->ca_de_skew); n++) { | ||||
| 		offset = n / 2; | ||||
| 		shift = n % 2; | ||||
| 		/* 0 => 4; 1 => 0 */ | ||||
| 		shift = (shift == 0) ? 4 : 0; | ||||
| 		tim->ca_skew[offset] &= ~(0xf << shift); | ||||
| 		tim->ca_skew[offset] |= (de_skew->ca_de_skew[n] << shift); | ||||
| 	} | ||||
| 
 | ||||
| 	/* CS0 data de-skew */ | ||||
| 	for (n = 0; n < ARRAY_SIZE(de_skew->cs0_de_skew); n++) { | ||||
| 		offset = ((n / 21) * 11) + ((n % 21) / 2); | ||||
| 		shift = ((n % 21) % 2); | ||||
| 		if ((n % 21) == 20) | ||||
| 			shift = 0; | ||||
| 		else | ||||
| 			/* 0 => 4; 1 => 0 */ | ||||
| 			shift = (shift == 0) ? 4 : 0; | ||||
| 		tim->cs0_skew[offset] &= ~(0xf << shift); | ||||
| 		tim->cs0_skew[offset] |= (de_skew->cs0_de_skew[n] << shift); | ||||
| 	} | ||||
| 
 | ||||
| 	/* CS1 data de-skew */ | ||||
| 	for (n = 0; n < ARRAY_SIZE(de_skew->cs1_de_skew); n++) { | ||||
| 		offset = ((n / 21) * 11) + ((n % 21) / 2); | ||||
| 		shift = ((n % 21) % 2); | ||||
| 		if ((n % 21) == 20) | ||||
| 			shift = 0; | ||||
| 		else | ||||
| 			/* 0 => 4; 1 => 0 */ | ||||
| 			shift = (shift == 0) ? 4 : 0; | ||||
| 		tim->cs1_skew[offset] &= ~(0xf << shift); | ||||
| 		tim->cs1_skew[offset] |= (de_skew->cs1_de_skew[n] << shift); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void of_get_rk3328_timings(struct device *dev, | ||||
| 				  struct device_node *np, uint32_t *timing) | ||||
| { | ||||
| 	struct device_node *np_tim; | ||||
| 	u32 *p; | ||||
| 	struct rk3328_ddr_dts_config_timing *dts_timing; | ||||
| 	struct rk3328_ddr_de_skew_setting *de_skew; | ||||
| 	int ret = 0; | ||||
| 	u32 i; | ||||
| 
 | ||||
| 	dts_timing = | ||||
| 		(struct rk3328_ddr_dts_config_timing *)(timing + | ||||
| 							DTS_PAR_OFFSET / 4); | ||||
| 
 | ||||
| 	np_tim = of_parse_phandle(np, "ddr_timing", 0); | ||||
| 	if (!np_tim) { | ||||
| 		ret = -EINVAL; | ||||
| 		goto end; | ||||
| 	} | ||||
| 	de_skew = kmalloc(sizeof(*de_skew), GFP_KERNEL); | ||||
| 	if (!de_skew) { | ||||
| 		ret = -ENOMEM; | ||||
| 		goto end; | ||||
| 	} | ||||
| 
 | ||||
| 	p = (u32 *)dts_timing; | ||||
| 	for (i = 0; i < ARRAY_SIZE(rk3328_dts_timing); i++) { | ||||
| 		ret |= of_property_read_u32(np_tim, rk3328_dts_timing[i], | ||||
| 					p + i); | ||||
| 	} | ||||
| 	p = (u32 *)de_skew->ca_de_skew; | ||||
| 	for (i = 0; i < ARRAY_SIZE(rk3328_dts_ca_timing); i++) { | ||||
| 		ret |= of_property_read_u32(np_tim, rk3328_dts_ca_timing[i], | ||||
| 					p + i); | ||||
| 	} | ||||
| 	p = (u32 *)de_skew->cs0_de_skew; | ||||
| 	for (i = 0; i < ARRAY_SIZE(rk3328_dts_cs0_timing); i++) { | ||||
| 		ret |= of_property_read_u32(np_tim, rk3328_dts_cs0_timing[i], | ||||
| 					p + i); | ||||
| 	} | ||||
| 	p = (u32 *)de_skew->cs1_de_skew; | ||||
| 	for (i = 0; i < ARRAY_SIZE(rk3328_dts_cs1_timing); i++) { | ||||
| 		ret |= of_property_read_u32(np_tim, rk3328_dts_cs1_timing[i], | ||||
| 					p + i); | ||||
| 	} | ||||
| 	if (!ret) | ||||
| 		rk3328_de_skew_setting_2_register(de_skew, dts_timing); | ||||
| 
 | ||||
| 	kfree(de_skew); | ||||
| end: | ||||
| 	if (!ret) { | ||||
| 		dts_timing->available = 1; | ||||
| 	} else { | ||||
| 		dts_timing->available = 0; | ||||
| 		dev_err(dev, "of_get_ddr_timings: fail\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	of_node_put(np_tim); | ||||
| } | ||||
| 
 | ||||
| static int rockchip_ddr_set_auto_self_refresh(uint32_t en) | ||||
| { | ||||
| 	struct arm_smccc_res res; | ||||
| 
 | ||||
| 	ddr_psci_param->sr_idle_en = en; | ||||
| 
 | ||||
| 	arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, | ||||
| 		      SHARE_PAGE_TYPE_DDR, 0, ROCKCHIP_SIP_CONFIG_DRAM_SET_AT_SR, | ||||
| 		      0, 0, 0, 0, &res); | ||||
| 
 | ||||
| 	return res.a0; | ||||
| } | ||||
| 
 | ||||
| static int rk3328_dmc_init(struct platform_device *pdev, | ||||
| 			   struct rk3328_dmcfreq *dmcfreq) | ||||
| { | ||||
| 	struct arm_smccc_res res; | ||||
| 	u32 size, page_num; | ||||
| 
 | ||||
| 	arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, | ||||
| 		      0, 0, ROCKCHIP_SIP_CONFIG_DRAM_GET_VERSION, | ||||
| 		      0, 0, 0, 0, &res); | ||||
| 	if (res.a0 || (res.a1 < 0x101)) { | ||||
| 		dev_err(&pdev->dev, | ||||
| 			"trusted firmware need to update or is invalid\n"); | ||||
| 		return -ENXIO; | ||||
| 	} | ||||
| 
 | ||||
| 	dev_notice(&pdev->dev, "current ATF version 0x%lx\n", res.a1); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * first 4KB is used for interface parameters | ||||
| 	 * after 4KB * N is dts parameters | ||||
| 	 */ | ||||
| 	size = sizeof(struct rk3328_ddr_dts_config_timing); | ||||
| 	page_num = DIV_ROUND_UP(size, 4096) + 1; | ||||
| 
 | ||||
| 	arm_smccc_smc(ROCKCHIP_SIP_SHARE_MEM, | ||||
| 		      page_num, SHARE_PAGE_TYPE_DDR, 0, | ||||
| 		      0, 0, 0, 0, &res); | ||||
| 	if (res.a0 != 0) { | ||||
| 		dev_err(&pdev->dev, "no ATF memory for init\n"); | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 
 | ||||
| 	ddr_psci_param = ioremap(res.a1, page_num << 12); | ||||
| 	of_get_rk3328_timings(&pdev->dev, pdev->dev.of_node, | ||||
| 			      (uint32_t *)ddr_psci_param); | ||||
| 
 | ||||
| 	arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, | ||||
| 		      SHARE_PAGE_TYPE_DDR, 0, ROCKCHIP_SIP_CONFIG_DRAM_INIT, | ||||
| 		      0, 0, 0, 0, &res); | ||||
| 	if (res.a0) { | ||||
| 		dev_err(&pdev->dev, "Rockchip dram init error %lx\n", res.a0); | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 
 | ||||
| 	dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int rk3328_dmcfreq_target(struct device *dev, unsigned long *freq, | ||||
| 				 u32 flags) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(dev); | ||||
| 	struct dev_pm_opp *opp; | ||||
| 	unsigned long old_clk_rate = dmcfreq->rate; | ||||
| 	unsigned long target_volt, target_rate; | ||||
| 	int err; | ||||
| 
 | ||||
| 	opp = devfreq_recommended_opp(dev, freq, flags); | ||||
| 	if (IS_ERR(opp)) | ||||
| 		return PTR_ERR(opp); | ||||
| 
 | ||||
| 	target_rate = dev_pm_opp_get_freq(opp); | ||||
| 	target_volt = dev_pm_opp_get_voltage(opp); | ||||
| 	dev_pm_opp_put(opp); | ||||
| 
 | ||||
| 	if (dmcfreq->rate == target_rate) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	mutex_lock(&dmcfreq->lock); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * If frequency scaling from low to high, adjust voltage first. | ||||
| 	 * If frequency scaling from high to low, adjust frequency first. | ||||
| 	 */ | ||||
| 	if (old_clk_rate < target_rate) { | ||||
| 		err = regulator_set_voltage(dmcfreq->vdd_center, target_volt, | ||||
| 					    target_volt); | ||||
| 		if (err) { | ||||
| 			dev_err(dev, "Cannot set voltage %lu uV\n", | ||||
| 				target_volt); | ||||
| 			goto out; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	err = clk_set_rate(dmcfreq->dmc_clk, target_rate); | ||||
| 	if (err) { | ||||
| 		dev_err(dev, "Cannot set frequency %lu (%d)\n", target_rate, | ||||
| 			err); | ||||
| 		regulator_set_voltage(dmcfreq->vdd_center, dmcfreq->volt, | ||||
| 				      dmcfreq->volt); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Check the dpll rate, | ||||
| 	 * There only two result we will get, | ||||
| 	 * 1. Ddr frequency scaling fail, we still get the old rate. | ||||
| 	 * 2. Ddr frequency scaling sucessful, we get the rate we set. | ||||
| 	 */ | ||||
| 	dmcfreq->rate = clk_get_rate(dmcfreq->dmc_clk); | ||||
| 
 | ||||
| 	/* If get the incorrect rate, set voltage to old value. */ | ||||
| 	if (dmcfreq->rate != target_rate) { | ||||
| 		dev_err(dev, "Got wrong frequency, Request %lu, Current %lu\n", | ||||
| 			target_rate, dmcfreq->rate); | ||||
| 		regulator_set_voltage(dmcfreq->vdd_center, dmcfreq->volt, | ||||
| 				      dmcfreq->volt); | ||||
| 		goto out; | ||||
| 	} else if (old_clk_rate > target_rate) | ||||
| 		err = regulator_set_voltage(dmcfreq->vdd_center, target_volt, | ||||
| 					    target_volt); | ||||
| 	if (err) | ||||
| 		dev_err(dev, "Cannot set voltage %lu uV\n", target_volt); | ||||
| 
 | ||||
| 	dmcfreq->rate = target_rate; | ||||
| 	dmcfreq->volt = target_volt; | ||||
| 
 | ||||
| out: | ||||
| 	mutex_unlock(&dmcfreq->lock); | ||||
| 	return err; | ||||
| } | ||||
| 
 | ||||
| static int rk3328_dmcfreq_get_dev_status(struct device *dev, | ||||
| 					 struct devfreq_dev_status *stat) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(dev); | ||||
| 	struct devfreq_event_data edata; | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	ret = devfreq_event_get_event(dmcfreq->edev, &edata); | ||||
| 	if (ret < 0) | ||||
| 		return ret; | ||||
| 
 | ||||
| 	stat->current_frequency = dmcfreq->rate; | ||||
| 	stat->busy_time = edata.load_count; | ||||
| 	stat->total_time = edata.total_count; | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int rk3328_dmcfreq_get_cur_freq(struct device *dev, unsigned long *freq) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(dev); | ||||
| 
 | ||||
| 	*freq = dmcfreq->rate; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static struct devfreq_dev_profile rk3328_devfreq_dmc_profile = { | ||||
| 	.polling_ms	= 200, | ||||
| 	.target		= rk3328_dmcfreq_target, | ||||
| 	.get_dev_status	= rk3328_dmcfreq_get_dev_status, | ||||
| 	.get_cur_freq	= rk3328_dmcfreq_get_cur_freq, | ||||
| }; | ||||
| 
 | ||||
| static __maybe_unused int rk3328_dmcfreq_suspend(struct device *dev) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(dev); | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	ret = devfreq_event_disable_edev(dmcfreq->edev); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(dev, "failed to disable the devfreq-event devices\n"); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = devfreq_suspend_device(dmcfreq->devfreq); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(dev, "failed to suspend the devfreq devices\n"); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static __maybe_unused int rk3328_dmcfreq_resume(struct device *dev) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(dev); | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	ret = devfreq_event_enable_edev(dmcfreq->edev); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(dev, "failed to enable the devfreq-event devices\n"); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = devfreq_resume_device(dmcfreq->devfreq); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(dev, "failed to resume the devfreq devices\n"); | ||||
| 		return ret; | ||||
| 	} | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static SIMPLE_DEV_PM_OPS(rk3328_dmcfreq_pm, rk3328_dmcfreq_suspend, | ||||
| 			 rk3328_dmcfreq_resume); | ||||
| 
 | ||||
| static int rk3328_dmcfreq_probe(struct platform_device *pdev) | ||||
| { | ||||
| 	struct device *dev = &pdev->dev; | ||||
| 	struct device_node *np = pdev->dev.of_node; | ||||
| 	struct rk3328_dmcfreq *data; | ||||
| 	struct dev_pm_opp *opp; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	data = devm_kzalloc(dev, sizeof(struct rk3328_dmcfreq), GFP_KERNEL); | ||||
| 	if (!data) | ||||
| 		return -ENOMEM; | ||||
| 
 | ||||
| 	mutex_init(&data->lock); | ||||
| 
 | ||||
| 	data->vdd_center = devm_regulator_get(dev, "center"); | ||||
| 	if (IS_ERR(data->vdd_center)) { | ||||
| 		if (PTR_ERR(data->vdd_center) == -EPROBE_DEFER) | ||||
| 			return -EPROBE_DEFER; | ||||
| 
 | ||||
| 		dev_err(dev, "Cannot get the regulator \"center\"\n"); | ||||
| 		return PTR_ERR(data->vdd_center); | ||||
| 	} | ||||
| 
 | ||||
| 	data->dmc_clk = devm_clk_get(dev, "dmc_clk"); | ||||
| 	if (IS_ERR(data->dmc_clk)) { | ||||
| 		if (PTR_ERR(data->dmc_clk) == -EPROBE_DEFER) | ||||
| 			return -EPROBE_DEFER; | ||||
| 
 | ||||
| 		dev_err(dev, "Cannot get the clk dmc_clk\n"); | ||||
| 		return PTR_ERR(data->dmc_clk); | ||||
| 	} | ||||
| 
 | ||||
| #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) | ||||
| 	data->edev = devfreq_event_get_edev_by_phandle(dev, 0); | ||||
| #else | ||||
| 	data->edev = devfreq_event_get_edev_by_phandle(dev, "devfreq-events", 0); | ||||
| #endif | ||||
| 	if (IS_ERR(data->edev)) | ||||
| 		return -EPROBE_DEFER; | ||||
| 
 | ||||
| 	ret = devfreq_event_enable_edev(data->edev); | ||||
| 	if (ret < 0) { | ||||
| 		dev_err(dev, "failed to enable devfreq-event devices\n"); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = rk3328_dmc_init(pdev, data); | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * We add a devfreq driver to our parent since it has a device tree node | ||||
| 	 * with operating points. | ||||
| 	 */ | ||||
| 	if (dev_pm_opp_of_add_table(dev)) { | ||||
| 		dev_err(dev, "Invalid operating-points in device tree.\n"); | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	of_property_read_u32(np, "upthreshold", | ||||
| 			     &data->ondemand_data.upthreshold); | ||||
| 	of_property_read_u32(np, "downdifferential", | ||||
| 			     &data->ondemand_data.downdifferential); | ||||
| 
 | ||||
| 	data->rate = clk_get_rate(data->dmc_clk); | ||||
| 
 | ||||
| 	opp = devfreq_recommended_opp(dev, &data->rate, 0); | ||||
| 	if (IS_ERR(opp)) { | ||||
| 		ret = PTR_ERR(opp); | ||||
| 		goto err_free_opp; | ||||
| 	} | ||||
| 
 | ||||
| 	data->rate = dev_pm_opp_get_freq(opp); | ||||
| 	data->volt = dev_pm_opp_get_voltage(opp); | ||||
| 	dev_pm_opp_put(opp); | ||||
| 
 | ||||
| 	rk3328_devfreq_dmc_profile.initial_freq = data->rate; | ||||
| 
 | ||||
| 	data->devfreq = devm_devfreq_add_device(dev, | ||||
| 					   &rk3328_devfreq_dmc_profile, | ||||
| 					   DEVFREQ_GOV_SIMPLE_ONDEMAND, | ||||
| 					   &data->ondemand_data); | ||||
| 	if (IS_ERR(data->devfreq)) { | ||||
| 		ret = PTR_ERR(data->devfreq); | ||||
| 		goto err_free_opp; | ||||
| 	} | ||||
| 
 | ||||
| 	devm_devfreq_register_opp_notifier(dev, data->devfreq); | ||||
| 
 | ||||
| 	data->dev = dev; | ||||
| 	platform_set_drvdata(pdev, data); | ||||
| 
 | ||||
| 	return 0; | ||||
| 
 | ||||
| err_free_opp: | ||||
| 	dev_pm_opp_of_remove_table(&pdev->dev); | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static int rk3328_dmcfreq_remove(struct platform_device *pdev) | ||||
| { | ||||
| 	struct rk3328_dmcfreq *dmcfreq = dev_get_drvdata(&pdev->dev); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Before remove the opp table we need to unregister the opp notifier. | ||||
| 	 */ | ||||
| 	devm_devfreq_unregister_opp_notifier(dmcfreq->dev, dmcfreq->devfreq); | ||||
| 	dev_pm_opp_of_remove_table(dmcfreq->dev); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static const struct of_device_id rk3328dmc_devfreq_of_match[] = { | ||||
| 	{ .compatible = "rockchip,rk3328-dmc" }, | ||||
| 	{ }, | ||||
| }; | ||||
| MODULE_DEVICE_TABLE(of, rk3328dmc_devfreq_of_match); | ||||
| 
 | ||||
| static struct platform_driver rk3328_dmcfreq_driver = { | ||||
| 	.probe	= rk3328_dmcfreq_probe, | ||||
| 	.remove = rk3328_dmcfreq_remove, | ||||
| 	.driver = { | ||||
| 		.name	= "rk3328-dmc-freq", | ||||
| 		.pm	= &rk3328_dmcfreq_pm, | ||||
| 		.of_match_table = rk3328dmc_devfreq_of_match, | ||||
| 	}, | ||||
| }; | ||||
| module_platform_driver(rk3328_dmcfreq_driver); | ||||
| 
 | ||||
| MODULE_LICENSE("GPL v2"); | ||||
| MODULE_AUTHOR("Lin Huang <hl@rock-chips.com>"); | ||||
| MODULE_DESCRIPTION("RK3328 dmcfreq driver with devfreq framework"); | ||||
|  | @ -1,63 +0,0 @@ | |||
| /*
 | ||||
|  * | ||||
|  * Copyright (C) 2017 ROCKCHIP, Inc. | ||||
|  * | ||||
|  * This software is licensed under the terms of the GNU General Public | ||||
|  * License version 2, as published by the Free Software Foundation, and | ||||
|  * may be copied, distributed, and modified under those terms. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _DT_BINDINGS_CLOCK_ROCKCHIP_DDR_H | ||||
| #define _DT_BINDINGS_CLOCK_ROCKCHIP_DDR_H | ||||
| 
 | ||||
| #define DDR2_DEFAULT	(0) | ||||
| 
 | ||||
| #define DDR3_800D	(0)	/* 5-5-5 */ | ||||
| #define DDR3_800E	(1)	/* 6-6-6 */ | ||||
| #define DDR3_1066E	(2)	/* 6-6-6 */ | ||||
| #define DDR3_1066F	(3)	/* 7-7-7 */ | ||||
| #define DDR3_1066G	(4)	/* 8-8-8 */ | ||||
| #define DDR3_1333F	(5)	/* 7-7-7 */ | ||||
| #define DDR3_1333G	(6)	/* 8-8-8 */ | ||||
| #define DDR3_1333H	(7)	/* 9-9-9 */ | ||||
| #define DDR3_1333J	(8)	/* 10-10-10 */ | ||||
| #define DDR3_1600G	(9)	/* 8-8-8 */ | ||||
| #define DDR3_1600H	(10)	/* 9-9-9 */ | ||||
| #define DDR3_1600J	(11)	/* 10-10-10 */ | ||||
| #define DDR3_1600K	(12)	/* 11-11-11 */ | ||||
| #define DDR3_1866J	(13)	/* 10-10-10 */ | ||||
| #define DDR3_1866K	(14)	/* 11-11-11 */ | ||||
| #define DDR3_1866L	(15)	/* 12-12-12 */ | ||||
| #define DDR3_1866M	(16)	/* 13-13-13 */ | ||||
| #define DDR3_2133K	(17)	/* 11-11-11 */ | ||||
| #define DDR3_2133L	(18)	/* 12-12-12 */ | ||||
| #define DDR3_2133M	(19)	/* 13-13-13 */ | ||||
| #define DDR3_2133N	(20)	/* 14-14-14 */ | ||||
| #define DDR3_DEFAULT	(21) | ||||
| #define DDR_DDR2	(22) | ||||
| #define DDR_LPDDR	(23) | ||||
| #define DDR_LPDDR2	(24) | ||||
| 
 | ||||
| #define DDR4_1600J	(0)	/* 10-10-10 */ | ||||
| #define DDR4_1600K	(1)	/* 11-11-11 */ | ||||
| #define DDR4_1600L	(2)	/* 12-12-12 */ | ||||
| #define DDR4_1866L	(3)	/* 12-12-12 */ | ||||
| #define DDR4_1866M	(4)	/* 13-13-13 */ | ||||
| #define DDR4_1866N	(5)	/* 14-14-14 */ | ||||
| #define DDR4_2133N	(6)	/* 14-14-14 */ | ||||
| #define DDR4_2133P	(7)	/* 15-15-15 */ | ||||
| #define DDR4_2133R	(8)	/* 16-16-16 */ | ||||
| #define DDR4_2400P	(9)	/* 15-15-15 */ | ||||
| #define DDR4_2400R	(10)	/* 16-16-16 */ | ||||
| #define DDR4_2400U	(11)	/* 18-18-18 */ | ||||
| #define DDR4_DEFAULT	(12) | ||||
| 
 | ||||
| #define PAUSE_CPU_STACK_SIZE	16 | ||||
| 
 | ||||
| #endif | ||||
|  | @ -1,159 +0,0 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd | ||||
|  * | ||||
|  * This file is dual-licensed: you can use it either under the terms | ||||
|  * of the GPL or the X11 license, at your option. Note that this dual | ||||
|  * licensing only applies to this file, and not this project as a | ||||
|  * whole. | ||||
|  * | ||||
|  *  a) This library is free software; you can redistribute it and/or | ||||
|  *     modify it under the terms of the GNU General Public License as | ||||
|  *     published by the Free Software Foundation; either version 2 of the | ||||
|  *     License, or (at your option) any later version. | ||||
|  * | ||||
|  *     This library is distributed in the hope that it will be useful, | ||||
|  *     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  *     GNU General Public License for more details. | ||||
|  * | ||||
|  * Or, alternatively, | ||||
|  * | ||||
|  *  b) Permission is hereby granted, free of charge, to any person | ||||
|  *     obtaining a copy of this software and associated documentation | ||||
|  *     files (the "Software"), to deal in the Software without | ||||
|  *     restriction, including without limitation the rights to use, | ||||
|  *     copy, modify, merge, publish, distribute, sublicense, and/or | ||||
|  *     sell copies of the Software, and to permit persons to whom the | ||||
|  *     Software is furnished to do so, subject to the following | ||||
|  *     conditions: | ||||
|  * | ||||
|  *     The above copyright notice and this permission notice shall be | ||||
|  *     included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||||
|  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
|  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||
|  *     OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| #ifndef _DT_BINDINGS_DRAM_ROCKCHIP_RK3328_H | ||||
| #define _DT_BINDINGS_DRAM_ROCKCHIP_RK3328_H | ||||
| 
 | ||||
| #define DDR3_DS_34ohm			(34) | ||||
| #define DDR3_DS_40ohm			(40) | ||||
| 
 | ||||
| #define DDR3_ODT_DIS			(0) | ||||
| #define DDR3_ODT_40ohm			(40) | ||||
| #define DDR3_ODT_60ohm			(60) | ||||
| #define DDR3_ODT_120ohm			(120) | ||||
| 
 | ||||
| #define LP2_DS_34ohm			(34) | ||||
| #define LP2_DS_40ohm			(40) | ||||
| #define LP2_DS_48ohm			(48) | ||||
| #define LP2_DS_60ohm			(60) | ||||
| #define LP2_DS_68_6ohm			(68)	/* optional */ | ||||
| #define LP2_DS_80ohm			(80) | ||||
| #define LP2_DS_120ohm			(120)	/* optional */ | ||||
| 
 | ||||
| #define LP3_DS_34ohm			(34) | ||||
| #define LP3_DS_40ohm			(40) | ||||
| #define LP3_DS_48ohm			(48) | ||||
| #define LP3_DS_60ohm			(60) | ||||
| #define LP3_DS_80ohm			(80) | ||||
| #define LP3_DS_34D_40U			(3440) | ||||
| #define LP3_DS_40D_48U			(4048) | ||||
| #define LP3_DS_34D_48U			(3448) | ||||
| 
 | ||||
| #define LP3_ODT_DIS			(0) | ||||
| #define LP3_ODT_60ohm			(60) | ||||
| #define LP3_ODT_120ohm			(120) | ||||
| #define LP3_ODT_240ohm			(240) | ||||
| 
 | ||||
| #define LP4_PDDS_40ohm			(40) | ||||
| #define LP4_PDDS_48ohm			(48) | ||||
| #define LP4_PDDS_60ohm			(60) | ||||
| #define LP4_PDDS_80ohm			(80) | ||||
| #define LP4_PDDS_120ohm			(120) | ||||
| #define LP4_PDDS_240ohm			(240) | ||||
| 
 | ||||
| #define LP4_DQ_ODT_40ohm		(40) | ||||
| #define LP4_DQ_ODT_48ohm		(48) | ||||
| #define LP4_DQ_ODT_60ohm		(60) | ||||
| #define LP4_DQ_ODT_80ohm		(80) | ||||
| #define LP4_DQ_ODT_120ohm		(120) | ||||
| #define LP4_DQ_ODT_240ohm		(240) | ||||
| #define LP4_DQ_ODT_DIS			(0) | ||||
| 
 | ||||
| #define LP4_CA_ODT_40ohm		(40) | ||||
| #define LP4_CA_ODT_48ohm		(48) | ||||
| #define LP4_CA_ODT_60ohm		(60) | ||||
| #define LP4_CA_ODT_80ohm		(80) | ||||
| #define LP4_CA_ODT_120ohm		(120) | ||||
| #define LP4_CA_ODT_240ohm		(240) | ||||
| #define LP4_CA_ODT_DIS			(0) | ||||
| 
 | ||||
| #define DDR4_DS_34ohm			(34) | ||||
| #define DDR4_DS_48ohm			(48) | ||||
| #define DDR4_RTT_NOM_DIS		(0) | ||||
| #define DDR4_RTT_NOM_60ohm		(60) | ||||
| #define DDR4_RTT_NOM_120ohm		(120) | ||||
| #define DDR4_RTT_NOM_40ohm		(40) | ||||
| #define DDR4_RTT_NOM_240ohm		(240) | ||||
| #define DDR4_RTT_NOM_48ohm		(48) | ||||
| #define DDR4_RTT_NOM_80ohm		(80) | ||||
| #define DDR4_RTT_NOM_34ohm		(34) | ||||
| 
 | ||||
| #define PHY_DDR3_RON_RTT_DISABLE	(0) | ||||
| #define PHY_DDR3_RON_RTT_451ohm		(1) | ||||
| #define PHY_DDR3_RON_RTT_225ohm		(2) | ||||
| #define PHY_DDR3_RON_RTT_150ohm		(3) | ||||
| #define PHY_DDR3_RON_RTT_112ohm		(4) | ||||
| #define PHY_DDR3_RON_RTT_90ohm		(5) | ||||
| #define PHY_DDR3_RON_RTT_75ohm		(6) | ||||
| #define PHY_DDR3_RON_RTT_64ohm		(7) | ||||
| #define PHY_DDR3_RON_RTT_56ohm		(16) | ||||
| #define PHY_DDR3_RON_RTT_50ohm		(17) | ||||
| #define PHY_DDR3_RON_RTT_45ohm		(18) | ||||
| #define PHY_DDR3_RON_RTT_41ohm		(19) | ||||
| #define PHY_DDR3_RON_RTT_37ohm		(20) | ||||
| #define PHY_DDR3_RON_RTT_34ohm		(21) | ||||
| #define PHY_DDR3_RON_RTT_33ohm		(22) | ||||
| #define PHY_DDR3_RON_RTT_30ohm		(23) | ||||
| #define PHY_DDR3_RON_RTT_28ohm		(24) | ||||
| #define PHY_DDR3_RON_RTT_26ohm		(25) | ||||
| #define PHY_DDR3_RON_RTT_25ohm		(26) | ||||
| #define PHY_DDR3_RON_RTT_23ohm		(27) | ||||
| #define PHY_DDR3_RON_RTT_22ohm		(28) | ||||
| #define PHY_DDR3_RON_RTT_21ohm		(29) | ||||
| #define PHY_DDR3_RON_RTT_20ohm		(30) | ||||
| #define PHY_DDR3_RON_RTT_19ohm		(31) | ||||
| 
 | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_DISABLE (0) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_480ohm	(1) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_240ohm	(2) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_160ohm	(3) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_120ohm	(4) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_96ohm	(5) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_80ohm	(6) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_68ohm	(7) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_60ohm	(16) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_53ohm	(17) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_48ohm	(18) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_43ohm	(19) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_40ohm	(20) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_37ohm	(21) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_34ohm	(22) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_32ohm	(23) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_30ohm	(24) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_28ohm	(25) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_26ohm	(26) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_25ohm	(27) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_24ohm	(28) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_22ohm	(29) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_21ohm	(30) | ||||
| #define PHY_DDR4_LPDDR3_RON_RTT_20ohm	(31) | ||||
| 
 | ||||
| #endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3328_H*/ | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue