summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
diff options
context:
space:
mode:
authorXu YiPing <xuyiping@hisilicon.com>2019-08-20 23:06:17 +0000
committerSam Ravnborg <sam@ravnborg.org>2019-08-21 19:15:40 +0200
commit48fa7c17d11a66a0a6202c3ac90c77907515304b (patch)
tree5ad91e89bc0245d79b6526ba47cbd3a69ec1293a /drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
parentbdaf419efed49ca0e3ea4f1a0037e48c2f3b8ddf (diff)
downloadlinux-48fa7c17d11a66a0a6202c3ac90c77907515304b.tar.bz2
drm: kirin: Move plane number and primay plane in driver data
As part of refactoring the kirin driver to better support different hardware revisions, this patch moves the number of planes and the primary plane value to the kirin_drm_data structure This will make it easier to add support for new devices via a new kirin_drm_data structure. Cc: Rongrong Zou <zourongrong@gmail.com> Cc: Xinliang Liu <z.liuxinliang@hisilicon.com> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: dri-devel <dri-devel@lists.freedesktop.org> Cc: Sam Ravnborg <sam@ravnborg.org> Acked-by: Xinliang Liu <z.liuxinliang@hisilicon.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Xu YiPing <xuyiping@hisilicon.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20190820230626.23253-17-john.stultz@linaro.org
Diffstat (limited to 'drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c')
-rw-r--r--drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index 94d74c467a81..a74b2623dbbb 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -35,7 +35,6 @@
#include "kirin_drm_drv.h"
#include "kirin_ade_reg.h"
-#define PRIMARY_CH ADE_CH1 /* primary plane */
#define OUT_OVLY ADE_OVLY2 /* output overlay compositor */
#define ADE_DEBUG 1
@@ -991,7 +990,7 @@ static int ade_drm_init(struct platform_device *pdev)
struct kirin_plane *kplane;
enum drm_plane_type type;
int ret;
- int i;
+ u32 ch;
ade = devm_kzalloc(dev->dev, sizeof(*ade), GFP_KERNEL);
if (!ade) {
@@ -1015,12 +1014,15 @@ static int ade_drm_init(struct platform_device *pdev)
* TODO: Now only support primary plane, overlay planes
* need to do.
*/
- for (i = 0; i < ADE_CH_NUM; i++) {
- kplane = &ade->planes[i];
- kplane->ch = i;
+ for (ch = 0; ch < ade_driver_data.num_planes; ch++) {
+ kplane = &ade->planes[ch];
+ kplane->ch = ch;
kplane->hw_ctx = ctx;
- type = i == PRIMARY_CH ? DRM_PLANE_TYPE_PRIMARY :
- DRM_PLANE_TYPE_OVERLAY;
+
+ if (ch == ade_driver_data.prim_plane)
+ type = DRM_PLANE_TYPE_PRIMARY;
+ else
+ type = DRM_PLANE_TYPE_OVERLAY;
ret = ade_plane_init(dev, kplane, type);
if (ret)
@@ -1028,7 +1030,8 @@ static int ade_drm_init(struct platform_device *pdev)
}
/* crtc init */
- ret = ade_crtc_init(dev, &kcrtc->base, &ade->planes[PRIMARY_CH].base);
+ ret = ade_crtc_init(dev, &kcrtc->base,
+ &ade->planes[ade_driver_data.prim_plane].base);
if (ret)
return ret;
@@ -1047,6 +1050,8 @@ static const struct drm_mode_config_funcs ade_mode_config_funcs = {
};
struct kirin_drm_data ade_driver_data = {
+ .num_planes = ADE_CH_NUM,
+ .prim_plane = ADE_CH1,
.channel_formats = channel_formats,
.channel_formats_cnt = ARRAY_SIZE(channel_formats),
.crtc_helper_funcs = &ade_crtc_helper_funcs,