arm_fpga.dts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
  2. /*
  3. * Copyright (c) 2020, Arm Limited. All rights reserved.
  4. *
  5. * Devicetree for the Arm Ltd. FPGA platform
  6. * Number and kind of CPU cores differs from image to image, so the
  7. * topology is auto-detected by BL31, and the /cpus node is created and
  8. * populated accordingly at runtime.
  9. */
  10. #include <dt-bindings/interrupt-controller/arm-gic.h>
  11. /dts-v1/;
  12. / {
  13. model = "ARM FPGA";
  14. compatible = "arm,fpga", "arm,vexpress";
  15. interrupt-parent = <&gic>;
  16. #address-cells = <2>;
  17. #size-cells = <2>;
  18. aliases {
  19. serial0 = &dbg_uart;
  20. };
  21. chosen {
  22. stdout-path = "serial0:38400n8";
  23. bootargs = "console=ttyAMA0,38400n8 earlycon";
  24. /* Allow to upload a generous 100MB initrd payload. */
  25. linux,initrd-start = <0x0 0x84000000>;
  26. linux,initrd-end = <0x0 0x8a400000>;
  27. };
  28. /* /cpus node will be added by BL31 at runtime. */
  29. psci {
  30. compatible = "arm,psci-0.2";
  31. method = "smc";
  32. };
  33. timer {
  34. compatible = "arm,armv8-timer";
  35. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
  36. <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
  37. <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
  38. <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
  39. };
  40. pmu {
  41. compatible = "arm,armv8-pmuv3";
  42. interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
  43. };
  44. /* This node will be removed at runtime on cores without SPE. */
  45. spe-pmu {
  46. compatible = "arm,statistical-profiling-extension-v1";
  47. interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
  48. };
  49. memory@80000000 {
  50. device_type = "memory";
  51. reg = <0x0 0x80000000 0x0 0x80000000>,
  52. <0x8 0x80000000 0x1 0x80000000>;
  53. };
  54. bus_refclk: refclk {
  55. compatible = "fixed-clock";
  56. #clock-cells = <0>;
  57. clock-frequency = <100000000>;
  58. clock-output-names = "apb_pclk";
  59. };
  60. uartclk: baudclock {
  61. compatible = "fixed-clock";
  62. #clock-cells = <0>;
  63. clock-frequency = <10000000>;
  64. clock-output-names = "uartclk";
  65. };
  66. dbg_uart: serial@7ff80000 {
  67. compatible = "arm,pl011", "arm,primecell";
  68. reg = <0x0 0x7ff80000 0x0 0x00001000>;
  69. interrupts = <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>;
  70. clocks = <&uartclk>, <&bus_refclk>;
  71. clock-names = "uartclk", "apb_pclk";
  72. };
  73. gic: interrupt-controller@30000000 {
  74. compatible = "arm,gic-v3";
  75. #address-cells = <2>;
  76. #interrupt-cells = <3>;
  77. #size-cells = <2>;
  78. ranges;
  79. interrupt-controller;
  80. reg = <0x0 0x30000000 0x0 0x00010000>, /* GICD */
  81. /* The GICR size will be adjusted at runtime to match the cores. */
  82. <0x0 0x30040000 0x0 0x00020000>; /* GICR for one core */
  83. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  84. its: msi-controller@30040000 {
  85. compatible = "arm,gic-v3-its";
  86. reg = <0x0 0x30040000 0x0 0x40000>;
  87. #msi-cells = <1>;
  88. msi-controller;
  89. };
  90. };
  91. };