intel-ixp42x-freecom-fsg-3.dts 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. // SPDX-License-Identifier: ISC
  2. /*
  3. * Device Tree file for the Freecom FSG-3 router.
  4. * This machine is based on IXP425.
  5. * This device tree is inspired by the board file by Rod Whitby.
  6. */
  7. /dts-v1/;
  8. #include "intel-ixp42x.dtsi"
  9. #include <dt-bindings/input/input.h>
  10. / {
  11. model = "Freecom FSG-3";
  12. compatible = "freecom,fsg-3", "intel,ixp42x";
  13. #address-cells = <1>;
  14. #size-cells = <1>;
  15. memory@0 {
  16. /* 64 MB memory */
  17. device_type = "memory";
  18. reg = <0x00000000 0x4000000>;
  19. };
  20. chosen {
  21. /* Boot from the first partition on the hard drive */
  22. bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootfstype=ext4 rootwait";
  23. stdout-path = "uart0:115200n8";
  24. };
  25. aliases {
  26. serial0 = &uart0;
  27. };
  28. gpio_keys {
  29. compatible = "gpio-keys";
  30. button-sync {
  31. wakeup-source;
  32. /* Closest approximation of what the key should do */
  33. linux,code = <KEY_CONNECT>;
  34. label = "sync";
  35. gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
  36. };
  37. button-reset {
  38. wakeup-source;
  39. linux,code = <KEY_ESC>;
  40. label = "reset";
  41. gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
  42. };
  43. button-usb {
  44. wakeup-source;
  45. /* Unplug USB, closest approximation of what the key should do */
  46. linux,code = <KEY_EJECTCD>;
  47. label = "usb";
  48. gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
  49. };
  50. };
  51. i2c {
  52. compatible = "i2c-gpio";
  53. sda-gpios = <&gpio0 12 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
  54. scl-gpios = <&gpio0 13 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
  55. #address-cells = <1>;
  56. #size-cells = <0>;
  57. hwmon@28 {
  58. /*
  59. * Temperature sensor and fan control chip.
  60. *
  61. * TODO: create a proper device tree binding for
  62. * the sensor and temperature zone and create a
  63. * zone with fan control.
  64. */
  65. compatible = "winbond,w83781d";
  66. reg = <0x28>;
  67. };
  68. rtc@6f {
  69. compatible = "isil,isl1208";
  70. reg = <0x6f>;
  71. };
  72. };
  73. soc {
  74. bus@c4000000 {
  75. flash@0,0 {
  76. compatible = "intel,ixp4xx-flash", "cfi-flash";
  77. bank-width = <2>;
  78. /* Enable writes on the expansion bus */
  79. intel,ixp4xx-eb-write-enable = <1>;
  80. /* 4 MB of Flash mapped in at CS0 */
  81. reg = <0 0x00000000 0x400000>;
  82. partitions {
  83. compatible = "redboot-fis";
  84. /* Eraseblock at 0x3e0000 */
  85. fis-index-block = <0x1f>;
  86. };
  87. };
  88. /* Small syscon with some LEDs at CS2 */
  89. syscon@2,0 {
  90. compatible = "freecom,fsg-cs2-system-controller", "syscon";
  91. reg = <2 0x0 0x200>;
  92. reg-io-width = <2>;
  93. #address-cells = <1>;
  94. #size-cells = <1>;
  95. ranges = <2 0x0 0x0 0x200>;
  96. led@0,0 {
  97. compatible = "register-bit-led";
  98. reg = <0x00 0x02>;
  99. mask = <0x01>;
  100. label = "fsg:blue:wlan";
  101. linux,default-trigger = "wlan";
  102. default-state = "on";
  103. };
  104. led@0,1 {
  105. compatible = "register-bit-led";
  106. reg = <0x00 0x02>;
  107. mask = <0x02>;
  108. label = "fsg:blue:wan";
  109. linux,default-trigger = "";
  110. default-state = "on";
  111. };
  112. led@0,2 {
  113. compatible = "register-bit-led";
  114. reg = <0x00 0x02>;
  115. mask = <0x04>;
  116. label = "fsg:blue:sata";
  117. linux,default-trigger = "";
  118. default-state = "on";
  119. };
  120. led@0,3 {
  121. compatible = "register-bit-led";
  122. reg = <0x00 0x02>;
  123. mask = <0x04>;
  124. label = "fsg:blue:usb";
  125. linux,default-trigger = "";
  126. default-state = "on";
  127. };
  128. led@0,4 {
  129. compatible = "register-bit-led";
  130. reg = <0x00 0x02>;
  131. mask = <0x08>;
  132. label = "fsg:blue:sync";
  133. linux,default-trigger = "";
  134. default-state = "on";
  135. };
  136. led@0,5 {
  137. compatible = "register-bit-led";
  138. reg = <0x00 0x02>;
  139. mask = <0x10>;
  140. label = "fsg:blue:ring";
  141. linux,default-trigger = "";
  142. default-state = "on";
  143. };
  144. };
  145. };
  146. pci@c0000000 {
  147. status = "ok";
  148. /*
  149. * Written based on the FSG-3 PCI boardfile.
  150. * We have slots 12, 13 & 14 (IDSEL) with one IRQ each.
  151. */
  152. #interrupt-cells = <1>;
  153. interrupt-map-mask = <0xf800 0 0 7>;
  154. interrupt-map =
  155. /* IDSEL 12 */
  156. <0x6000 0 0 1 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 12 is irq 5 */
  157. <0x6000 0 0 2 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 12 is irq 5 */
  158. <0x6000 0 0 3 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 12 is irq 5 */
  159. <0x6000 0 0 4 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 12 is irq 5 */
  160. /* IDSEL 13 */
  161. <0x6800 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 13 is irq 7 */
  162. <0x6800 0 0 2 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 13 is irq 7 */
  163. <0x6800 0 0 3 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 13 is irq 7 */
  164. <0x6800 0 0 4 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 13 is irq 7 */
  165. /* IDSEL 14 */
  166. <0x7000 0 0 1 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 14 is irq 6 */
  167. <0x7000 0 0 2 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 14 is irq 6 */
  168. <0x7000 0 0 3 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 14 is irq 6 */
  169. <0x7000 0 0 4 &gpio0 6 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 14 is irq 6 */
  170. };
  171. /* EthB */
  172. ethernet@c8009000 {
  173. status = "ok";
  174. queue-rx = <&qmgr 3>;
  175. queue-txready = <&qmgr 20>;
  176. phy-mode = "rgmii";
  177. phy-handle = <&phy5>;
  178. mdio {
  179. #address-cells = <1>;
  180. #size-cells = <0>;
  181. phy4: ethernet-phy@4 {
  182. reg = <4>;
  183. };
  184. phy5: ethernet-phy@5 {
  185. reg = <5>;
  186. };
  187. };
  188. };
  189. /* EthC */
  190. ethernet@c800a000 {
  191. status = "ok";
  192. queue-rx = <&qmgr 4>;
  193. queue-txready = <&qmgr 21>;
  194. phy-mode = "rgmii";
  195. phy-handle = <&phy4>;
  196. };
  197. };
  198. };