04-ax3000t.patch 7.7 KB

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