Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * ARM Ltd. Versatile Express
0004  *
0005  * CoreTile Express A15x2 A7x3
0006  * Cortex-A15_A7 MPCore (V2P-CA15_A7)
0007  *
0008  * HBI-0249A
0009  */
0010 
0011 /dts-v1/;
0012 #include "vexpress-v2m-rs1.dtsi"
0013 
0014 / {
0015         model = "V2P-CA15_CA7";
0016         arm,hbi = <0x249>;
0017         arm,vexpress,site = <0xf>;
0018         compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress";
0019         interrupt-parent = <&gic>;
0020         #address-cells = <2>;
0021         #size-cells = <2>;
0022 
0023         chosen { };
0024 
0025         aliases {
0026                 serial0 = &v2m_serial0;
0027                 serial1 = &v2m_serial1;
0028                 serial2 = &v2m_serial2;
0029                 serial3 = &v2m_serial3;
0030                 i2c0 = &v2m_i2c_dvi;
0031                 i2c1 = &v2m_i2c_pcie;
0032         };
0033 
0034         cpus {
0035                 #address-cells = <1>;
0036                 #size-cells = <0>;
0037 
0038                 cpu0: cpu@0 {
0039                         device_type = "cpu";
0040                         compatible = "arm,cortex-a15";
0041                         reg = <0>;
0042                         cci-control-port = <&cci_control1>;
0043                         cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
0044                         capacity-dmips-mhz = <1024>;
0045                         dynamic-power-coefficient = <990>;
0046                 };
0047 
0048                 cpu1: cpu@1 {
0049                         device_type = "cpu";
0050                         compatible = "arm,cortex-a15";
0051                         reg = <1>;
0052                         cci-control-port = <&cci_control1>;
0053                         cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
0054                         capacity-dmips-mhz = <1024>;
0055                         dynamic-power-coefficient = <990>;
0056                 };
0057 
0058                 cpu2: cpu@2 {
0059                         device_type = "cpu";
0060                         compatible = "arm,cortex-a7";
0061                         reg = <0x100>;
0062                         cci-control-port = <&cci_control2>;
0063                         cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
0064                         capacity-dmips-mhz = <516>;
0065                         dynamic-power-coefficient = <133>;
0066                 };
0067 
0068                 cpu3: cpu@3 {
0069                         device_type = "cpu";
0070                         compatible = "arm,cortex-a7";
0071                         reg = <0x101>;
0072                         cci-control-port = <&cci_control2>;
0073                         cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
0074                         capacity-dmips-mhz = <516>;
0075                         dynamic-power-coefficient = <133>;
0076                 };
0077 
0078                 cpu4: cpu@4 {
0079                         device_type = "cpu";
0080                         compatible = "arm,cortex-a7";
0081                         reg = <0x102>;
0082                         cci-control-port = <&cci_control2>;
0083                         cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
0084                         capacity-dmips-mhz = <516>;
0085                         dynamic-power-coefficient = <133>;
0086                 };
0087 
0088                 idle-states {
0089                         CLUSTER_SLEEP_BIG: cluster-sleep-big {
0090                                 compatible = "arm,idle-state";
0091                                 local-timer-stop;
0092                                 entry-latency-us = <1000>;
0093                                 exit-latency-us = <700>;
0094                                 min-residency-us = <2000>;
0095                         };
0096 
0097                         CLUSTER_SLEEP_LITTLE: cluster-sleep-little {
0098                                 compatible = "arm,idle-state";
0099                                 local-timer-stop;
0100                                 entry-latency-us = <1000>;
0101                                 exit-latency-us = <500>;
0102                                 min-residency-us = <2500>;
0103                         };
0104                 };
0105         };
0106 
0107         memory@80000000 {
0108                 device_type = "memory";
0109                 reg = <0 0x80000000 0 0x40000000>;
0110         };
0111 
0112         reserved-memory {
0113                 #address-cells = <2>;
0114                 #size-cells = <2>;
0115                 ranges;
0116 
0117                 /* Chipselect 2 is physically at 0x18000000 */
0118                 vram: vram@18000000 {
0119                         /* 8 MB of designated video RAM */
0120                         compatible = "shared-dma-pool";
0121                         reg = <0 0x18000000 0 0x00800000>;
0122                         no-map;
0123                 };
0124         };
0125 
0126         wdt@2a490000 {
0127                 compatible = "arm,sp805", "arm,primecell";
0128                 reg = <0 0x2a490000 0 0x1000>;
0129                 interrupts = <0 98 4>;
0130                 clocks = <&oscclk6a>, <&oscclk6a>;
0131                 clock-names = "wdog_clk", "apb_pclk";
0132         };
0133 
0134         hdlcd@2b000000 {
0135                 compatible = "arm,hdlcd";
0136                 reg = <0 0x2b000000 0 0x1000>;
0137                 interrupts = <0 85 4>;
0138                 clocks = <&hdlcd_clk>;
0139                 clock-names = "pxlclk";
0140         };
0141 
0142         memory-controller@2b0a0000 {
0143                 compatible = "arm,pl341", "arm,primecell";
0144                 reg = <0 0x2b0a0000 0 0x1000>;
0145                 clocks = <&oscclk6a>;
0146                 clock-names = "apb_pclk";
0147         };
0148 
0149         gic: interrupt-controller@2c001000 {
0150                 compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
0151                 #interrupt-cells = <3>;
0152                 #address-cells = <0>;
0153                 interrupt-controller;
0154                 reg = <0 0x2c001000 0 0x1000>,
0155                       <0 0x2c002000 0 0x2000>,
0156                       <0 0x2c004000 0 0x2000>,
0157                       <0 0x2c006000 0 0x2000>;
0158                 interrupts = <1 9 0xf04>;
0159         };
0160 
0161         cci@2c090000 {
0162                 compatible = "arm,cci-400";
0163                 #address-cells = <1>;
0164                 #size-cells = <1>;
0165                 reg = <0 0x2c090000 0 0x1000>;
0166                 ranges = <0x0 0x0 0x2c090000 0x10000>;
0167 
0168                 cci_control1: slave-if@4000 {
0169                         compatible = "arm,cci-400-ctrl-if";
0170                         interface-type = "ace";
0171                         reg = <0x4000 0x1000>;
0172                 };
0173 
0174                 cci_control2: slave-if@5000 {
0175                         compatible = "arm,cci-400-ctrl-if";
0176                         interface-type = "ace";
0177                         reg = <0x5000 0x1000>;
0178                 };
0179 
0180                 pmu@9000 {
0181                          compatible = "arm,cci-400-pmu,r0";
0182                          reg = <0x9000 0x5000>;
0183                          interrupts = <0 105 4>,
0184                                       <0 101 4>,
0185                                       <0 102 4>,
0186                                       <0 103 4>,
0187                                       <0 104 4>;
0188                 };
0189         };
0190 
0191         memory-controller@7ffd0000 {
0192                 compatible = "arm,pl354", "arm,primecell";
0193                 reg = <0 0x7ffd0000 0 0x1000>;
0194                 interrupts = <0 86 4>,
0195                              <0 87 4>;
0196                 clocks = <&oscclk6a>;
0197                 clock-names = "apb_pclk";
0198         };
0199 
0200         dma@7ff00000 {
0201                 compatible = "arm,pl330", "arm,primecell";
0202                 reg = <0 0x7ff00000 0 0x1000>;
0203                 interrupts = <0 92 4>,
0204                              <0 88 4>,
0205                              <0 89 4>,
0206                              <0 90 4>,
0207                              <0 91 4>;
0208                 clocks = <&oscclk6a>;
0209                 clock-names = "apb_pclk";
0210         };
0211 
0212         scc@7fff0000 {
0213                 compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
0214                 reg = <0 0x7fff0000 0 0x1000>;
0215                 interrupts = <0 95 4>;
0216         };
0217 
0218         timer {
0219                 compatible = "arm,armv7-timer";
0220                 interrupts = <1 13 0xf08>,
0221                              <1 14 0xf08>,
0222                              <1 11 0xf08>,
0223                              <1 10 0xf08>;
0224         };
0225 
0226         pmu-a15 {
0227                 compatible = "arm,cortex-a15-pmu";
0228                 interrupts = <0 68 4>,
0229                              <0 69 4>;
0230                 interrupt-affinity = <&cpu0>,
0231                                      <&cpu1>;
0232         };
0233 
0234         pmu-a7 {
0235                 compatible = "arm,cortex-a7-pmu";
0236                 interrupts = <0 128 4>,
0237                              <0 129 4>,
0238                              <0 130 4>;
0239                 interrupt-affinity = <&cpu2>,
0240                                      <&cpu3>,
0241                                      <&cpu4>;
0242         };
0243 
0244         oscclk6a: oscclk6a {
0245                 /* Reference 24MHz clock */
0246                 compatible = "fixed-clock";
0247                 #clock-cells = <0>;
0248                 clock-frequency = <24000000>;
0249                 clock-output-names = "oscclk6a";
0250         };
0251 
0252         dcc {
0253                 compatible = "arm,vexpress,config-bus";
0254                 arm,vexpress,config-bridge = <&v2m_sysreg>;
0255 
0256                 oscclk0 {
0257                         /* A15 PLL 0 reference clock */
0258                         compatible = "arm,vexpress-osc";
0259                         arm,vexpress-sysreg,func = <1 0>;
0260                         freq-range = <17000000 50000000>;
0261                         #clock-cells = <0>;
0262                         clock-output-names = "oscclk0";
0263                 };
0264 
0265                 oscclk1 {
0266                         /* A15 PLL 1 reference clock */
0267                         compatible = "arm,vexpress-osc";
0268                         arm,vexpress-sysreg,func = <1 1>;
0269                         freq-range = <17000000 50000000>;
0270                         #clock-cells = <0>;
0271                         clock-output-names = "oscclk1";
0272                 };
0273 
0274                 oscclk2 {
0275                         /* A7 PLL 0 reference clock */
0276                         compatible = "arm,vexpress-osc";
0277                         arm,vexpress-sysreg,func = <1 2>;
0278                         freq-range = <17000000 50000000>;
0279                         #clock-cells = <0>;
0280                         clock-output-names = "oscclk2";
0281                 };
0282 
0283                 oscclk3 {
0284                         /* A7 PLL 1 reference clock */
0285                         compatible = "arm,vexpress-osc";
0286                         arm,vexpress-sysreg,func = <1 3>;
0287                         freq-range = <17000000 50000000>;
0288                         #clock-cells = <0>;
0289                         clock-output-names = "oscclk3";
0290                 };
0291 
0292                 oscclk4 {
0293                         /* External AXI master clock */
0294                         compatible = "arm,vexpress-osc";
0295                         arm,vexpress-sysreg,func = <1 4>;
0296                         freq-range = <20000000 40000000>;
0297                         #clock-cells = <0>;
0298                         clock-output-names = "oscclk4";
0299                 };
0300 
0301                 hdlcd_clk: oscclk5 {
0302                         /* HDLCD PLL reference clock */
0303                         compatible = "arm,vexpress-osc";
0304                         arm,vexpress-sysreg,func = <1 5>;
0305                         freq-range = <23750000 165000000>;
0306                         #clock-cells = <0>;
0307                         clock-output-names = "oscclk5";
0308                 };
0309 
0310                 smbclk: oscclk6 {
0311                         /* Static memory controller clock */
0312                         compatible = "arm,vexpress-osc";
0313                         arm,vexpress-sysreg,func = <1 6>;
0314                         freq-range = <20000000 40000000>;
0315                         #clock-cells = <0>;
0316                         clock-output-names = "oscclk6";
0317                 };
0318 
0319                 oscclk7 {
0320                         /* SYS PLL reference clock */
0321                         compatible = "arm,vexpress-osc";
0322                         arm,vexpress-sysreg,func = <1 7>;
0323                         freq-range = <17000000 50000000>;
0324                         #clock-cells = <0>;
0325                         clock-output-names = "oscclk7";
0326                 };
0327 
0328                 oscclk8 {
0329                         /* DDR2 PLL reference clock */
0330                         compatible = "arm,vexpress-osc";
0331                         arm,vexpress-sysreg,func = <1 8>;
0332                         freq-range = <20000000 50000000>;
0333                         #clock-cells = <0>;
0334                         clock-output-names = "oscclk8";
0335                 };
0336 
0337                 volt-a15 {
0338                         /* A15 CPU core voltage */
0339                         compatible = "arm,vexpress-volt";
0340                         arm,vexpress-sysreg,func = <2 0>;
0341                         regulator-name = "A15 Vcore";
0342                         regulator-min-microvolt = <800000>;
0343                         regulator-max-microvolt = <1050000>;
0344                         regulator-always-on;
0345                         label = "A15 Vcore";
0346                 };
0347 
0348                 volt-a7 {
0349                         /* A7 CPU core voltage */
0350                         compatible = "arm,vexpress-volt";
0351                         arm,vexpress-sysreg,func = <2 1>;
0352                         regulator-name = "A7 Vcore";
0353                         regulator-min-microvolt = <800000>;
0354                         regulator-max-microvolt = <1050000>;
0355                         regulator-always-on;
0356                         label = "A7 Vcore";
0357                 };
0358 
0359                 amp-a15 {
0360                         /* Total current for the two A15 cores */
0361                         compatible = "arm,vexpress-amp";
0362                         arm,vexpress-sysreg,func = <3 0>;
0363                         label = "A15 Icore";
0364                 };
0365 
0366                 amp-a7 {
0367                         /* Total current for the three A7 cores */
0368                         compatible = "arm,vexpress-amp";
0369                         arm,vexpress-sysreg,func = <3 1>;
0370                         label = "A7 Icore";
0371                 };
0372 
0373                 temp-dcc {
0374                         /* DCC internal temperature */
0375                         compatible = "arm,vexpress-temp";
0376                         arm,vexpress-sysreg,func = <4 0>;
0377                         label = "DCC";
0378                 };
0379 
0380                 power-a15 {
0381                         /* Total power for the two A15 cores */
0382                         compatible = "arm,vexpress-power";
0383                         arm,vexpress-sysreg,func = <12 0>;
0384                         label = "A15 Pcore";
0385                 };
0386 
0387                 power-a7 {
0388                         /* Total power for the three A7 cores */
0389                         compatible = "arm,vexpress-power";
0390                         arm,vexpress-sysreg,func = <12 1>;
0391                         label = "A7 Pcore";
0392                 };
0393 
0394                 energy-a15 {
0395                         /* Total energy for the two A15 cores */
0396                         compatible = "arm,vexpress-energy";
0397                         arm,vexpress-sysreg,func = <13 0>, <13 1>;
0398                         label = "A15 Jcore";
0399                 };
0400 
0401                 energy-a7 {
0402                         /* Total energy for the three A7 cores */
0403                         compatible = "arm,vexpress-energy";
0404                         arm,vexpress-sysreg,func = <13 2>, <13 3>;
0405                         label = "A7 Jcore";
0406                 };
0407         };
0408 
0409         etb@20010000 {
0410                 compatible = "arm,coresight-etb10", "arm,primecell";
0411                 reg = <0 0x20010000 0 0x1000>;
0412 
0413                 clocks = <&oscclk6a>;
0414                 clock-names = "apb_pclk";
0415                 in-ports {
0416                         port {
0417                                 etb_in_port: endpoint {
0418                                         remote-endpoint = <&replicator_out_port0>;
0419                                 };
0420                         };
0421                 };
0422         };
0423 
0424         tpiu@20030000 {
0425                 compatible = "arm,coresight-tpiu", "arm,primecell";
0426                 reg = <0 0x20030000 0 0x1000>;
0427 
0428                 clocks = <&oscclk6a>;
0429                 clock-names = "apb_pclk";
0430                 in-ports {
0431                         port {
0432                                 tpiu_in_port: endpoint {
0433                                         remote-endpoint = <&replicator_out_port1>;
0434                                 };
0435                         };
0436                 };
0437         };
0438 
0439         replicator {
0440                 /* non-configurable replicators don't show up on the
0441                  * AMBA bus.  As such no need to add "arm,primecell".
0442                  */
0443                 compatible = "arm,coresight-static-replicator";
0444 
0445                 out-ports {
0446                         #address-cells = <1>;
0447                         #size-cells = <0>;
0448 
0449                         port@0 {
0450                                 reg = <0>;
0451                                 replicator_out_port0: endpoint {
0452                                         remote-endpoint = <&etb_in_port>;
0453                                 };
0454                         };
0455 
0456                         port@1 {
0457                                 reg = <1>;
0458                                 replicator_out_port1: endpoint {
0459                                         remote-endpoint = <&tpiu_in_port>;
0460                                 };
0461                         };
0462                 };
0463 
0464                 in-ports {
0465                         port {
0466                                 replicator_in_port0: endpoint {
0467                                         remote-endpoint = <&funnel_out_port0>;
0468                                 };
0469                         };
0470                 };
0471         };
0472 
0473         funnel@20040000 {
0474                 compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
0475                 reg = <0 0x20040000 0 0x1000>;
0476 
0477                 clocks = <&oscclk6a>;
0478                 clock-names = "apb_pclk";
0479                 out-ports {
0480                         port {
0481                                 funnel_out_port0: endpoint {
0482                                         remote-endpoint =
0483                                                 <&replicator_in_port0>;
0484                                 };
0485                         };
0486                 };
0487 
0488                 in-ports {
0489                         #address-cells = <1>;
0490                         #size-cells = <0>;
0491 
0492                         port@0 {
0493                                 reg = <0>;
0494                                 funnel_in_port0: endpoint {
0495                                         remote-endpoint = <&ptm0_out_port>;
0496                                 };
0497                         };
0498 
0499                         port@1 {
0500                                 reg = <1>;
0501                                 funnel_in_port1: endpoint {
0502                                         remote-endpoint = <&ptm1_out_port>;
0503                                 };
0504                         };
0505 
0506                         port@2 {
0507                                 reg = <2>;
0508                                 funnel_in_port2: endpoint {
0509                                         remote-endpoint = <&etm0_out_port>;
0510                                 };
0511                         };
0512 
0513                         /* Input port #3 is for ITM, not supported here */
0514 
0515                         port@4 {
0516                                 reg = <4>;
0517                                 funnel_in_port4: endpoint {
0518                                         remote-endpoint = <&etm1_out_port>;
0519                                 };
0520                         };
0521 
0522                         port@5 {
0523                                 reg = <5>;
0524                                 funnel_in_port5: endpoint {
0525                                         remote-endpoint = <&etm2_out_port>;
0526                                 };
0527                         };
0528                 };
0529         };
0530 
0531         ptm@2201c000 {
0532                 compatible = "arm,coresight-etm3x", "arm,primecell";
0533                 reg = <0 0x2201c000 0 0x1000>;
0534 
0535                 cpu = <&cpu0>;
0536                 clocks = <&oscclk6a>;
0537                 clock-names = "apb_pclk";
0538                 out-ports {
0539                         port {
0540                                 ptm0_out_port: endpoint {
0541                                         remote-endpoint = <&funnel_in_port0>;
0542                                 };
0543                         };
0544                 };
0545         };
0546 
0547         ptm@2201d000 {
0548                 compatible = "arm,coresight-etm3x", "arm,primecell";
0549                 reg = <0 0x2201d000 0 0x1000>;
0550 
0551                 cpu = <&cpu1>;
0552                 clocks = <&oscclk6a>;
0553                 clock-names = "apb_pclk";
0554                 out-ports {
0555                         port {
0556                                 ptm1_out_port: endpoint {
0557                                         remote-endpoint = <&funnel_in_port1>;
0558                                 };
0559                         };
0560                 };
0561         };
0562 
0563         etm@2203c000 {
0564                 compatible = "arm,coresight-etm3x", "arm,primecell";
0565                 reg = <0 0x2203c000 0 0x1000>;
0566 
0567                 cpu = <&cpu2>;
0568                 clocks = <&oscclk6a>;
0569                 clock-names = "apb_pclk";
0570                 out-ports {
0571                         port {
0572                                 etm0_out_port: endpoint {
0573                                         remote-endpoint = <&funnel_in_port2>;
0574                                 };
0575                         };
0576                 };
0577         };
0578 
0579         etm@2203d000 {
0580                 compatible = "arm,coresight-etm3x", "arm,primecell";
0581                 reg = <0 0x2203d000 0 0x1000>;
0582 
0583                 cpu = <&cpu3>;
0584                 clocks = <&oscclk6a>;
0585                 clock-names = "apb_pclk";
0586                 out-ports {
0587                         port {
0588                                 etm1_out_port: endpoint {
0589                                         remote-endpoint = <&funnel_in_port4>;
0590                                 };
0591                         };
0592                 };
0593         };
0594 
0595         etm@2203e000 {
0596                 compatible = "arm,coresight-etm3x", "arm,primecell";
0597                 reg = <0 0x2203e000 0 0x1000>;
0598 
0599                 cpu = <&cpu4>;
0600                 clocks = <&oscclk6a>;
0601                 clock-names = "apb_pclk";
0602                 out-ports {
0603                         port {
0604                                 etm2_out_port: endpoint {
0605                                         remote-endpoint = <&funnel_in_port5>;
0606                                 };
0607                         };
0608                 };
0609         };
0610 
0611         smb: bus@8000000 {
0612                 ranges = <0x8000000 0 0x8000000 0x18000000>;
0613         };
0614 
0615         site2: hsb@40000000 {
0616                 compatible = "simple-bus";
0617                 #address-cells = <1>;
0618                 #size-cells = <1>;
0619                 ranges = <0 0 0x40000000 0x3fef0000>;
0620                 #interrupt-cells = <1>;
0621                 interrupt-map-mask = <0 3>;
0622                 interrupt-map = <0 0 &gic 0 36 4>,
0623                                 <0 1 &gic 0 37 4>,
0624                                 <0 2 &gic 0 38 4>,
0625                                 <0 3 &gic 0 39 4>;
0626         };
0627 };
0628 
0629 &nor_flash {
0630         /*
0631          * Unfortunately, accessing the flash disturbs the CPU idle states
0632          * (suspend) and CPU hotplug of this platform. For this reason, flash
0633          * hardware access is disabled by default on this platform alone.
0634          */
0635         status = "disabled";
0636 };