Files
android_kernel_samsung_sm86…/driver/vidc/inc/msm_vidc_platform.h
Akshata Sahukar 37b85f09d6 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>
2021-01-05 12:39:34 -08:00

82 lines
1.9 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*/
#ifndef _MSM_VIDC_PLATFORM_H_
#define _MSM_VIDC_PLATFORM_H_
#include <linux/platform_device.h>
#include "msm_vidc_internal.h"
#include <media/v4l2-ctrls.h>
struct msm_platform_core_capability {
enum msm_vidc_core_capability_type type;
u32 value;
};
struct msm_platform_inst_capability {
enum msm_vidc_inst_capability_type cap;
enum msm_vidc_domain_type domain;
enum msm_vidc_codec_type codec;
s32 min;
s32 max;
u32 step_or_mask;
s32 value;
u32 v4l2_id;
u32 hfi_id;
enum msm_vidc_inst_capability_flags flags;
enum msm_vidc_inst_capability_type parents[MAX_CAP_PARENTS];
enum msm_vidc_inst_capability_type children[MAX_CAP_CHILDREN];
int (*adjust)(void *inst,
struct v4l2_ctrl *ctrl);
int (*set)(void *inst,
enum msm_vidc_inst_capability_type cap_id);
};
struct msm_vidc_csc_coeff {
u32 *vpe_csc_custom_matrix_coeff;
u32 *vpe_csc_custom_bias_coeff;
u32 *vpe_csc_custom_limit_coeff;
};
struct msm_vidc_efuse_data {
u32 start_address;
u32 size;
u32 mask;
u32 shift;
enum efuse_purpose purpose;
};
struct msm_vidc_ubwc_config_data {
u32 max_channels;
u32 mal_length;
u32 highest_bank_bit;
u32 bank_swzl_level;
u32 bank_swz2_level;
u32 bank_swz3_level;
u32 bank_spreading;
};
struct msm_vidc_platform_data {
struct msm_platform_core_capability *core_data;
u32 core_data_size;
struct msm_platform_inst_capability *instance_data;
u32 instance_data_size;
struct allowed_clock_rates_table *allowed_clks_tbl;
u32 allowed_clks_tbl_size;
struct msm_vidc_csc_coeff csc_data;
struct msm_vidc_ubwc_config_data *ubwc_config;
};
struct msm_vidc_platform {
void *core;
struct msm_vidc_platform_data data;
};
int msm_vidc_init_platform(struct platform_device *pdev);
int msm_vidc_deinit_platform(struct platform_device *pdev);
#endif // _MSM_VIDC_PLATFORM_H_