Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2016 Linaro Ltd
0003  *
0004  * Permission is hereby granted, free of charge, to any person obtaining a copy
0005  * of this software and associated documentation files (the "Software"), to deal
0006  * in the Software without restriction, including without limitation the rights
0007  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
0008  * copies of the Software, and to permit persons to whom the Software is
0009  * furnished to do so, subject to the following conditions:
0010  *
0011  * The above copyright notice and this permission notice shall be included in
0012  * all copies or substantial portions of the Software.
0013  *
0014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
0017  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0018  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
0019  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
0020  * THE SOFTWARE.
0021  */
0022 
0023 #include <dt-bindings/interrupt-controller/irq.h>
0024 #include <dt-bindings/gpio/gpio.h>
0025 
0026 / {
0027         #address-cells = <1>;
0028         #size-cells = <1>;
0029         compatible = "arm,realview-pbx";
0030 
0031         chosen { };
0032 
0033         aliases {
0034                 serial0 = &serial0;
0035                 serial1 = &serial1;
0036                 serial2 = &serial2;
0037                 serial3 = &serial3;
0038                 i2c0 = &i2c0;
0039                 i2c1 = &i2c1;
0040         };
0041 
0042         memory {
0043                 device_type = "memory";
0044                 /* 128 MiB memory @ 0x0 */
0045                 reg = <0x00000000 0x08000000>;
0046         };
0047 
0048         /* The voltage to the MMC card is hardwired at 3.3V */
0049         vmmc: regulator-vmmc {
0050                 compatible = "regulator-fixed";
0051                 regulator-name = "vmmc";
0052                 regulator-min-microvolt = <3300000>;
0053                 regulator-max-microvolt = <3300000>;
0054                 regulator-boot-on;
0055         };
0056 
0057         veth: regulator-veth {
0058                 compatible = "regulator-fixed";
0059                 regulator-name = "veth";
0060                 regulator-min-microvolt = <3300000>;
0061                 regulator-max-microvolt = <3300000>;
0062                 regulator-boot-on;
0063         };
0064 
0065         xtal24mhz: xtal24mhz@24M {
0066                 #clock-cells = <0>;
0067                 compatible = "fixed-clock";
0068                 clock-frequency = <24000000>;
0069         };
0070 
0071         refclk32khz: refclk32khz {
0072                 #clock-cells = <0>;
0073                 compatible = "fixed-clock";
0074                 clock-frequency = <32768>;
0075         };
0076 
0077         timclk: timclk@1M {
0078                 #clock-cells = <0>;
0079                 compatible = "fixed-factor-clock";
0080                 clock-div = <24>;
0081                 clock-mult = <1>;
0082                 clocks = <&xtal24mhz>;
0083         };
0084 
0085         mclk: mclk@24M {
0086                 #clock-cells = <0>;
0087                 compatible = "fixed-factor-clock";
0088                 clock-div = <1>;
0089                 clock-mult = <1>;
0090                 clocks = <&xtal24mhz>;
0091         };
0092 
0093         kmiclk: kmiclk@24M {
0094                 #clock-cells = <0>;
0095                 compatible = "fixed-factor-clock";
0096                 clock-div = <1>;
0097                 clock-mult = <1>;
0098                 clocks = <&xtal24mhz>;
0099         };
0100 
0101         sspclk: sspclk@24M {
0102                 #clock-cells = <0>;
0103                 compatible = "fixed-factor-clock";
0104                 clock-div = <1>;
0105                 clock-mult = <1>;
0106                 clocks = <&xtal24mhz>;
0107         };
0108 
0109         uartclk: uartclk@24M {
0110                 #clock-cells = <0>;
0111                 compatible = "fixed-factor-clock";
0112                 clock-div = <1>;
0113                 clock-mult = <1>;
0114                 clocks = <&xtal24mhz>;
0115         };
0116 
0117         wdogclk: wdogclk@24M {
0118                 #clock-cells = <0>;
0119                 compatible = "fixed-factor-clock";
0120                 clock-div = <1>;
0121                 clock-mult = <1>;
0122                 clocks = <&xtal24mhz>;
0123         };
0124 
0125         /* FIXME: this actually hangs off the PLL clocks */
0126         pclk: pclk@0 {
0127                 #clock-cells = <0>;
0128                 compatible = "fixed-clock";
0129                 clock-frequency = <0>;
0130         };
0131 
0132         flash0@40000000 {
0133                 /* 2 * 32MiB NOR Flash memory */
0134                 compatible = "arm,versatile-flash", "cfi-flash";
0135                 reg = <0x40000000 0x04000000>;
0136                 bank-width = <4>;
0137                 partitions {
0138                         compatible = "arm,arm-firmware-suite";
0139                 };
0140         };
0141 
0142         flash1@44000000 {
0143                 /* 2 * 32MiB NOR Flash memory */
0144                 compatible = "arm,versatile-flash", "cfi-flash";
0145                 reg = <0x44000000 0x04000000>;
0146                 bank-width = <4>;
0147                 partitions {
0148                         compatible = "arm,arm-firmware-suite";
0149                 };
0150         };
0151 
0152         /* SMSC 9118 ethernet with PHY and EEPROM */
0153         ethernet: ethernet@4e000000 {
0154                 compatible = "smsc,lan9118", "smsc,lan9115";
0155                 reg = <0x4e000000 0x10000>;
0156                 phy-mode = "mii";
0157                 reg-io-width = <4>;
0158                 smsc,irq-active-high;
0159                 smsc,irq-push-pull;
0160                 vdd33a-supply = <&veth>;
0161                 vddvario-supply = <&veth>;
0162         };
0163 
0164         usb: usb@4f000000 {
0165                 compatible = "nxp,usb-isp1761";
0166                 reg = <0x4f000000 0x20000>;
0167                 dr_mode = "peripheral";
0168         };
0169 
0170         bridge {
0171                 compatible = "ti,ths8134a", "ti,ths8134";
0172                 #address-cells = <1>;
0173                 #size-cells = <0>;
0174 
0175                 ports {
0176                         #address-cells = <1>;
0177                         #size-cells = <0>;
0178 
0179                         port@0 {
0180                                 reg = <0>;
0181 
0182                                 vga_bridge_in: endpoint {
0183                                         remote-endpoint = <&clcd_pads>;
0184                                 };
0185                         };
0186 
0187                         port@1 {
0188                                 reg = <1>;
0189 
0190                                 vga_bridge_out: endpoint {
0191                                         remote-endpoint = <&vga_con_in>;
0192                                 };
0193                         };
0194                 };
0195         };
0196 
0197         vga {
0198                 /*
0199                  * This DDC I2C is connected directly to the DVI portions
0200                  * of the connector, so it's not really working when the
0201                  * monitor is connected to the VGA connector.
0202                  */
0203                 compatible = "vga-connector";
0204                 ddc-i2c-bus = <&i2c1>;
0205 
0206                 port {
0207                         vga_con_in: endpoint {
0208                                 remote-endpoint = <&vga_bridge_out>;
0209                         };
0210                 };
0211         };
0212 
0213         soc: soc {
0214                 compatible = "arm,realview-pbx-soc", "simple-bus";
0215                 #address-cells = <1>;
0216                 #size-cells = <1>;
0217                 regmap = <&syscon>;
0218                 ranges;
0219 
0220                 syscon: syscon@10000000 {
0221                         compatible = "arm,realview-pbx-syscon", "syscon", "simple-mfd";
0222                         reg = <0x10000000 0x1000>;
0223                         ranges = <0x0 0x10000000 0x1000>;
0224                         #address-cells = <1>;
0225                         #size-cells = <1>;
0226 
0227                         led@8,0 {
0228                                 compatible = "register-bit-led";
0229                                 reg = <0x08 0x04>;
0230                                 offset = <0x08>;
0231                                 mask = <0x01>;
0232                                 label = "versatile:0";
0233                                 linux,default-trigger = "heartbeat";
0234                                 default-state = "on";
0235                         };
0236                         led@8,1 {
0237                                 compatible = "register-bit-led";
0238                                 reg = <0x08 0x04>;
0239                                 offset = <0x08>;
0240                                 mask = <0x02>;
0241                                 label = "versatile:1";
0242                                 linux,default-trigger = "mmc0";
0243                                 default-state = "off";
0244                         };
0245                         led@8,2 {
0246                                 compatible = "register-bit-led";
0247                                 reg = <0x08 0x04>;
0248                                 offset = <0x08>;
0249                                 mask = <0x04>;
0250                                 label = "versatile:2";
0251                                 linux,default-trigger = "cpu0";
0252                                 default-state = "off";
0253                         };
0254                         led@8,3 {
0255                                 compatible = "register-bit-led";
0256                                 reg = <0x08 0x04>;
0257                                 offset = <0x08>;
0258                                 mask = <0x08>;
0259                                 label = "versatile:3";
0260                                 default-state = "off";
0261                         };
0262                         led@8,4 {
0263                                 compatible = "register-bit-led";
0264                                 reg = <0x08 0x04>;
0265                                 offset = <0x08>;
0266                                 mask = <0x10>;
0267                                 label = "versatile:4";
0268                                 default-state = "off";
0269                         };
0270                         led@8,5 {
0271                                 compatible = "register-bit-led";
0272                                 reg = <0x08 0x04>;
0273                                 offset = <0x08>;
0274                                 mask = <0x20>;
0275                                 label = "versatile:5";
0276                                 default-state = "off";
0277                         };
0278                         led@8,6 {
0279                                 compatible = "register-bit-led";
0280                                 reg = <0x08 0x04>;
0281                                 offset = <0x08>;
0282                                 mask = <0x40>;
0283                                 label = "versatile:6";
0284                                 default-state = "off";
0285                         };
0286                         led@8,7 {
0287                                 compatible = "register-bit-led";
0288                                 reg = <0x08 0x04>;
0289                                 offset = <0x08>;
0290                                 mask = <0x80>;
0291                                 label = "versatile:7";
0292                                 default-state = "off";
0293                         };
0294                         oscclk0: clock-controller@c {
0295                                 compatible = "arm,syscon-icst307";
0296                                 reg = <0x0c 0x04>;
0297                                 #clock-cells = <0>;
0298                                 lock-offset = <0x20>;
0299                                 vco-offset = <0x0C>;
0300                                 clocks = <&xtal24mhz>;
0301                         };
0302                         oscclk1: clock-controller@10 {
0303                                 compatible = "arm,syscon-icst307";
0304                                 reg = <0x10 0x04>;
0305                                 #clock-cells = <0>;
0306                                 lock-offset = <0x20>;
0307                                 vco-offset = <0x10>;
0308                                 clocks = <&xtal24mhz>;
0309                         };
0310                         oscclk2: clock-controller@14 {
0311                                 compatible = "arm,syscon-icst307";
0312                                 reg = <0x14 0x04>;
0313                                 #clock-cells = <0>;
0314                                 lock-offset = <0x20>;
0315                                 vco-offset = <0x14>;
0316                                 clocks = <&xtal24mhz>;
0317                         };
0318                         oscclk3: clock-controller@18 {
0319                                 compatible = "arm,syscon-icst307";
0320                                 reg = <0x18 0x04>;
0321                                 #clock-cells = <0>;
0322                                 lock-offset = <0x20>;
0323                                 vco-offset = <0x18>;
0324                                 clocks = <&xtal24mhz>;
0325                         };
0326                         oscclk4: clock-controller@1c {
0327                                 compatible = "arm,syscon-icst307";
0328                                 reg = <0x1c 0x04>;
0329                                 #clock-cells = <0>;
0330                                 lock-offset = <0x20>;
0331                                 vco-offset = <0x1c>;
0332                                 clocks = <&xtal24mhz>;
0333                         };
0334                 };
0335 
0336                 sp810_syscon0: sysctl@10001000 {
0337                         compatible = "arm,sp810", "arm,primecell";
0338                         reg = <0x10001000 0x1000>;
0339                         clocks = <&refclk32khz>, <&timclk>, <&xtal24mhz>;
0340                         clock-names = "refclk", "timclk", "apb_pclk";
0341                         #clock-cells = <1>;
0342                         clock-output-names = "timerclk0",
0343                                              "timerclk1",
0344                                              "timerclk2",
0345                                              "timerclk3";
0346                         assigned-clocks = <&sp810_syscon0 0>,
0347                                           <&sp810_syscon0 1>,
0348                                           <&sp810_syscon0 2>,
0349                                           <&sp810_syscon0 3>;
0350                         assigned-clock-parents = <&timclk>,
0351                                                <&timclk>,
0352                                                <&timclk>,
0353                                                <&timclk>;
0354                 };
0355 
0356                 i2c0: i2c@10002000 {
0357                         #address-cells = <1>;
0358                         #size-cells = <0>;
0359                         compatible = "arm,versatile-i2c";
0360                         reg = <0x10002000 0x1000>;
0361 
0362                         rtc@68 {
0363                                 compatible = "dallas,ds1338";
0364                                 reg = <0x68>;
0365                         };
0366                 };
0367 
0368                 serial0: serial@10009000 {
0369                         compatible = "arm,pl011", "arm,primecell";
0370                         reg = <0x10009000 0x1000>;
0371                         clocks = <&uartclk>, <&pclk>;
0372                         clock-names = "uartclk", "apb_pclk";
0373                 };
0374 
0375                 serial1: serial@1000a000 {
0376                         compatible = "arm,pl011", "arm,primecell";
0377                         reg = <0x1000a000 0x1000>;
0378                         clocks = <&uartclk>, <&pclk>;
0379                         clock-names = "uartclk", "apb_pclk";
0380                 };
0381 
0382                 serial2: serial@1000b000 {
0383                         compatible = "arm,pl011", "arm,primecell";
0384                         reg = <0x1000b000 0x1000>;
0385                         clocks = <&uartclk>, <&pclk>;
0386                         clock-names = "uartclk", "apb_pclk";
0387                 };
0388 
0389                 ssp: spi@1000d000 {
0390                         compatible = "arm,pl022", "arm,primecell";
0391                         reg = <0x1000d000 0x1000>;
0392                         clocks = <&sspclk>, <&pclk>;
0393                         clock-names = "sspclk", "apb_pclk";
0394                 };
0395 
0396                 wdog0: watchdog@1000f000 {
0397                         compatible = "arm,sp805", "arm,primecell";
0398                         reg = <0x1000f000 0x1000>;
0399                         clocks = <&wdogclk>, <&pclk>;
0400                         clock-names = "wdog_clk", "apb_pclk";
0401                         status = "disabled";
0402                 };
0403 
0404                 wdog1: watchdog@10010000 {
0405                         compatible = "arm,sp805", "arm,primecell";
0406                         reg = <0x10010000 0x1000>;
0407                         clocks = <&wdogclk>, <&pclk>;
0408                         clock-names = "wdog_clk", "apb_pclk";
0409                         status = "disabled";
0410                 };
0411 
0412                 timer01: timer@10011000 {
0413                         compatible = "arm,sp804", "arm,primecell";
0414                         reg = <0x10011000 0x1000>;
0415                         clocks = <&sp810_syscon0 0>,
0416                                  <&sp810_syscon0 1>,
0417                                  <&pclk>;
0418                         clock-names = "timerclk0",
0419                                     "timerclk1",
0420                                     "apb_pclk";
0421                 };
0422 
0423                 timer23: timer@10012000 {
0424                         compatible = "arm,sp804", "arm,primecell";
0425                         reg = <0x10012000 0x1000>;
0426                         clocks = <&sp810_syscon0 2>,
0427                                  <&sp810_syscon0 3>,
0428                                  <&pclk>;
0429                         clock-names = "timerclk2",
0430                                     "timerclk3",
0431                                     "apb_pclk";
0432                 };
0433 
0434                 gpio0: gpio@10013000 {
0435                         compatible = "arm,pl061", "arm,primecell";
0436                         reg = <0x10013000 0x1000>;
0437                         gpio-controller;
0438                         #gpio-cells = <2>;
0439                         interrupt-controller;
0440                         #interrupt-cells = <2>;
0441                         clocks = <&pclk>;
0442                         clock-names = "apb_pclk";
0443                 };
0444 
0445                 gpio1: gpio@10014000 {
0446                         compatible = "arm,pl061", "arm,primecell";
0447                         reg = <0x10014000 0x1000>;
0448                         gpio-controller;
0449                         #gpio-cells = <2>;
0450                         interrupt-controller;
0451                         #interrupt-cells = <2>;
0452                         clocks = <&pclk>;
0453                         clock-names = "apb_pclk";
0454                 };
0455 
0456                 gpio2: gpio@10015000 {
0457                         compatible = "arm,pl061", "arm,primecell";
0458                         reg = <0x10015000 0x1000>;
0459                         gpio-controller;
0460                         #gpio-cells = <2>;
0461                         interrupt-controller;
0462                         #interrupt-cells = <2>;
0463                         clocks = <&pclk>;
0464                         clock-names = "apb_pclk";
0465                 };
0466 
0467                 i2c1: i2c@10016000 {
0468                         #address-cells = <1>;
0469                         #size-cells = <0>;
0470                         compatible = "arm,versatile-i2c";
0471                         reg = <0x10016000 0x1000>;
0472                 };
0473 
0474                 rtc: rtc@10017000 {
0475                         compatible = "arm,pl031", "arm,primecell";
0476                         reg = <0x10017000 0x1000>;
0477                         clocks = <&pclk>;
0478                         clock-names = "apb_pclk";
0479                 };
0480 
0481                 timer45: timer@10018000 {
0482                         compatible = "arm,sp804", "arm,primecell";
0483                         reg = <0x10018000 0x1000>;
0484                         clocks = <&timclk>, <&timclk>, <&pclk>;
0485                         clock-names = "timerclk4", "timerclk5", "apb_pclk";
0486                 };
0487 
0488                 timer67: timer@10019000 {
0489                         compatible = "arm,sp804", "arm,primecell";
0490                         reg = <0x10019000 0x1000>;
0491                         clocks = <&timclk>, <&timclk>, <&pclk>;
0492                         clock-names = "timerclk6", "timerclk7", "apb_pclk";
0493                 };
0494 
0495                 sp810_syscon1: sysctl@1001a000 {
0496                         compatible = "arm,sp810", "arm,primecell";
0497                         reg = <0x1001a000 0x1000>;
0498                         clocks = <&refclk32khz>, <&timclk>, <&xtal24mhz>;
0499                         clock-names = "refclk", "timclk", "apb_pclk";
0500                         #clock-cells = <1>;
0501                         clock-output-names = "timerclk4",
0502                                              "timerclk5",
0503                                              "timerclk6",
0504                                              "timerclk7";
0505                         assigned-clocks = <&sp810_syscon1 0>,
0506                                           <&sp810_syscon1 1>,
0507                                           <&sp810_syscon1 2>,
0508                                           <&sp810_syscon1 3>;
0509                         assigned-clock-parents = <&timclk>,
0510                                                <&timclk>,
0511                                                <&timclk>,
0512                                                <&timclk>;
0513                 };
0514         };
0515 
0516 
0517         /* These peripherals are inside the FPGA */
0518         fpga {
0519                 #address-cells = <1>;
0520                 #size-cells = <1>;
0521                 compatible = "simple-bus";
0522                 ranges;
0523 
0524                 aaci: aaci@10004000 {
0525                         compatible = "arm,pl041", "arm,primecell";
0526                         reg = <0x10004000 0x1000>;
0527                         clocks = <&pclk>;
0528                         clock-names = "apb_pclk";
0529                 };
0530 
0531                 mmc: mmcsd@10005000 {
0532                         compatible = "arm,pl18x", "arm,primecell";
0533                         reg = <0x10005000 0x1000>;
0534 
0535                         /* Due to frequent FIFO overruns, use just 500 kHz */
0536                         max-frequency = <500000>;
0537                         bus-width = <4>;
0538                         cap-sd-highspeed;
0539                         cap-mmc-highspeed;
0540                         clocks = <&mclk>, <&pclk>;
0541                         clock-names = "mclk", "apb_pclk";
0542                         vmmc-supply = <&vmmc>;
0543                         cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
0544                         wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
0545                 };
0546 
0547                 kmi0: kmi@10006000 {
0548                         compatible = "arm,pl050", "arm,primecell";
0549                         reg = <0x10006000 0x1000>;
0550                         clocks = <&kmiclk>, <&pclk>;
0551                         clock-names = "KMIREFCLK", "apb_pclk";
0552                 };
0553 
0554                 kmi1: kmi@10007000 {
0555                         compatible = "arm,pl050", "arm,primecell";
0556                         reg = <0x10007000 0x1000>;
0557                         clocks = <&kmiclk>, <&pclk>;
0558                         clock-names = "KMIREFCLK", "apb_pclk";
0559                 };
0560 
0561                 serial3: serial@1000c000 {
0562                         compatible = "arm,pl011", "arm,primecell";
0563                         reg = <0x1000c000 0x1000>;
0564                         clocks = <&uartclk>, <&pclk>;
0565                         clock-names = "uartclk", "apb_pclk";
0566                 };
0567         };
0568 
0569         /* These peripherals are inside the NEC ISSP */
0570         issp {
0571                 #address-cells = <1>;
0572                 #size-cells = <1>;
0573                 compatible = "simple-bus";
0574                 ranges;
0575 
0576                 clcd: clcd@10020000 {
0577                         compatible = "arm,pl111", "arm,primecell";
0578                         reg = <0x10020000 0x1000>;
0579                         interrupt-names = "combined";
0580                         clocks = <&oscclk4>, <&pclk>;
0581                         clock-names = "clcdclk", "apb_pclk";
0582                         /* 1024x768 16bpp @65MHz works fine */
0583                         max-memory-bandwidth = <95000000>;
0584 
0585                         port {
0586                                 clcd_pads: endpoint {
0587                                         remote-endpoint = <&vga_bridge_in>;
0588                                         arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
0589                                 };
0590                         };
0591                 };
0592         };
0593 };