mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 10:11:38 -04:00
drm/msm/dpu: replace VBIF-related array with bare pointers
As we no longer have multiple VBIF instances, it doesn't make sense to keep VBIF data as arrays. Drop the extra wrapping and keep only a single instance of each of the structures. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/707776/ Link: https://lore.kernel.org/r/20260227-drop-vbif-nrt-v1-3-2b97d0438182@oss.qualcomm.com
This commit is contained in:
@@ -286,7 +286,6 @@ enum dpu_wd_timer {
|
||||
|
||||
enum dpu_vbif {
|
||||
VBIF_RT,
|
||||
VBIF_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -886,16 +886,12 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
|
||||
|
||||
static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
|
||||
{
|
||||
int i;
|
||||
|
||||
dpu_kms->hw_intr = NULL;
|
||||
|
||||
/* safe to call these more than once during shutdown */
|
||||
_dpu_kms_mmu_destroy(dpu_kms);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) {
|
||||
dpu_kms->hw_vbif[i] = NULL;
|
||||
}
|
||||
dpu_kms->hw_vbif = NULL;
|
||||
|
||||
dpu_kms_global_obj_fini(dpu_kms);
|
||||
|
||||
@@ -1220,14 +1216,14 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
|
||||
struct dpu_hw_vbif *hw;
|
||||
const struct dpu_vbif_cfg *vbif = dpu_kms->catalog->vbif;
|
||||
|
||||
hw = dpu_hw_vbif_init(dev, vbif, dpu_kms->vbif[vbif->id]);
|
||||
hw = dpu_hw_vbif_init(dev, vbif, dpu_kms->vbif);
|
||||
if (IS_ERR(hw)) {
|
||||
rc = PTR_ERR(hw);
|
||||
DPU_ERROR("failed to init vbif: %d\n", rc);
|
||||
goto err_pm_put;
|
||||
}
|
||||
|
||||
dpu_kms->hw_vbif[vbif->id] = hw;
|
||||
dpu_kms->hw_vbif = hw;
|
||||
|
||||
/* TODO: use the same max_freq as in dpu_kms_hw_init */
|
||||
max_core_clk_rate = dpu_kms_get_clk_rate(dpu_kms, "core");
|
||||
@@ -1343,13 +1339,11 @@ static int dpu_kms_mmap_mdp5(struct dpu_kms *dpu_kms)
|
||||
}
|
||||
DRM_DEBUG("mapped dpu address space @%p\n", dpu_kms->mmio);
|
||||
|
||||
dpu_kms->vbif[VBIF_RT] = msm_ioremap_mdss(mdss_dev,
|
||||
dpu_kms->pdev,
|
||||
"vbif_phys");
|
||||
if (IS_ERR(dpu_kms->vbif[VBIF_RT])) {
|
||||
ret = PTR_ERR(dpu_kms->vbif[VBIF_RT]);
|
||||
dpu_kms->vbif = msm_ioremap_mdss(mdss_dev, dpu_kms->pdev, "vbif_phys");
|
||||
if (IS_ERR(dpu_kms->vbif)) {
|
||||
ret = PTR_ERR(dpu_kms->vbif);
|
||||
DPU_ERROR("vbif register memory map failed: %d\n", ret);
|
||||
dpu_kms->vbif[VBIF_RT] = NULL;
|
||||
dpu_kms->vbif = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1370,11 +1364,11 @@ static int dpu_kms_mmap_dpu(struct dpu_kms *dpu_kms)
|
||||
}
|
||||
DRM_DEBUG("mapped dpu address space @%p\n", dpu_kms->mmio);
|
||||
|
||||
dpu_kms->vbif[VBIF_RT] = msm_ioremap(pdev, "vbif");
|
||||
if (IS_ERR(dpu_kms->vbif[VBIF_RT])) {
|
||||
ret = PTR_ERR(dpu_kms->vbif[VBIF_RT]);
|
||||
dpu_kms->vbif = msm_ioremap(pdev, "vbif");
|
||||
if (IS_ERR(dpu_kms->vbif)) {
|
||||
ret = PTR_ERR(dpu_kms->vbif);
|
||||
DPU_ERROR("vbif register memory map failed: %d\n", ret);
|
||||
dpu_kms->vbif[VBIF_RT] = NULL;
|
||||
dpu_kms->vbif = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ struct dpu_kms {
|
||||
const struct qcom_ubwc_cfg_data *mdss;
|
||||
|
||||
/* io/register spaces: */
|
||||
void __iomem *mmio, *vbif[VBIF_MAX];
|
||||
void __iomem *mmio, *vbif;
|
||||
|
||||
struct regulator *vdd;
|
||||
struct regulator *mmagic;
|
||||
@@ -81,7 +81,7 @@ struct dpu_kms {
|
||||
|
||||
struct dpu_rm rm;
|
||||
|
||||
struct dpu_hw_vbif *hw_vbif[VBIF_MAX];
|
||||
struct dpu_hw_vbif *hw_vbif;
|
||||
struct dpu_hw_mdp *hw_mdp;
|
||||
|
||||
bool has_danger_ctrl;
|
||||
|
||||
@@ -11,14 +11,6 @@
|
||||
#include "dpu_hw_vbif.h"
|
||||
#include "dpu_trace.h"
|
||||
|
||||
static struct dpu_hw_vbif *dpu_get_vbif(struct dpu_kms *dpu_kms, enum dpu_vbif vbif_idx)
|
||||
{
|
||||
if (vbif_idx < ARRAY_SIZE(dpu_kms->hw_vbif))
|
||||
return dpu_kms->hw_vbif[vbif_idx];
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char *dpu_vbif_name(enum dpu_vbif idx)
|
||||
{
|
||||
switch (idx) {
|
||||
@@ -170,7 +162,7 @@ void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms,
|
||||
u32 ot_lim;
|
||||
int ret;
|
||||
|
||||
vbif = dpu_get_vbif(dpu_kms, params->vbif_idx);
|
||||
vbif = dpu_kms->hw_vbif;
|
||||
if (!vbif) {
|
||||
DRM_DEBUG_ATOMIC("invalid arguments vbif %d\n", vbif != NULL);
|
||||
return;
|
||||
@@ -219,7 +211,7 @@ void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms,
|
||||
return;
|
||||
}
|
||||
|
||||
vbif = dpu_get_vbif(dpu_kms, params->vbif_idx);
|
||||
vbif = dpu_kms->hw_vbif;
|
||||
|
||||
if (!vbif || !vbif->cap) {
|
||||
DPU_ERROR("invalid vbif %d\n", params->vbif_idx);
|
||||
@@ -255,16 +247,14 @@ void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms,
|
||||
void dpu_vbif_clear_errors(struct dpu_kms *dpu_kms)
|
||||
{
|
||||
struct dpu_hw_vbif *vbif;
|
||||
u32 i, pnd, src;
|
||||
u32 pnd, src;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) {
|
||||
vbif = dpu_kms->hw_vbif[i];
|
||||
if (vbif && vbif->ops.clear_errors) {
|
||||
vbif->ops.clear_errors(vbif, &pnd, &src);
|
||||
if (pnd || src) {
|
||||
DRM_DEBUG_KMS("%s: pnd 0x%X, src 0x%X\n",
|
||||
dpu_vbif_name(vbif->idx), pnd, src);
|
||||
}
|
||||
vbif = dpu_kms->hw_vbif;
|
||||
if (vbif && vbif->ops.clear_errors) {
|
||||
vbif->ops.clear_errors(vbif, &pnd, &src);
|
||||
if (pnd || src) {
|
||||
DRM_DEBUG_KMS("%s: pnd 0x%X, src 0x%X\n",
|
||||
dpu_vbif_name(vbif->idx), pnd, src);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -276,15 +266,12 @@ void dpu_vbif_clear_errors(struct dpu_kms *dpu_kms)
|
||||
void dpu_vbif_init_memtypes(struct dpu_kms *dpu_kms)
|
||||
{
|
||||
struct dpu_hw_vbif *vbif;
|
||||
int i, j;
|
||||
int j;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) {
|
||||
vbif = dpu_kms->hw_vbif[i];
|
||||
if (vbif && vbif->cap && vbif->ops.set_mem_type) {
|
||||
for (j = 0; j < vbif->cap->memtype_count; j++)
|
||||
vbif->ops.set_mem_type(
|
||||
vbif, j, vbif->cap->memtype[j]);
|
||||
}
|
||||
vbif = dpu_kms->hw_vbif;
|
||||
if (vbif && vbif->cap && vbif->ops.set_mem_type) {
|
||||
for (j = 0; j < vbif->cap->memtype_count; j++)
|
||||
vbif->ops.set_mem_type(vbif, j, vbif->cap->memtype[j]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user