blob: d36246b564d69c4c41b16e09a46b59588810b054 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0-only
/*
* SAMSUNG GS101 SoC device tree source
*
* Copyright (c) 2019 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/gs101.h>
#include <dt-bindings/display/exynos-display.h>
#include "gs101-pinctrl.dtsi"
#include "gs101-sysmmu.dtsi"
#include "gs101-display-timing.dtsi"
/ {
drmdpp0: drmdpp@0x1C0B0000 { /* L0 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B0000 0x1000>, /* DPU_DMA */
<0x0 0x1C0D0000 0x1000>, /* DPP */
<0x0 0x1C0E0000 0x1000>; /* HDR */
reg-names = "dma", "dpp", "hdr";
/* DPU_DMA IRQ, DPP IRQ */
interrupts = <GIC_SPI IRQ_DPU_DMA_L0_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L0_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
/* Each bit indicates DPP attribute */
/* 0:AFBC 1:BLOCK 2:FLIP 3:ROT 4:CSC 5:SCALE 6:HDR 11:HDR10P */
/* 16:IDMA 17:ODMA 18:DPP */
attr = <0x50047>;
port = <0>; /* AXI port number */
/* 1: scale X, 2: 1/2x scale down, 4: 1/4x scale down */
scale_down = <1>;
/* 1: scale X, 2: 2x scale up, 4: 4x scale up */
scale_up = <1>;
dpp,id = <0>;
};
drmdpp1: drmdpp@0x1C0B1000 { /* L1 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B1000 0x1000>,
<0x0 0x1C0D1000 0x1000>,
<0x0 0x1C0E1000 0x1000>;
reg-names = "dma", "dpp", "hdr";
interrupts = <GIC_SPI IRQ_DPU_DMA_L1_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L1_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
attr = <0x50C7F>;
port = <0>;
scale_down = <4>;
scale_up = <8>;
dpp,id = <1>;
dpp,video;
};
drmdpp2: drmdpp@0x1C0B2000 { /* L2 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B2000 0x1000>,
<0x0 0x1C0D2000 0x1000>,
<0x0 0x1C0E2000 0x1000>;
reg-names = "dma", "dpp", "hdr";
interrupts = <GIC_SPI IRQ_DPU_DMA_L2_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L2_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
attr = <0x50047>;
port = <1>;
scale_down = <1>;
scale_up = <1>;
dpp,id = <2>;
};
drmdpp3: drmdpp@0x1C0B3000 { /* L3 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B3000 0x1000>,
<0x0 0x1C0D3000 0x1000>,
<0x0 0x1C0E3000 0x1000>;
reg-names = "dma", "dpp", "hdr";
interrupts = <GIC_SPI IRQ_DPU_DMA_L3_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L3_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
attr = <0x50C7F>;
port = <1>;
scale_down = <4>;
scale_up = <8>;
dpp,id = <3>;
dpp,video;
};
drmdpp4: drmdpp@0x1C0B4000 { /* L4 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B4000 0x1000>,
<0x0 0x1C0D4000 0x1000>,
<0x0 0x1C0E4000 0x1000>;
reg-names = "dma", "dpp", "hdr";
interrupts = <GIC_SPI IRQ_DPU_DMA_L4_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L4_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
attr = <0x50047>;
port = <2>;
scale_down = <1>;
scale_up = <1>;
dpp,id = <4>;
};
drmdpp5: drmdpp@0x1C0B5000 { /* L5 */
compatible = "samsung,exynos-dpp";
reg = <0x0 0x1C0B5000 0x1000>,
<0x0 0x1C0D5000 0x1000>,
<0x0 0x1C0E5000 0x1000>;
reg-names = "dma", "dpp", "hdr";
interrupts = <GIC_SPI IRQ_DPU_DMA_L5_DPU IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DPU_DPP_L5_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma", "dpp";
attr = <0x50C7F>;
port = <2>;
scale_down = <4>;
scale_up = <8>;
dpp,id = <5>;
dpp,video;
};
drmdpp12: drmdpp@0x1C0BC000 { /* L12 : WB */
compatible = "samsung,exynos-writeback";
reg = <0x0 0x1C0BC000 0x1000>, <0x0 0x1C0DC000 0x1000>;
reg-names = "dma", "dpp";
interrupts = <GIC_SPI IRQ_DPU_DMA_WB_DPU IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dma";
/* 4:CSC 10:SBWC 17:ODMA 18:DPP */
attr = <0x60410>;
port = <2>;
scale_down = <1>;
scale_up = <1>;
dpp,id = <6>;
};
disp_ss: disp_ss@0x1C221000 {
compatible = "samsung,exynos9-disp_ss";
reg = <0x0 0x1C221000 0x10>;
reg-names = "sys";
};
mipi_phy_dsim0_m4m4: dphy_m4s4_dsim0@0x1C2E0000 {
compatible = "samsung,mipi-phy-m4m4";
isolation = <0x3eb8>;
owner = <0>; /* 0: DSI, 1: CSI */
#phy-cells = <1>;
};
drmdsim0: drmdsim@0x1C2C0000 {
status = "disabled";
compatible = "samsung,exynos-dsim";
reg = <0x0 0x1C2C0000 0x300>, /* DSI */
<0x0 0x1C2E0100 0x700>, /* M4M4S0 PHY */
<0x0 0x1C2E0000 0x100>; /* M4M4S0 PHY BIAS */
reg-names = "dsi", "dphy", "dphy-extra";
dsim,id = <0>;
interrupts = <GIC_SPI IRQ_DISP_DSIM0_DISP IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dsim";
phys = <&mipi_phy_dsim0_m4m4 0>;
phy-names = "dsim_dphy";
dsim_mode = <&dsim_modes>;
dphy_diag = <&dphy_diags>;
te_from = <0>;
/* EINT for TE */
te-gpio = <&gpp0 3 0xf>;
/* pinctrl */
pinctrl-names = "hw_te_on", "hw_te_off";
pinctrl-0 = <&disp_te_pri_on>;
pinctrl-1 = <&disp_te_pri_off>;
#address-cells = <1>;
#size-cells = <0>;
};
drmdsim1: drmdsim@0x1C2D0000 {
compatible = "samsung,exynos-dsim";
reg = <0x0 0x1C2D0000 0x300>, /* DSI */
<0x0 0x1C2E0900 0x700>, /* M4M4S0 PHY */
<0x0 0x1C2E0000 0x100>; /* M4M4S0 PHY BIAS */
reg-names = "dsi", "dphy", "dphy-extra";
dsim,id = <1>;
interrupts = <GIC_SPI IRQ_DISP_DSIM1_DISP IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dsim";
phys = <&mipi_phy_dsim0_m4m4 0>;
phy-names = "dsim_dphy";
dsim_mode = <&dsim_modes>;
dphy_diag = <&dphy_diags>;
te_from = <1>;
/* EINT for TE */
te-gpio = <&gpp0 4 0xf>;
pinctrl-names = "hw_te_on", "hw_te_off";
pinctrl-0 = <&disp_te_sec_on>;
pinctrl-1 = <&disp_te_sec_off>;
#address-cells = <1>;
#size-cells = <0>;
};
drmdecon0: drmdecon@0x1C300000 {
compatible = "samsung,exynos-decon";
reg = <0x0 0x1C300000 0x6000>, /* DECON0_MAIN */
<0x0 0x1C310000 0x6000>, /* DECON_WIN */
<0x0 0x1C320000 0x10000>, /* DECON_SUB */
<0x0 0x1C330000 0x6000>, /* DECON0_WINCON */
<0x0 0x1C360000 0xF000>; /* DQE */
reg-names = "main", "win", "sub", "wincon", "dqe";
decon,id = <0>;
interrupts = <GIC_SPI IRQ_DISP_DECON0_FRAME_START_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON0_FRAME_DONE_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON0_EXTRA_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON0_DQE_DIMMING_START_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON0_DQE_DIMMING_END_DISP
IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "frame_start", "frame_done", "extra",
"dimming_start", "dimming_end";
iommus = <&sysmmu_dpu0>, <&sysmmu_dpu1>, <&sysmmu_dpu2>;
samsung,iommu-group = <&iommu_group_dpu>;
samsung,tzmp;
max_win = <6>;
/* BTS */
ppc = <2>; /* pixel per clock */
ppc_rotator = <4>; /* rotator ppc : 4(9830), 8(9840) */
ppc_scaler = <2>; /* scaler ppc : 2(9830), 4(9840) */
delay_comp = <4>; /* line delay for afbc or sbwc : DMA */
delay_scaler = <3>; /* line delay for scaler : DPP */
/* bus info */
bus_width = <16>; /* 16-Byte : 128-bit bus */
bus_util = <65>; /* 65% */
rot_util = <60>; /* UTIL gets worse at rotation */
/* dpu dvfs */
dfs_lv_cnt = <7>;
dfs_lv = <664000 533000 465000 400000 310000 267000 134000>;
/* Urgent */
rd_en = <1>;
rd_hi_thres = <0x800>;
rd_lo_thres = <0x400>;
rd_wait_cycle = <0x10>;
wr_en = <0>;
wr_hi_thres = <0x0>;
wr_lo_thres = <0x0>;
/* DTA */
dta_en = <1>;
dta_hi_thres = <0x3200>;
dta_lo_thres = <0x600>;
dpps = <&drmdpp0 &drmdpp1 &drmdpp2 &drmdpp3 &drmdpp4 &drmdpp5>;
/*
* connector type that can be connected to the DECON. please
* refer to enum exynos_drm_output_type in exynos_drm_drv.h
*
* DSI0(0x1), DSI1(0x2), VIDI(0x8)
*/
connector = <0x1 0x2 0x8>;
hibernation;
};
drmdecon1: drmdecon@0x1C301000 {
status = "disabled";
compatible = "samsung,exynos-decon";
reg = <0x0 0x1C301000 0x6000>, /* DECON1_MAIN */
<0x0 0x1C310000 0x6000>, /* DECON_WIN */
<0x0 0x1C320000 0x10000>, /* DECON_SUB */
<0x0 0x1C340000 0x6000>; /* DECON1_WINCON */
reg-names = "main", "win", "sub", "wincon";
decon,id = <1>;
interrupts = <GIC_SPI IRQ_DISP_DECON1_FRAME_START_DISP IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON1_FRAME_DONE_DISP IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON1_EXTRA_DISP IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "frame_start", "frame_done", "extra";
iommus = <&sysmmu_dpu0>, <&sysmmu_dpu1>, <&sysmmu_dpu2>;
samsung,iommu-group = <&iommu_group_dpu>;
max_win = <6>;
/* BTS */
ppc = <2>;
line_mem_cnt = <4>;
cycle_per_line = <8>; /* 4ppc */
/* Urgent */
rd_en = <1>;
rd_hi_thres = <0x800>;
rd_lo_thres = <0x400>;
rd_wait_cycle = <0x11>;
wr_en = <0>;
wr_hi_thres = <0x0>;
wr_lo_thres = <0x0>;
/* DTA */
dta_en = <1>;
dta_hi_thres = <0x3200>;
dta_lo_thres = <0x600>;
dpps = <&drmdpp0 &drmdpp1 &drmdpp2 &drmdpp3 &drmdpp4 &drmdpp5>;
/*
* connector type that can be connected to the DECON. please
* refer to enum exynos_drm_output_type in exynos_drm_drv.h
*
* DSI0(0x1), DSI1(0x2), VIDI(0x8)
*/
connector = <0x1 0x2 0x8>;
};
drmdecon2: drmdecon@0x1C302000 {
compatible = "samsung,exynos-decon";
reg = <0x0 0x1C302000 0x4000>, /* DECON2_MAIN */
<0x0 0x1C310000 0x6000>, /* DECON_WIN */
<0x0 0x1C320000 0x10000>, /* DECON_SUB */
<0x0 0x1C350000 0x6000>; /* DECON2_WINCON */
reg-names = "main", "win", "sub", "wincon";
decon,id = <2>;
interrupts = <GIC_SPI IRQ_DISP_DECON2_FRAME_START_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON2_FRAME_DONE_DISP
IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI IRQ_DISP_DECON2_EXTRA_DISP
IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "frame_start", "frame_done", "extra";
iommus = <&sysmmu_dpu0>, <&sysmmu_dpu1>, <&sysmmu_dpu2>;
samsung,iommu-group = <&iommu_group_dpu>;
samsung,tzmp;
max_win = <6>;
/* BTS */
ppc = <2>; /* pixel per clock */
ppc_rotator = <4>; /* rotator ppc : 4(9830), 8(9840) */
ppc_scaler = <2>; /* scaler ppc : 2(9830), 4(9840) */
delay_comp = <4>; /* line delay for afbc or sbwc : DMA */
delay_scaler = <3>; /* line delay for scaler : DPP */
/* bus info */
bus_width = <16>; /* 16-Byte : 128-bit bus */
bus_util = <65>; /* 65% */
rot_util = <60>; /* UTIL gets worse at rotation */
/* dpu dvfs */
dfs_lv_cnt = <7>;
dfs_lv = <664000 533000 465000 400000 310000 267000 134000>;
dpps = <&drmdpp0 &drmdpp1 &drmdpp2 &drmdpp3 &drmdpp4 &drmdpp5>;
/*
* connector type that can be connected to the DECON. please
* refer to enum exynos_drm_output_type in exynos_drm_drv.h
*
* DSI0(0x1), DSI1(0x2), VIDI(0x8)
*/
connector = <0x8>;
};
disp_vddi: disp-vddi {
status = "disabled";
compatible = "regulator-fixed";
regulator-name = "disp_vddi";
regulator-boot-on;
enable-active-high;
};
disp_vddr_en: disp-vddr_en {
status = "disabled";
compatible = "regulator-fixed";
regulator-name = "disp_vddr_en";
regulator-boot-on;
enable-active-high;
};
disp_vddr_0: disp-vddr_0 {
status = "disabled";
compatible = "regulator-fixed";
regulator-name = "disp_vddr_0";
regulator-boot-on;
enable-active-high;
};
disp_vddr_1: disp-vddr_1 {
status = "disabled";
compatible = "regulator-fixed";
regulator-name = "disp_vddr_1";
regulator-boot-on;
enable-active-high;
};
};