aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2017-01-09 06:25:45 -0500
committerSean Paul <seanpaul@chromium.org>2017-01-18 09:21:13 -0500
commitc77b9abf3c5ae86dcb0e414d55d42fb213e51b2a (patch)
tree055c1d916e2d54c75bc542af5f70e67289b51174 /drivers/gpu
parent75bcb0545b56eab2d69dbccf95ff7505b7114e5d (diff)
drm: vc4: use crtc helper drm_crtc_from_index()
Use drm_crtc_from_index() to find drm_crtc for given index, so that we do not need to maintain a pointer array in struct vc4_dev. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Cc: Eric Anholt <eric@anholt.net> Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: http://patchwork.freedesktop.org/patch/msgid/1483961145-18453-7-git-send-email-shawnguo@kernel.org
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/vc4/vc4_crtc.c17
-rw-r--r--drivers/gpu/drm/vc4/vc4_drv.h1
2 files changed, 7 insertions, 11 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
index a0fd3e66bc4b..75b708b36890 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -156,7 +156,8 @@ int vc4_crtc_get_scanoutpos(struct drm_device *dev, unsigned int crtc_id,
156 const struct drm_display_mode *mode) 156 const struct drm_display_mode *mode)
157{ 157{
158 struct vc4_dev *vc4 = to_vc4_dev(dev); 158 struct vc4_dev *vc4 = to_vc4_dev(dev);
159 struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id]; 159 struct drm_crtc *crtc = drm_crtc_from_index(dev, crtc_id);
160 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
160 u32 val; 161 u32 val;
161 int fifo_lines; 162 int fifo_lines;
162 int vblank_lines; 163 int vblank_lines;
@@ -272,9 +273,7 @@ int vc4_crtc_get_vblank_timestamp(struct drm_device *dev, unsigned int crtc_id,
272 int *max_error, struct timeval *vblank_time, 273 int *max_error, struct timeval *vblank_time,
273 unsigned flags) 274 unsigned flags)
274{ 275{
275 struct vc4_dev *vc4 = to_vc4_dev(dev); 276 struct drm_crtc *crtc = drm_crtc_from_index(dev, crtc_id);
276 struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id];
277 struct drm_crtc *crtc = &vc4_crtc->base;
278 struct drm_crtc_state *state = crtc->state; 277 struct drm_crtc_state *state = crtc->state;
279 278
280 /* Helper routine in DRM core does all the work: */ 279 /* Helper routine in DRM core does all the work: */
@@ -652,8 +651,8 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
652 651
653int vc4_enable_vblank(struct drm_device *dev, unsigned int crtc_id) 652int vc4_enable_vblank(struct drm_device *dev, unsigned int crtc_id)
654{ 653{
655 struct vc4_dev *vc4 = to_vc4_dev(dev); 654 struct drm_crtc *crtc = drm_crtc_from_index(dev, crtc_id);
656 struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id]; 655 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
657 656
658 CRTC_WRITE(PV_INTEN, PV_INT_VFP_START); 657 CRTC_WRITE(PV_INTEN, PV_INT_VFP_START);
659 658
@@ -662,8 +661,8 @@ int vc4_enable_vblank(struct drm_device *dev, unsigned int crtc_id)
662 661
663void vc4_disable_vblank(struct drm_device *dev, unsigned int crtc_id) 662void vc4_disable_vblank(struct drm_device *dev, unsigned int crtc_id)
664{ 663{
665 struct vc4_dev *vc4 = to_vc4_dev(dev); 664 struct drm_crtc *crtc = drm_crtc_from_index(dev, crtc_id);
666 struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id]; 665 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
667 666
668 CRTC_WRITE(PV_INTEN, 0); 667 CRTC_WRITE(PV_INTEN, 0);
669} 668}
@@ -937,7 +936,6 @@ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
937{ 936{
938 struct platform_device *pdev = to_platform_device(dev); 937 struct platform_device *pdev = to_platform_device(dev);
939 struct drm_device *drm = dev_get_drvdata(master); 938 struct drm_device *drm = dev_get_drvdata(master);
940 struct vc4_dev *vc4 = to_vc4_dev(drm);
941 struct vc4_crtc *vc4_crtc; 939 struct vc4_crtc *vc4_crtc;
942 struct drm_crtc *crtc; 940 struct drm_crtc *crtc;
943 struct drm_plane *primary_plane, *cursor_plane, *destroy_plane, *temp; 941 struct drm_plane *primary_plane, *cursor_plane, *destroy_plane, *temp;
@@ -975,7 +973,6 @@ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
975 &vc4_crtc_funcs, NULL); 973 &vc4_crtc_funcs, NULL);
976 drm_crtc_helper_add(crtc, &vc4_crtc_helper_funcs); 974 drm_crtc_helper_add(crtc, &vc4_crtc_helper_funcs);
977 primary_plane->crtc = crtc; 975 primary_plane->crtc = crtc;
978 vc4->crtc[drm_crtc_index(crtc)] = vc4_crtc;
979 vc4_crtc->channel = vc4_crtc->data->hvs_channel; 976 vc4_crtc->channel = vc4_crtc->data->hvs_channel;
980 drm_mode_crtc_set_gamma_size(crtc, ARRAY_SIZE(vc4_crtc->lut_r)); 977 drm_mode_crtc_set_gamma_size(crtc, ARRAY_SIZE(vc4_crtc->lut_r));
981 978
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
index 489956efbff8..affcdeb70aa9 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -16,7 +16,6 @@ struct vc4_dev {
16 16
17 struct vc4_hdmi *hdmi; 17 struct vc4_hdmi *hdmi;
18 struct vc4_hvs *hvs; 18 struct vc4_hvs *hvs;
19 struct vc4_crtc *crtc[3];
20 struct vc4_v3d *v3d; 19 struct vc4_v3d *v3d;
21 struct vc4_dpi *dpi; 20 struct vc4_dpi *dpi;
22 struct vc4_vec *vec; 21 struct vc4_vec *vec;