Commit 24ae5d24 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'amlogic-arm64-dt-for-v6.10' of...

Merge tag 'amlogic-arm64-dt-for-v6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt-late

Amlogic ARM64 DT changes for v6.10:
- New Boards:
  - MNT Reform 2 CM4 adapter with a BPI-CM4 Module
  - AV400 (Amlogic A5)
  - BA400 (Amlogic A4)
- Initial Amlogic A4 & A5 support
- MIPI DSI support for G12A, G12B & SM1 SoCs
- Overlay for Khadas TS050 panel for the Khadas VIM3/VIM3L
- Amlogic T7 reset controller

* tag 'amlogic-arm64-dt-for-v6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux:
  arm64: dts: amlogic: Add Amlogic T7 reset controller
  arm64: dts: add support for A5 based Amlogic AV400
  arm64: dts: add support for A4 based Amlogic BA400
  dt-bindings: serial: amlogic,meson-uart: Add compatible string for A4
  dt-bindings: arm: amlogic: add A5 support
  dt-bindings: arm: amlogic: add A4 support
  arm64: dts: meson: fix S4 power-controller node
  arm64: dts: amlogic: meson-g12b-bananapi-cm4: add support for MNT Reform2 with CM4 adaper
  arm64: meson: khadas-vim3l: add TS050 DSI panel overlay
  arm64: meson: g12-common: add the MIPI DSI nodes
  dt-bindings: arm: amlogic: Document the MNT Reform 2 CM4 adapter with a BPI-CM4 Module

