video: driver: update ubwc settings

Amend UBWC settings to firmware for processing
UBWC data.

Change-Id: Ia15f6117cc3182344ff96c54cce02ca2f8185eb1
Signed-off-by: Akshata Sahukar <asahukar@codeaurora.org>
此提交包含在:
Akshata Sahukar
2021-01-05 12:05:14 -08:00
父節點 a96377f69b
當前提交 37b85f09d6
共有 4 個檔案被更改,包括 16 行新增24 行删除

查看文件

@@ -19,18 +19,14 @@
#define DDR_TYPE_LPDDR5X 0x9 #define DDR_TYPE_LPDDR5X 0x9
#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 #define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010
#define UBWC_CONFIG(mco, mlo, hbo, bslo, bso, rs, mc, ml, hbb, bsl, bsp) \ #define UBWC_CONFIG(mc, ml, hbb, bs1, bs2, bs3, bsp) \
{ \ { \
.override_bit_info.max_channel_override = mco, \
.override_bit_info.mal_length_override = mlo, \
.override_bit_info.hb_override = hbo, \
.override_bit_info.bank_swzl_level_override = bslo, \
.override_bit_info.bank_spreading_override = bso, \
.override_bit_info.reserved = rs, \
.max_channels = mc, \ .max_channels = mc, \
.mal_length = ml, \ .mal_length = ml, \
.highest_bank_bit = hbb, \ .highest_bank_bit = hbb, \
.bank_swzl_level = bsl, \ .bank_swzl_level = bs1, \
.bank_swz2_level = bs2, \
.bank_swz3_level = bs3, \
.bank_spreading = bsp, \ .bank_spreading = bsp, \
} }
@@ -1043,7 +1039,7 @@ static u32 vpe_csc_custom_limit_coeff[MAX_LIMIT_COEFFS] = {
/* Default UBWC config for LPDDR5 */ /* Default UBWC config for LPDDR5 */
static struct msm_vidc_ubwc_config_data ubwc_config_waipio[] = { static struct msm_vidc_ubwc_config_data ubwc_config_waipio[] = {
UBWC_CONFIG(1, 1, 1, 0, 0, 0, 8, 32, 16, 0, 0), UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1),
}; };
static struct msm_vidc_platform_data waipio_data = { static struct msm_vidc_platform_data waipio_data = {

查看文件

@@ -50,17 +50,6 @@ struct msm_vidc_efuse_data {
}; };
struct msm_vidc_ubwc_config_data { struct msm_vidc_ubwc_config_data {
struct {
u32 max_channel_override : 1;
u32 mal_length_override : 1;
u32 hb_override : 1;
u32 bank_swzl_level_override : 1;
u32 bank_swz2_level_override : 1;
u32 bank_swz3_level_override : 1;
u32 bank_spreading_override : 1;
u32 reserved : 27;
} override_bit_info;
u32 max_channels; u32 max_channels;
u32 mal_length; u32 mal_length;
u32 highest_bank_bit; u32 highest_bank_bit;

查看文件

@@ -334,6 +334,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_CMD_SYSTEM_INIT */ /* HFI_CMD_SYSTEM_INIT */
payload = HFI_VIDEO_ARCH_LX; payload = HFI_VIDEO_ARCH_LX;
d_vpr_h("%s: arch %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_CMD_INIT, HFI_CMD_INIT,
(HFI_HOST_FLAGS_RESPONSE_REQUIRED | (HFI_HOST_FLAGS_RESPONSE_REQUIRED |
@@ -349,6 +350,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_INTRA_FRAME_POWER_COLLAPSE */ /* HFI_PROP_INTRA_FRAME_POWER_COLLAPSE */
payload = 0; payload = 0;
d_vpr_h("%s: intra frame power collapse %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_INTRA_FRAME_POWER_COLLAPSE, HFI_PROP_INTRA_FRAME_POWER_COLLAPSE,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -362,6 +364,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_MAX_CHANNELS */ /* HFI_PROP_UBWC_MAX_CHANNELS */
payload = core->platform->data.ubwc_config->max_channels; payload = core->platform->data.ubwc_config->max_channels;
d_vpr_h("%s: ubwc max channels %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_MAX_CHANNELS, HFI_PROP_UBWC_MAX_CHANNELS,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -375,6 +378,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_MAL_LENGTH */ /* HFI_PROP_UBWC_MAL_LENGTH */
payload = core->platform->data.ubwc_config->mal_length; payload = core->platform->data.ubwc_config->mal_length;
d_vpr_h("%s: ubwc mal length %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_MAL_LENGTH, HFI_PROP_UBWC_MAL_LENGTH,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -388,6 +392,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_HBB */ /* HFI_PROP_UBWC_HBB */
payload = core->platform->data.ubwc_config->highest_bank_bit; payload = core->platform->data.ubwc_config->highest_bank_bit;
d_vpr_h("%s: ubwc hbb %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_HBB, HFI_PROP_UBWC_HBB,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -401,6 +406,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_BANK_SWZL_LEVEL1 */ /* HFI_PROP_UBWC_BANK_SWZL_LEVEL1 */
payload = core->platform->data.ubwc_config->bank_swzl_level; payload = core->platform->data.ubwc_config->bank_swzl_level;
d_vpr_h("%s: ubwc swzl1 %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_BANK_SWZL_LEVEL1, HFI_PROP_UBWC_BANK_SWZL_LEVEL1,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -414,6 +420,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_BANK_SWZL_LEVEL2 */ /* HFI_PROP_UBWC_BANK_SWZL_LEVEL2 */
payload = core->platform->data.ubwc_config->bank_swz2_level; payload = core->platform->data.ubwc_config->bank_swz2_level;
d_vpr_h("%s: ubwc swzl2 %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_BANK_SWZL_LEVEL2, HFI_PROP_UBWC_BANK_SWZL_LEVEL2,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -427,6 +434,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_BANK_SWZL_LEVEL3 */ /* HFI_PROP_UBWC_BANK_SWZL_LEVEL3 */
payload = core->platform->data.ubwc_config->bank_swz3_level; payload = core->platform->data.ubwc_config->bank_swz3_level;
d_vpr_h("%s: ubwc swzl3 %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_BANK_SWZL_LEVEL3, HFI_PROP_UBWC_BANK_SWZL_LEVEL3,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,
@@ -440,6 +448,7 @@ int hfi_packet_sys_init(struct msm_vidc_core *core,
/* HFI_PROP_UBWC_BANK_SPREADING */ /* HFI_PROP_UBWC_BANK_SPREADING */
payload = core->platform->data.ubwc_config->bank_spreading; payload = core->platform->data.ubwc_config->bank_spreading;
d_vpr_h("%s: ubwc bank spreading %d\n", __func__, payload);
rc = hfi_create_packet(pkt, pkt_size, rc = hfi_create_packet(pkt, pkt_size,
HFI_PROP_UBWC_BANK_SPREADING, HFI_PROP_UBWC_BANK_SPREADING,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,

查看文件

@@ -181,11 +181,9 @@ static int msm_venc_set_raw_resolution(struct msm_vidc_inst *inst,
return -EINVAL; return -EINVAL;
} }
resolution = inst->fmts[port].fmt.pix_mp.width << 16 | resolution = inst->crop.width << 16 | inst->crop.height;
inst->fmts[port].fmt.pix_mp.height;
s_vpr_h(inst->sid, "%s: width: %d height: %d\n", __func__, s_vpr_h(inst->sid, "%s: width: %d height: %d\n", __func__,
inst->fmts[port].fmt.pix_mp.width, inst->crop.width, inst->crop.height);
inst->fmts[port].fmt.pix_mp.height);
rc = venus_hfi_session_property(inst, rc = venus_hfi_session_property(inst,
HFI_PROP_RAW_RESOLUTION, HFI_PROP_RAW_RESOLUTION,
HFI_HOST_FLAGS_NONE, HFI_HOST_FLAGS_NONE,