blob: ae571dd2727e882b5557ce6a8344a55d29f56019 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0-only
/*
* SAMSUNG EXYNOS SoC mfc device tree source
*
* Copyright (c) 2020 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
*/
#include <dt-bindings/interrupt-controller/gs101.h>
/ {
mfc: mfc {
/* Basic setting */
compatible = "samsung,exynos-mfc";
/* for vb2 device */
iommus = <&sysmmu_mfc0>, <&sysmmu_mfc1>;
samsung,iommu-group = <&iommu_group_mfc>;
samsung,iommu-reserved-map = <0x0 0x0 0x10000000>,
<0x0 0x10000000 0x100000>;
/* Enable if there is vOTF */
/* samsung,iommu-identity-map = <0x0 0x15E1F000 0x10000>; */
samsung,tzmp;
/* for F/W buffer */
memory-region = <&mfc_fw_rmem>;
/* MFC version */
/* ip_ver is set in gs101-a0.dts and gs101-b0.dts */
/* Debug mode (disable needs sysmmu,async-fault) */
debug_mode = <0>;
/* NAL-Q size */
nal_q_entry_size = <512>;
nal_q_dump_size = <376>;
/* Features <on/off version> */
nal_q = <1 0x0>;
skype = <1 0x0>;
black_bar = <0 0x0>;
color_aspect_dec = <1 0x0>;
static_info_dec = <1 0x0>;
color_aspect_enc = <1 0x0>;
static_info_enc = <1 0x180314>;
hdr10_plus = <1 0x180709>;
vp9_stride_align = <1 0x0>;
sbwc_uncomp = <1 0x190702>;
mem_clear = <1 0x0>;
/* Support from v11.0 (except 11.2) */
wait_fw_status = <1 0x190122>;
wait_nalq_status = <1 0x191107>;
/* DRM switch predict for cache flush */
drm_switch_predict = <1 0x0>;
/* Support SBWC per-frame control for encoder src */
sbwc_enc_src_ctrl = <1 0x200110>;
average_qp = <1 0x201030>;
mv_search_mode = <1 0x201118>;
/* AV1 Decoder */
support_av1_dec = <0>;
/* Support AV1 Film Grain Feature */
av1_film_grain = <0 0>;
/* Default 10bit format for decoding (1: P010, 0: 8+2) */
P010_decoding = <1>;
/* Dithering option for 8bit display device */
dithering_enable = <0>;
/* Formats */
support_10bit = <1>;
support_422 = <1>;
support_rgb = <1>;
/* SBWC */
support_sbwc = <1>;
support_sbwcl = <0>;
support_afbc = <1>;
/* SBWC decoder max resolution */
sbwc_dec_max_width = <1920>;
sbwc_dec_max_height = <1088>;
sbwc_dec_hdr10_off = <1>;
/* HDR10+ num max window */
max_hdr_win = <1>;
/* error type for sync_point display */
/* (1: concealment display, 2: error display, 3: error no display) */
display_err_type = <2>;
/* FW base security ctrl */
/* security_ctrl is set in gs101-a0.dts and gs101-b0.dts */
/* Encoder default parameter: max number is 100 */
enc_param_num = <25>;
enc_param_addr = <0xF7B4 0xF7B8 0xF7B0 0xF798 0xFA2C
0xF790 0xFA34 0xFA38 0xFA3C 0xF7C0
0xF7C8 0xF7CC 0xFA60 0xFDD4 0xFDDC
0xFB54 0xFB58 0xFBA8 0xFD90 0xFD94
0xFD40 0xFD48 0xFD4C 0xFD50 0xFD80>;
enc_param_val = <0x100 0x100 0x0 0x4000 0x3FD00
0x0 0x0 0x2710 0x3E8 0x0
0x0 0x0 0x0 0x8050F215 0x0
0x3011 0x0 0x0 0x2D 0xA00
0x1D 0xF4240 0x33003300 0x2 0x1>;
/* BW <peak, read, write> : KB/UHD frame */
bw_enc_h264 = <45456 56112 11170>;
bw_enc_hevc = <46756 52766 9763>;
bw_enc_hevc_10bit = <53865 64753 12556>;
bw_enc_vp8 = <64000 67318 22518>;
bw_enc_vp9 = <72326 59726 16530>;
bw_enc_vp9_10bit = <149085 114928 31419>;
bw_enc_mpeg4 = <44647 55324 9531>;
bw_dec_h264 = <32605 34381 21263>;
bw_dec_hevc = <29973 28851 17538>;
bw_dec_hevc_10bit = <52859 46245 31351>;
bw_dec_vp8 = <28672 30468 22324>;
bw_dec_vp9 = <18351 18947 16877>;
bw_dec_vp9_10bit = <42384 34452 31766>;
bw_dec_av1 = <23787 19570 15856>;
bw_dec_av1_10bit = <41407 35490 29699>;
bw_dec_mpeg4 = <31540 25368 15770>;
/* BW <peak, read, write> : KB/UHD frame. For SBWC format */
/* It is valid when only support_sbwc = <1> */
sbwc_bw_enc_h264 = <31622 32183 7065>;
sbwc_bw_enc_hevc = <24044 27526 5888>;
sbwc_bw_enc_hevc_10bit = <32666 37594 8841>;
sbwc_bw_enc_vp8 = <32666 37594 8841>;
sbwc_bw_enc_vp9 = <23276 26884 8702>;
sbwc_bw_enc_vp9_10bit = <42302 41116 14052>;
sbwc_bw_enc_mpeg4 = <32666 37594 8841>;
sbwc_bw_dec_h264 = <23757 18603 13620>;
sbwc_bw_dec_hevc = <15309 15387 10279>;
sbwc_bw_dec_hevc_10bit = <20808 20602 14868>;
sbwc_bw_dec_vp8 = <17203 18281 13394>;
sbwc_bw_dec_vp9 = <11121 9691 8999>;
sbwc_bw_dec_vp9_10bit = <17787 15582 14413>;
sbwc_bw_dec_mpeg4 = <18924 15221 9462>;
/* BW <peak, read, write> : KB/UHD frame. For recon DPB only SBWC format */
/* It is valid when only support_sbwc = <1> */
dpb_sbwc_bw_enc_h264 = <36230 36791 7065>;
dpb_sbwc_bw_enc_hevc = <28662 32144 5888>;
dpb_sbwc_bw_enc_hevc_10bit = <46613 51541 8841>;
dpb_sbwc_bw_enc_vp9 = <26747 31502 8702>;
dpb_sbwc_bw_enc_vp9_10bit = <42302 55063 14052>;
/* QoS bitrate */
num_mfc_freq = <5>;
mfc_freqs = <134000 267000 400000 534000 666000>;
/* spec: H264(240M) VP8(80M) */
max_Kbps = <245760 81920>;
/* QoS weight (%) */
qos_weight_h264_hevc = <100>;
qos_weight_vp8_vp9 = <100>;
qos_weight_other_codec = <25>;
qos_weight_3plane = <80>;
qos_weight_10bit = <75>;
qos_weight_422 = <70>;
qos_weight_bframe = <50>;
qos_weight_num_of_ref = <60>;
qos_weight_gpb = <50>;
qos_weight_num_of_tile = <75>;
qos_weight_super64_bframe = <60>;
/* core balance(%) for resource managing */
core_balance = <100>;
/* MFC IOVA threshold (MB) */
iova_threshold = <0>;
/* need control for mfc idle clock */
idle_clk_ctrl = <0>;
/* Sub nodes for MFC core */
#address-cells = <2>;
#size-cells = <1>;
ranges;
/* MFC core device */
mfc_core0: MFC-0 {
/* Basic setting */
compatible = "samsung,exynos-mfc-core";
id = <0>;
reg = <0x0 0x1C8D0000 0x10000>;
interrupts = <0 IRQ_MFC_MFC IRQ_TYPE_LEVEL_HIGH>;
clock-names = "aclk_mfc";
clocks = <&clock GATE_MFC>;
iommus = <&sysmmu_mfc0>, <&sysmmu_mfc1>;
samsung,iommu-group = <&iommu_group_mfc>;
samsung,iommu-reserved-map = <0x0 0x10000000 0x100000>;
/* samsung,iommu-identity-map = <0x0 0x15E1F000 0x10000> */
samsung,tzmp;
samsung,imgloader-s2mpu-support;
/* MFC version */
/* ip_ver is set in gs101-a0.dts and gs101-b0.dts */
/* Sysmmu check */
share_sysmmu = <0>;
axid_mask = <0xFFFF>;
mfc_fault_num = <0x0>;
trans_info_offset = <0x1004>;
/* LLC (Last Level Cache) */
llc = <0>;
need_llc_flush = <0>;
/* SLC (System Level Cache) */
pt_id = "MFC";
/* vOTF */
/* mfc_votf_base = <0x16650000>; */
/* gdc_votf_base = <0x15E1F000>; */
/* dpu_votf_base = <0x19CAF000>; */
/* QoS */
num_default_qos_steps = <8>;
num_encoder_qos_steps = <8>;
max_mb = <5480873>;
mfc_freq_control = <1>;
mo_control = <1>;
bw_control = <1>;
/* Device virtual address */
#dma-address-cells = <1>;
#dma-size-cells = <1>;
dma-window = <0x0 0xD0000000>;
/* Sub nodes for sysmmu, hwfc and mmcache */
#address-cells = <2>;
#size-cells = <1>;
ranges;
iommu {
reg = <0x0 0x1C870000 0x9000>,
<0x0 0x1C8A0000 0x9000>;
};
ssmt {
reg = <0x0 0x1C8E4000 0x100>,
<0x0 0x1C8F4000 0x100>;
};
sysreg {
reg = <0x0 0x1C820000 0x500>;
};
/* Default QoS table */
mfc_default_qos_table {
mfc_d_qos_variant_0 {
thrd_mb = <0>;
freq_mfc = <134000>;
freq_int = <100000>;
freq_mif = <421000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <2058>;
};
mfc_d_qos_variant_1 {
thrd_mb = <265147>;
freq_mfc = <267000>;
freq_int = <200000>;
freq_mif = <421000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <1379>;
};
mfc_d_qos_variant_2 {
thrd_mb = <551811>;
freq_mfc = <267000>;
freq_int = <200000>;
freq_mif = <676000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <1046>;
};
mfc_d_qos_variant_3 {
thrd_mb = <1202239>;
freq_mfc = <356000>;
freq_int = <332000>;
freq_mif = <1014000>;
mo_value = <1>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <732>;
};
mfc_d_qos_variant_4 {
thrd_mb = <1887335>;
freq_mfc = <465000>;
freq_int = <332000>;
freq_mif = <1014000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <655>;
};
mfc_d_qos_variant_5 {
thrd_mb = <2088750>;
freq_mfc = <664000>;
freq_int = <332000>;
freq_mif = <1539000>;
mo_value = <1>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "mfc_uhd";
time_fw = <479>;
};
mfc_d_qos_variant_6 {
thrd_mb = <3197754>;
freq_mfc = <664000>;
freq_int = <533000>;
freq_mif = <1539000>;
mo_value = <0>;
mo_10bit_value = <1>;
mo_uhd_enc60_value = <0>;
bts_scen = "mfc_uhd_10bit";
time_fw = <445>;
};
mfc_d_qos_variant_7 {
thrd_mb = <4385292>;
freq_mfc = <711000>;
freq_int = <533000>;
freq_mif = <1539000>;
mo_value = <0>;
mo_10bit_value = <1>;
mo_uhd_enc60_value = <0>;
bts_scen = "mfc_8k_dec30";
time_fw = <445>;
};
};
/* Encoder QoS table */
mfc_encoder_qos_table {
mfc_e_qos_variant_0 {
thrd_mb = <0>;
freq_mfc = <134000>;
freq_int = <100000>;
freq_mif = <421000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <2058>;
};
mfc_e_qos_variant_1 {
thrd_mb = <265147>;
freq_mfc = <267000>;
freq_int = <200000>;
freq_mif = <421000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <1379>;
};
mfc_e_qos_variant_2 {
thrd_mb = <551811>;
freq_mfc = <267000>;
freq_int = <200000>;
freq_mif = <676000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <1046>;
};
mfc_e_qos_variant_3 {
thrd_mb = <1202239>;
freq_mfc = <356000>;
freq_int = <332000>;
freq_mif = <1014000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <732>;
};
mfc_e_qos_variant_4 {
thrd_mb = <1887335>;
freq_mfc = <465000>;
freq_int = <332000>;
freq_mif = <1014000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <655>;
};
mfc_e_qos_variant_5 {
thrd_mb = <2088750>;
freq_mfc = <533000>;
freq_int = <200000>;
freq_mif = <1539000>;
mo_value = <1>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <0>;
bts_scen = "default";
time_fw = <559>;
};
mfc_e_qos_variant_6 {
thrd_mb = <2625764>;
freq_mfc = <664000>;
freq_int = <332000>;
freq_mif = <1539000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <1>;
bts_scen = "mfc_uhd";
time_fw = <479>;
};
mfc_e_qos_variant_7 {
thrd_mb = <3197754>;
freq_mfc = <664000>;
freq_int = <533000>;
freq_mif = <1539000>;
mo_value = <0>;
mo_10bit_value = <0>;
mo_uhd_enc60_value = <1>;
bts_scen = "mfc_uhd_10bit";
time_fw = <445>;
};
};
/* QoS table for performance boost mode */
mfc_perf_boost_table {
num_cluster = <3>;
freq_cluster = <1742000 1898000 1456000>;
freq_mfc = <711000>;
freq_int = <533000>;
freq_mif = <2730000>;
bts_scen = "mfc_8k_dec30";
};
};
};
};