video: driver: add additional platform_data support

Add additional platform_data support for waipio,
pineapple, kalama, anorak targets.

Change-Id: I2def953c88eb4ba41de270bf208da112d4e547bf
Signed-off-by: Govindaraj Rajagopal <quic_grajagop@quicinc.com>
This commit is contained in:
Govindaraj Rajagopal
2022-10-12 19:08:27 +05:30
parent 21eb38981e
commit ca9cc59d28
14 ha cambiato i file con 275 aggiunte e 36 eliminazioni

Vedi File

@@ -9,7 +9,6 @@
#include "msm_vidc_buffer.h"
#include "msm_vidc_inst.h"
#include "msm_vidc_core.h"
#include "msm_vidc_platform.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_debug.h"
#include "msm_media_info.h"
@@ -203,7 +202,7 @@ static u32 msm_vidc_decoder_dpb_size_iris2(struct msm_vidc_inst *inst)
{
u32 size = 0;
u32 color_fmt, v4l2_fmt;
u32 color_fmt;
u32 width, height;
struct v4l2_format *f;

Vedi File

@@ -10,7 +10,6 @@
#include "msm_vidc_core.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_control.h"
#include "msm_vidc_dt.h"
#include "msm_vidc_internal.h"
#include "msm_vidc_buffer.h"
#include "msm_vidc_debug.h"
@@ -442,7 +441,7 @@ static int __power_off_iris2(struct msm_vidc_core *core)
d_vpr_e("%s: failed to unvote buses\n", __func__);
if (!(core->intr_status & WRAPPER_INTR_STATUS_A2HWD_BMSK_IRIS2))
disable_irq_nosync(core->dt->irq);
disable_irq_nosync(core->resource->irq);
core->intr_status = 0;
core->power_enabled = false;
@@ -506,7 +505,7 @@ fail_regulator:
static int __power_on_iris2(struct msm_vidc_core *core)
{
const struct msm_vidc_resources_ops *res_ops = core->res_ops;
struct allowed_clock_rates_table *clk_tbl;
struct frequency_table *freq_tbl;
u32 freq = 0;
int rc = 0;
@@ -534,9 +533,9 @@ static int __power_on_iris2(struct msm_vidc_core *core)
/* video controller and hardware powered on successfully */
core->power_enabled = true;
clk_tbl = core->dt->allowed_clks_tbl;
freq_tbl = core->resource->freq_set.freq_tbl;
freq = core->power.clk_freq ? core->power.clk_freq :
clk_tbl[0].clock_rate;
freq_tbl[0].freq;
rc = res_ops->set_clks(core, freq);
if (rc) {
@@ -554,7 +553,7 @@ static int __power_on_iris2(struct msm_vidc_core *core)
__interrupt_init_iris2(core);
core->intr_status = 0;
enable_irq(core->dt->irq);
enable_irq(core->resource->irq);
return rc;

Vedi File

@@ -8,7 +8,6 @@
#include "msm_vidc_core.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_debug.h"
#include "msm_vidc_dt.h"
u64 msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, u32 data_size)
{
@@ -28,7 +27,7 @@ u64 msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, u32 data_size)
}
core = inst->core;
if (!core->dt) {
if (!core->resource) {
d_vpr_e("%s: invalid params\n", __func__);
return freq;
}

Vedi File

@@ -10,7 +10,6 @@
#include "msm_vidc_buffer.h"
#include "msm_vidc_inst.h"
#include "msm_vidc_core.h"
#include "msm_vidc_platform.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_debug.h"
#include "msm_media_info.h"

Vedi File

@@ -12,7 +12,6 @@
#include "msm_vidc_core.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_control.h"
#include "msm_vidc_dt.h"
#include "msm_vidc_internal.h"
#include "msm_vidc_buffer.h"
#include "msm_vidc_debug.h"
@@ -548,7 +547,7 @@ static int __power_off_iris33(struct msm_vidc_core *core)
d_vpr_e("%s: failed to unvote buses\n", __func__);
if (!(core->intr_status & WRAPPER_INTR_STATUS_A2HWD_BMSK_IRIS33))
disable_irq_nosync(core->dt->irq);
disable_irq_nosync(core->resource->irq);
core->intr_status = 0;
core->power_enabled = false;
@@ -612,7 +611,7 @@ fail_regulator:
static int __power_on_iris33(struct msm_vidc_core *core)
{
const struct msm_vidc_resources_ops *res_ops = core->res_ops;
struct allowed_clock_rates_table *clk_tbl;
struct frequency_table *freq_tbl;
u32 freq = 0;
int rc = 0;
@@ -640,9 +639,9 @@ static int __power_on_iris33(struct msm_vidc_core *core)
/* video controller and hardware powered on successfully */
core->power_enabled = true;
clk_tbl = core->dt->allowed_clks_tbl;
freq_tbl = core->resource->freq_set.freq_tbl;
freq = core->power.clk_freq ? core->power.clk_freq :
clk_tbl[0].clock_rate;
freq_tbl[0].freq;
rc = res_ops->set_clks(core, freq);
if (rc) {
@@ -657,7 +656,7 @@ static int __power_on_iris33(struct msm_vidc_core *core)
__interrupt_init_iris33(core);
core->intr_status = 0;
enable_irq(core->dt->irq);
enable_irq(core->resource->irq);
return rc;

Vedi File

@@ -9,7 +9,6 @@
#include "msm_vidc_core.h"
#include "msm_vidc_driver.h"
#include "msm_vidc_debug.h"
#include "msm_vidc_dt.h"
u64 msm_vidc_calc_freq_iris33(struct msm_vidc_inst *inst, u32 data_size)
{
@@ -27,9 +26,9 @@ u64 msm_vidc_calc_freq_iris33(struct msm_vidc_inst *inst, u32 data_size)
d_vpr_e("%s: invalid params\n", __func__);
return freq;
}
core = inst->core;
if (!core->dt || !core->dt->allowed_clks_tbl) {
if (!core->resource || !core->resource->freq_set.freq_tbl) {
d_vpr_e("%s: invalid params\n", __func__);
return freq;
}
@@ -151,8 +150,8 @@ u64 msm_vidc_calc_freq_iris33(struct msm_vidc_inst *inst, u32 data_size)
u32 bitrate_2stage[2] = {130, 120};
u32 bitrate_1stage = 100;
u32 width, height;
u32 bitrate_entry, freq_entry, frequency_table_value;
struct allowed_clock_rates_table *allowed_clks_tbl;
u32 bitrate_entry, freq_entry, freq_tbl_value;
struct frequency_table *freq_tbl;
struct v4l2_format *out_f = &inst->fmts[OUTPUT_PORT];
width = out_f->fmt.pix_mp.width;
@@ -165,11 +164,11 @@ u64 msm_vidc_calc_freq_iris33(struct msm_vidc_inst *inst, u32 data_size)
freq_entry = bitrate_entry;
allowed_clks_tbl = core->dt->allowed_clks_tbl;
frequency_table_value = allowed_clks_tbl[freq_entry].clock_rate / 1000000;
freq_tbl = core->resource->freq_set.freq_tbl;
freq_tbl_value = freq_tbl[freq_entry].freq / 1000000;
input_bitrate_mbps = fps * data_size * 8 / (1024 * 1024);
vsp_hw_min_frequency = frequency_table_value * 1000 * input_bitrate_mbps;
vsp_hw_min_frequency = freq_tbl_value * 1000 * input_bitrate_mbps;
if (inst->capabilities->cap[STAGE].value == MSM_VIDC_STAGE_2) {
vsp_hw_min_frequency +=
@@ -233,9 +232,9 @@ u64 msm_vidc_calc_freq_iris33(struct msm_vidc_inst *inst, u32 data_size)
* for non-AV1 codecs limit the frequency to NOM only
* index 0 is TURBO, index 1 is NOM clock rate
*/
if (core->dt->allowed_clks_tbl_size >= 2 &&
freq > core->dt->allowed_clks_tbl[1].clock_rate)
freq = core->dt->allowed_clks_tbl[1].clock_rate;
if (core->resource->freq_set.count >= 2 &&
freq > core->resource->freq_set.freq_tbl[1].freq)
freq = core->resource->freq_set.freq_tbl[1].freq;
}
i_vpr_p(inst, "%s: filled len %d, required freq %llu, fps %u, mbpf %u\n",