Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  k210.dtsi   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com>
 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
 */
#include <dt-bindings/clock/k210-clk.h>
#include <dt-bindings/pinctrl/k210-fpioa.h>
#include <dt-bindings/reset/k210-rst.h>

/ {
 /*
  * Although the K210 is a 64-bit CPU, the address bus is only 32-bits
  * wide, and the upper half of all addresses is ignored.
  */
 #address-cells = <1>;
 #size-cells = <1>;
 compatible = "canaan,kendryte-k210";

 /*
  * The K210 has an sv39 MMU following the privileged specification v1.9.
  * Since this is a non-ratified draft specification, the kernel does not
  * support it and the K210 support enabled only for the !MMU case.
  * Be consistent with this by setting the CPUs MMU type to "none".
  */
 cpus {
  #address-cells = <1>;
  #size-cells = <0>;
  timebase-frequency = <7800000>;
  cpu0: cpu@0 {
   device_type = "cpu";
   compatible = "canaan,k210", "riscv";
   reg = <0>;
   riscv,isa = "rv64imafdc";
   mmu-type = "riscv,none";
   i-cache-block-size = <64>;
   i-cache-size = <0x8000>;
   d-cache-block-size = <64>;
   d-cache-size = <0x8000>;
   cpu0_intc: interrupt-controller {
    #interrupt-cells = <1>;
    interrupt-controller;
    compatible = "riscv,cpu-intc";
   };
  };
  cpu1: cpu@1 {
   device_type = "cpu";
   compatible = "canaan,k210", "riscv";
   reg = <1>;
   riscv,isa = "rv64imafdc";
   mmu-type = "riscv,none";
   i-cache-block-size = <64>;
   i-cache-size = <0x8000>;
   d-cache-block-size = <64>;
   d-cache-size = <0x8000>;
   cpu1_intc: interrupt-controller {
    #interrupt-cells = <1>;
    interrupt-controller;
    compatible = "riscv,cpu-intc";
   };
  };

  cpu-map {
   cluster0 {
    core0 {
     cpu = <&cpu0>;
    };

    core1 {
     cpu = <&cpu1>;
    };
   };
  };
 };

 sram: memory@80000000 {
  device_type = "memory";
  reg = <0x80000000 0x400000>, /* sram0 4 MiB */
        <0x80400000 0x200000>, /* sram1 2 MiB */
        <0x80600000 0x200000>; /* aisram 2 MiB */
 };

 sram_controller: memory-controller {
  compatible = "canaan,k210-sram";
  clocks = <&sysclk K210_CLK_SRAM0>,
    <&sysclk K210_CLK_SRAM1>,
    <&sysclk K210_CLK_AI>;
  clock-names = "sram0", "sram1", "aisram";
 };

 clocks {
  in0: oscillator {
   compatible = "fixed-clock";
   #clock-cells = <0>;
   clock-frequency = <26000000>;
  };
 };

 soc {
  #address-cells = <1>;
  #size-cells = <1>;
  compatible = "simple-bus";
  ranges;
  interrupt-parent = <&plic0>;

  rom0: nvmem@1000 {
   reg = <0x1000 0x1000>;
   read-only;
  };

  clint0: timer@2000000 {
   compatible = "canaan,k210-clint", "sifive,clint0";
   reg = <0x2000000 0xC000>;
   interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
           <&cpu1_intc 3>, <&cpu1_intc 7>;
  };

  plic0: interrupt-controller@c000000 {
   #interrupt-cells = <1>;
   #address-cells = <0>;
   compatible = "canaan,k210-plic", "sifive,plic-1.0.0";
   reg = <0xC000000 0x4000000>;
   interrupt-controller;
   interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
           <&cpu1_intc 11>, <&cpu1_intc 9>;
   riscv,ndev = <65>;
  };

  uarths0: serial@38000000 {
   compatible = "canaan,k210-uarths", "sifive,uart0";
   reg = <0x38000000 0x1000>;
   interrupts = <33>;
   clocks = <&sysclk K210_CLK_CPU>;
   status = "disabled";
  };

  gpio0: gpio-controller@38001000 {
   #interrupt-cells = <2>;
   #gpio-cells = <2>;
   compatible = "canaan,k210-gpiohs", "sifive,gpio0";
   reg = <0x38001000 0x1000>;
   interrupt-controller;
   interrupts = <34>, <35>, <36>, <37>, <38>, <39>, <40>,
         <41>, <42>, <43>, <44>, <45>, <46>, <47>,
         <48>, <49>, <50>, <51>, <52>, <53>, <54>,
         <55>, <56>, <57>, <58>, <59>, <60>, <61>,
         <62>, <63>, <64>, <65>;
   gpio-controller;
   ngpios = <32>;
   status = "disabled";
  };

  dmac0: dma-controller@50000000 {
   compatible = "snps,axi-dma-1.01a";
   reg = <0x50000000 0x1000>;
   interrupts = <27>, <28>, <29>, <30>, <31>, <32>;
   #dma-cells = <1>;
   clocks = <&sysclk K210_CLK_DMA>, <&sysclk K210_CLK_DMA>;
   clock-names = "core-clk", "cfgr-clk";
   resets = <&sysrst K210_RST_DMA>;
   dma-channels = <6>;
   snps,dma-masters = <2>;
   snps,priority = <0 1 2 3 4 5>;
   snps,data-width = <5>;
   snps,block-size = <0x200000 0x200000 0x200000
        0x200000 0x200000 0x200000>;
   snps,axi-max-burst-len = <256>;
  };

  apb0: bus@50200000 {
   #address-cells = <1>;
   #size-cells = <1>;
   compatible = "simple-pm-bus";
   ranges = <0x50200000 0x50200000 0x200000>;
   clocks = <&sysclk K210_CLK_APB0>;

   gpio1: gpio@50200000 {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "snps,dw-apb-gpio";
    reg = <0x50200000 0x80>;
    clocks = <&sysclk K210_CLK_APB0>,
      <&sysclk K210_CLK_GPIO>;
    clock-names = "bus", "db";
    resets = <&sysrst K210_RST_GPIO>;
    status = "disabled";

    gpio1_0: gpio-port@0 {
     #gpio-cells = <2>;
     #interrupt-cells = <2>;
     compatible = "snps,dw-apb-gpio-port";
     reg = <0>;
     interrupt-controller;
     interrupts = <23>;
     gpio-controller;
     ngpios = <8>;
    };
   };

   uart1: serial@50210000 {
    compatible = "snps,dw-apb-uart";
    reg = <0x50210000 0x100>;
    interrupts = <11>;
    clocks = <&sysclk K210_CLK_UART1>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "baudclk", "apb_pclk";
    resets = <&sysrst K210_RST_UART1>;
    reg-io-width = <4>;
    reg-shift = <2>;
    dcd-override;
    dsr-override;
    cts-override;
    ri-override;
    status = "disabled";
   };

   uart2: serial@50220000 {
    compatible = "snps,dw-apb-uart";
    reg = <0x50220000 0x100>;
    interrupts = <12>;
    clocks = <&sysclk K210_CLK_UART2>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "baudclk", "apb_pclk";
    resets = <&sysrst K210_RST_UART2>;
    reg-io-width = <4>;
    reg-shift = <2>;
    dcd-override;
    dsr-override;
    cts-override;
    ri-override;
    status = "disabled";
   };

   uart3: serial@50230000 {
    compatible = "snps,dw-apb-uart";
    reg = <0x50230000 0x100>;
    interrupts = <13>;
    clocks = <&sysclk K210_CLK_UART3>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "baudclk", "apb_pclk";
    resets = <&sysrst K210_RST_UART3>;
    reg-io-width = <4>;
    reg-shift = <2>;
    dcd-override;
    dsr-override;
    cts-override;
    ri-override;
    status = "disabled";
   };

   spi2: spi@50240000 {
    compatible = "canaan,k210-spi";
    spi-slave;
    reg = <0x50240000 0x100>;
    #address-cells = <0>;
    #size-cells = <0>;
    interrupts = <3>;
    clocks = <&sysclk K210_CLK_SPI2>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "ssi_clk", "pclk";
    resets = <&sysrst K210_RST_SPI2>;
    status = "disabled";
   };

   i2s0: i2s@50250000 {
    compatible = "canaan,k210-i2s", "snps,designware-i2s";
    reg = <0x50250000 0x200>;
    interrupts = <5>;
    clocks = <&sysclk K210_CLK_I2S0>;
    clock-names = "i2sclk";
    resets = <&sysrst K210_RST_I2S0>;
    status = "disabled";
   };

   i2s1: i2s@50260000 {
    compatible = "canaan,k210-i2s", "snps,designware-i2s";
    reg = <0x50260000 0x200>;
    interrupts = <6>;
    clocks = <&sysclk K210_CLK_I2S1>;
    clock-names = "i2sclk";
    resets = <&sysrst K210_RST_I2S1>;
    status = "disabled";
   };

   i2s2: i2s@50270000 {
    compatible = "canaan,k210-i2s", "snps,designware-i2s";
    reg = <0x50270000 0x200>;
    interrupts = <7>;
    clocks = <&sysclk K210_CLK_I2S2>;
    clock-names = "i2sclk";
    resets = <&sysrst K210_RST_I2S2>;
    status = "disabled";
   };

   i2c0: i2c@50280000 {
    compatible = "snps,designware-i2c";
    reg = <0x50280000 0x100>;
    interrupts = <8>;
    clocks = <&sysclk K210_CLK_I2C0>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "ref", "pclk";
    resets = <&sysrst K210_RST_I2C0>;
    status = "disabled";
   };

   i2c1: i2c@50290000 {
    compatible = "snps,designware-i2c";
    reg = <0x50290000 0x100>;
    interrupts = <9>;
    clocks = <&sysclk K210_CLK_I2C1>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "ref", "pclk";
    resets = <&sysrst K210_RST_I2C1>;
    status = "disabled";
   };

   i2c2: i2c@502a0000 {
    compatible = "snps,designware-i2c";
    reg = <0x502A0000 0x100>;
    interrupts = <10>;
    clocks = <&sysclk K210_CLK_I2C2>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "ref", "pclk";
    resets = <&sysrst K210_RST_I2C2>;
    status = "disabled";
   };

   fpioa: pinmux@502b0000 {
    compatible = "canaan,k210-fpioa";
    reg = <0x502B0000 0x100>;
    clocks = <&sysclk K210_CLK_FPIOA>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "ref", "pclk";
    resets = <&sysrst K210_RST_FPIOA>;
    canaan,k210-sysctl-power = <&sysctl 108>;
   };

   timer0: timer@502d0000 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502D0000 0x14>;
    interrupts = <14>;
    clocks = <&sysclk K210_CLK_TIMER0>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER0>;
   };

   timer1: timer@502d0014 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502D0014 0x14>;
    interrupts = <15>;
    clocks = <&sysclk K210_CLK_TIMER0>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER0>;
   };

   timer2: timer@502e0000 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502E0000 0x14>;
    interrupts = <16>;
    clocks = <&sysclk K210_CLK_TIMER1>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER1>;
   };

   timer3: timer@502e0014 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502E0014 0x114>;
    interrupts = <17>;
    clocks = <&sysclk K210_CLK_TIMER1>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER1>;
   };

   timer4: timer@502f0000 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502F0000 0x14>;
    interrupts = <18>;
    clocks = <&sysclk K210_CLK_TIMER2>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER2>;
   };

   timer5: timer@502f0014 {
    compatible = "snps,dw-apb-timer";
    reg = <0x502F0014 0x14>;
    interrupts = <19>;
    clocks = <&sysclk K210_CLK_TIMER2>,
      <&sysclk K210_CLK_APB0>;
    clock-names = "timer", "pclk";
    resets = <&sysrst K210_RST_TIMER2>;
   };
  };

  apb1: bus@50400000 {
   #address-cells = <1>;
   #size-cells = <1>;
   compatible = "simple-pm-bus";
   ranges = <0x50400000 0x50400000 0x40100>;
   clocks = <&sysclk K210_CLK_APB1>;

   wdt0: watchdog@50400000 {
    compatible = "snps,dw-wdt";
    reg = <0x50400000 0x100>;
    interrupts = <21>;
    clocks = <&sysclk K210_CLK_WDT0>,
      <&sysclk K210_CLK_APB1>;
    clock-names = "tclk", "pclk";
    resets = <&sysrst K210_RST_WDT0>;
   };

   wdt1: watchdog@50410000 {
    compatible = "snps,dw-wdt";
    reg = <0x50410000 0x100>;
    interrupts = <22>;
    clocks = <&sysclk K210_CLK_WDT1>,
      <&sysclk K210_CLK_APB1>;
    clock-names = "tclk", "pclk";
    resets = <&sysrst K210_RST_WDT1>;
   };

   sysctl: syscon@50440000 {
    compatible = "canaan,k210-sysctl",
          "syscon", "simple-mfd";
    reg = <0x50440000 0x100>;
    clocks = <&sysclk K210_CLK_APB1>;
    clock-names = "pclk";

    sysclk: clock-controller {
     #clock-cells = <1>;
     compatible = "canaan,k210-clk";
     clocks = <&in0>;
    };

    sysrst: reset-controller {
     compatible = "canaan,k210-rst";
     #reset-cells = <1>;
    };

    reboot: syscon-reboot {
     compatible = "syscon-reboot";
     regmap = <&sysctl>;
     offset = <48>;
     mask = <1>;
     value = <1>;
    };
   };
  };

  apb2: bus@52000000 {
   #address-cells = <1>;
   #size-cells = <1>;
   compatible = "simple-pm-bus";
   ranges = <0x52000000 0x52000000 0x2000200>;
   clocks = <&sysclk K210_CLK_APB2>;

   spi0: spi@52000000 {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "canaan,k210-spi";
    reg = <0x52000000 0x100>;
    interrupts = <1>;
    clocks = <&sysclk K210_CLK_SPI0>,
      <&sysclk K210_CLK_APB2>;
    clock-names = "ssi_clk", "pclk";
    resets = <&sysrst K210_RST_SPI0>;
    reset-names = "spi";
    num-cs = <4>;
    reg-io-width = <4>;
    status = "disabled";
   };

   spi1: spi@53000000 {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "canaan,k210-spi";
    reg = <0x53000000 0x100>;
    interrupts = <2>;
    clocks = <&sysclk K210_CLK_SPI1>,
      <&sysclk K210_CLK_APB2>;
    clock-names = "ssi_clk", "pclk";
    resets = <&sysrst K210_RST_SPI1>;
    reset-names = "spi";
    num-cs = <4>;
    reg-io-width = <4>;
    status = "disabled";
   };

   spi3: spi@54000000 {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "snps,dwc-ssi-1.01a";
    reg = <0x54000000 0x200>;
    interrupts = <4>;
    clocks = <&sysclk K210_CLK_SPI3>,
      <&sysclk K210_CLK_APB2>;
    clock-names = "ssi_clk", "pclk";
    resets = <&sysrst K210_RST_SPI3>;
    reset-names = "spi";

    num-cs = <4>;
    reg-io-width = <4>;
    status = "disabled";
   };
  };
 };
};

[ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge