100-rockchip-rk3328-Add-support-for-FriendlyARM-NanoPi-R.patch 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. From 67f4c228c2bf515386cd54073104dc2e6eae85ea Mon Sep 17 00:00:00 2001
  2. From: David Bauer <mail@david-bauer.net>
  3. Date: Fri, 10 Jul 2020 14:58:30 +0200
  4. Subject: [PATCH] rockchip: rk3328: Add support for FriendlyARM NanoPi R2S
  5. This adds support for the NanoPi R2S from FriendlyArm.
  6. Rockchip RK3328 SoC
  7. 1GB DDR4 RAM
  8. Gigabit Ethernet (WAN)
  9. Gigabit Ethernet (USB3) (LAN)
  10. USB 2.0 Host Port
  11. MicroSD slot
  12. Reset button
  13. WAN - LAN - SYS LED
  14. Signed-off-by: David Bauer <mail@david-bauer.net>
  15. ---
  16. arch/arm/dts/Makefile | 1 +
  17. arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi | 34 +++
  18. arch/arm/dts/rk3328-nanopi-r2s.dts | 334 +++++++++++++++++++++
  19. board/rockchip/evb_rk3328/MAINTAINERS | 7 +
  20. configs/nanopi-r2s-rk3328_defconfig | 99 ++++++
  21. 5 files changed, 475 insertions(+)
  22. create mode 100644 arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
  23. create mode 100644 arch/arm/dts/rk3328-nanopi-r2s.dts
  24. create mode 100644 configs/nanopi-r2s-rk3328_defconfig
  25. --- a/arch/arm/dts/Makefile
  26. +++ b/arch/arm/dts/Makefile
  27. @@ -106,6 +106,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3308) += \
  28. dtb-$(CONFIG_ROCKCHIP_RK3328) += \
  29. rk3328-evb.dtb \
  30. + rk3328-nanopi-r2s.dtb \
  31. rk3328-roc-cc.dtb \
  32. rk3328-rock64.dtb \
  33. rk3328-rock-pi-e.dtb
  34. --- /dev/null
  35. +++ b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
  36. @@ -0,0 +1,34 @@
  37. +// SPDX-License-Identifier: GPL-2.0+
  38. +/*
  39. + * (C) Copyright 2018-2019 Rockchip Electronics Co., Ltd
  40. + * (C) Copyright 2020 David Bauer
  41. + */
  42. +
  43. +#include "rk3328-u-boot.dtsi"
  44. +#include "rk3328-sdram-ddr4-666.dtsi"
  45. +/ {
  46. + chosen {
  47. + u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
  48. + };
  49. +};
  50. +
  51. +&gpio0 {
  52. + u-boot,dm-spl;
  53. +};
  54. +
  55. +&pinctrl {
  56. + u-boot,dm-spl;
  57. +};
  58. +
  59. +&sdmmc0m1_gpio {
  60. + u-boot,dm-spl;
  61. +};
  62. +
  63. +&pcfg_pull_up_4ma {
  64. + u-boot,dm-spl;
  65. +};
  66. +
  67. +/* Need this and all the pinctrl/gpio stuff above to set pinmux */
  68. +&vcc_sd {
  69. + u-boot,dm-spl;
  70. +};
  71. --- /dev/null
  72. +++ b/arch/arm/dts/rk3328-nanopi-r2s.dts
  73. @@ -0,0 +1,334 @@
  74. +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  75. +/*
  76. + * Copyright (c) 2020 David Bauer <mail@david-bauer.net>
  77. + */
  78. +
  79. +/dts-v1/;
  80. +
  81. +#include <dt-bindings/input/input.h>
  82. +#include <dt-bindings/gpio/gpio.h>
  83. +#include "rk3328.dtsi"
  84. +
  85. +/ {
  86. + model = "FriendlyARM NanoPi R2S";
  87. + compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328";
  88. +
  89. + chosen {
  90. + stdout-path = "serial2:1500000n8";
  91. + };
  92. +
  93. + gmac_clkin: external-gmac-clock {
  94. + compatible = "fixed-clock";
  95. + clock-frequency = <125000000>;
  96. + clock-output-names = "gmac_clkin";
  97. + #clock-cells = <0>;
  98. + };
  99. +
  100. + vcc_sd: sdmmc-regulator {
  101. + compatible = "regulator-fixed";
  102. + gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
  103. + pinctrl-names = "default";
  104. + pinctrl-0 = <&sdmmc0m1_gpio>;
  105. + regulator-name = "vcc_sd";
  106. + regulator-min-microvolt = <3300000>;
  107. + regulator-max-microvolt = <3300000>;
  108. + vin-supply = <&vcc_io>;
  109. + };
  110. +
  111. + vcc_sdio: sdmmcio-regulator {
  112. + compatible = "regulator-gpio";
  113. + gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_HIGH>;
  114. + enable-active-high;
  115. + states = <1800000 0x1
  116. + 3300000 0x0>;
  117. + pinctrl-names = "default";
  118. + pinctrl-0 = <&sdio_vcc_pin>;
  119. + regulator-always-on;
  120. + regulator-min-microvolt = <1800000>;
  121. + regulator-max-microvolt = <3300000>;
  122. + regulator-name = "vcc_sdio";
  123. + regulator-settling-time-us = <5000>;
  124. + regulator-type = "voltage";
  125. + vin-supply = <&vcc_io>;
  126. + };
  127. +
  128. + vcc_sys: vcc-sys {
  129. + compatible = "regulator-fixed";
  130. + regulator-name = "vcc_sys";
  131. + regulator-always-on;
  132. + regulator-boot-on;
  133. + regulator-min-microvolt = <5000000>;
  134. + regulator-max-microvolt = <5000000>;
  135. + };
  136. +
  137. + leds {
  138. + compatible = "gpio-leds";
  139. +
  140. + pinctrl-names = "default";
  141. + pinctrl-0 = <&led_pins>;
  142. +
  143. + sys {
  144. + gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
  145. + label = "nanopi-r2s:red:sys";
  146. + };
  147. +
  148. + lan {
  149. + gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
  150. + label = "nanopi-r2s:green:lan";
  151. + };
  152. +
  153. + wan {
  154. + gpios = <&gpio2 RK_PC2 GPIO_ACTIVE_HIGH>;
  155. + label = "nanopi-r2s:green:wan";
  156. + };
  157. + };
  158. +
  159. + gpio_keys {
  160. + compatible = "gpio-keys-polled";
  161. + poll-interval = <100>;
  162. +
  163. + pinctrl-names = "default";
  164. + pinctrl-0 = <&button_pins>;
  165. +
  166. + reset {
  167. + label = "Reset Button";
  168. + gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
  169. + linux,code = <KEY_RESTART>;
  170. + debounce-interval = <50>;
  171. + };
  172. + };
  173. +};
  174. +
  175. +&cpu0 {
  176. + cpu-supply = <&vdd_arm>;
  177. +};
  178. +
  179. +&cpu1 {
  180. + cpu-supply = <&vdd_arm>;
  181. +};
  182. +
  183. +&cpu2 {
  184. + cpu-supply = <&vdd_arm>;
  185. +};
  186. +
  187. +&cpu3 {
  188. + cpu-supply = <&vdd_arm>;
  189. +};
  190. +
  191. +&gmac2io {
  192. + assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
  193. + assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
  194. + clock_in_out = "input";
  195. + phy-supply = <&vcc_io>;
  196. + phy-handle = <&rtl8211e>;
  197. + phy-mode = "rgmii";
  198. + pinctrl-names = "default";
  199. + pinctrl-0 = <&rgmiim1_pins>;
  200. + snps,aal;
  201. + snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
  202. + snps,reset-active-low;
  203. + snps,reset-delays-us = <0 10000 50000>;
  204. + tx_delay = <0x24>;
  205. + rx_delay = <0x18>;
  206. + status = "okay";
  207. +
  208. + mdio {
  209. + compatible = "snps,dwmac-mdio";
  210. + #address-cells = <1>;
  211. + #size-cells = <0>;
  212. +
  213. + rtl8211e: ethernet-phy@0 {
  214. + reg = <0>;
  215. + };
  216. + };
  217. +};
  218. +
  219. +&i2c1 {
  220. + status = "okay";
  221. +
  222. + rk805: rk805@18 {
  223. + compatible = "rockchip,rk805";
  224. + reg = <0x18>;
  225. + interrupt-parent = <&gpio2>;
  226. + interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
  227. + #clock-cells = <1>;
  228. + clock-output-names = "xin32k", "rk805-clkout2";
  229. + gpio-controller;
  230. + #gpio-cells = <2>;
  231. + pinctrl-names = "default";
  232. + pinctrl-0 = <&pmic_int_l>;
  233. + rockchip,system-power-controller;
  234. + wakeup-source;
  235. +
  236. + vcc1-supply = <&vcc_sys>;
  237. + vcc2-supply = <&vcc_sys>;
  238. + vcc3-supply = <&vcc_sys>;
  239. + vcc4-supply = <&vcc_sys>;
  240. + vcc5-supply = <&vcc_io>;
  241. + vcc6-supply = <&vcc_sys>;
  242. +
  243. + regulators {
  244. + vdd_logic: DCDC_REG1 {
  245. + regulator-name = "vdd_logic";
  246. + regulator-min-microvolt = <712500>;
  247. + regulator-max-microvolt = <1450000>;
  248. + regulator-ramp-delay = <12500>;
  249. + regulator-always-on;
  250. + regulator-boot-on;
  251. + regulator-state-mem {
  252. + regulator-on-in-suspend;
  253. + regulator-suspend-microvolt = <1000000>;
  254. + };
  255. + };
  256. +
  257. + vdd_arm: DCDC_REG2 {
  258. + regulator-name = "vdd_arm";
  259. + regulator-min-microvolt = <712500>;
  260. + regulator-max-microvolt = <1450000>;
  261. + regulator-ramp-delay = <12500>;
  262. + regulator-always-on;
  263. + regulator-boot-on;
  264. + regulator-state-mem {
  265. + regulator-on-in-suspend;
  266. + regulator-suspend-microvolt = <950000>;
  267. + };
  268. + };
  269. +
  270. + vcc_ddr: DCDC_REG3 {
  271. + regulator-name = "vcc_ddr";
  272. + regulator-always-on;
  273. + regulator-boot-on;
  274. + regulator-state-mem {
  275. + regulator-on-in-suspend;
  276. + };
  277. + };
  278. +
  279. + vcc_io: DCDC_REG4 {
  280. + regulator-name = "vcc_io";
  281. + regulator-min-microvolt = <3300000>;
  282. + regulator-max-microvolt = <3300000>;
  283. + regulator-always-on;
  284. + regulator-boot-on;
  285. + regulator-state-mem {
  286. + regulator-on-in-suspend;
  287. + regulator-suspend-microvolt = <3300000>;
  288. + };
  289. + };
  290. +
  291. + vcc_18: LDO_REG1 {
  292. + regulator-name = "vcc_18";
  293. + regulator-min-microvolt = <1800000>;
  294. + regulator-max-microvolt = <1800000>;
  295. + regulator-always-on;
  296. + regulator-boot-on;
  297. + regulator-state-mem {
  298. + regulator-on-in-suspend;
  299. + regulator-suspend-microvolt = <1800000>;
  300. + };
  301. + };
  302. +
  303. + vcc18_emmc: LDO_REG2 {
  304. + regulator-name = "vcc18_emmc";
  305. + regulator-min-microvolt = <1800000>;
  306. + regulator-max-microvolt = <1800000>;
  307. + regulator-always-on;
  308. + regulator-boot-on;
  309. + regulator-state-mem {
  310. + regulator-on-in-suspend;
  311. + regulator-suspend-microvolt = <1800000>;
  312. + };
  313. + };
  314. +
  315. + vdd_10: LDO_REG3 {
  316. + regulator-name = "vdd_10";
  317. + regulator-min-microvolt = <1000000>;
  318. + regulator-max-microvolt = <1000000>;
  319. + regulator-always-on;
  320. + regulator-boot-on;
  321. + regulator-state-mem {
  322. + regulator-on-in-suspend;
  323. + regulator-suspend-microvolt = <1000000>;
  324. + };
  325. + };
  326. + };
  327. + };
  328. +};
  329. +
  330. +&io_domains {
  331. + status = "okay";
  332. +
  333. + vccio1-supply = <&vcc_io>;
  334. + vccio2-supply = <&vcc18_emmc>;
  335. + vccio3-supply = <&vcc_sdio>;
  336. + vccio4-supply = <&vcc_18>;
  337. + vccio5-supply = <&vcc_io>;
  338. + vccio6-supply = <&vcc_io>;
  339. + pmuio-supply = <&vcc_io>;
  340. +};
  341. +
  342. +&pinctrl {
  343. + leds {
  344. + led_pins: led-pins {
  345. + rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>,
  346. + <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>,
  347. + <2 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
  348. + };
  349. + };
  350. +
  351. + button {
  352. + button_pins: button-pins {
  353. + rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
  354. + };
  355. + };
  356. +
  357. + pmic {
  358. + pmic_int_l: pmic-int-l {
  359. + rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
  360. + };
  361. + };
  362. +
  363. + sd {
  364. + sdio_vcc_pin: sdio-vcc-pin {
  365. + rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
  366. + };
  367. + };
  368. +};
  369. +
  370. +&sdmmc {
  371. + bus-width = <4>;
  372. + cap-mmc-highspeed;
  373. + cap-sd-highspeed;
  374. + disable-wp;
  375. + max-frequency = <150000000>;
  376. + pinctrl-names = "default";
  377. + pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
  378. + vmmc-supply = <&vcc_sd>;
  379. + vqmmc-supply = <&vcc_sdio>;
  380. + status = "okay";
  381. +};
  382. +
  383. +&tsadc {
  384. + rockchip,hw-tshut-mode = <0>;
  385. + rockchip,hw-tshut-polarity = <0>;
  386. + status = "okay";
  387. +};
  388. +
  389. +&uart2 {
  390. + status = "okay";
  391. +};
  392. +
  393. +&u2phy {
  394. + status = "okay";
  395. +
  396. + u2phy_host: host-port {
  397. + status = "okay";
  398. + };
  399. +};
  400. +
  401. +&usb_host0_ehci {
  402. + status = "okay";
  403. +};
  404. +
  405. +&usb_host0_ohci {
  406. + status = "okay";
  407. +};
  408. --- a/board/rockchip/evb_rk3328/MAINTAINERS
  409. +++ b/board/rockchip/evb_rk3328/MAINTAINERS
  410. @@ -5,6 +5,13 @@ F: board/rockchip/evb_rk3328
  411. F: include/configs/evb_rk3328.h
  412. F: configs/evb-rk3328_defconfig
  413. +NANOPI-R2S-RK3328
  414. +M: David Bauer <mail@david-bauer.net>
  415. +S: Maintained
  416. +F: configs/nanopi-r2s-rk3328_defconfig
  417. +F: arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
  418. +F: arch/arm/dts/rk3328-nanopi-r2s.dts
  419. +
  420. ROC-RK3328-CC
  421. M: Loic Devulder <ldevulder@suse.com>
  422. M: Chen-Yu Tsai <wens@csie.org>
  423. --- /dev/null
  424. +++ b/configs/nanopi-r2s-rk3328_defconfig
  425. @@ -0,0 +1,99 @@
  426. +CONFIG_ARM=y
  427. +CONFIG_ARCH_ROCKCHIP=y
  428. +CONFIG_SYS_TEXT_BASE=0x00200000
  429. +CONFIG_SPL_GPIO_SUPPORT=y
  430. +CONFIG_ENV_OFFSET=0x3F8000
  431. +CONFIG_ROCKCHIP_RK3328=y
  432. +CONFIG_TPL_ROCKCHIP_COMMON_BOARD=y
  433. +CONFIG_TPL_LIBCOMMON_SUPPORT=y
  434. +CONFIG_TPL_LIBGENERIC_SUPPORT=y
  435. +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
  436. +CONFIG_SPL_STACK_R_ADDR=0x600000
  437. +CONFIG_NR_DRAM_BANKS=1
  438. +CONFIG_DEBUG_UART_BASE=0xFF130000
  439. +CONFIG_DEBUG_UART_CLOCK=24000000
  440. +CONFIG_SMBIOS_PRODUCT_NAME="nanopi_r2s_rk3328"
  441. +CONFIG_DEBUG_UART=y
  442. +CONFIG_TPL_SYS_MALLOC_F_LEN=0x800
  443. +# CONFIG_ANDROID_BOOT_IMAGE is not set
  444. +CONFIG_FIT=y
  445. +CONFIG_FIT_VERBOSE=y
  446. +CONFIG_SPL_LOAD_FIT=y
  447. +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3328-nanopi-r2s.dtb"
  448. +CONFIG_MISC_INIT_R=y
  449. +# CONFIG_DISPLAY_CPUINFO is not set
  450. +CONFIG_DISPLAY_BOARDINFO_LATE=y
  451. +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
  452. +CONFIG_TPL_SYS_MALLOC_SIMPLE=y
  453. +CONFIG_SPL_STACK_R=y
  454. +CONFIG_SPL_I2C_SUPPORT=y
  455. +CONFIG_SPL_POWER_SUPPORT=y
  456. +CONFIG_SPL_ATF=y
  457. +CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
  458. +CONFIG_CMD_BOOTZ=y
  459. +CONFIG_CMD_GPT=y
  460. +CONFIG_CMD_MMC=y
  461. +CONFIG_CMD_USB=y
  462. +# CONFIG_CMD_SETEXPR is not set
  463. +CONFIG_CMD_TIME=y
  464. +CONFIG_SPL_OF_CONTROL=y
  465. +CONFIG_TPL_OF_CONTROL=y
  466. +CONFIG_DEFAULT_DEVICE_TREE="rk3328-nanopi-r2s"
  467. +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
  468. +CONFIG_TPL_OF_PLATDATA=y
  469. +CONFIG_ENV_IS_IN_MMC=y
  470. +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  471. +CONFIG_NET_RANDOM_ETHADDR=y
  472. +CONFIG_TPL_DM=y
  473. +CONFIG_REGMAP=y
  474. +CONFIG_SPL_REGMAP=y
  475. +CONFIG_TPL_REGMAP=y
  476. +CONFIG_SYSCON=y
  477. +CONFIG_SPL_SYSCON=y
  478. +CONFIG_TPL_SYSCON=y
  479. +CONFIG_CLK=y
  480. +CONFIG_SPL_CLK=y
  481. +CONFIG_FASTBOOT_BUF_ADDR=0x800800
  482. +CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
  483. +CONFIG_ROCKCHIP_GPIO=y
  484. +CONFIG_SYS_I2C_ROCKCHIP=y
  485. +CONFIG_MMC_DW=y
  486. +CONFIG_MMC_DW_ROCKCHIP=y
  487. +CONFIG_SF_DEFAULT_SPEED=20000000
  488. +CONFIG_DM_ETH=y
  489. +CONFIG_ETH_DESIGNWARE=y
  490. +CONFIG_GMAC_ROCKCHIP=y
  491. +CONFIG_PINCTRL=y
  492. +CONFIG_SPL_PINCTRL=y
  493. +CONFIG_DM_PMIC=y
  494. +CONFIG_PMIC_RK8XX=y
  495. +CONFIG_SPL_DM_REGULATOR=y
  496. +CONFIG_REGULATOR_PWM=y
  497. +CONFIG_DM_REGULATOR_FIXED=y
  498. +CONFIG_SPL_DM_REGULATOR_FIXED=y
  499. +CONFIG_REGULATOR_RK8XX=y
  500. +CONFIG_PWM_ROCKCHIP=y
  501. +CONFIG_RAM=y
  502. +CONFIG_SPL_RAM=y
  503. +CONFIG_TPL_RAM=y
  504. +CONFIG_DM_RESET=y
  505. +CONFIG_BAUDRATE=1500000
  506. +CONFIG_DEBUG_UART_SHIFT=2
  507. +CONFIG_SYSRESET=y
  508. +# CONFIG_TPL_SYSRESET is not set
  509. +CONFIG_USB=y
  510. +CONFIG_USB_XHCI_HCD=y
  511. +CONFIG_USB_XHCI_DWC3=y
  512. +CONFIG_USB_EHCI_HCD=y
  513. +CONFIG_USB_EHCI_GENERIC=y
  514. +CONFIG_USB_OHCI_HCD=y
  515. +CONFIG_USB_OHCI_GENERIC=y
  516. +CONFIG_USB_DWC2=y
  517. +CONFIG_USB_DWC3=y
  518. +# CONFIG_USB_DWC3_GADGET is not set
  519. +CONFIG_USB_GADGET=y
  520. +CONFIG_USB_GADGET_DWC2_OTG=y
  521. +CONFIG_SPL_TINY_MEMSET=y
  522. +CONFIG_TPL_TINY_MEMSET=y
  523. +CONFIG_ERRNO_STR=y
  524. +CONFIG_SMBIOS_MANUFACTURER="pine64"