summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/msm/disp
diff options
context:
space:
mode:
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>2026-05-21 23:36:50 +0300
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>2026-05-21 23:36:50 +0300
commit5c8cbca290acdd49a694b36c0af76ba0c00bbf12 (patch)
tree9badfc236a65de7da92dc3cb528f53f56345f026 /drivers/gpu/drm/msm/disp
parentdb339b6bc9f234b4883eb02946ea01d8d9faa11c (diff)
parentc5e3f2a3abcb925f0364df09abfd759ff0590454 (diff)
downloadlwn-5c8cbca290acdd49a694b36c0af76ba0c00bbf12.tar.gz
lwn-5c8cbca290acdd49a694b36c0af76ba0c00bbf12.zip
Merge branch '20260507-ubwc-rework-v4-4-c19593d20c1d@oss.qualcomm.com' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into HEAD
Merge the branch with the soc/qcom changes, required for the next UBWC patches. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Diffstat (limited to 'drivers/gpu/drm/msm/disp')
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c6
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c41
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c2
-rw-r--r--drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c3
-rw-r--r--drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c40
-rw-r--r--drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c2
-rw-r--r--drivers/gpu/drm/msm/disp/msm_disp_snapshot.c2
-rw-r--r--drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c2
8 files changed, 50 insertions, 48 deletions
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index bd0e720b484f..411a6fa832b5 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -883,7 +883,7 @@ static void _dpu_crtc_setup_cp_blocks(struct drm_crtc *crtc)
if (!state->gamma_lut) {
dspp->ops.setup_gc(dspp, NULL);
} else {
- gc_lut = kzalloc(sizeof(*gc_lut), GFP_KERNEL);
+ gc_lut = kzalloc_obj(*gc_lut);
if (!gc_lut)
continue;
_dpu_crtc_get_gc_lut(state, gc_lut);
@@ -1142,7 +1142,7 @@ end:
static void dpu_crtc_reset(struct drm_crtc *crtc)
{
- struct dpu_crtc_state *cstate = kzalloc(sizeof(*cstate), GFP_KERNEL);
+ struct dpu_crtc_state *cstate = kzalloc_obj(*cstate);
if (crtc->state)
dpu_crtc_destroy_state(crtc, crtc->state);
@@ -1337,7 +1337,7 @@ static int dpu_crtc_assign_planes(struct drm_crtc *crtc, struct drm_crtc_state *
if (!crtc_state->enable)
return 0;
- states = kcalloc(total_planes, sizeof(*states), GFP_KERNEL);
+ states = kzalloc_objs(*states, total_planes);
if (!states)
return -ENOMEM;
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 3a923bf6d2b2..35f7af4743d7 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -367,6 +367,24 @@ static void dpu_kms_global_destroy_state(struct drm_private_obj *obj,
kfree(dpu_state);
}
+static struct drm_private_state *
+dpu_kms_global_create_state(struct drm_private_obj *obj)
+{
+ struct drm_device *dev = obj->dev;
+ struct msm_drm_private *priv = dev->dev_private;
+ struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
+ struct dpu_global_state *dpu_state;
+
+ dpu_state = kzalloc_obj(*dpu_state);
+ if (!dpu_state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_private_obj_create_state(obj, &dpu_state->base);
+ dpu_state->rm = &dpu_kms->rm;
+
+ return &dpu_state->base;
+}
+
static void dpu_kms_global_print_state(struct drm_printer *p,
const struct drm_private_state *state)
{
@@ -376,28 +394,12 @@ static void dpu_kms_global_print_state(struct drm_printer *p,
}
static const struct drm_private_state_funcs dpu_kms_global_state_funcs = {
+ .atomic_create_state = dpu_kms_global_create_state,
.atomic_duplicate_state = dpu_kms_global_duplicate_state,
.atomic_destroy_state = dpu_kms_global_destroy_state,
.atomic_print_state = dpu_kms_global_print_state,
};
-static int dpu_kms_global_obj_init(struct dpu_kms *dpu_kms)
-{
- struct dpu_global_state *state;
-
- state = kzalloc(sizeof(*state), GFP_KERNEL);
- if (!state)
- return -ENOMEM;
-
- drm_atomic_private_obj_init(dpu_kms->dev, &dpu_kms->global_state,
- &state->base,
- &dpu_kms_global_state_funcs);
-
- state->rm = &dpu_kms->rm;
-
- return 0;
-}
-
static void dpu_kms_global_obj_fini(struct dpu_kms *dpu_kms)
{
drm_atomic_private_obj_fini(&dpu_kms->global_state);
@@ -1152,9 +1154,8 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
dev->mode_config.cursor_width = 512;
dev->mode_config.cursor_height = 512;
- rc = dpu_kms_global_obj_init(dpu_kms);
- if (rc)
- return rc;
+ drm_atomic_private_obj_init(dpu_kms->dev, &dpu_kms->global_state,
+ &dpu_kms_global_state_funcs);
atomic_set(&dpu_kms->bandwidth_ref, 0);
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index 22d80b6ef8a4..3c315d5805b8 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -1747,7 +1747,7 @@ static void dpu_plane_reset(struct drm_plane *plane)
plane->state = NULL;
}
- pstate = kzalloc(sizeof(*pstate), GFP_KERNEL);
+ pstate = kzalloc_obj(*pstate);
if (!pstate) {
DPU_ERROR_PLANE(pdpu, "failed to allocate state\n");
return;
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
index 373ae7d9bf01..b29541bc4843 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
@@ -1130,8 +1130,7 @@ static void mdp5_crtc_destroy_state(struct drm_crtc *crtc, struct drm_crtc_state
static void mdp5_crtc_reset(struct drm_crtc *crtc)
{
- struct mdp5_crtc_state *mdp5_cstate =
- kzalloc(sizeof(*mdp5_cstate), GFP_KERNEL);
+ struct mdp5_crtc_state *mdp5_cstate = kzalloc_obj(*mdp5_cstate);
if (crtc->state)
mdp5_crtc_destroy_state(crtc, crtc->state);
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index 61edf6864092..2d26b07b06f5 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -114,6 +114,24 @@ static void mdp5_global_destroy_state(struct drm_private_obj *obj,
kfree(mdp5_state);
}
+static struct drm_private_state *
+mdp5_global_create_state(struct drm_private_obj *obj)
+{
+ struct drm_device *dev = obj->dev;
+ struct msm_drm_private *priv = dev->dev_private;
+ struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
+ struct mdp5_global_state *mdp5_state;
+
+ mdp5_state = kzalloc_obj(*mdp5_state);
+ if (!mdp5_state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_private_obj_create_state(obj, &mdp5_state->base);
+ mdp5_state->mdp5_kms = mdp5_kms;
+
+ return &mdp5_state->base;
+}
+
static void mdp5_global_print_state(struct drm_printer *p,
const struct drm_private_state *state)
{
@@ -124,27 +142,12 @@ static void mdp5_global_print_state(struct drm_printer *p,
}
static const struct drm_private_state_funcs mdp5_global_state_funcs = {
+ .atomic_create_state = mdp5_global_create_state,
.atomic_duplicate_state = mdp5_global_duplicate_state,
.atomic_destroy_state = mdp5_global_destroy_state,
.atomic_print_state = mdp5_global_print_state,
};
-static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
-{
- struct mdp5_global_state *state;
-
- state = kzalloc(sizeof(*state), GFP_KERNEL);
- if (!state)
- return -ENOMEM;
-
- state->mdp5_kms = mdp5_kms;
-
- drm_atomic_private_obj_init(mdp5_kms->dev, &mdp5_kms->glob_state,
- &state->base,
- &mdp5_global_state_funcs);
- return 0;
-}
-
static void mdp5_enable_commit(struct msm_kms *kms)
{
struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
@@ -713,9 +716,8 @@ static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)
mdp5_kms->dev = dev;
- ret = mdp5_global_obj_init(mdp5_kms);
- if (ret)
- goto fail;
+ drm_atomic_private_obj_init(mdp5_kms->dev, &mdp5_kms->glob_state,
+ &mdp5_global_state_funcs);
/* we need to set a default rate before enabling. Set a safe
* rate first, then figure out hw revision, and then set a
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
index 4ca183fb61a9..c4624a49b32f 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
@@ -89,7 +89,7 @@ static void mdp5_plane_reset(struct drm_plane *plane)
kfree(to_mdp5_plane_state(plane->state));
plane->state = NULL;
- mdp5_state = kzalloc(sizeof(*mdp5_state), GFP_KERNEL);
+ mdp5_state = kzalloc_obj(*mdp5_state);
if (!mdp5_state)
return;
__drm_atomic_helper_plane_reset(plane, &mdp5_state->base);
diff --git a/drivers/gpu/drm/msm/disp/msm_disp_snapshot.c b/drivers/gpu/drm/msm/disp/msm_disp_snapshot.c
index 2be00b11e557..d99771684728 100644
--- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot.c
+++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot.c
@@ -36,7 +36,7 @@ msm_disp_snapshot_state_sync(struct msm_kms *kms)
WARN_ON(!mutex_is_locked(&kms->dump_mutex));
- disp_state = kzalloc(sizeof(struct msm_disp_state), GFP_KERNEL);
+ disp_state = kzalloc_obj(struct msm_disp_state);
if (!disp_state)
return ERR_PTR(-ENOMEM);
diff --git a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
index 01a7019f5d67..e603ab3817cd 100644
--- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
+++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
@@ -184,7 +184,7 @@ void msm_disp_snapshot_add_block(struct msm_disp_state *disp_state, u32 len,
struct va_format vaf;
va_list va;
- new_blk = kzalloc(sizeof(struct msm_disp_state_block), GFP_KERNEL);
+ new_blk = kzalloc_obj(struct msm_disp_state_block);
if (!new_blk)
return;