4-ax3000t.patch 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. From 02b57804f8602ff95f298be332d471283759e27c Mon Sep 17 00:00:00 2001
  2. From: AmadeusGhost <[email protected]>
  3. Date: Fri, 15 Sep 2023 23:06:10 +0800
  4. Subject: [PATCH] mediatek: add Xiaomi AX3000T support
  5. ---
  6. .../uboot-envtools/files/mediatek_filogic | 1 +
  7. .../mediatek/dts/mt7981b-xiaomi-ax3000t.dts | 49 ++++
  8. .../dts/mt7981b-xiaomi_mi-router.dtsi | 241 ++++++++++++++++
  9. .../filogic/base-files/etc/board.d/02_network | 4 +-
  10. target/linux/mediatek/image/filogic.mk | 14 +
  11. 7 files changed, 325 insertions(+), 248 deletions(-)
  12. create mode 100644 target/linux/mediatek/dts/mt7981b-xiaomi-ax3000t.dts
  13. create mode 100644 target/linux/mediatek/dts/mt7981b-xiaomi_mi-router.dtsi
  14. diff --git a/package/boot/uboot-envtools/files/mediatek_filogic b/package/boot/uboot-envtools/files/mediatek_filogic
  15. index a8def1d00b764..3ad8f80c750e0 100644
  16. --- a/package/boot/uboot-envtools/files/mediatek_filogic
  17. +++ b/package/boot/uboot-envtools/files/mediatek_filogic
  18. @@ -62,6 +62,7 @@
  19. tplink,tl-xdr4288|\
  20. tplink,tl-xdr6086|\
  21. tplink,tl-xdr6088|\
  22. +xiaomi,mi-router-ax3000t|\
  23. xiaomi,mi-router-wr30u-ubootmod|\
  24. xiaomi,redmi-router-ax6000-ubootmod)
  25. . /lib/upgrade/nand.sh
  26. diff --git a/target/linux/mediatek/dts/mt7981b-xiaomi-ax3000t.dts b/target/linux/mediatek/dts/mt7981b-xiaomi-ax3000t.dts
  27. new file mode 100644
  28. index 0000000000000..96f7680ef23a8
  29. --- /dev/null
  30. +++ b/target/linux/mediatek/dts/mt7981b-xiaomi-ax3000t.dts
  31. @@ -0,0 +1,49 @@
  32. +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
  33. +
  34. +/dts-v1/;
  35. +
  36. +#include "mt7981b-xiaomi_mi-router.dtsi"
  37. +
  38. +/ {
  39. + model = "Xiaomi Mi Router AX3000T";
  40. + compatible = "xiaomi,mi-router-ax3000t", "mediatek,mt7981";
  41. +};
  42. +
  43. +&gmac0 {
  44. + nvmem-cells = <&macaddr_factory_4>;
  45. + nvmem-cell-names = "mac-address";
  46. + mac-address-increment = <(-2)>;
  47. +};
  48. +
  49. +&i2c0 {
  50. + pinctrl-names = "default";
  51. + pinctrl-0 = <&i2c_pins>;
  52. + status = "okay";
  53. +
  54. + nfc@57 {
  55. + compatible = "nt082c";
  56. + reg = <0x57>;
  57. + };
  58. +};
  59. +
  60. +&partitions {
  61. + partition@600000 {
  62. + label = "ubi";
  63. + reg = <0x0600000 0x6400000>;
  64. + };
  65. +
  66. + partition@6a00000 {
  67. + label = "data";
  68. + reg = <0x6a00000 0x0c00000>;
  69. + read-only;
  70. + };
  71. +};
  72. +
  73. +&pio {
  74. + i2c_pins: i2c-pins {
  75. + mux {
  76. + function = "i2c";
  77. + groups = "i2c0_1";
  78. + };
  79. + };
  80. +};
  81. diff --git a/target/linux/mediatek/dts/mt7981b-xiaomi_mi-router.dtsi b/target/linux/mediatek/dts/mt7981b-xiaomi_mi-router.dtsi
  82. new file mode 100644
  83. index 0000000000000..3b0e158a0b812
  84. --- /dev/null
  85. +++ b/target/linux/mediatek/dts/mt7981b-xiaomi_mi-router.dtsi
  86. @@ -0,0 +1,241 @@
  87. +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
  88. +
  89. +#include <dt-bindings/gpio/gpio.h>
  90. +#include <dt-bindings/input/input.h>
  91. +
  92. +#include "mt7981.dtsi"
  93. +
  94. +/ {
  95. + aliases {
  96. + serial0 = &uart0;
  97. + led-boot = &led_system_orange;
  98. + led-failsafe = &led_system_blue;
  99. + led-running = &led_system_blue;
  100. + led-upgrade = &led_system_orange;
  101. + };
  102. +
  103. + chosen {
  104. + stdout-path = "serial0:115200n8";
  105. + };
  106. +
  107. + memory {
  108. + reg = <0 0x40000000 0 0x10000000>;
  109. + };
  110. +
  111. + gpio-keys {
  112. + compatible = "gpio-keys";
  113. +
  114. + reset {
  115. + label = "reset";
  116. + linux,code = <KEY_RESTART>;
  117. + gpios = <&pio 1 GPIO_ACTIVE_LOW>;
  118. + };
  119. +
  120. + mesh {
  121. + label = "mesh";
  122. + linux,code = <BTN_9>;
  123. + linux,input-type = <EV_SW>;
  124. + gpios = <&pio 0 GPIO_ACTIVE_LOW>;
  125. + };
  126. + };
  127. +
  128. + leds: leds {
  129. + compatible = "gpio-leds";
  130. +
  131. + led_system_blue: system_blue {
  132. + label = "blue:system";
  133. + gpios = <&pio 9 GPIO_ACTIVE_LOW>;
  134. + };
  135. +
  136. + led_system_orange: system_orange {
  137. + label = "orange:system";
  138. + gpios = <&pio 10 GPIO_ACTIVE_LOW>;
  139. + };
  140. + };
  141. +};
  142. +
  143. +&eth {
  144. + status = "okay";
  145. +
  146. + gmac0: mac@0 {
  147. + compatible = "mediatek,eth-mac";
  148. + reg = <0>;
  149. + phy-mode = "2500base-x";
  150. +
  151. + fixed-link {
  152. + speed = <2500>;
  153. + full-duplex;
  154. + pause;
  155. + };
  156. + };
  157. +};
  158. +
  159. +&mdio_bus {
  160. + switch: switch@0 {
  161. + compatible = "mediatek,mt7531";
  162. + reg = <31>;
  163. + reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
  164. + interrupt-controller;
  165. + #interrupt-cells = <1>;
  166. + interrupt-parent = <&pio>;
  167. + interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
  168. + };
  169. +};
  170. +
  171. +&spi0 {
  172. + pinctrl-names = "default";
  173. + pinctrl-0 = <&spi0_flash_pins>;
  174. + status = "okay";
  175. +
  176. + spi_nand@0 {
  177. + compatible = "spi-nand";
  178. + #address-cells = <1>;
  179. + #size-cells = <1>;
  180. + reg = <0>;
  181. +
  182. + spi-max-frequency = <52000000>;
  183. + spi-tx-bus-width = <4>;
  184. + spi-rx-bus-width = <4>;
  185. +
  186. + mediatek,nmbm;
  187. + mediatek,bmt-max-ratio = <1>;
  188. + mediatek,bmt-max-reserved-blocks = <64>;
  189. +
  190. + partitions: partitions {
  191. + compatible = "fixed-partitions";
  192. + #address-cells = <1>;
  193. + #size-cells = <1>;
  194. +
  195. + partition@0 {
  196. + label = "BL2";
  197. + reg = <0x0000000 0x0100000>;
  198. + read-only;
  199. + };
  200. +
  201. + partition@100000 {
  202. + label = "Nvram";
  203. + reg = <0x0100000 0x0040000>;
  204. + read-only;
  205. + };
  206. +
  207. + partition@140000 {
  208. + label = "Bdata";
  209. + reg = <0x0140000 0x0040000>;
  210. + read-only;
  211. + };
  212. +
  213. + factory: partition@180000 {
  214. + label = "Factory";
  215. + reg = <0x0180000 0x0200000>;
  216. + read-only;
  217. +
  218. + compatible = "nvmem-cells";
  219. + #address-cells = <1>;
  220. + #size-cells = <1>;
  221. +
  222. + macaddr_factory_4: macaddr@4 {
  223. + reg = <0x4 0x6>;
  224. + };
  225. + };
  226. +
  227. + partition@380000 {
  228. + label = "FIP";
  229. + reg = <0x0380000 0x0200000>;
  230. + read-only;
  231. + };
  232. +
  233. + partition@580000 {
  234. + label = "crash";
  235. + reg = <0x0580000 0x0040000>;
  236. + read-only;
  237. + };
  238. +
  239. + partition@5c0000 {
  240. + label = "crash_log";
  241. + reg = <0x05c0000 0x0040000>;
  242. + read-only;
  243. + };
  244. +
  245. + partition@7600000 {
  246. + label = "KF";
  247. + reg = <0x7600000 0x0040000>;
  248. + read-only;
  249. + };
  250. + };
  251. + };
  252. +};
  253. +
  254. +&switch {
  255. + ports {
  256. + #address-cells = <1>;
  257. + #size-cells = <0>;
  258. +
  259. + port@0 {
  260. + reg = <0>;
  261. + label = "wan";
  262. + };
  263. +
  264. + port@1 {
  265. + reg = <1>;
  266. + label = "lan2";
  267. + };
  268. +
  269. + port@2 {
  270. + reg = <2>;
  271. + label = "lan3";
  272. + };
  273. +
  274. + port@3 {
  275. + reg = <3>;
  276. + label = "lan4";
  277. + };
  278. +
  279. + port@6 {
  280. + reg = <6>;
  281. + label = "cpu";
  282. + ethernet = <&gmac0>;
  283. + phy-mode = "2500base-x";
  284. +
  285. + fixed-link {
  286. + speed = <2500>;
  287. + full-duplex;
  288. + pause;
  289. + };
  290. + };
  291. + };
  292. +};
  293. +
  294. +&pio {
  295. + spi0_flash_pins: spi0-pins {
  296. + mux {
  297. + function = "spi";
  298. + groups = "spi0", "spi0_wp_hold";
  299. + };
  300. +
  301. + conf-pu {
  302. + pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
  303. + drive-strength = <8>;
  304. + mediatek,pull-up-adv = <0>; /* bias-disable */
  305. + };
  306. +
  307. + conf-pd {
  308. + pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
  309. + drive-strength = <8>;
  310. + mediatek,pull-up-adv = <0>; /* bias-disable */
  311. + };
  312. + };
  313. +};
  314. +
  315. +&uart0 {
  316. + status = "okay";
  317. +};
  318. +
  319. +&watchdog {
  320. + status = "okay";
  321. +};
  322. +
  323. +&wifi {
  324. + status = "okay";
  325. +
  326. + mediatek,mtd-eeprom = <&factory 0x0>;
  327. +};
  328. diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
  329. index f760b23dc417b..9e0d53912912e 100644
  330. --- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
  331. +++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
  332. @@ -52,6 +52,7 @@
  333. tplink,tl-xdr6086)
  334. ucidef_set_interfaces_lan_wan "lan1 lan2" eth1
  335. ;;
  336. + xiaomi,mi-router-ax3000t|\
  337. xiaomi,mi-router-wr30u-112m-nmbm|\
  338. xiaomi,mi-router-wr30u-stock|\
  339. xiaomi,mi-router-wr30u-ubootmod|\
  340. @@ -101,6 +102,7 @@
  341. wan_mac=$(macaddr_add "$lan_mac" 1)
  342. label_mac=$wan_mac
  343. ;;
  344. + xiaomi,mi-router-ax3000t|\
  345. xiaomi,mi-router-wr30u-112m-nmbm|\
  346. xiaomi,mi-router-wr30u-stock|\
  347. xiaomi,mi-router-wr30u-ubootmod|\
  348. diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
  349. index 282054886b56e..413860a1a672c 100644
  350. --- a/target/linux/mediatek/image/filogic.mk
  351. +++ b/target/linux/mediatek/image/filogic.mk
  352. @@ -417,6 +417,20 @@
  353. endef
  354. TARGET_DEVICES += tplink_tl-xdr6088
  355. +define Device/xiaomi_mi-router-ax3000t
  356. + DEVICE_VENDOR := Xiaomi
  357. + DEVICE_MODEL := Mi Router AX3000T
  358. + DEVICE_DTS := mt7981b-xiaomi-ax3000t
  359. + DEVICE_DTS_DIR := ../dts
  360. + UBINIZE_OPTS := -E 5
  361. + BLOCKSIZE := 128k
  362. + PAGESIZE := 2048
  363. + KERNEL_IN_UBI := 1
  364. + DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware
  365. + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
  366. +endef
  367. +TARGET_DEVICES += xiaomi_mi-router-ax3000t
  368. +
  369. define Device/xiaomi_mi-router-wr30u-112m-nmbm
  370. DEVICE_VENDOR := Xiaomi
  371. DEVICE_MODEL := Mi Router WR30U (112M UBI with NMBM-Enabled layout)