diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2017-01-09 06:25:45 -0500 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2017-01-18 09:21:13 -0500 |
commit | c77b9abf3c5ae86dcb0e414d55d42fb213e51b2a (patch) | |
tree | 055c1d916e2d54c75bc542af5f70e67289b51174 /drivers/gpu | |
parent | 75bcb0545b56eab2d69dbccf95ff7505b7114e5d (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.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_drv.h | 1 |
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 | ||
653 | int vc4_enable_vblank(struct drm_device *dev, unsigned int crtc_id) | 652 | int 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 | ||
663 | void vc4_disable_vblank(struct drm_device *dev, unsigned int crtc_id) | 662 | void 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; |