The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/src/arm/bcm-hr2.dtsi

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  *  BSD LICENSE
    3  *
    4  *  Copyright(c) 2017 Broadcom.  All rights reserved.
    5  *
    6  *  Redistribution and use in source and binary forms, with or without
    7  *  modification, are permitted provided that the following conditions
    8  *  are met:
    9  *
   10  *    * Redistributions of source code must retain the above copyright
   11  *      notice, this list of conditions and the following disclaimer.
   12  *    * Redistributions in binary form must reproduce the above copyright
   13  *      notice, this list of conditions and the following disclaimer in
   14  *      the documentation and/or other materials provided with the
   15  *      distribution.
   16  *    * Neither the name of Broadcom Corporation nor the names of its
   17  *      contributors may be used to endorse or promote products derived
   18  *      from this software without specific prior written permission.
   19  *
   20  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   21  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   22  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   23  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   24  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   25  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   26  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   27  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   28  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   30  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 #include <dt-bindings/interrupt-controller/arm-gic.h>
   34 #include <dt-bindings/interrupt-controller/irq.h>
   35 
   36 / {
   37         compatible = "brcm,hr2";
   38         model = "Broadcom Hurricane 2 SoC";
   39         interrupt-parent = <&gic>;
   40         #address-cells = <1>;
   41         #size-cells = <1>;
   42 
   43         cpus {
   44                 #address-cells = <1>;
   45                 #size-cells = <0>;
   46 
   47                 cpu0: cpu@0 {
   48                         device_type = "cpu";
   49                         compatible = "arm,cortex-a9";
   50                         next-level-cache = <&L2>;
   51                         reg = <0x0>;
   52                 };
   53         };
   54 
   55         pmu {
   56                 compatible = "arm,cortex-a9-pmu";
   57                 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH
   58                               GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
   59                 interrupt-affinity = <&cpu0>;
   60         };
   61 
   62         mpcore@19000000 {
   63                 compatible = "simple-bus";
   64                 ranges = <0x00000000 0x19000000 0x00023000>;
   65                 #address-cells = <1>;
   66                 #size-cells = <1>;
   67 
   68                 a9pll: arm_clk@0 {
   69                         #clock-cells = <0>;
   70                         compatible = "brcm,hr2-armpll";
   71                         clocks = <&osc>;
   72                         reg = <0x0 0x1000>;
   73                 };
   74 
   75                 timer@20200 {
   76                         compatible = "arm,cortex-a9-global-timer";
   77                         reg = <0x20200 0x100>;
   78                         interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
   79                         clocks = <&periph_clk>;
   80                 };
   81 
   82                 twd-timer@20600 {
   83                         compatible = "arm,cortex-a9-twd-timer";
   84                         reg = <0x20600 0x20>;
   85                         interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) |
   86                                                   IRQ_TYPE_EDGE_RISING)>;
   87                         clocks = <&periph_clk>;
   88                 };
   89 
   90                 twd-watchdog@20620 {
   91                         compatible = "arm,cortex-a9-twd-wdt";
   92                         reg = <0x20620 0x20>;
   93                         interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) |
   94                                                   IRQ_TYPE_EDGE_RISING)>;
   95                         clocks = <&periph_clk>;
   96                 };
   97 
   98                 gic: interrupt-controller@21000 {
   99                         compatible = "arm,cortex-a9-gic";
  100                         #interrupt-cells = <3>;
  101                         #address-cells = <0>;
  102                         interrupt-controller;
  103                         reg = <0x21000 0x1000>,
  104                               <0x20100 0x100>;
  105                 };
  106 
  107                 L2: cache-controller@22000 {
  108                         compatible = "arm,pl310-cache";
  109                         reg = <0x22000 0x1000>;
  110                         cache-unified;
  111                         cache-level = <2>;
  112                 };
  113         };
  114 
  115         clocks {
  116                 #address-cells = <1>;
  117                 #size-cells = <1>;
  118                 ranges;
  119 
  120                 osc: oscillator {
  121                         #clock-cells = <0>;
  122                         compatible = "fixed-clock";
  123                         clock-frequency = <25000000>;
  124                 };
  125 
  126                 periph_clk: periph_clk {
  127                         #clock-cells = <0>;
  128                         compatible = "fixed-factor-clock";
  129                         clocks = <&a9pll>;
  130                         clock-div = <2>;
  131                         clock-mult = <1>;
  132                 };
  133         };
  134 
  135         axi@18000000 {
  136                 compatible = "simple-bus";
  137                 ranges = <0x00000000 0x18000000 0x0011c40c>;
  138                 #address-cells = <1>;
  139                 #size-cells = <1>;
  140 
  141                 uart0: serial@300 {
  142                         compatible = "ns16550a";
  143                         reg = <0x0300 0x100>;
  144                         interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  145                         clocks = <&osc>;
  146                         status = "disabled";
  147                 };
  148 
  149                 uart1: serial@400 {
  150                         compatible = "ns16550a";
  151                         reg = <0x0400 0x100>;
  152                         interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  153                         clocks = <&osc>;
  154                         status = "disabled";
  155                 };
  156 
  157                 dma@20000 {
  158                         compatible = "arm,pl330", "arm,primecell";
  159                         reg = <0x20000 0x1000>;
  160                         interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
  161                                      <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
  162                                      <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
  163                                      <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
  164                                      <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
  165                                      <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
  166                                      <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
  167                                      <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
  168                                      <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  169                         #dma-cells = <1>;
  170                         status = "disabled";
  171                 };
  172 
  173                 amac0: ethernet@22000 {
  174                         compatible = "brcm,nsp-amac";
  175                         reg = <0x22000 0x1000>,
  176                               <0x110000 0x1000>;
  177                         reg-names = "amac_base", "idm_base";
  178                         interrupts = <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>;
  179                         status = "disabled";
  180                 };
  181 
  182                 nand_controller: nand-controller@26000 {
  183                         compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
  184                         reg = <0x26000 0x600>,
  185                               <0x11b408 0x600>,
  186                               <0x026f00 0x20>;
  187                         reg-names = "nand", "iproc-idm", "iproc-ext";
  188                         interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  189 
  190                         #address-cells = <1>;
  191                         #size-cells = <0>;
  192 
  193                         brcm,nand-has-wp;
  194                 };
  195 
  196                 gpiob: gpio@30000 {
  197                         compatible = "brcm,iproc-hr2-gpio", "brcm,iproc-gpio";
  198                         reg = <0x30000 0x50>;
  199                         #gpio-cells = <2>;
  200                         gpio-controller;
  201                         ngpios = <4>;
  202                         interrupt-controller;
  203                         interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
  204                 };
  205 
  206                 pwm: pwm@31000 {
  207                         compatible = "brcm,iproc-pwm";
  208                         reg = <0x31000 0x28>;
  209                         clocks = <&osc>;
  210                         #pwm-cells = <3>;
  211                         status = "disabled";
  212                 };
  213 
  214                 rng: rng@33000 {
  215                         compatible = "brcm,bcm-nsp-rng";
  216                         reg = <0x33000 0x14>;
  217                 };
  218 
  219                 qspi: spi@27200 {
  220                         compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
  221                         reg = <0x027200 0x184>,
  222                               <0x027000 0x124>,
  223                               <0x11c408 0x004>,
  224                               <0x0273a0 0x01c>;
  225                         reg-names = "mspi", "bspi", "intr_regs",
  226                                     "intr_status_reg";
  227                         interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
  228                                      <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
  229                                      <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
  230                                      <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
  231                                      <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
  232                                      <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
  233                                      <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  234                         interrupt-names = "spi_lr_fullness_reached",
  235                                           "spi_lr_session_aborted",
  236                                           "spi_lr_impatient",
  237                                           "spi_lr_session_done",
  238                                           "spi_lr_overhead",
  239                                           "mspi_done",
  240                                           "mspi_halted";
  241                         num-cs = <2>;
  242                         #address-cells = <1>;
  243                         #size-cells = <0>;
  244 
  245                         /* partitions defined in board DTS */
  246                 };
  247 
  248                 ccbtimer0: timer@34000 {
  249                         compatible = "arm,sp804";
  250                         reg = <0x34000 0x1000>;
  251                         interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
  252                                      <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  253                 };
  254 
  255                 ccbtimer1: timer@35000 {
  256                         compatible = "arm,sp804";
  257                         reg = <0x35000 0x1000>;
  258                         interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
  259                                      <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  260                 };
  261 
  262                 i2c0: i2c@38000 {
  263                         compatible = "brcm,iproc-i2c";
  264                         reg = <0x38000 0x50>;
  265                         #address-cells = <1>;
  266                         #size-cells = <0>;
  267                         interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  268                         clock-frequency = <100000>;
  269                 };
  270 
  271                 watchdog: watchdog@39000 {
  272                         compatible = "arm,sp805", "arm,primecell";
  273                         reg = <0x39000 0x1000>;
  274                         interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>;
  275                 };
  276 
  277                 i2c1: i2c@3b000 {
  278                         compatible = "brcm,iproc-i2c";
  279                         reg = <0x3b000 0x50>;
  280                         #address-cells = <1>;
  281                         #size-cells = <0>;
  282                         interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  283                         clock-frequency = <100000>;
  284                 };
  285         };
  286 
  287         pflash: nor@20000000 {
  288                 compatible = "cfi-flash", "jedec-flash";
  289                 reg = <0x20000000 0x04000000>;
  290                 status = "disabled";
  291                 #address-cells = <1>;
  292                 #size-cells = <1>;
  293 
  294                 /* partitions defined in board DTS */
  295         };
  296 
  297         pcie0: pcie@18012000 {
  298                 compatible = "brcm,iproc-pcie";
  299                 reg = <0x18012000 0x1000>;
  300 
  301                 #interrupt-cells = <1>;
  302                 interrupt-map-mask = <0 0 0 0>;
  303                 interrupt-map = <0 0 0 0 &gic GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
  304 
  305                 linux,pci-domain = <0>;
  306 
  307                 bus-range = <0x00 0xff>;
  308 
  309                 #address-cells = <3>;
  310                 #size-cells = <2>;
  311                 device_type = "pci";
  312 
  313                 /* Note: The HW does not support I/O resources.  So,
  314                  * only the memory resource range is being specified.
  315                  */
  316                 ranges = <0x82000000 0 0x08000000 0x08000000 0 0x8000000>;
  317 
  318                 status = "disabled";
  319 
  320                 msi-parent = <&msi0>;
  321                 msi0: msi {
  322                         compatible = "brcm,iproc-msi";
  323                         msi-controller;
  324                         interrupt-parent = <&gic>;
  325                         interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
  326                                      <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,
  327                                      <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
  328                                      <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
  329                         brcm,pcie-msi-inten;
  330                 };
  331         };
  332 
  333         pcie1: pcie@18013000 {
  334                 compatible = "brcm,iproc-pcie";
  335                 reg = <0x18013000 0x1000>;
  336 
  337                 #interrupt-cells = <1>;
  338                 interrupt-map-mask = <0 0 0 0>;
  339                 interrupt-map = <0 0 0 0 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
  340 
  341                 linux,pci-domain = <1>;
  342 
  343                 bus-range = <0x00 0xff>;
  344 
  345                 #address-cells = <3>;
  346                 #size-cells = <2>;
  347                 device_type = "pci";
  348 
  349                 /* Note: The HW does not support I/O resources.  So,
  350                  * only the memory resource range is being specified.
  351                  */
  352                 ranges = <0x82000000 0 0x40000000 0x40000000 0 0x8000000>;
  353 
  354                 status = "disabled";
  355 
  356                 msi-parent = <&msi1>;
  357                 msi1: msi {
  358                         compatible = "brcm,iproc-msi";
  359                         msi-controller;
  360                         interrupt-parent = <&gic>;
  361                         interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
  362                                      <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
  363                                      <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
  364                                      <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
  365                         brcm,pcie-msi-inten;
  366                 };
  367         };
  368 };

Cache object: 75cb6fc4ae476f251b1057936628d55a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.