Link: https://lore.kernel.org/r/6030a450-fb4e-4e27-a5c3-6f4e0f326d9a@linaro.orgSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents fec50db7 a42f2e9b
......@@ -157,6 +157,7 @@ properties:
items:
- enum:
- bananapi,bpi-cm4io
- mntre,reform2-cm4
- const: bananapi,bpi-cm4
- const: amlogic,a311d
- const: amlogic,g12b
......@@ -201,6 +202,18 @@ properties:
- amlogic,ad402
- const: amlogic,a1
- description: Boards with the Amlogic A4 A113L2 SoC
items:
- enum:
- amlogic,ba400
- const: amlogic,a4
- description: Boards with the Amlogic A5 A113X2 SoC
items:
- enum:
- amlogic,av400
- const: amlogic,a5
- description: Boards with the Amlogic C3 C302X/C308L SoC
items:
- enum:
......
......@@ -54,7 +54,9 @@ properties:
- const: amlogic,meson-gx-uart
- description: UART controller on S4 compatible SoCs
items:
- const: amlogic,t7-uart
- enum:
- amlogic,a4-uart
- amlogic,t7-uart
- const: amlogic,meson-s4-uart
reg:
......
# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_MESON) += amlogic-a4-a113l2-ba400.dtb
dtb-$(CONFIG_ARCH_MESON) += amlogic-a5-a113x2-av400.dtb
dtb-$(CONFIG_ARCH_MESON) += amlogic-c3-c302x-aw409.dtb
dtb-$(CONFIG_ARCH_MESON) += amlogic-t7-a311d2-an400.dtb
dtb-$(CONFIG_ARCH_MESON) += amlogic-t7-a311d2-khadas-vim4.dtb
......@@ -16,7 +18,9 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-bananapi-m2s.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3-ts050.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-bananapi-cm4-cm4io.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-bananapi-cm4-mnt-reform2.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb
......@@ -76,6 +80,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m2-pro.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m5.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-h96-max.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l-ts050.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-s905d3-libretech-cc.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
......@@ -86,3 +91,5 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air.dtb
# Overlays
meson-g12a-fbx8am-brcm-dtbs := meson-g12a-fbx8am.dtb meson-g12a-fbx8am-brcm.dtbo
meson-g12a-fbx8am-realtek-dtbs := meson-g12a-fbx8am.dtb meson-g12a-fbx8am-realtek.dtbo
meson-g12b-a311d-khadas-vim3-ts050-dtbs := meson-g12b-a311d-khadas-vim3.dtb meson-khadas-vim3-ts050.dtbo
meson-sm1-khadas-vim3l-ts050-dtbs := meson-sm1-khadas-vim3l.dtb meson-khadas-vim3-ts050.dtbo
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
/dts-v1/;
#include "amlogic-a4.dtsi"
/ {
model = "Amlogic A113L2 ba400 Development Board";
compatible = "amlogic,ba400", "amlogic,a4";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
aliases {
serial0 = &uart_b;
};
memory@0 {
device_type = "memory";
reg = <0x0 0x0 0x0 0x40000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* 10 MiB reserved for ARM Trusted Firmware */
secmon_reserved: secmon@5000000 {
compatible = "shared-dma-pool";
reg = <0x0 0x05000000 0x0 0xa00000>;
no-map;
};
};
};
&uart_b {
status = "okay";
};
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
/ {
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
xtal: xtal-clk {
compatible = "fixed-clock";
clock-frequency = <24000000>;
clock-output-names = "xtal";
#clock-cells = <0>;
};
soc {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges;
gic: interrupt-controller@fff01000 {
compatible = "arm,gic-400";
reg = <0x0 0xfff01000 0 0x1000>,
<0x0 0xfff02000 0 0x2000>,
<0x0 0xfff04000 0 0x2000>,
<0x0 0xfff06000 0 0x2000>;
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
};
apb: bus@fe000000 {
compatible = "simple-bus";
reg = <0x0 0xfe000000 0x0 0x480000>;
#address-cells = <2>;
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
uart_b: serial@7a000 {
compatible = "amlogic,a4-uart",
"amlogic,meson-s4-uart";
reg = <0x0 0x7a000 0x0 0x18>;
interrupts = <GIC_SPI 169 IRQ_TYPE_EDGE_RISING>;
clocks = <&xtal>, <&xtal>, <&xtal>;
clock-names = "xtal", "pclk", "baud";
status = "disabled";
};
};
};
};
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
#include "amlogic-a4-common.dtsi"
/ {
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x0>;
enable-method = "psci";
};
cpu1: cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x1>;
enable-method = "psci";
};
cpu2: cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x2>;
enable-method = "psci";
};
cpu3: cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x3>;
enable-method = "psci";
};
};
};
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
/dts-v1/;
#include "amlogic-a5.dtsi"
/ {
model = "Amlogic A113X2 av400 Development Board";
compatible = "amlogic,av400", "amlogic,a5";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
aliases {
serial0 = &uart_b;
};
memory@0 {
device_type = "memory";
reg = <0x0 0x0 0x0 0x40000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* 10 MiB reserved for ARM Trusted Firmware */
secmon_reserved: secmon@5000000 {
compatible = "shared-dma-pool";
reg = <0x0 0x05000000 0x0 0xa00000>;
no-map;
};
};
};
&uart_b {
status = "okay";
};
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
#include "amlogic-a4-common.dtsi"
/ {
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu0: cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0 0x0>;
enable-method = "psci";
};
cpu1: cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0 0x100>;
enable-method = "psci";
};
cpu2: cpu@200 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0 0x200>;
enable-method = "psci";
};
cpu3: cpu@300 {
device_type = "cpu";
compatible = "arm,cortex-a55";
reg = <0x0 0x300>;
enable-method = "psci";
};
};
};
/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
/*
* Copyright (c) 2024 Amlogic, Inc. All rights reserved.
*/
#ifndef __DTS_AMLOGIC_T7_RESET_H
#define __DTS_AMLOGIC_T7_RESET_H
/* RESET0 */
/* 0-3 */
#define RESET_USB 4
#define RESET_U2DRD 5
#define RESET_U3DRD 6
#define RESET_U3DRD_PIPE0 7
#define RESET_U2PHY20 8
#define RESET_U2PHY21 9
#define RESET_GDC 10
#define RESET_HDMI20_AES 11
#define RESET_HDMIRX 12
#define RESET_HDMIRX_APB 13
#define RESET_DEWARP 14
/* 15 */
#define RESET_HDMITX_CAPB3 16
#define RESET_BRG_VCBUG_DEC 17
#define RESET_VCBUS 18
#define RESET_VID_PLL_DIV 19
#define RESET_VDI6 20
#define RESET_GE2D 21
#define RESET_HDMITXPHY 22
#define RESET_VID_LOCK 23
#define RESET_VENC0 24
#define RESET_VDAC 25
#define RESET_VENC2 26
#define RESET_VENC1 27
#define RESET_RDMA 28
#define RESET_HDMITX 29
#define RESET_VIU 30
#define RESET_VENC 31
/* RESET1 */
#define RESET_AUDIO 32
#define RESET_MALI_CAPB3 33
#define RESET_MALI 34
#define RESET_DDR_APB 35
#define RESET_DDR 36
#define RESET_DOS_CAPB3 37
#define RESET_DOS 38
#define RESET_COMBO_DPHY_CHAN2 39
#define RESET_DEBUG_B 40
#define RESET_DEBUG_A 41
#define RESET_DSP_B 42
#define RESET_DSP_A 43
#define RESET_PCIE_A 44
#define RESET_PCIE_PHY 45
#define RESET_PCIE_APB 46
#define RESET_ANAKIN 47
#define RESET_ETH 48
#define RESET_EDP0_CTRL 49
#define RESET_EDP1_CTRL 50
#define RESET_COMBO_DPHY_CHAN0 51
#define RESET_COMBO_DPHY_CHAN1 52
#define RESET_DSI_LVDS_EDP_TOP 53
#define RESET_PCIE1_PHY 54
#define RESET_PCIE1_APB 55
#define RESET_DDR_1 56
/* 57 */
#define RESET_EDP1_PIPELINE 58
#define RESET_EDP0_PIPELINE 59
#define RESET_MIPI_DSI1_PHY 60
#define RESET_MIPI_DSI0_PHY 61
#define RESET_MIPI_DSI_A_HOST 62
#define RESET_MIPI_DSI_B_HOST 63
/* RESET2 */
#define RESET_DEVICE_MMC_ARB 64
#define RESET_IR_CTRL 65
#define RESET_TS_A73 66
#define RESET_TS_A53 67
#define RESET_SPICC_2 68
#define RESET_SPICC_3 69
#define RESET_SPICC_4 70
#define RESET_SPICC_5 71
#define RESET_SMART_CARD 72
#define RESET_SPICC_0 73
#define RESET_SPICC_1 74
#define RESET_RSA 75
/* 76-79 */
#define RESET_MSR_CLK 80
#define RESET_SPIFC 81
#define RESET_SAR_ADC 82
#define RESET_BT 83
/* 84-87 */
#define RESET_ACODEC 88
#define RESET_CEC 89
#define RESET_AFIFO 90
#define RESET_WATCHDOG 91
/* 92-95 */
/* RESET3 */
#define RESET_BRG_NIC1_GPV 96
#define RESET_BRG_NIC2_GPV 97
#define RESET_BRG_NIC3_GPV 98
#define RESET_BRG_NIC4_GPV 99
#define RESET_BRG_NIC5_GPV 100
/* 101-121 */
#define RESET_MIPI_ISP 122
#define RESET_BRG_ADB_MALI_1 123
#define RESET_BRG_ADB_MALI_0 124
#define RESET_BRG_ADB_A73 125
#define RESET_BRG_ADB_A53 126
#define RESET_BRG_CCI 127
/* RESET4 */
#define RESET_PWM_AO_AB 128
#define RESET_PWM_AO_CD 129
#define RESET_PWM_AO_EF 130
#define RESET_PWM_AO_GH 131
#define RESET_PWM_AB 132
#define RESET_PWM_CD 133
#define RESET_PWM_EF 134
/* 135-137 */
#define RESET_UART_A 138
#define RESET_UART_B 139
#define RESET_UART_C 140
#define RESET_UART_D 141
#define RESET_UART_E 142
#define RESET_UART_F 143
#define RESET_I2C_S_A 144
#define RESET_I2C_M_A 145
#define RESET_I2C_M_B 146
#define RESET_I2C_M_C 147
#define RESET_I2C_M_D 148
#define RESET_I2C_M_E 149
#define RESET_I2C_M_F 150
#define RESET_I2C_M_AO_A 151
#define RESET_SD_EMMC_A 152
#define RESET_SD_EMMC_B 153
#define RESET_SD_EMMC_C 154
#define RESET_I2C_M_AO_B 155
#define RESET_TS_GPU 156
#define RESET_TS_NNA 157
#define RESET_TS_VPN 158
#define RESET_TS_HEVC 159
/* RESET5 */
#define RESET_BRG_NOC_DDR_1 160
#define RESET_BRG_NOC_DDR_0 161
#define RESET_BRG_NOC_MAIN 162
#define RESET_BRG_NOC_ALL 163
/* 164-167 */
#define RESET_BRG_NIC2_SYS 168
#define RESET_BRG_NIC2_MAIN 169
#define RESET_BRG_NIC2_HDMI 170
#define RESET_BRG_NIC2_ALL 171
#define RESET_BRG_NIC3_WAVE 172
#define RESET_BRG_NIC3_VDEC 173
#define RESET_BRG_NIC3_HEVCF 174
#define RESET_BRG_NIC3_HEVCB 175
#define RESET_BRG_NIC3_HCODEC 176
#define RESET_BRG_NIC3_GE2D 177
#define RESET_BRG_NIC3_GDC 178
#define RESET_BRG_NIC3_AMLOGIC 179
#define RESET_BRG_NIC3_MAIN 180
#define RESET_BRG_NIC3_ALL 181
#define RESET_BRG_NIC5_VPU 182
/* 183-185 */
#define RESET_BRG_NIC4_DSPB 186
#define RESET_BRG_NIC4_DSPA 187
#define RESET_BRG_NIC4_VAPB 188
#define RESET_BRG_NIC4_CLK81 189
#define RESET_BRG_NIC4_MAIN 190
#define RESET_BRG_NIC4_ALL 191
/* RESET6 */
#define RESET_BRG_VDEC_PIPEL 192
#define RESET_BRG_HEVCF_DMC_PIPEL 193
#define RESET_BRG_NIC2TONIC4_PIPEL 194
#define RESET_BRG_HDMIRXTONIC2_PIPEL 195
#define RESET_BRG_SECTONIC4_PIPEL 196
#define RESET_BRG_VPUTONOC_PIPEL 197
#define RESET_BRG_NIC4TONOC_PIPEL 198
#define RESET_BRG_NIC3TONOC_PIPEL 199
#define RESET_BRG_NIC2TONOC_PIPEL 200
#define RESET_BRG_NNATONOC_PIPEL 201
#define RESET_BRG_FRISP3_PIPEL 202
#define RESET_BRG_FRISP2_PIPEL 203
#define RESET_BRG_FRISP1_PIPEL 204
#define RESET_BRG_FRISP0_PIPEL 205
/* 206-217 */
#define RESET_BRG_AMPIPE_NAND 218
#define RESET_BRG_AMPIPE_ETH 219
/* 220 */
#define RESET_BRG_AM2AXI0 221
#define RESET_BRG_AM2AXI1 222
#define RESET_BRG_AM2AXI2 223
#endif /* ___DTS_AMLOGIC_T7_RESET_H */
......@@ -5,6 +5,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/amlogic,t7-pwrc.h>
#include "amlogic-t7-reset.h"
/ {
interrupt-parent = <&gic>;
......@@ -149,6 +150,12 @@ apb4: bus@fe000000 {
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
reset: reset-controller@2000 {
compatible = "amlogic,t7-reset";
reg = <0x0 0x2000 0x0 0x98>;
#reset-cells = <1>;
};
watchdog@2100 {
compatible = "amlogic,t7-wdt";
reg = <0x0 0x2100 0x0 0x10>;
......
......@@ -1663,9 +1663,28 @@ pwrc: power-controller {
<250000000>,
<0>; /* Do Nothing */
};
mipi_analog_dphy: phy {
compatible = "amlogic,g12a-mipi-dphy-analog";
#phy-cells = <0>;
status = "disabled";
};
};
};
mipi_dphy: phy@44000 {
compatible = "amlogic,axg-mipi-dphy";
reg = <0x0 0x44000 0x0 0x2000>;
clocks = <&clkc CLKID_MIPI_DSI_PHY>;
clock-names = "pclk";
resets = <&reset RESET_MIPI_DSI_PHY>;
reset-names = "phy";
phys = <&mipi_analog_dphy>;
phy-names = "analog";
#phy-cells = <0>;
status = "disabled";
};
usb3_pcie_phy: phy@46000 {
compatible = "amlogic,g12a-usb3-pcie-phy";
reg = <0x0 0x46000 0x0 0x2000>;
......@@ -2152,6 +2171,15 @@ hdmi_tx_out: endpoint {
remote-endpoint = <&hdmi_tx_in>;
};
};
/* DPI output port */
dpi_port: port@2 {
reg = <2>;
dpi_out: endpoint {
remote-endpoint = <&mipi_dsi_in>;
};
};
};
gic: interrupt-controller@ffc01000 {
......@@ -2189,6 +2217,48 @@ gpio_intc: interrupt-controller@f080 {
amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
};
mipi_dsi: dsi@7000 {
compatible = "amlogic,meson-g12a-dw-mipi-dsi";
reg = <0x0 0x7000 0x0 0x1000>;
resets = <&reset RESET_MIPI_DSI_HOST>;
reset-names = "top";
clocks = <&clkc CLKID_MIPI_DSI_HOST>,
<&clkc CLKID_MIPI_DSI_PXCLK>,
<&clkc CLKID_CTS_ENCL>;
clock-names = "pclk", "bit", "px";
phys = <&mipi_dphy>;
phy-names = "dphy";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
assigned-clocks = <&clkc CLKID_MIPI_DSI_PXCLK_SEL>,
<&clkc CLKID_CTS_ENCL_SEL>,
<&clkc CLKID_VCLK2_SEL>;
assigned-clock-parents = <&clkc CLKID_GP0_PLL>,
<&clkc CLKID_VCLK2_DIV1>,
<&clkc CLKID_GP0_PLL>;
ports {
#address-cells = <1>;
#size-cells = <0>;
/* VPU VENC Input */
mipi_dsi_venc_port: port@0 {
reg = <0>;
mipi_dsi_in: endpoint {
remote-endpoint = <&dpi_out>;
};
};
/* DSI Output */
mipi_dsi_panel_port: port@1 {
reg = <1>;
};
};
};
watchdog: watchdog@f0d0 {
compatible = "amlogic,meson-gxbb-wdt";
reg = <0x0 0xf0d0 0x0 0x10>;
......
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org>
* Copyright 2023 MNT Research GmbH
*/
/dts-v1/;
#include "meson-g12b-bananapi-cm4.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
/ {
model = "MNT Reform 2 with BPI-CM4 Module";
compatible = "mntre,reform2-cm4", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b";
chassis-type = "laptop";
aliases {
ethernet0 = &ethmac;
i2c0 = &i2c1;
i2c1 = &i2c3;
};
hdmi_connector: hdmi-connector {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_connector_in: endpoint {
remote-endpoint = <&hdmi_tx_tmds_out>;
};
};
};
leds {
compatible = "gpio-leds";
led-blue {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
led-green {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
};
};
sound {
compatible = "amlogic,axg-sound-card";
model = "MNT-REFORM2-BPI-CM4";
audio-widgets = "Headphone", "Headphone Jack",
"Speaker", "External Speaker",
"Microphone", "Mic Jack";
audio-aux-devs = <&tdmout_a>, <&tdmout_b>, <&tdmin_b>;
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
"TDMOUT_A IN 1", "FRDDR_B OUT 0",
"TDMOUT_A IN 2", "FRDDR_C OUT 0",
"TDM_A Playback", "TDMOUT_A OUT",
"TDMOUT_B IN 0", "FRDDR_A OUT 1",
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
"TDMOUT_B IN 2", "FRDDR_C OUT 1",
"TDM_B Playback", "TDMOUT_B OUT",
"TDMIN_B IN 1", "TDM_B Capture",
"TDMIN_B IN 4", "TDM_B Loopback",
"TODDR_A IN 1", "TDMIN_B OUT",
"TODDR_B IN 1", "TDMIN_B OUT",
"TODDR_C IN 1", "TDMIN_B OUT",
"Headphone Jack", "HP_L",
"Headphone Jack", "HP_R",
"External Speaker", "SPK_LP",
"External Speaker", "SPK_LN",
"External Speaker", "SPK_RP",
"External Speaker", "SPK_RN",
"LINPUT1", "Mic Jack",
"Mic Jack", "MICB";
assigned-clocks = <&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>;
assigned-clock-parents = <0>, <0>, <0>;
assigned-clock-rates = <294912000>,
<270950400>,
<393216000>;
dai-link-0 {
sound-dai = <&frddr_a>;
};
dai-link-1 {
sound-dai = <&frddr_b>;
};
dai-link-2 {
sound-dai = <&frddr_c>;
};
dai-link-3 {
sound-dai = <&toddr_a>;
};
dai-link-4 {
sound-dai = <&toddr_b>;
};
dai-link-5 {
sound-dai = <&toddr_c>;
};
/* 8ch hdmi interface */
dai-link-6 {
sound-dai = <&tdmif_a>;
dai-format = "i2s";
dai-tdm-slot-tx-mask-0 = <1 1>;
dai-tdm-slot-tx-mask-1 = <1 1>;
dai-tdm-slot-tx-mask-2 = <1 1>;
dai-tdm-slot-tx-mask-3 = <1 1>;
mclk-fs = <256>;
codec {
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
};
};
/* Analog Audio */
dai-link-7 {
sound-dai = <&tdmif_b>;
dai-format = "i2s";
dai-tdm-slot-tx-mask-0 = <1 1>;
mclk-fs = <256>;
codec {
sound-dai = <&wm8960>;
};
};
/* hdmi glue */
dai-link-8 {
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
codec {
sound-dai = <&hdmi_tx>;
};
};
};
reg_main_1v8: regulator-main-1v8 {
compatible = "regulator-fixed";
regulator-name = "1V8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
vin-supply = <&reg_main_3v3>;
};
reg_main_1v2: regulator-main-1v2 {
compatible = "regulator-fixed";
regulator-name = "1V2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
vin-supply = <&reg_main_5v>;
};
reg_main_3v3: regulator-main-3v3 {
compatible = "regulator-fixed";
regulator-name = "3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_main_5v: regulator-main-5v {
compatible = "regulator-fixed";
regulator-name = "5V";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
reg_main_usb: regulator-main-usb {
compatible = "regulator-fixed";
regulator-name = "USB_PWR";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&reg_main_5v>;
};
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm_AO_ab 0 10000 0>;
power-supply = <&reg_main_usb>;
enable-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>;
brightness-levels = <0 32 64 128 160 200 255>;
default-brightness-level = <6>;
};
panel {
compatible = "innolux,n125hce-gn1";
power-supply = <&reg_main_3v3>;
backlight = <&backlight>;
no-hpd;
port {
panel_in: endpoint {
remote-endpoint = <&edp_bridge_out>;
};
};
};
clock_12288: clock_12288 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <12288000>;
};
};
&mipi_analog_dphy {
status = "okay";
};
&mipi_dphy {
status = "okay";
};
&mipi_dsi {
status = "okay";
assigned-clocks = <&clkc CLKID_GP0_PLL>,
<&clkc CLKID_MIPI_DSI_PXCLK_SEL>,
<&clkc CLKID_MIPI_DSI_PXCLK>,
<&clkc CLKID_CTS_ENCL_SEL>,
<&clkc CLKID_VCLK2_SEL>;
assigned-clock-parents = <0>,
<&clkc CLKID_GP0_PLL>,
<0>,
<&clkc CLKID_VCLK2_DIV1>,
<&clkc CLKID_GP0_PLL>;
assigned-clock-rates = <936000000>,
<0>,
<936000000>,
<0>,
<0>;
};
&mipi_dsi_panel_port {
mipi_dsi_out: endpoint {
remote-endpoint = <&edp_bridge_in>;
};
};
&cecb_AO {
status = "okay";
};
&ethmac {
status = "okay";
};
&hdmi_tx {
status = "okay";
};
&hdmi_tx_tmds_port {
hdmi_tx_tmds_out: endpoint {
remote-endpoint = <&hdmi_connector_in>;
};
};
&pwm_AO_ab {
pinctrl-names = "default";
pinctrl-0 = <&pwm_ao_a_pins>;
status = "okay";
};
&i2c0 {
status = "okay";
};
&i2c3 {
status = "okay";
edp_bridge: bridge@2c {
compatible = "ti,sn65dsi86";
reg = <0x2c>;
enable-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>; // PIN_24 / GPIO8
vccio-supply = <&reg_main_1v8>;
vpll-supply = <&reg_main_1v8>;
vcca-supply = <&reg_main_1v2>;
vcc-supply = <&reg_main_1v2>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
edp_bridge_in: endpoint {
remote-endpoint = <&mipi_dsi_out>;
};
};
port@1 {
reg = <1>;
edp_bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
};
&i2c2 {
status = "okay";
wm8960: codec@1a {
compatible = "wlf,wm8960";
reg = <0x1a>;
clocks = <&clock_12288>;
clock-names = "mclk";
#sound-dai-cells = <0>;
wlf,shared-lrclk;
};
rtc@68 {
compatible = "nxp,pcf8523";
reg = <0x68>;
};
};
&pcie {
status = "okay";
};
&sd_emmc_b {
status = "okay";
};
&tdmif_a {
status = "okay";
};
&tdmout_a {
status = "okay";
};
&tdmif_b {
pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>;
pinctrl-names = "default";
assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
<&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>,
<&clkc_audio AUD_CLKID_MST_B_LRCLK>;
assigned-clock-rates = <0>, <0>;
};
&tdmin_b {
status = "okay";
};
&toddr_a {
status = "okay";
};
&toddr_b {
status = "okay";
};
&toddr_c {
status = "okay";
};
&tohdmitx {
status = "okay";
};
&usb {
dr_mode = "host";
status = "okay";
};
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2019 BayLibre, SAS
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/clock/g12a-clkc.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/amlogic,meson-g12a-gpio-intc.h>
/dts-v1/;
/plugin/;
/*
* Enable Khadas TS050 DSI Panel + Touch Controller
* on Khadas VIM3 (A311D) and VIM3L (S905D3)
*/
&{/} {
panel_backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm_AO_cd 0 25000 0>;
brightness-levels = <0 255>;
num-interpolated-steps = <255>;
default-brightness-level = <200>;
};
};
&i2c3 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
pinctrl-names = "default";
status = "okay";
touch-controller@38 {
compatible = "edt,edt-ft5206";
reg = <0x38>;
interrupt-parent = <&gpio_intc>;
interrupts = <IRQID_GPIOA_5 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio_expander 6 GPIO_ACTIVE_LOW>;
touchscreen-size-x = <1080>;
touchscreen-size-y = <1920>;
status = "okay";
};
};
&mipi_dsi {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
assigned-clocks = <&clkc CLKID_GP0_PLL>,
<&clkc CLKID_MIPI_DSI_PXCLK_SEL>,
<&clkc CLKID_MIPI_DSI_PXCLK>,
<&clkc CLKID_CTS_ENCL_SEL>,
<&clkc CLKID_VCLK2_SEL>;
assigned-clock-parents = <0>,
<&clkc CLKID_GP0_PLL>,
<0>,
<&clkc CLKID_VCLK2_DIV1>,
<&clkc CLKID_GP0_PLL>;
assigned-clock-rates = <960000000>,
<0>,
<960000000>,
<0>,
<0>;
panel@0 {
compatible = "khadas,ts050";
reset-gpios = <&gpio_expander 0 GPIO_ACTIVE_LOW>;
enable-gpios = <&gpio_expander 1 GPIO_ACTIVE_HIGH>;
power-supply = <&vcc_3v3>;
backlight = <&panel_backlight>;
reg = <0>;
port {
mipi_in_panel: endpoint {
remote-endpoint = <&mipi_out_panel>;
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
mipi_out_panel: endpoint {
remote-endpoint = <&mipi_in_panel>;
};
};
};
};
&mipi_analog_dphy {
status = "okay";
};
&mipi_dphy {
status = "okay";
};
&pwm_AO_cd {
pinctrl-0 = <&pwm_ao_c_6_pins>, <&pwm_ao_d_e_pins>;
};
......@@ -65,10 +65,15 @@ xtal: xtal-clk {
#clock-cells = <0>;
};
pwrc: power-controller {
compatible = "amlogic,meson-s4-pwrc";
#power-domain-cells = <1>;
status = "okay";
firmware {
sm: secure-monitor {
compatible = "amlogic,meson-gxbb-sm";
pwrc: power-controller {
compatible = "amlogic,meson-s4-pwrc";
#power-domain-cells = <1>;
};
};
};
soc {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment