lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 15 Apr 2019 07:09:04 +0000 From: "james qian wang (Arm Technology China)" <james.qian.wang@....com> To: Liviu Dudau <Liviu.Dudau@....com>, "airlied@...ux.ie" <airlied@...ux.ie>, Brian Starkey <Brian.Starkey@....com>, "maarten.lankhorst@...ux.intel.com" <maarten.lankhorst@...ux.intel.com>, "sean@...rly.run" <sean@...rly.run> CC: "Jonathan Chai (Arm Technology China)" <Jonathan.Chai@....com>, "Julien Yin (Arm Technology China)" <Julien.Yin@....com>, "thomas Sun (Arm Technology China)" <thomas.Sun@....com>, "Lowry Li (Arm Technology China)" <Lowry.Li@....com>, Ayan Halder <Ayan.Halder@....com>, "Tiannan Zhu (Arm Technology China)" <Tiannan.Zhu@....com>, "Yiqi Kang (Arm Technology China)" <Yiqi.Kang@....com>, nd <nd@....com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "dri-devel@...ts.freedesktop.org" <dri-devel@...ts.freedesktop.org>, "james qian wang (Arm Technology China)" <james.qian.wang@....com> Subject: [PATCH v1 1/6] drm/komeda: Attach scaler to drm as private object According to the komeda pipeline configuration, attach scaler to drm as private object. Signed-off-by: James Qian Wang (Arm Technology China) <james.qian.wang@....com> --- .../arm/display/komeda/komeda_private_obj.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c b/drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c index d53bd6c23c5d..bac90ab8fdc9 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c @@ -60,6 +60,49 @@ static int komeda_layer_obj_add(struct komeda_kms_dev *kms, return 0; } +static struct drm_private_state * +komeda_scaler_atomic_duplicate_state(struct drm_private_obj *obj) +{ + struct komeda_scaler_state *st; + + st = kmemdup(obj->state, sizeof(*st), GFP_KERNEL); + if (!st) + return NULL; + + komeda_component_state_reset(&st->base); + __drm_atomic_helper_private_obj_duplicate_state(obj, &st->base.obj); + + return &st->base.obj; +} + +static void +komeda_scaler_atomic_destroy_state(struct drm_private_obj *obj, + struct drm_private_state *state) +{ + kfree(to_scaler_st(priv_to_comp_st(state))); +} + +static const struct drm_private_state_funcs komeda_scaler_obj_funcs = { + .atomic_duplicate_state = komeda_scaler_atomic_duplicate_state, + .atomic_destroy_state = komeda_scaler_atomic_destroy_state, +}; + +static int komeda_scaler_obj_add(struct komeda_kms_dev *kms, + struct komeda_scaler *scaler) +{ + struct komeda_scaler_state *st; + + st = kzalloc(sizeof(*st), GFP_KERNEL); + if (!st) + return -ENOMEM; + + st->base.component = &scaler->base; + drm_atomic_private_obj_init(&kms->base, + &scaler->base.obj, &st->base.obj, + &komeda_scaler_obj_funcs); + return 0; +} + static struct drm_private_state * komeda_compiz_atomic_duplicate_state(struct drm_private_obj *obj) { @@ -258,6 +301,12 @@ int komeda_kms_add_private_objs(struct komeda_kms_dev *kms, return err; } + for (j = 0; j < pipe->n_scalers; j++) { + err = komeda_scaler_obj_add(kms, pipe->scalers[j]); + if (err) + return err; + } + err = komeda_compiz_obj_add(kms, pipe->compiz); if (err) return err; -- 2.17.1
Powered by blists - more mailing lists