blob: 8dfcb1fe7fa375e0dbce0703e073171cbed63fb1 [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/dts-v1/;
/include/ "meson-g12-common.dtsi"
#include <soc/aml-a311d/a311d-gpio.h>
#include <soc/aml-a311d/a311d-hw.h>
#include "sdk/lib/driver/devicetree/visitors/drivers/interrupt-controllers/arm-gicv2/arm-gicv2.h"
/ {
compatible = "amlogic,a311d";
#address-cells = <2>;
#size-cells = <2>;
cpus:cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu-map {
cluster0:cluster0 {
core0 {
cpu = <&CPU0>;
};
core1 {
cpu = <&CPU1>;
};
};
cluster1:cluster1 {
core0 {
cpu = <&CPU2>;
};
core1 {
cpu = <&CPU3>;
};
core2 {
cpu = <&CPU4>;
};
core3 {
cpu = <&CPU5>;
};
};
};
CPU0:cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a53","arm,armv8";
reg = <0x0 0x0>;
enable-method = "psci";
};
CPU1:cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a53","arm,armv8";
reg = <0x0 0x1>;
enable-method = "psci";
};
CPU2:cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a73","arm,armv8";
reg = <0x0 0x100>;
enable-method = "psci";
};
CPU3:cpu@101 {
device_type = "cpu";
compatible = "arm,cortex-a73","arm,armv8";
reg = <0x0 0x101>;
enable-method = "psci";
};
CPU4:cpu@102 {
device_type = "cpu";
compatible = "arm,cortex-a73","arm,armv8";
reg = <0x0 0x102>;
enable-method = "psci";
};
CPU5:cpu@103 {
device_type = "cpu";
compatible = "arm,cortex-a73","arm,armv8";
reg = <0x0 0x103>;
enable-method = "psci";
};
};
pwrc: power-controller {
compatible = "amlogic,power";
#power-domain-cells = <1>;
regulators = <&vddcpu0 &vddcpu1>;
regulator-names = "pwm_vreg_little", "pwm_vreg_big";
};
canvas: canvas@ff638000{
compatible = "amlogic,canvas";
reg = <0x0 0xff638000 0x0 0x2000>;
iommus = <&dummy_iommu 2>;
};
clock: clock-controller@ff63c000 {
compatible = "amlogic,g12b-clk";
reg = <0x00 0xff63c000 0x00 0x2000>, <0x00 0xff620000 0x00 0x10000>, <0x00 0xffd18000 0x00 0x1000>;
#clock-cells = <1>;
};
hdmi-display@ff900000 {
compatible = "amlogic,display";
reg = <0x0 A311D_VPU_BASE 0x0 A311D_VPU_LENGTH>,
<0x0 A311D_TOP_MIPI_DSI_BASE 0x0 A311D_TOP_MIPI_DSI_LENGTH>,
<0x0 A311D_DSI_PHY_BASE 0x0 A311D_DSI_PHY_LENGTH>,
<0x0 A311D_MIPI_DSI_BASE 0x0 A311D_MIPI_DSI_LENGTH>,
<0x0 A311D_HIU_BASE 0x0 A311D_HIU_LENGTH>,
<0x0 A311D_AOBUS_BASE 0x0 A311D_AOBUS_LENGTH>,
<0x0 A311D_RESET_BASE 0x0 A311D_RESET_LENGTH>,
<0x0 A311D_GPIO_BASE 0x0 A311D_GPIO_LENGTH>,
<0x0 A311D_HDMITX_CONTROLLER_IP_BASE 0x0 A311D_HDMITX_CONTROLLER_IP_LENGTH>,
<0x0 A311D_HDMITX_TOP_LEVEL_BASE 0x0 A311D_HDMITX_TOP_LEVEL_LENGTH>;
interrupts = <GIC_SPI 3 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 89 GIC_IRQ_MODE_EDGE_RISING>,
<GIC_SPI 86 GIC_IRQ_MODE_EDGE_RISING>;
iommus = <&dummy_iommu 9>;
smcs = <2 1 0>;
gpios = <&gpio_expander 0 0>,
<&gpio A311D_GPIOH(2) 0>;
gpio-names = "LCD_RESET", "HDMI_HOTPLUG_DETECT";
fuchsia,sysmem = <&sysmem>;
amlogic,canvas = <&canvas>;
display-detect = <&display_detect>;
display-detect-names = "HDMI";
};
vddcpu0: pwm_a0_d-regulator {
compatible = "amlogic,pwm-regulator";
regulator-name = "pwm_vreg_little";
pwms = <&pwm 9 1250 0>; // A311D_PWM_A0_D
pinctrl-0 = <&pwm_a0_d_regulator_pins>;
regulator-min-microvolt = <690000>;
regulator-max-microvolt = <1050000>;
regulator-step-microvolt = <1000>;
#regulator-cells = <0>;
};
vddcpu1: pwm_a-regulator {
compatible = "amlogic,pwm-regulator";
regulator-name = "pwm_vreg_big";
pwms = <&pwm 0 1250 0>; // A311D_PWM_A
pinctrl-0 = <&pwm_a_regulator_pins>;
regulator-min-microvolt = <690000>;
regulator-max-microvolt = <1050000>;
regulator-step-microvolt = <1000>;
#regulator-cells = <0>;
};
};
&gpio {
pwm_a0_d_regulator_pins: pwm-a0-d-regulator-pins {
pins = <A311D_GPIOE(1)>;
function = <0 A311D_GPIOE_1_PWM_D_FN>;
output-low;
};
pwm_a_regulator_pins: pwm-a-regulator-pins {
pins = <A311D_GPIOE(2)>;
function = <0 A311D_GPIOE_2_PWM_D_FN>;
output-low;
};
};
&aobus {
cpu-controller@0 {
compatible = "amlogic,cpu";
reg = <0x0 0x0 0x0 A311D_AOBUS_LENGTH>;
clocks = <&clock 0x10000 &clock 0x10001 &clock 0x100000>,
<&clock 0x10003 &clock 0x10004 &clock 0x100001>;
clock-names = "SYS_PLL_DIV16", "SYS_CPU_DIV16", "SYS_CPU_BIG_CLK",
"SYS_PLLB_DIV16", "SYS_CPUB_DIV16", "SYS_CPU_LITTLE_CLK";
power-domains = <&pwrc 0 &pwrc 1>;
performance-domains {
a311d-arm-a73-domain {
domain-id = <1>;
relative-performance = <255>;
cpus = <&CPU2 &CPU3 &CPU4 &CPU5>;
operating-points = <&cpu_opp_table1>;
};
a311d-arm-a53-domain {
domain-id = <2>;
relative-performance = <112>;
cpus = <&CPU0 &CPU1>;
operating-points = <&cpu_opp_table0>;
};
};
};
};