Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Support for peripherals on the AXS10x mainboard
0004  *
0005  * Copyright (C) 2013-15 Synopsys, Inc. (www.synopsys.com)
0006  */
0007 
0008 / {
0009         aliases {
0010                 ethernet = &gmac;
0011         };
0012 
0013         axs10x_mb {
0014                 compatible = "simple-bus";
0015                 #address-cells = <1>;
0016                 #size-cells = <1>;
0017                 ranges = <0x00000000 0x0 0xe0000000 0x10000000>;
0018                 interrupt-parent = <&mb_intc>;
0019 
0020                 creg_rst: reset-controller@11220 {
0021                         compatible = "snps,axs10x-reset";
0022                         #reset-cells = <1>;
0023                         reg = <0x11220 0x4>;
0024                 };
0025 
0026                 i2sclk: i2sclk@100a0 {
0027                         compatible = "snps,axs10x-i2s-pll-clock";
0028                         reg = <0x100a0 0x10>;
0029                         clocks = <&i2spll_clk>;
0030                         #clock-cells = <0>;
0031                 };
0032 
0033                 clocks {
0034                         i2spll_clk: i2spll_clk {
0035                                 compatible = "fixed-clock";
0036                                 clock-frequency = <27000000>;
0037                                 #clock-cells = <0>;
0038                         };
0039 
0040                         i2cclk: i2cclk {
0041                                 compatible = "fixed-clock";
0042                                 clock-frequency = <50000000>;
0043                                 #clock-cells = <0>;
0044                         };
0045 
0046                         apbclk: apbclk {
0047                                 compatible = "fixed-clock";
0048                                 clock-frequency = <50000000>;
0049                                 #clock-cells = <0>;
0050                         };
0051 
0052                         mmcclk: mmcclk {
0053                                 compatible = "fixed-clock";
0054                                 /*
0055                                  * DW sdio controller has external ciu clock divider
0056                                  * controlled via register in SDIO IP. It divides
0057                                  * sdio_ref_clk (which comes from CGU) by 16 for
0058                                  * default. So default mmcclk clock (which comes
0059                                  * to sdk_in) is 25000000 Hz.
0060                                  */
0061                                 clock-frequency = <25000000>;
0062                                 #clock-cells = <0>;
0063                         };
0064                 };
0065 
0066                 pguclk: pguclk@10080 {
0067                         compatible = "snps,axs10x-pgu-pll-clock";
0068                         reg = <0x10080 0x10>, <0x110 0x10>;
0069                         #clock-cells = <0>;
0070                         clocks = <&input_clk>;
0071                 };
0072 
0073                 gmac: ethernet@18000 {
0074                         #interrupt-cells = <1>;
0075                         compatible = "snps,dwmac";
0076                         reg = < 0x18000 0x2000 >;
0077                         interrupts = < 4 >;
0078                         interrupt-names = "macirq";
0079                         phy-mode = "rgmii";
0080                         snps,pbl = < 32 >;
0081                         snps,multicast-filter-bins = <256>;
0082                         clocks = <&apbclk>;
0083                         clock-names = "stmmaceth";
0084                         max-speed = <100>;
0085                         resets = <&creg_rst 5>;
0086                         reset-names = "stmmaceth";
0087                         mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */
0088                 };
0089 
0090                 ehci@40000 {
0091                         compatible = "generic-ehci";
0092                         reg = < 0x40000 0x100 >;
0093                         interrupts = < 8 >;
0094                 };
0095 
0096                 ohci@60000 {
0097                         compatible = "generic-ohci";
0098                         reg = < 0x60000 0x100 >;
0099                         interrupts = < 8 >;
0100                 };
0101 
0102                 /*
0103                  * According to DW Mobile Storage databook it is required
0104                  * to use  "Hold Register" if card is enumerated in SDR12 or
0105                  * SDR25 modes.
0106                  *
0107                  * Utilization of "Hold Register" is already implemented via
0108                  * dw_mci_pltfm_prepare_command() which in its turn gets
0109                  * used through dw_mci_drv_data->prepare_command call-back.
0110                  * This call-back is used in Altera Socfpga platform and so
0111                  * we may reuse it saying that we're compatible with their
0112                  * "altr,socfpga-dw-mshc".
0113                  *
0114                  * Most probably "Hold Register" utilization is platform-
0115                  * independent requirement which means that single unified
0116                  * "snps,dw-mshc" should be enough for all users of DW MMC once
0117                  * dw_mci_pltfm_prepare_command() is used in generic platform
0118                  * code.
0119                  */
0120                 mmc@15000 {
0121                         compatible = "altr,socfpga-dw-mshc";
0122                         reg = < 0x15000 0x400 >;
0123                         fifo-depth = < 16 >;
0124                         card-detect-delay = < 200 >;
0125                         clocks = <&apbclk>, <&mmcclk>;
0126                         clock-names = "biu", "ciu";
0127                         interrupts = < 7 >;
0128                         bus-width = < 4 >;
0129                 };
0130 
0131                 uart@20000 {
0132                         compatible = "snps,dw-apb-uart";
0133                         reg = <0x20000 0x100>;
0134                         clock-frequency = <33333333>;
0135                         interrupts = <17>;
0136                         baud = <115200>;
0137                         reg-shift = <2>;
0138                         reg-io-width = <4>;
0139                 };
0140 
0141                 uart@21000 {
0142                         compatible = "snps,dw-apb-uart";
0143                         reg = <0x21000 0x100>;
0144                         clock-frequency = <33333333>;
0145                         interrupts = <18>;
0146                         baud = <115200>;
0147                         reg-shift = <2>;
0148                         reg-io-width = <4>;
0149                 };
0150 
0151                 /* UART muxed with USB data port (ttyS3) */
0152                 uart@22000 {
0153                         compatible = "snps,dw-apb-uart";
0154                         reg = <0x22000 0x100>;
0155                         clock-frequency = <33333333>;
0156                         interrupts = <19>;
0157                         baud = <115200>;
0158                         reg-shift = <2>;
0159                         reg-io-width = <4>;
0160                 };
0161 
0162                 i2c@1d000 {
0163                         compatible = "snps,designware-i2c";
0164                         reg = <0x1d000 0x100>;
0165                         clock-frequency = <400000>;
0166                         clocks = <&i2cclk>;
0167                         interrupts = <14>;
0168                 };
0169 
0170                 i2s: i2s@1e000 {
0171                         compatible = "snps,designware-i2s";
0172                         reg = <0x1e000 0x100>;
0173                         clocks = <&i2sclk 0>;
0174                         clock-names = "i2sclk";
0175                         interrupts = <15>;
0176                         #sound-dai-cells = <0>;
0177                 };
0178 
0179                 i2c@1f000 {
0180                         compatible = "snps,designware-i2c";
0181                         #address-cells = <1>;
0182                         #size-cells = <0>;
0183                         reg = <0x1f000 0x100>;
0184                         clock-frequency = <400000>;
0185                         clocks = <&i2cclk>;
0186                         interrupts = <16>;
0187 
0188                         adv7511:adv7511@39{
0189                                 compatible="adi,adv7511";
0190                                 reg = <0x39>;
0191                                 interrupts = <23>;
0192                                 adi,input-depth = <8>;
0193                                 adi,input-colorspace = "rgb";
0194                                 adi,input-clock = "1x";
0195                                 adi,clock-delay = <0x03>;
0196                                 #sound-dai-cells = <0>;
0197 
0198                                 ports {
0199                                         #address-cells = <1>;
0200                                         #size-cells = <0>;
0201 
0202                                         /* RGB/YUV input */
0203                                         port@0 {
0204                                                 reg = <0>;
0205                                                 adv7511_input:endpoint {
0206                                                 remote-endpoint = <&pgu_output>;
0207                                                 };
0208                                         };
0209 
0210                                         /* HDMI output */
0211                                         port@1 {
0212                                                 reg = <1>;
0213                                                 adv7511_output: endpoint {
0214                                                         remote-endpoint = <&hdmi_connector_in>;
0215                                                 };
0216                                         };
0217                                 };
0218                         };
0219 
0220                         eeprom@54{
0221                                 compatible = "atmel,24c01";
0222                                 reg = <0x54>;
0223                                 pagesize = <0x8>;
0224                         };
0225 
0226                         eeprom@57{
0227                                 compatible = "atmel,24c04";
0228                                 reg = <0x57>;
0229                                 pagesize = <0x8>;
0230                         };
0231                 };
0232 
0233                 hdmi0: connector {
0234                         compatible = "hdmi-connector";
0235                         type = "a";
0236                         port {
0237                                 hdmi_connector_in: endpoint {
0238                                         remote-endpoint = <&adv7511_output>;
0239                                 };
0240                         };
0241                 };
0242 
0243                 gpio0:gpio@13000 {
0244                         compatible = "snps,dw-apb-gpio";
0245                         reg = <0x13000 0x1000>;
0246                         #address-cells = <1>;
0247                         #size-cells = <0>;
0248 
0249                         gpio0_banka: gpio-controller@0 {
0250                                 compatible = "snps,dw-apb-gpio-port";
0251                                 gpio-controller;
0252                                 #gpio-cells = <2>;
0253                                 snps,nr-gpios = <32>;
0254                                 reg = <0>;
0255                         };
0256 
0257                         gpio0_bankb: gpio-controller@1 {
0258                                 compatible = "snps,dw-apb-gpio-port";
0259                                 gpio-controller;
0260                                 #gpio-cells = <2>;
0261                                 snps,nr-gpios = <8>;
0262                                 reg = <1>;
0263                         };
0264 
0265                         gpio0_bankc: gpio-controller@2 {
0266                                 compatible = "snps,dw-apb-gpio-port";
0267                                 gpio-controller;
0268                                 #gpio-cells = <2>;
0269                                 snps,nr-gpios = <8>;
0270                                 reg = <2>;
0271                         };
0272                 };
0273 
0274                 gpio1:gpio@14000 {
0275                         compatible = "snps,dw-apb-gpio";
0276                         reg = <0x14000 0x1000>;
0277                         #address-cells = <1>;
0278                         #size-cells = <0>;
0279 
0280                         gpio1_banka: gpio-controller@0 {
0281                                 compatible = "snps,dw-apb-gpio-port";
0282                                 gpio-controller;
0283                                 #gpio-cells = <2>;
0284                                 snps,nr-gpios = <30>;
0285                                 reg = <0>;
0286                         };
0287 
0288                         gpio1_bankb: gpio-controller@1 {
0289                                 compatible = "snps,dw-apb-gpio-port";
0290                                 gpio-controller;
0291                                 #gpio-cells = <2>;
0292                                 snps,nr-gpios = <10>;
0293                                 reg = <1>;
0294                         };
0295 
0296                         gpio1_bankc: gpio-controller@2 {
0297                                 compatible = "snps,dw-apb-gpio-port";
0298                                 gpio-controller;
0299                                 #gpio-cells = <2>;
0300                                 snps,nr-gpios = <8>;
0301                                 reg = <2>;
0302                         };
0303                 };
0304 
0305                 pgu@17000 {
0306                         compatible = "snps,arcpgu";
0307                         reg = <0x17000 0x400>;
0308                         clocks = <&pguclk>;
0309                         clock-names = "pxlclk";
0310                         memory-region = <&frame_buffer>;
0311                         port {
0312                                 pgu_output: endpoint {
0313                                         remote-endpoint = <&adv7511_input>;
0314                                 };
0315                         };
0316                 };
0317 
0318                 sound_playback {
0319                         compatible = "simple-audio-card";
0320                         simple-audio-card,name = "AXS10x HDMI Audio";
0321                         simple-audio-card,format = "i2s";
0322                         simple-audio-card,cpu {
0323                                 sound-dai = <&i2s>;
0324                         };
0325                         simple-audio-card,codec {
0326                                 sound-dai = <&adv7511>;
0327                         };
0328                 };
0329         };
0330 };