arm_fpga.dts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 0x85400000>;
  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. clock-frequency = <10000000>;
  36. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
  37. <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
  38. <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
  39. <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
  40. };
  41. pmu {
  42. compatible = "arm,armv8-pmuv3";
  43. interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
  44. };
  45. /* This node will be removed at runtime on cores without SPE. */
  46. spe-pmu {
  47. compatible = "arm,statistical-profiling-extension-v1";
  48. interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
  49. };
  50. memory@80000000 {
  51. device_type = "memory";
  52. reg = <0x0 0x80000000 0x0 0x80000000>,
  53. <0x8 0x80000000 0x1 0x80000000>;
  54. };
  55. bus_refclk: refclk {
  56. compatible = "fixed-clock";
  57. #clock-cells = <0>;
  58. clock-frequency = <100000000>;
  59. clock-output-names = "apb_pclk";
  60. };
  61. uartclk: baudclock {
  62. compatible = "fixed-clock";
  63. #clock-cells = <0>;
  64. clock-frequency = <10000000>;
  65. clock-output-names = "uartclk";
  66. };
  67. dbg_uart: serial@7ff80000 {
  68. compatible = "arm,pl011", "arm,primecell";
  69. reg = <0x0 0x7ff80000 0x0 0x00001000>;
  70. interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
  71. clocks = <&uartclk>, <&bus_refclk>;
  72. clock-names = "uartclk", "apb_pclk";
  73. };
  74. gic: interrupt-controller@30000000 {
  75. compatible = "arm,gic-v3";
  76. #address-cells = <2>;
  77. #interrupt-cells = <3>;
  78. #size-cells = <2>;
  79. ranges;
  80. interrupt-controller;
  81. reg = <0x0 0x30000000 0x0 0x00010000>, /* GICD */
  82. /* The GICR size will be adjusted at runtime to match the cores. */
  83. <0x0 0x30040000 0x0 0x00020000>; /* GICR for one core */
  84. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  85. };
  86. };