Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Device Tree for the ARM Integrator/CP platform
0004  */
0005 
0006 /dts-v1/;
0007 /include/ "integrator.dtsi"
0008 
0009 / {
0010         model = "ARM Integrator/CP";
0011         compatible = "arm,integrator-cp";
0012 
0013         chosen {
0014                 bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk";
0015         };
0016 
0017         cpus {
0018                 #address-cells = <1>;
0019                 #size-cells = <0>;
0020 
0021                 cpu@0 {
0022                         device_type = "cpu";
0023                         /*
0024                          * Since the board has pluggable CPU modules, we
0025                          * cannot define a proper compatible here. Let the
0026                          * boot loader fill in the apropriate compatible
0027                          * string if necessary.
0028                          */
0029                         /* compatible = "arm,arm920t"; */
0030                         reg = <0>;
0031                         /*
0032                          * TBD comment.
0033                          */
0034                                          /* kHz     uV   */
0035                         operating-points = <50000  0
0036                                             48000  0>;
0037                         clocks = <&cmcore>;
0038                         clock-names = "cpu";
0039                         clock-latency = <1000000>; /* 1 ms */
0040                 };
0041         };
0042 
0043         /*
0044          * The Integrator/CP overall clocking architecture can be found in
0045          * ARM DUI 0184B page 7-28 "Integrator/CP922T system clocks" which
0046          * appear to illustrate the layout used in most configurations.
0047          */
0048 
0049         /* The codec chrystal operates at 24.576 MHz */
0050         xtal_codec: xtal24.576@24.576M {
0051                 #clock-cells = <0>;
0052                 compatible = "fixed-clock";
0053                 clock-frequency = <24576000>;
0054         };
0055 
0056         /* The chrystal is divided by 2 by the codec for the AACI bit clock */
0057         aaci_bitclk: aaci_bitclk@12.288M {
0058                 #clock-cells = <0>;
0059                 compatible = "fixed-factor-clock";
0060                 clock-div = <2>;
0061                 clock-mult = <1>;
0062                 clocks = <&xtal_codec>;
0063         };
0064 
0065         /* This is a 25MHz chrystal on the base board */
0066         xtal25mhz: xtal25mhz@25M {
0067                 #clock-cells = <0>;
0068                 compatible = "fixed-clock";
0069                 clock-frequency = <25000000>;
0070         };
0071 
0072         /* The UART clock is 14.74 MHz divided from 25MHz by an ICS525 */
0073         uartclk: uartclk@14.74M {
0074                 #clock-cells = <0>;
0075                 compatible = "fixed-clock";
0076                 clock-frequency = <14745600>;
0077         };
0078 
0079         /* Actually sysclk I think */
0080         pclk: pclk@0 {
0081                 #clock-cells = <0>;
0082                 compatible = "fixed-clock";
0083                 clock-frequency = <0>;
0084         };
0085 
0086         core-module@10000000 {
0087                 /* 24 MHz chrystal on the core module */
0088                 cm24mhz: cm24mhz@24M {
0089                         #clock-cells = <0>;
0090                         compatible = "fixed-clock";
0091                         clock-frequency = <24000000>;
0092                 };
0093 
0094                 /* Oscillator on the core module, clocks the CPU core */
0095                 cmcore: clock-controller@8 {
0096                         compatible = "arm,syscon-icst525-integratorcp-cm-core";
0097                         reg = <0x08 0x04>;
0098                         #clock-cells = <0>;
0099                         lock-offset = <0x14>;
0100                         vco-offset = <0x08>;
0101                         clocks = <&cm24mhz>;
0102                 };
0103 
0104                 /* Oscillator on the core module, clocks the memory bus */
0105                 cmmem: clock-controller@8,12 {
0106                         compatible = "arm,syscon-icst525-integratorcp-cm-mem";
0107                         reg = <0x08 0x04>;
0108                         #clock-cells = <0>;
0109                         lock-offset = <0x14>;
0110                         vco-offset = <0x08>;
0111                         clocks = <&cm24mhz>;
0112                 };
0113 
0114                 /* Auxilary oscillator on the core module, clocks the CLCD */
0115                 auxosc: clock-controller@1c {
0116                         compatible = "arm,syscon-icst525";
0117                         reg = <0x1c 0x04>;
0118                         #clock-cells = <0>;
0119                         lock-offset = <0x14>;
0120                         vco-offset = <0x1c>;
0121                         clocks = <&cm24mhz>;
0122                 };
0123 
0124                 /* The KMI clock is the 24 MHz oscillator divided to 8MHz */
0125                 kmiclk: kmiclk@1M {
0126                         #clock-cells = <0>;
0127                         compatible = "fixed-factor-clock";
0128                         clock-div = <3>;
0129                         clock-mult = <1>;
0130                         clocks = <&cm24mhz>;
0131                 };
0132 
0133                 /* The timer clock is the 24 MHz oscillator divided to 1MHz */
0134                 timclk: timclk@1M {
0135                         #clock-cells = <0>;
0136                         compatible = "fixed-factor-clock";
0137                         clock-div = <24>;
0138                         clock-mult = <1>;
0139                         clocks = <&cm24mhz>;
0140                 };
0141         };
0142 
0143         syscon {
0144                 compatible = "arm,integrator-cp-syscon", "syscon";
0145                 reg = <0xcb000000 0x100>;
0146         };
0147 
0148         timer0: timer@13000000 {
0149                 /* TIMER0 runs directly on the 25MHz chrystal */
0150                 compatible = "arm,integrator-cp-timer";
0151                 clocks = <&xtal25mhz>;
0152         };
0153 
0154         timer1: timer@13000100 {
0155                 /* TIMER1 runs @ 1MHz */
0156                 compatible = "arm,integrator-cp-timer";
0157                 clocks = <&timclk>;
0158         };
0159 
0160         timer2: timer@13000200 {
0161                 /* TIMER2 runs @ 1MHz */
0162                 compatible = "arm,integrator-cp-timer";
0163                 clocks = <&timclk>;
0164         };
0165 
0166         pic: pic@14000000 {
0167                 valid-mask = <0x1fc003ff>;
0168         };
0169 
0170         cic: cic@10000040 {
0171                 compatible = "arm,versatile-fpga-irq";
0172                 #interrupt-cells = <1>;
0173                 interrupt-controller;
0174                 reg = <0x10000040 0x100>;
0175                 clear-mask = <0xffffffff>;
0176                 valid-mask = <0x00000007>;
0177         };
0178 
0179         /* The SIC is cascaded off IRQ 26 on the PIC */
0180         sic: sic@ca000000 {
0181                 compatible = "arm,versatile-fpga-irq";
0182                 interrupt-parent = <&pic>;
0183                 interrupts = <26>;
0184                 #interrupt-cells = <1>;
0185                 interrupt-controller;
0186                 reg = <0xca000000 0x100>;
0187                 clear-mask = <0x00000fff>;
0188                 valid-mask = <0x00000fff>;
0189         };
0190 
0191         ethernet@c8000000 {
0192                 compatible = "smsc,lan91c111";
0193                 reg = <0xc8000000 0x10>;
0194                 interrupt-parent = <&pic>;
0195                 interrupts = <27>;
0196         };
0197 
0198         bridge {
0199                 compatible = "ti,ths8134a", "ti,ths8134";
0200                 #address-cells = <1>;
0201                 #size-cells = <0>;
0202 
0203                 ports {
0204                         #address-cells = <1>;
0205                         #size-cells = <0>;
0206 
0207                         port@0 {
0208                                 reg = <0>;
0209 
0210                                 vga_bridge_in: endpoint {
0211                                         remote-endpoint = <&clcd_pads_vga_dac>;
0212                                 };
0213                         };
0214 
0215                         port@1 {
0216                                 reg = <1>;
0217 
0218                                 vga_bridge_out: endpoint {
0219                                         remote-endpoint = <&vga_con_in>;
0220                                 };
0221                         };
0222                 };
0223         };
0224 
0225         vga {
0226                 compatible = "vga-connector";
0227 
0228                 port {
0229                         vga_con_in: endpoint {
0230                                 remote-endpoint = <&vga_bridge_out>;
0231                         };
0232                 };
0233         };
0234 
0235         fpga {
0236                 /*
0237                  * These PrimeCells are at the same location and using
0238                  * the same interrupts in all Integrators, but in the CP
0239                  * slightly newer versions are deployed.
0240                  */
0241                 rtc@15000000 {
0242                         compatible = "arm,pl031", "arm,primecell";
0243                         clocks = <&pclk>;
0244                         clock-names = "apb_pclk";
0245                 };
0246 
0247                 uart@16000000 {
0248                         compatible = "arm,pl011", "arm,primecell";
0249                         clocks = <&uartclk>, <&pclk>;
0250                         clock-names = "uartclk", "apb_pclk";
0251                 };
0252 
0253                 uart@17000000 {
0254                         compatible = "arm,pl011", "arm,primecell";
0255                         clocks = <&uartclk>, <&pclk>;
0256                         clock-names = "uartclk", "apb_pclk";
0257                 };
0258 
0259                 kmi@18000000 {
0260                         compatible = "arm,pl050", "arm,primecell";
0261                         clocks = <&kmiclk>, <&pclk>;
0262                         clock-names = "KMIREFCLK", "apb_pclk";
0263                 };
0264 
0265                 kmi@19000000 {
0266                         compatible = "arm,pl050", "arm,primecell";
0267                         clocks = <&kmiclk>, <&pclk>;
0268                         clock-names = "KMIREFCLK", "apb_pclk";
0269                 };
0270 
0271                 /*
0272                  * These PrimeCells are only available on the Integrator/CP
0273                  */
0274                 mmc@1c000000 {
0275                         compatible = "arm,pl180", "arm,primecell";
0276                         reg = <0x1c000000 0x1000>;
0277                         interrupts = <23 24>;
0278                         max-frequency = <515633>;
0279                         clocks = <&uartclk>, <&pclk>;
0280                         clock-names = "mclk", "apb_pclk";
0281                 };
0282 
0283                 aaci@1d000000 {
0284                         compatible = "arm,pl041", "arm,primecell";
0285                         reg = <0x1d000000 0x1000>;
0286                         interrupts = <25>;
0287                         clocks = <&pclk>;
0288                         clock-names = "apb_pclk";
0289                 };
0290 
0291                 clcd@c0000000 {
0292                         compatible = "arm,pl110", "arm,primecell";
0293                         reg = <0xC0000000 0x1000>;
0294                         interrupts = <22>;
0295                         clocks = <&auxosc>, <&pclk>;
0296                         clock-names = "clcdclk", "apb_pclk";
0297                         /* 640x480 16bpp @ 25.175MHz is 36827428 bytes/s */
0298                         max-memory-bandwidth = <40000000>;
0299 
0300                         /*
0301                          * This port is routed through a PLD (Programmable
0302                          * Logic Device) that routes the output from the CLCD
0303                          * (after transformations) to the VGA DAC and also an
0304                          * external panel connector. The PLD is essential for
0305                          * supporting RGB565/BGR565.
0306                          *
0307                          * The signals from the port thus reaches two endpoints.
0308                          * The PLD is managed through a few special bits in the
0309                          * FPGA "sysreg".
0310                          *
0311                          * This arrangement can be clearly seen in
0312                          * ARM DUI 0225D, page 3-41, figure 3-19.
0313                          */
0314                         port@0 {
0315                                 clcd_pads_vga_dac: endpoint {
0316                                         remote-endpoint = <&vga_bridge_in>;
0317                                         arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
0318                                 };
0319                         };
0320                 };
0321         };
0322 };