Loading msm/sde/sde_crtc.c +3 −3 Original line number Diff line number Diff line Loading @@ -5124,11 +5124,11 @@ static void sde_crtc_setup_capabilities_blob(struct sde_kms_info *info, sde_kms_info_add_keyint(info, "max_blendstages", catalog->max_mixer_blendstages); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED2) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) sde_kms_info_add_keystr(info, "qseed_type", "qseed2"); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED3) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) sde_kms_info_add_keystr(info, "qseed_type", "qseed3"); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED3LITE) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE) sde_kms_info_add_keystr(info, "qseed_type", "qseed3lite"); if (catalog->ubwc_version) { Loading msm/sde/sde_hw_catalog.c +26 −18 Original line number Diff line number Diff line Loading @@ -186,7 +186,8 @@ enum sde_prop { UBWC_VERSION, UBWC_STATIC, UBWC_SWIZZLE, QSEED_TYPE, QSEED_SW_LIB_REV, QSEED_HW_VERSION, CSC_TYPE, PANIC_PER_PIPE, SRC_SPLIT, Loading Loading @@ -550,7 +551,10 @@ static struct sde_prop_type sde_prop[] = { {UBWC_VERSION, "qcom,sde-ubwc-version", false, PROP_TYPE_U32}, {UBWC_STATIC, "qcom,sde-ubwc-static", false, PROP_TYPE_U32}, {UBWC_SWIZZLE, "qcom,sde-ubwc-swizzle", false, PROP_TYPE_U32}, {QSEED_TYPE, "qcom,sde-qseed-type", false, PROP_TYPE_STRING}, {QSEED_SW_LIB_REV, "qcom,sde-qseed-sw-lib-rev", false, PROP_TYPE_STRING}, {QSEED_HW_VERSION, "qcom,sde-qseed-scalar-version", false, PROP_TYPE_U32}, {CSC_TYPE, "qcom,sde-csc-type", false, PROP_TYPE_STRING}, {PANIC_PER_PIPE, "qcom,sde-panic-per-pipe", false, PROP_TYPE_BOOL}, {SRC_SPLIT, "qcom,sde-has-src-split", false, PROP_TYPE_BOOL}, Loading Loading @@ -1438,11 +1442,11 @@ static int _sde_sspp_setup_vigs(struct device_node *np, sblk->format_list = sde_cfg->vig_formats; sblk->virt_format_list = sde_cfg->virt_vig_formats; if ((sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3LITE)) { set_bit(sde_cfg->qseed_type, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_type; if ((sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE)) { set_bit(sde_cfg->qseed_sw_lib_rev, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_sw_lib_rev; sblk->scaler_blk.base = PROP_VALUE_ACCESS(props->values, VIG_QSEED_OFF, 0); sblk->scaler_blk.len = PROP_VALUE_ACCESS(props->values, Loading Loading @@ -1554,10 +1558,10 @@ static int _sde_sspp_setup_rgbs(struct device_node *np, set_bit(SDE_PERF_SSPP_QOS_8LVL, &sspp->perf_features); rgb_count++; if ((sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3)) { if ((sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3)) { set_bit(SDE_SSPP_SCALER_RGB, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_type; sblk->scaler_blk.id = sde_cfg->qseed_sw_lib_rev; sblk->scaler_blk.base = PROP_VALUE_ACCESS(props->values, RGB_SCALER_OFF, 0); sblk->scaler_blk.len = PROP_VALUE_ACCESS(props->values, Loading Loading @@ -2882,9 +2886,10 @@ static int sde_ds_parse_dt(struct device_node *np, if (!prop_exists[DS_LEN]) ds->len = DEFAULT_SDE_HW_BLOCK_LEN; if (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3) if (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) set_bit(SDE_SSPP_SCALER_QSEED3, &ds->features); else if (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3LITE) else if (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE) set_bit(SDE_SSPP_SCALER_QSEED3LITE, &ds->features); } Loading Loading @@ -3726,6 +3731,8 @@ static void _sde_top_parse_dt_helper(struct sde_mdss_cfg *cfg, cfg->pipe_order_type = PROP_VALUE_ACCESS(props->values, PIPE_ORDER_VERSION, 0); cfg->has_base_layer = PROP_VALUE_ACCESS(props->values, BASE_LAYER, 0); cfg->qseed_hw_version = PROP_VALUE_ACCESS(props->values, QSEED_HW_VERSION, 0); } static int sde_top_parse_dt(struct device_node *np, struct sde_mdss_cfg *cfg) Loading Loading @@ -3787,20 +3794,21 @@ static int sde_top_parse_dt(struct device_node *np, struct sde_mdss_cfg *cfg) if (rc) goto end; rc = of_property_read_string(np, sde_prop[QSEED_TYPE].prop_name, &type); rc = of_property_read_string(np, sde_prop[QSEED_SW_LIB_REV].prop_name, &type); if (rc) { SDE_DEBUG("invalid %s node in device tree: %d\n", sde_prop[QSEED_TYPE].prop_name, rc); sde_prop[QSEED_SW_LIB_REV].prop_name, rc); rc = 0; } else if (!strcmp(type, "qseedv3")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED3; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED3; } else if (!strcmp(type, "qseedv3lite")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED3LITE; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED3LITE; } else if (!strcmp(type, "qseedv2")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED2; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED2; } else { SDE_DEBUG("Unknown type %s for property %s\n", type, sde_prop[QSEED_TYPE].prop_name); sde_prop[QSEED_SW_LIB_REV].prop_name); } rc = of_property_read_string(np, sde_prop[CSC_TYPE].prop_name, &type); Loading msm/sde/sde_hw_catalog.h +5 −3 Original line number Diff line number Diff line Loading @@ -1374,7 +1374,6 @@ struct sde_perf_cfg { * @min_display_width minimum display width support. * @min_display_height minimum display height support. * @qseed_type qseed2 or qseed3 support. * @csc_type csc or csc_10bit support. * @smart_dma_rev Supported version of SmartDMA feature. * @ctl_rev supported version of control path. Loading Loading @@ -1409,6 +1408,8 @@ struct sde_perf_cfg { * @dither_luma_mode_support Enables dither luma mode * @has_base_layer Supports staging layer as base layer * @demura_supported Demura pipe support flag(~0x00 - Not supported) * @qseed_sw_lib_rev qseed sw library type supporting the qseed hw * @qseed_hw_version qseed hw version of the target * @sc_cfg: system cache configuration * @uidle_cfg Settings for uidle feature * @sui_misr_supported indicate if secure-ui-misr is supported Loading Loading @@ -1446,7 +1447,6 @@ struct sde_mdss_cfg { u32 min_display_width; u32 min_display_height; u32 qseed_type; u32 csc_type; u32 smart_dma_rev; u32 ctl_rev; Loading Loading @@ -1476,6 +1476,8 @@ struct sde_mdss_cfg { bool has_base_layer; bool has_demura; u32 demura_supported[SSPP_MAX][2]; u32 qseed_sw_lib_rev; u32 qseed_hw_version; struct sde_sc_cfg sc_cfg[SDE_SYS_CACHE_MAX]; Loading msm/sde/sde_hw_ds.c +4 −15 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. */ #include "sde_hw_ds.h" Loading @@ -20,14 +20,6 @@ static void sde_hw_ds_setup_opmode(struct sde_hw_ds *hw_ds, SDE_REG_WRITE(hw, DEST_SCALER_OP_MODE, op_mode); } static u32 _sde_hw_ds_get_scaler3_ver(struct sde_hw_ds *ctx) { if (!ctx) return 0; return sde_hw_get_scaler3_ver(&ctx->hw, ctx->scl->base); } static void sde_hw_ds_setup_scaler3(struct sde_hw_ds *hw_ds, void *scaler_cfg, void *scaler_lut_cfg) { Loading Loading @@ -59,11 +51,9 @@ static void _setup_ds_ops(struct sde_hw_ds_ops *ops, unsigned long features) ops->setup_opmode = sde_hw_ds_setup_opmode; if (test_bit(SDE_SSPP_SCALER_QSEED3, &features) || test_bit(SDE_SSPP_SCALER_QSEED3LITE, &features)) { ops->get_scaler_ver = _sde_hw_ds_get_scaler3_ver; test_bit(SDE_SSPP_SCALER_QSEED3LITE, &features)) ops->setup_scaler = sde_hw_ds_setup_scaler3; } } static struct sde_ds_cfg *_ds_offset(enum sde_ds ds, struct sde_mdss_cfg *m, Loading Loading @@ -122,9 +112,8 @@ struct sde_hw_ds *sde_hw_ds_init(enum sde_ds idx, hw_ds->scl = cfg; _setup_ds_ops(&hw_ds->ops, hw_ds->scl->features); if (hw_ds->ops.get_scaler_ver) hw_ds->scl->version = hw_ds->ops.get_scaler_ver(hw_ds); if (m->qseed_hw_version) hw_ds->scl->version = m->qseed_hw_version; rc = sde_hw_blk_init(&hw_ds->base, SDE_HW_BLK_DS, idx, &sde_hw_ops); if (rc) { Loading msm/sde/sde_hw_ds.h +1 −8 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. */ #ifndef _SDE_HW_DS_H Loading Loading @@ -58,13 +58,6 @@ struct sde_hw_ds_ops { void (*setup_scaler)(struct sde_hw_ds *hw_ds, void *scaler_cfg, void *scaler_lut_cfg); /** * get_scaler_ver - get scaler h/w version * @ctx: Pointer to ds structure */ u32 (*get_scaler_ver)(struct sde_hw_ds *ctx); }; /** Loading Loading
msm/sde/sde_crtc.c +3 −3 Original line number Diff line number Diff line Loading @@ -5124,11 +5124,11 @@ static void sde_crtc_setup_capabilities_blob(struct sde_kms_info *info, sde_kms_info_add_keyint(info, "max_blendstages", catalog->max_mixer_blendstages); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED2) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) sde_kms_info_add_keystr(info, "qseed_type", "qseed2"); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED3) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) sde_kms_info_add_keystr(info, "qseed_type", "qseed3"); if (catalog->qseed_type == SDE_SSPP_SCALER_QSEED3LITE) if (catalog->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE) sde_kms_info_add_keystr(info, "qseed_type", "qseed3lite"); if (catalog->ubwc_version) { Loading
msm/sde/sde_hw_catalog.c +26 −18 Original line number Diff line number Diff line Loading @@ -186,7 +186,8 @@ enum sde_prop { UBWC_VERSION, UBWC_STATIC, UBWC_SWIZZLE, QSEED_TYPE, QSEED_SW_LIB_REV, QSEED_HW_VERSION, CSC_TYPE, PANIC_PER_PIPE, SRC_SPLIT, Loading Loading @@ -550,7 +551,10 @@ static struct sde_prop_type sde_prop[] = { {UBWC_VERSION, "qcom,sde-ubwc-version", false, PROP_TYPE_U32}, {UBWC_STATIC, "qcom,sde-ubwc-static", false, PROP_TYPE_U32}, {UBWC_SWIZZLE, "qcom,sde-ubwc-swizzle", false, PROP_TYPE_U32}, {QSEED_TYPE, "qcom,sde-qseed-type", false, PROP_TYPE_STRING}, {QSEED_SW_LIB_REV, "qcom,sde-qseed-sw-lib-rev", false, PROP_TYPE_STRING}, {QSEED_HW_VERSION, "qcom,sde-qseed-scalar-version", false, PROP_TYPE_U32}, {CSC_TYPE, "qcom,sde-csc-type", false, PROP_TYPE_STRING}, {PANIC_PER_PIPE, "qcom,sde-panic-per-pipe", false, PROP_TYPE_BOOL}, {SRC_SPLIT, "qcom,sde-has-src-split", false, PROP_TYPE_BOOL}, Loading Loading @@ -1438,11 +1442,11 @@ static int _sde_sspp_setup_vigs(struct device_node *np, sblk->format_list = sde_cfg->vig_formats; sblk->virt_format_list = sde_cfg->virt_vig_formats; if ((sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3LITE)) { set_bit(sde_cfg->qseed_type, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_type; if ((sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE)) { set_bit(sde_cfg->qseed_sw_lib_rev, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_sw_lib_rev; sblk->scaler_blk.base = PROP_VALUE_ACCESS(props->values, VIG_QSEED_OFF, 0); sblk->scaler_blk.len = PROP_VALUE_ACCESS(props->values, Loading Loading @@ -1554,10 +1558,10 @@ static int _sde_sspp_setup_rgbs(struct device_node *np, set_bit(SDE_PERF_SSPP_QOS_8LVL, &sspp->perf_features); rgb_count++; if ((sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3)) { if ((sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED2) || (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3)) { set_bit(SDE_SSPP_SCALER_RGB, &sspp->features); sblk->scaler_blk.id = sde_cfg->qseed_type; sblk->scaler_blk.id = sde_cfg->qseed_sw_lib_rev; sblk->scaler_blk.base = PROP_VALUE_ACCESS(props->values, RGB_SCALER_OFF, 0); sblk->scaler_blk.len = PROP_VALUE_ACCESS(props->values, Loading Loading @@ -2882,9 +2886,10 @@ static int sde_ds_parse_dt(struct device_node *np, if (!prop_exists[DS_LEN]) ds->len = DEFAULT_SDE_HW_BLOCK_LEN; if (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3) if (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3) set_bit(SDE_SSPP_SCALER_QSEED3, &ds->features); else if (sde_cfg->qseed_type == SDE_SSPP_SCALER_QSEED3LITE) else if (sde_cfg->qseed_sw_lib_rev == SDE_SSPP_SCALER_QSEED3LITE) set_bit(SDE_SSPP_SCALER_QSEED3LITE, &ds->features); } Loading Loading @@ -3726,6 +3731,8 @@ static void _sde_top_parse_dt_helper(struct sde_mdss_cfg *cfg, cfg->pipe_order_type = PROP_VALUE_ACCESS(props->values, PIPE_ORDER_VERSION, 0); cfg->has_base_layer = PROP_VALUE_ACCESS(props->values, BASE_LAYER, 0); cfg->qseed_hw_version = PROP_VALUE_ACCESS(props->values, QSEED_HW_VERSION, 0); } static int sde_top_parse_dt(struct device_node *np, struct sde_mdss_cfg *cfg) Loading Loading @@ -3787,20 +3794,21 @@ static int sde_top_parse_dt(struct device_node *np, struct sde_mdss_cfg *cfg) if (rc) goto end; rc = of_property_read_string(np, sde_prop[QSEED_TYPE].prop_name, &type); rc = of_property_read_string(np, sde_prop[QSEED_SW_LIB_REV].prop_name, &type); if (rc) { SDE_DEBUG("invalid %s node in device tree: %d\n", sde_prop[QSEED_TYPE].prop_name, rc); sde_prop[QSEED_SW_LIB_REV].prop_name, rc); rc = 0; } else if (!strcmp(type, "qseedv3")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED3; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED3; } else if (!strcmp(type, "qseedv3lite")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED3LITE; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED3LITE; } else if (!strcmp(type, "qseedv2")) { cfg->qseed_type = SDE_SSPP_SCALER_QSEED2; cfg->qseed_sw_lib_rev = SDE_SSPP_SCALER_QSEED2; } else { SDE_DEBUG("Unknown type %s for property %s\n", type, sde_prop[QSEED_TYPE].prop_name); sde_prop[QSEED_SW_LIB_REV].prop_name); } rc = of_property_read_string(np, sde_prop[CSC_TYPE].prop_name, &type); Loading
msm/sde/sde_hw_catalog.h +5 −3 Original line number Diff line number Diff line Loading @@ -1374,7 +1374,6 @@ struct sde_perf_cfg { * @min_display_width minimum display width support. * @min_display_height minimum display height support. * @qseed_type qseed2 or qseed3 support. * @csc_type csc or csc_10bit support. * @smart_dma_rev Supported version of SmartDMA feature. * @ctl_rev supported version of control path. Loading Loading @@ -1409,6 +1408,8 @@ struct sde_perf_cfg { * @dither_luma_mode_support Enables dither luma mode * @has_base_layer Supports staging layer as base layer * @demura_supported Demura pipe support flag(~0x00 - Not supported) * @qseed_sw_lib_rev qseed sw library type supporting the qseed hw * @qseed_hw_version qseed hw version of the target * @sc_cfg: system cache configuration * @uidle_cfg Settings for uidle feature * @sui_misr_supported indicate if secure-ui-misr is supported Loading Loading @@ -1446,7 +1447,6 @@ struct sde_mdss_cfg { u32 min_display_width; u32 min_display_height; u32 qseed_type; u32 csc_type; u32 smart_dma_rev; u32 ctl_rev; Loading Loading @@ -1476,6 +1476,8 @@ struct sde_mdss_cfg { bool has_base_layer; bool has_demura; u32 demura_supported[SSPP_MAX][2]; u32 qseed_sw_lib_rev; u32 qseed_hw_version; struct sde_sc_cfg sc_cfg[SDE_SYS_CACHE_MAX]; Loading
msm/sde/sde_hw_ds.c +4 −15 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. */ #include "sde_hw_ds.h" Loading @@ -20,14 +20,6 @@ static void sde_hw_ds_setup_opmode(struct sde_hw_ds *hw_ds, SDE_REG_WRITE(hw, DEST_SCALER_OP_MODE, op_mode); } static u32 _sde_hw_ds_get_scaler3_ver(struct sde_hw_ds *ctx) { if (!ctx) return 0; return sde_hw_get_scaler3_ver(&ctx->hw, ctx->scl->base); } static void sde_hw_ds_setup_scaler3(struct sde_hw_ds *hw_ds, void *scaler_cfg, void *scaler_lut_cfg) { Loading Loading @@ -59,11 +51,9 @@ static void _setup_ds_ops(struct sde_hw_ds_ops *ops, unsigned long features) ops->setup_opmode = sde_hw_ds_setup_opmode; if (test_bit(SDE_SSPP_SCALER_QSEED3, &features) || test_bit(SDE_SSPP_SCALER_QSEED3LITE, &features)) { ops->get_scaler_ver = _sde_hw_ds_get_scaler3_ver; test_bit(SDE_SSPP_SCALER_QSEED3LITE, &features)) ops->setup_scaler = sde_hw_ds_setup_scaler3; } } static struct sde_ds_cfg *_ds_offset(enum sde_ds ds, struct sde_mdss_cfg *m, Loading Loading @@ -122,9 +112,8 @@ struct sde_hw_ds *sde_hw_ds_init(enum sde_ds idx, hw_ds->scl = cfg; _setup_ds_ops(&hw_ds->ops, hw_ds->scl->features); if (hw_ds->ops.get_scaler_ver) hw_ds->scl->version = hw_ds->ops.get_scaler_ver(hw_ds); if (m->qseed_hw_version) hw_ds->scl->version = m->qseed_hw_version; rc = sde_hw_blk_init(&hw_ds->base, SDE_HW_BLK_DS, idx, &sde_hw_ops); if (rc) { Loading
msm/sde/sde_hw_ds.h +1 −8 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. */ #ifndef _SDE_HW_DS_H Loading Loading @@ -58,13 +58,6 @@ struct sde_hw_ds_ops { void (*setup_scaler)(struct sde_hw_ds *hw_ds, void *scaler_cfg, void *scaler_lut_cfg); /** * get_scaler_ver - get scaler h/w version * @ctx: Pointer to ds structure */ u32 (*get_scaler_ver)(struct sde_hw_ds *ctx); }; /** Loading