Update the Icicle Kit device tree
This series updates the Microchip Icicle Kit device tree by adding a host of peripherals, and some updates to the memory map. In addition, the device tree has been split into a third part, which contains "soft" peripherals that are in the fpga fabric. Several of the entries are for peripherals that have not get had their drivers upstreamed, so in those cases the dt bindings are included where appropriate in order to avoid the many "DT compatible string <x> appears un-documented" errors. * palmer/riscv-microchip: MAINTAINERS: update riscv/microchip entry riscv: dts: microchip: add new peripherals to icicle kit device tree riscv: dts: microchip: update peripherals in icicle kit device tree riscv: dts: microchip: refactor icicle kit device tree riscv: dts: microchip: add fpga fabric section to icicle kit riscv: dts: microchip: use clk defines for icicle kit dt-bindings: pwm: add microchip corepwm binding dt-bindings: gpio: add bindings for microchip mpfs gpio dt-bindings: rtc: add bindings for microchip mpfs rtc dt-bindings: soc/microchip: add info about services to mpfs sysctrl dt-bindings: soc/microchip: update syscontroller compatibles dt-bindings: clk: microchip: Add Microchip PolarFire host binding
This commit is contained in:
commit
feeb386855
|
@ -0,0 +1,58 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/clock/microchip,mpfs.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip PolarFire Clock Control Module Binding
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Microchip PolarFire clock control (CLKCFG) is an integrated clock controller,
|
||||||
|
which gates and enables all peripheral clocks.
|
||||||
|
|
||||||
|
This device tree binding describes 33 gate clocks. Clocks are referenced by
|
||||||
|
user nodes by the CLKCFG node phandle and the clock index in the group, from
|
||||||
|
0 to 32.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: microchip,mpfs-clkcfg
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
'#clock-cells':
|
||||||
|
const: 1
|
||||||
|
description: |
|
||||||
|
The clock consumer should specify the desired clock by having the clock
|
||||||
|
ID in its "clocks" phandle cell. See include/dt-bindings/clock/microchip,mpfs-clock.h
|
||||||
|
for the full list of PolarFire clock IDs.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- '#clock-cells'
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
# Clock Config node:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/microchip,mpfs-clock.h>
|
||||||
|
soc {
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
clkcfg: clock-controller@20002000 {
|
||||||
|
compatible = "microchip,mpfs-clkcfg";
|
||||||
|
reg = <0x0 0x20002000 0x0 0x1000>;
|
||||||
|
clocks = <&ref>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,79 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/gpio/microchip,mpfs-gpio.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip MPFS GPIO Controller Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Conor Dooley <conor.dooley@microchip.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- microchip,mpfs-gpio
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
description:
|
||||||
|
Interrupt mapping, one per GPIO. Maximum 32 GPIOs.
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 32
|
||||||
|
|
||||||
|
interrupt-controller: true
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#gpio-cells":
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
"#interrupt-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
ngpios:
|
||||||
|
description:
|
||||||
|
The number of GPIOs available.
|
||||||
|
minimum: 1
|
||||||
|
maximum: 32
|
||||||
|
default: 32
|
||||||
|
|
||||||
|
gpio-controller: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- "#interrupt-cells"
|
||||||
|
- interrupt-controller
|
||||||
|
- "#gpio-cells"
|
||||||
|
- gpio-controller
|
||||||
|
- clocks
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
gpio@20122000 {
|
||||||
|
compatible = "microchip,mpfs-gpio";
|
||||||
|
reg = <0x20122000 0x1000>;
|
||||||
|
clocks = <&clkcfg 25>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupts = <53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>;
|
||||||
|
};
|
||||||
|
...
|
|
@ -1,7 +1,7 @@
|
||||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
%YAML 1.2
|
%YAML 1.2
|
||||||
---
|
---
|
||||||
$id: "http://devicetree.org/schemas/mailbox/microchip,polarfire-soc-mailbox.yaml#"
|
$id: "http://devicetree.org/schemas/mailbox/microchip,mpfs-mailbox.yaml#"
|
||||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
title: Microchip PolarFire SoC (MPFS) MSS (microprocessor subsystem) mailbox controller
|
title: Microchip PolarFire SoC (MPFS) MSS (microprocessor subsystem) mailbox controller
|
||||||
|
@ -11,7 +11,7 @@ maintainers:
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
const: microchip,polarfire-soc-mailbox
|
const: microchip,mpfs-mailbox
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
items:
|
items:
|
||||||
|
@ -38,7 +38,7 @@ examples:
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
mbox: mailbox@37020000 {
|
mbox: mailbox@37020000 {
|
||||||
compatible = "microchip,polarfire-soc-mailbox";
|
compatible = "microchip,mpfs-mailbox";
|
||||||
reg = <0x0 0x37020000 0x0 0x1000>, <0x0 0x2000318c 0x0 0x40>;
|
reg = <0x0 0x37020000 0x0 0x1000>, <0x0 0x2000318c 0x0 0x40>;
|
||||||
interrupt-parent = <&L1>;
|
interrupt-parent = <&L1>;
|
||||||
interrupts = <96>;
|
interrupts = <96>;
|
|
@ -0,0 +1,81 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/pwm/microchip,corepwm.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip IP corePWM controller bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Conor Dooley <conor.dooley@microchip.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
corePWM is an 16 channel pulse width modulator FPGA IP
|
||||||
|
|
||||||
|
https://www.microsemi.com/existing-parts/parts/152118
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: pwm.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- const: microchip,corepwm-rtl-v4
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#pwm-cells":
|
||||||
|
const: 2
|
||||||
|
|
||||||
|
microchip,sync-update-mask:
|
||||||
|
description: |
|
||||||
|
Depending on how the IP is instantiated, there are two modes of operation.
|
||||||
|
In synchronous mode, all channels are updated at the beginning of the PWM period,
|
||||||
|
and in asynchronous mode updates happen as the control registers are written.
|
||||||
|
A 16 bit wide "SHADOW_REG_EN" parameter of the IP core controls whether synchronous
|
||||||
|
mode is possible for each channel, and is set by the bitstream programmed to the
|
||||||
|
FPGA. If the IP core is instantiated with SHADOW_REG_ENx=1, both registers that
|
||||||
|
control the duty cycle for channel x have a second "shadow"/buffer reg synthesised.
|
||||||
|
At runtime a bit wide register exposed to APB can be used to toggle on/off
|
||||||
|
synchronised mode for all channels it has been synthesised for.
|
||||||
|
Each bit of "microchip,sync-update-mask" corresponds to a PWM channel & represents
|
||||||
|
whether synchronous mode is possible for the PWM channel.
|
||||||
|
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
microchip,dac-mode-mask:
|
||||||
|
description: |
|
||||||
|
Optional, per-channel Low Ripple DAC mode is possible on this IP core. It creates
|
||||||
|
a minimum period pulse train whose High/Low average is that of the chosen duty
|
||||||
|
cycle. This "DAC" will have far better bandwidth and ripple performance than the
|
||||||
|
standard PWM algorithm can achieve. A 16 bit DAC_MODE module parameter of the IP
|
||||||
|
core, set at instantiation and by the bitstream programmed to the FPGA, determines
|
||||||
|
whether a given channel operates in regular PWM or DAC mode.
|
||||||
|
Each bit corresponds to a PWM channel & represents whether DAC mode is enabled
|
||||||
|
for that channel.
|
||||||
|
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
pwm@41000000 {
|
||||||
|
compatible = "microchip,corepwm-rtl-v4";
|
||||||
|
microchip,sync-update-mask = /bits/ 32 <0>;
|
||||||
|
clocks = <&clkcfg 30>;
|
||||||
|
reg = <0x41000000 0xF0>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
|
@ -0,0 +1,58 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/rtc/microchip,mfps-rtc.yaml#
|
||||||
|
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip PolarFire Soc (MPFS) RTC Device Tree Bindings
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: rtc.yaml#
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
|
- Lewis Hanly <lewis.hanly@microchip.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- microchip,mpfs-rtc
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: |
|
||||||
|
RTC_WAKEUP interrupt
|
||||||
|
- description: |
|
||||||
|
RTC_MATCH, asserted when the content of the Alarm register is equal
|
||||||
|
to that of the RTC's count register.
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: rtc
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
rtc@20124000 {
|
||||||
|
compatible = "microchip,mpfs-rtc";
|
||||||
|
reg = <0x20124000 0x1000>;
|
||||||
|
clocks = <&clkcfg 21>;
|
||||||
|
clock-names = "rtc";
|
||||||
|
interrupts = <80>, <81>;
|
||||||
|
};
|
||||||
|
...
|
|
@ -0,0 +1,40 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: "http://devicetree.org/schemas/soc/microchip/microchip,mpfs-sys-controller.yaml#"
|
||||||
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
|
title: Microchip PolarFire SoC (MPFS) MSS (microprocessor subsystem) system controller
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Conor Dooley <conor.dooley@microchip.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
PolarFire SoC devices include a microcontroller acting as the system controller,
|
||||||
|
which provides "services" to the main processor and to the FPGA fabric. These
|
||||||
|
services include hardware rng, reprogramming of the FPGA and verfification of the
|
||||||
|
eNVM contents etc. More information on these services can be found online, at
|
||||||
|
https://onlinedocs.microchip.com/pr/GUID-1409CF11-8EF9-4C24-A94E-70979A688632-en-US-1/index.html
|
||||||
|
|
||||||
|
Communication with the system controller is done via a mailbox, of which the client
|
||||||
|
portion is documented here.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
mboxes:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
compatible:
|
||||||
|
const: microchip,mpfs-sys-controller
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- mboxes
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
syscontroller {
|
||||||
|
compatible = "microchip,mpfs-sys-controller";
|
||||||
|
mboxes = <&mbox 0>;
|
||||||
|
};
|
|
@ -1,35 +0,0 @@
|
||||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
||||||
%YAML 1.2
|
|
||||||
---
|
|
||||||
$id: "http://devicetree.org/schemas/soc/microchip/microchip,polarfire-soc-sys-controller.yaml#"
|
|
||||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|
||||||
|
|
||||||
title: Microchip PolarFire SoC (MPFS) MSS (microprocessor subsystem) system controller
|
|
||||||
|
|
||||||
maintainers:
|
|
||||||
- Conor Dooley <conor.dooley@microchip.com>
|
|
||||||
|
|
||||||
description: |
|
|
||||||
The PolarFire SoC system controller is communicated with via a mailbox.
|
|
||||||
This document describes the bindings for the client portion of that mailbox.
|
|
||||||
|
|
||||||
|
|
||||||
properties:
|
|
||||||
mboxes:
|
|
||||||
maxItems: 1
|
|
||||||
|
|
||||||
compatible:
|
|
||||||
const: microchip,polarfire-soc-sys-controller
|
|
||||||
|
|
||||||
required:
|
|
||||||
- compatible
|
|
||||||
- mboxes
|
|
||||||
|
|
||||||
additionalProperties: false
|
|
||||||
|
|
||||||
examples:
|
|
||||||
- |
|
|
||||||
syscontroller: syscontroller {
|
|
||||||
compatible = "microchip,polarfire-soc-sys-controller";
|
|
||||||
mboxes = <&mbox 0>;
|
|
||||||
};
|
|
|
@ -16575,8 +16575,10 @@ K: riscv
|
||||||
|
|
||||||
RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
|
RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
|
||||||
M: Lewis Hanly <lewis.hanly@microchip.com>
|
M: Lewis Hanly <lewis.hanly@microchip.com>
|
||||||
|
M: Conor Dooley <conor.dooley@microchip.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
F: arch/riscv/boot/dts/microchip/
|
||||||
F: drivers/mailbox/mailbox-mpfs.c
|
F: drivers/mailbox/mailbox-mpfs.c
|
||||||
F: drivers/soc/microchip/
|
F: drivers/soc/microchip/
|
||||||
F: include/soc/microchip/mpfs.h
|
F: include/soc/microchip/mpfs.h
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||||
|
/* Copyright (c) 2020-2021 Microchip Technology Inc */
|
||||||
|
|
||||||
|
/ {
|
||||||
|
core_pwm0: pwm@41000000 {
|
||||||
|
compatible = "microchip,corepwm-rtl-v4";
|
||||||
|
reg = <0x0 0x41000000 0x0 0xF0>;
|
||||||
|
microchip,sync-update-mask = /bits/ 32 <0>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
clocks = <&clkcfg CLK_FIC3>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c2: i2c@44000000 {
|
||||||
|
compatible = "microchip,corei2c-rtl-v7";
|
||||||
|
reg = <0x0 0x44000000 0x0 0x1000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
clocks = <&clkcfg CLK_FIC3>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <122>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,5 +1,5 @@
|
||||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||||
/* Copyright (c) 2020 Microchip Technology Inc */
|
/* Copyright (c) 2020-2021 Microchip Technology Inc */
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
|
@ -13,25 +13,34 @@
|
||||||
compatible = "microchip,mpfs-icicle-kit", "microchip,mpfs";
|
compatible = "microchip,mpfs-icicle-kit", "microchip,mpfs";
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
ethernet0 = &emac1;
|
ethernet0 = &mac1;
|
||||||
serial0 = &serial0;
|
serial0 = &mmuart0;
|
||||||
serial1 = &serial1;
|
serial1 = &mmuart1;
|
||||||
serial2 = &serial2;
|
serial2 = &mmuart2;
|
||||||
serial3 = &serial3;
|
serial3 = &mmuart3;
|
||||||
|
serial4 = &mmuart4;
|
||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial1:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus {
|
cpus {
|
||||||
timebase-frequency = <RTCCLK_FREQ>;
|
timebase-frequency = <RTCCLK_FREQ>;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@80000000 {
|
ddrc_cache_lo: memory@80000000 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x0 0x80000000 0x0 0x40000000>;
|
reg = <0x0 0x80000000 0x0 0x2e000000>;
|
||||||
clocks = <&clkcfg 26>;
|
clocks = <&clkcfg CLK_DDRC>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
ddrc_cache_hi: memory@1000000000 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x10 0x0 0x0 0x40000000>;
|
||||||
|
clocks = <&clkcfg CLK_DDRC>;
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -39,19 +48,19 @@
|
||||||
clock-frequency = <600000000>;
|
clock-frequency = <600000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&serial0 {
|
&mmuart1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&serial1 {
|
&mmuart2 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&serial2 {
|
&mmuart3 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&serial3 {
|
&mmuart4 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -61,28 +70,92 @@
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
cap-mmc-highspeed;
|
||||||
card-detect-delay = <200>;
|
card-detect-delay = <200>;
|
||||||
|
mmc-ddr-1_8v;
|
||||||
|
mmc-hs200-1_8v;
|
||||||
sd-uhs-sdr12;
|
sd-uhs-sdr12;
|
||||||
sd-uhs-sdr25;
|
sd-uhs-sdr25;
|
||||||
sd-uhs-sdr50;
|
sd-uhs-sdr50;
|
||||||
sd-uhs-sdr104;
|
sd-uhs-sdr104;
|
||||||
};
|
};
|
||||||
|
|
||||||
&emac0 {
|
&spi0 {
|
||||||
phy-mode = "sgmii";
|
status = "okay";
|
||||||
phy-handle = <&phy0>;
|
|
||||||
phy0: ethernet-phy@8 {
|
|
||||||
reg = <8>;
|
|
||||||
ti,fifo-depth = <0x01>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&emac1 {
|
&spi1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&qspi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mac0 {
|
||||||
|
phy-mode = "sgmii";
|
||||||
|
phy-handle = <&phy0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&mac1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
phy-mode = "sgmii";
|
phy-mode = "sgmii";
|
||||||
phy-handle = <&phy1>;
|
phy-handle = <&phy1>;
|
||||||
phy1: ethernet-phy@9 {
|
phy1: ethernet-phy@9 {
|
||||||
reg = <9>;
|
reg = <9>;
|
||||||
ti,fifo-depth = <0x01>;
|
ti,fifo-depth = <0x1>;
|
||||||
|
};
|
||||||
|
phy0: ethernet-phy@8 {
|
||||||
|
reg = <8>;
|
||||||
|
ti,fifo-depth = <0x1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&gpio2 {
|
||||||
|
interrupts = <53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>,
|
||||||
|
<53>, <53>, <53>, <53>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&rtc {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb {
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "host";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mbox {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&syscontroller {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pcie {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&core_pwm0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||||
/* Copyright (c) 2020 Microchip Technology Inc */
|
/* Copyright (c) 2020-2021 Microchip Technology Inc */
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include "dt-bindings/clock/microchip,mpfs-clock.h"
|
||||||
|
#include "microchip-mpfs-fabric.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
|
@ -13,8 +15,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
cpu@0 {
|
cpu0: cpu@0 {
|
||||||
clock-frequency = <0>;
|
|
||||||
compatible = "sifive,e51", "sifive,rocket0", "riscv";
|
compatible = "sifive,e51", "sifive,rocket0", "riscv";
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
i-cache-block-size = <64>;
|
i-cache-block-size = <64>;
|
||||||
|
@ -22,6 +23,7 @@
|
||||||
i-cache-size = <16384>;
|
i-cache-size = <16384>;
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
riscv,isa = "rv64imac";
|
riscv,isa = "rv64imac";
|
||||||
|
clocks = <&clkcfg CLK_CPU>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
cpu0_intc: interrupt-controller {
|
cpu0_intc: interrupt-controller {
|
||||||
|
@ -31,8 +33,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@1 {
|
cpu1: cpu@1 {
|
||||||
clock-frequency = <0>;
|
|
||||||
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
||||||
d-cache-block-size = <64>;
|
d-cache-block-size = <64>;
|
||||||
d-cache-sets = <64>;
|
d-cache-sets = <64>;
|
||||||
|
@ -48,6 +49,7 @@
|
||||||
mmu-type = "riscv,sv39";
|
mmu-type = "riscv,sv39";
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
riscv,isa = "rv64imafdc";
|
riscv,isa = "rv64imafdc";
|
||||||
|
clocks = <&clkcfg CLK_CPU>;
|
||||||
tlb-split;
|
tlb-split;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -58,8 +60,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@2 {
|
cpu2: cpu@2 {
|
||||||
clock-frequency = <0>;
|
|
||||||
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
||||||
d-cache-block-size = <64>;
|
d-cache-block-size = <64>;
|
||||||
d-cache-sets = <64>;
|
d-cache-sets = <64>;
|
||||||
|
@ -75,6 +76,7 @@
|
||||||
mmu-type = "riscv,sv39";
|
mmu-type = "riscv,sv39";
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
riscv,isa = "rv64imafdc";
|
riscv,isa = "rv64imafdc";
|
||||||
|
clocks = <&clkcfg CLK_CPU>;
|
||||||
tlb-split;
|
tlb-split;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -85,8 +87,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@3 {
|
cpu3: cpu@3 {
|
||||||
clock-frequency = <0>;
|
|
||||||
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
||||||
d-cache-block-size = <64>;
|
d-cache-block-size = <64>;
|
||||||
d-cache-sets = <64>;
|
d-cache-sets = <64>;
|
||||||
|
@ -102,6 +103,7 @@
|
||||||
mmu-type = "riscv,sv39";
|
mmu-type = "riscv,sv39";
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
riscv,isa = "rv64imafdc";
|
riscv,isa = "rv64imafdc";
|
||||||
|
clocks = <&clkcfg CLK_CPU>;
|
||||||
tlb-split;
|
tlb-split;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -112,8 +114,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@4 {
|
cpu4: cpu@4 {
|
||||||
clock-frequency = <0>;
|
|
||||||
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
compatible = "sifive,u54-mc", "sifive,rocket0", "riscv";
|
||||||
d-cache-block-size = <64>;
|
d-cache-block-size = <64>;
|
||||||
d-cache-sets = <64>;
|
d-cache-sets = <64>;
|
||||||
|
@ -129,6 +130,7 @@
|
||||||
mmu-type = "riscv,sv39";
|
mmu-type = "riscv,sv39";
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
riscv,isa = "rv64imafdc";
|
riscv,isa = "rv64imafdc";
|
||||||
|
clocks = <&clkcfg CLK_CPU>;
|
||||||
tlb-split;
|
tlb-split;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
cpu4_intc: interrupt-controller {
|
cpu4_intc: interrupt-controller {
|
||||||
|
@ -150,8 +152,9 @@
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
cache-controller@2010000 {
|
cctrllr: cache-controller@2010000 {
|
||||||
compatible = "sifive,fu540-c000-ccache", "cache";
|
compatible = "sifive,fu540-c000-ccache", "cache";
|
||||||
|
reg = <0x0 0x2010000 0x0 0x1000>;
|
||||||
cache-block-size = <64>;
|
cache-block-size = <64>;
|
||||||
cache-level = <2>;
|
cache-level = <2>;
|
||||||
cache-sets = <1024>;
|
cache-sets = <1024>;
|
||||||
|
@ -159,10 +162,9 @@
|
||||||
cache-unified;
|
cache-unified;
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <1>, <2>, <3>;
|
interrupts = <1>, <2>, <3>;
|
||||||
reg = <0x0 0x2010000 0x0 0x1000>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
clint@2000000 {
|
clint: clint@2000000 {
|
||||||
compatible = "sifive,fu540-c000-clint", "sifive,clint0";
|
compatible = "sifive,fu540-c000-clint", "sifive,clint0";
|
||||||
reg = <0x0 0x2000000 0x0 0xC000>;
|
reg = <0x0 0x2000000 0x0 0xC000>;
|
||||||
interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
|
interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
|
||||||
|
@ -186,15 +188,6 @@
|
||||||
riscv,ndev = <186>;
|
riscv,ndev = <186>;
|
||||||
};
|
};
|
||||||
|
|
||||||
dma@3000000 {
|
|
||||||
compatible = "sifive,fu540-c000-pdma";
|
|
||||||
reg = <0x0 0x3000000 0x0 0x8000>;
|
|
||||||
interrupt-parent = <&plic>;
|
|
||||||
interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>,
|
|
||||||
<30>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
clkcfg: clkcfg@20002000 {
|
clkcfg: clkcfg@20002000 {
|
||||||
compatible = "microchip,mpfs-clkcfg";
|
compatible = "microchip,mpfs-clkcfg";
|
||||||
reg = <0x0 0x20002000 0x0 0x1000>;
|
reg = <0x0 0x20002000 0x0 0x1000>;
|
||||||
|
@ -202,7 +195,7 @@
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
serial0: serial@20000000 {
|
mmuart0: serial@20000000 {
|
||||||
compatible = "ns16550a";
|
compatible = "ns16550a";
|
||||||
reg = <0x0 0x20000000 0x0 0x400>;
|
reg = <0x0 0x20000000 0x0 0x400>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
@ -210,11 +203,11 @@
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <90>;
|
interrupts = <90>;
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
clocks = <&clkcfg 8>;
|
clocks = <&clkcfg CLK_MMUART0>;
|
||||||
status = "disabled";
|
status = "disabled"; /* Reserved for the HSS */
|
||||||
};
|
};
|
||||||
|
|
||||||
serial1: serial@20100000 {
|
mmuart1: serial@20100000 {
|
||||||
compatible = "ns16550a";
|
compatible = "ns16550a";
|
||||||
reg = <0x0 0x20100000 0x0 0x400>;
|
reg = <0x0 0x20100000 0x0 0x400>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
@ -222,11 +215,11 @@
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <91>;
|
interrupts = <91>;
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
clocks = <&clkcfg 9>;
|
clocks = <&clkcfg CLK_MMUART1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial2: serial@20102000 {
|
mmuart2: serial@20102000 {
|
||||||
compatible = "ns16550a";
|
compatible = "ns16550a";
|
||||||
reg = <0x0 0x20102000 0x0 0x400>;
|
reg = <0x0 0x20102000 0x0 0x400>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
@ -234,11 +227,11 @@
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <92>;
|
interrupts = <92>;
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
clocks = <&clkcfg 10>;
|
clocks = <&clkcfg CLK_MMUART2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial3: serial@20104000 {
|
mmuart3: serial@20104000 {
|
||||||
compatible = "ns16550a";
|
compatible = "ns16550a";
|
||||||
reg = <0x0 0x20104000 0x0 0x400>;
|
reg = <0x0 0x20104000 0x0 0x400>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
@ -246,7 +239,19 @@
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <93>;
|
interrupts = <93>;
|
||||||
current-speed = <115200>;
|
current-speed = <115200>;
|
||||||
clocks = <&clkcfg 11>;
|
clocks = <&clkcfg CLK_MMUART3>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
mmuart4: serial@20106000 {
|
||||||
|
compatible = "ns16550a";
|
||||||
|
reg = <0x0 0x20106000 0x0 0x400>;
|
||||||
|
reg-io-width = <4>;
|
||||||
|
reg-shift = <2>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <94>;
|
||||||
|
clocks = <&clkcfg CLK_MMUART4>;
|
||||||
|
current-speed = <115200>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -255,37 +260,196 @@
|
||||||
compatible = "microchip,mpfs-sd4hc", "cdns,sd4hc";
|
compatible = "microchip,mpfs-sd4hc", "cdns,sd4hc";
|
||||||
reg = <0x0 0x20008000 0x0 0x1000>;
|
reg = <0x0 0x20008000 0x0 0x1000>;
|
||||||
interrupt-parent = <&plic>;
|
interrupt-parent = <&plic>;
|
||||||
interrupts = <88>, <89>;
|
interrupts = <88>;
|
||||||
clocks = <&clkcfg 6>;
|
clocks = <&clkcfg CLK_MMC>;
|
||||||
max-frequency = <200000000>;
|
max-frequency = <200000000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
emac0: ethernet@20110000 {
|
spi0: spi@20108000 {
|
||||||
|
compatible = "microchip,mpfs-spi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0x0 0x20108000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <54>;
|
||||||
|
clocks = <&clkcfg CLK_SPI0>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
spi1: spi@20109000 {
|
||||||
|
compatible = "microchip,mpfs-spi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0x0 0x20109000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <55>;
|
||||||
|
clocks = <&clkcfg CLK_SPI1>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
qspi: spi@21000000 {
|
||||||
|
compatible = "microchip,mpfs-qspi";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0x0 0x21000000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <85>;
|
||||||
|
clocks = <&clkcfg CLK_QSPI>;
|
||||||
|
spi-max-frequency = <25000000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c0: i2c@2010a000 {
|
||||||
|
compatible = "microchip,mpfs-i2c", "microchip,corei2c-rtl-v7";
|
||||||
|
reg = <0x0 0x2010a000 0x0 0x1000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <58>;
|
||||||
|
clocks = <&clkcfg CLK_I2C0>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c1: i2c@2010b000 {
|
||||||
|
compatible = "microchip,mpfs-i2c", "microchip,corei2c-rtl-v7";
|
||||||
|
reg = <0x0 0x2010b000 0x0 0x1000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <61>;
|
||||||
|
clocks = <&clkcfg CLK_I2C1>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
mac0: ethernet@20110000 {
|
||||||
compatible = "cdns,macb";
|
compatible = "cdns,macb";
|
||||||
reg = <0x0 0x20110000 0x0 0x2000>;
|
reg = <0x0 0x20110000 0x0 0x2000>;
|
||||||
interrupt-parent = <&plic>;
|
|
||||||
interrupts = <64>, <65>, <66>, <67>;
|
|
||||||
local-mac-address = [00 00 00 00 00 00];
|
|
||||||
clocks = <&clkcfg 4>, <&clkcfg 2>;
|
|
||||||
clock-names = "pclk", "hclk";
|
|
||||||
status = "disabled";
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <64>, <65>, <66>, <67>, <68>, <69>;
|
||||||
|
local-mac-address = [00 00 00 00 00 00];
|
||||||
|
clocks = <&clkcfg CLK_MAC0>, <&clkcfg CLK_AHB>;
|
||||||
|
clock-names = "pclk", "hclk";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
emac1: ethernet@20112000 {
|
mac1: ethernet@20112000 {
|
||||||
compatible = "cdns,macb";
|
compatible = "cdns,macb";
|
||||||
reg = <0x0 0x20112000 0x0 0x2000>;
|
reg = <0x0 0x20112000 0x0 0x2000>;
|
||||||
interrupt-parent = <&plic>;
|
|
||||||
interrupts = <70>, <71>, <72>, <73>;
|
|
||||||
local-mac-address = [00 00 00 00 00 00];
|
|
||||||
clocks = <&clkcfg 5>, <&clkcfg 2>;
|
|
||||||
status = "disabled";
|
|
||||||
clock-names = "pclk", "hclk";
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <70>, <71>, <72>, <73>, <74>, <75>;
|
||||||
|
local-mac-address = [00 00 00 00 00 00];
|
||||||
|
clocks = <&clkcfg CLK_MAC1>, <&clkcfg CLK_AHB>;
|
||||||
|
clock-names = "pclk", "hclk";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gpio0: gpio@20120000 {
|
||||||
|
compatible = "microchip,mpfs-gpio";
|
||||||
|
reg = <0x0 0x20120000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
clocks = <&clkcfg CLK_GPIO0>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio1: gpio@20121000 {
|
||||||
|
compatible = "microchip,mpfs-gpio";
|
||||||
|
reg = <000 0x20121000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
clocks = <&clkcfg CLK_GPIO1>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio2: gpio@20122000 {
|
||||||
|
compatible = "microchip,mpfs-gpio";
|
||||||
|
reg = <0x0 0x20122000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
clocks = <&clkcfg CLK_GPIO2>;
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
rtc: rtc@20124000 {
|
||||||
|
compatible = "microchip,mpfs-rtc";
|
||||||
|
reg = <0x0 0x20124000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <80>, <81>;
|
||||||
|
clocks = <&clkcfg CLK_RTC>;
|
||||||
|
clock-names = "rtc";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
usb: usb@20201000 {
|
||||||
|
compatible = "microchip,mpfs-musb";
|
||||||
|
reg = <0x0 0x20201000 0x0 0x1000>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <86>, <87>;
|
||||||
|
clocks = <&clkcfg CLK_USB>;
|
||||||
|
interrupt-names = "dma","mc";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
pcie: pcie@2000000000 {
|
||||||
|
compatible = "microchip,pcie-host-1.0";
|
||||||
|
#address-cells = <0x3>;
|
||||||
|
#interrupt-cells = <0x1>;
|
||||||
|
#size-cells = <0x2>;
|
||||||
|
device_type = "pci";
|
||||||
|
reg = <0x20 0x0 0x0 0x8000000>, <0x0 0x43000000 0x0 0x10000>;
|
||||||
|
reg-names = "cfg", "apb";
|
||||||
|
bus-range = <0x0 0x7f>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <119>;
|
||||||
|
interrupt-map = <0 0 0 1 &pcie_intc 0>,
|
||||||
|
<0 0 0 2 &pcie_intc 1>,
|
||||||
|
<0 0 0 3 &pcie_intc 2>,
|
||||||
|
<0 0 0 4 &pcie_intc 3>;
|
||||||
|
interrupt-map-mask = <0 0 0 7>;
|
||||||
|
clocks = <&clkcfg CLK_FIC0>, <&clkcfg CLK_FIC1>, <&clkcfg CLK_FIC3>;
|
||||||
|
clock-names = "fic0", "fic1", "fic3";
|
||||||
|
ranges = <0x3000000 0x0 0x8000000 0x20 0x8000000 0x0 0x80000000>;
|
||||||
|
msi-parent = <&pcie>;
|
||||||
|
msi-controller;
|
||||||
|
microchip,axi-m-atr0 = <0x10 0x0>;
|
||||||
|
status = "disabled";
|
||||||
|
pcie_intc: legacy-interrupt-controller {
|
||||||
|
#address-cells = <0>;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupt-controller;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mbox: mailbox@37020000 {
|
||||||
|
compatible = "microchip,mpfs-mailbox";
|
||||||
|
reg = <0x0 0x37020000 0x0 0x1000>, <0x0 0x2000318C 0x0 0x40>;
|
||||||
|
interrupt-parent = <&plic>;
|
||||||
|
interrupts = <96>;
|
||||||
|
#mbox-cells = <1>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
syscontroller: syscontroller {
|
||||||
|
compatible = "microchip,mpfs-sys-controller";
|
||||||
|
mboxes = <&mbox 0>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
|
||||||
|
/*
|
||||||
|
* Daire McNamara,<daire.mcnamara@microchip.com>
|
||||||
|
* Copyright (C) 2020 Microchip Technology Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _DT_BINDINGS_CLK_MICROCHIP_MPFS_H_
|
||||||
|
#define _DT_BINDINGS_CLK_MICROCHIP_MPFS_H_
|
||||||
|
|
||||||
|
#define CLK_CPU 0
|
||||||
|
#define CLK_AXI 1
|
||||||
|
#define CLK_AHB 2
|
||||||
|
|
||||||
|
#define CLK_ENVM 3
|
||||||
|
#define CLK_MAC0 4
|
||||||
|
#define CLK_MAC1 5
|
||||||
|
#define CLK_MMC 6
|
||||||
|
#define CLK_TIMER 7
|
||||||
|
#define CLK_MMUART0 8
|
||||||
|
#define CLK_MMUART1 9
|
||||||
|
#define CLK_MMUART2 10
|
||||||
|
#define CLK_MMUART3 11
|
||||||
|
#define CLK_MMUART4 12
|
||||||
|
#define CLK_SPI0 13
|
||||||
|
#define CLK_SPI1 14
|
||||||
|
#define CLK_I2C0 15
|
||||||
|
#define CLK_I2C1 16
|
||||||
|
#define CLK_CAN0 17
|
||||||
|
#define CLK_CAN1 18
|
||||||
|
#define CLK_USB 19
|
||||||
|
#define CLK_RESERVED 20
|
||||||
|
#define CLK_RTC 21
|
||||||
|
#define CLK_QSPI 22
|
||||||
|
#define CLK_GPIO0 23
|
||||||
|
#define CLK_GPIO1 24
|
||||||
|
#define CLK_GPIO2 25
|
||||||
|
#define CLK_DDRC 26
|
||||||
|
#define CLK_FIC0 27
|
||||||
|
#define CLK_FIC1 28
|
||||||
|
#define CLK_FIC2 29
|
||||||
|
#define CLK_FIC3 30
|
||||||
|
#define CLK_ATHENA 31
|
||||||
|
#define CLK_CFM 32
|
||||||
|
|
||||||
|
#endif /* _DT_BINDINGS_CLK_MICROCHIP_MPFS_H_ */
|
Loading…
Reference in New Issue