Use the vblank pointer instead of a dev, pipe pair to simplify code.
Signed-off-by: Jani Nikula <[email protected]>
---
drivers/gpu/drm/drm_vblank.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 34d0b6939d52..955cea949d3d 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -209,27 +209,27 @@ static void store_vblank(struct drm_vblank_crtc *vblank,
write_sequnlock(&vblank->seqlock);
}
-static u32 drm_max_vblank_count(struct drm_device *dev, unsigned int pipe)
+static u32 drm_max_vblank_count(struct drm_vblank_crtc *vblank)
{
- struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe);
-
- return vblank->max_vblank_count ?: dev->max_vblank_count;
+ return vblank->max_vblank_count ?: vblank->dev->max_vblank_count;
}
/*
* "No hw counter" fallback implementation of .get_vblank_counter() hook,
* if there is no usable hardware frame counter available.
*/
-static u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe)
+static u32 drm_vblank_no_hw_counter(struct drm_vblank_crtc *vblank)
{
- drm_WARN_ON_ONCE(dev, drm_max_vblank_count(dev, pipe) != 0);
+ drm_WARN_ON_ONCE(vblank->dev, drm_max_vblank_count(vblank) != 0);
return 0;
}
-static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe)
+static u32 __get_vblank_counter(struct drm_vblank_crtc *vblank)
{
+ struct drm_device *dev = vblank->dev;
+
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
- struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe);
+ struct drm_crtc *crtc = drm_crtc_from_vblank(vblank);
if (drm_WARN_ON(dev, !crtc))
return 0;
@@ -238,7 +238,7 @@ static u32 __get_vblank_counter(struct drm_device *dev,
unsigned int pipe)
return crtc->funcs->get_vblank_counter(crtc);
}
- return drm_vblank_no_hw_counter(dev, pipe);
+ return drm_vblank_no_hw_counter(vblank);
}
/*
@@ -266,9 +266,9 @@ static void drm_reset_vblank_timestamp(struct
drm_vblank_crtc *vblank)
* when drm_vblank_enable() applies the diff
*/
do {
- cur_vblank = __get_vblank_counter(dev, pipe);
+ cur_vblank = __get_vblank_counter(vblank);
rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank, false);
- } while (cur_vblank != __get_vblank_counter(dev, pipe) && --count > 0);
+ } while (cur_vblank != __get_vblank_counter(vblank) && --count > 0);
/*
* Only reinitialize corresponding vblank timestamp if high-precision
query
@@ -309,7 +309,7 @@ static void drm_update_vblank_count(struct drm_vblank_crtc
*vblank,
ktime_t t_vblank;
int count = DRM_TIMESTAMP_MAXRETRIES;
int framedur_ns = vblank->framedur_ns;
- u32 max_vblank_count = drm_max_vblank_count(dev, pipe);
+ u32 max_vblank_count = drm_max_vblank_count(vblank);
/*
* Interrupts were disabled prior to this call, so deal with counter
@@ -324,9 +324,9 @@ static void drm_update_vblank_count(struct drm_vblank_crtc
*vblank,
* corresponding vblank timestamp.
*/
do {
- cur_vblank = __get_vblank_counter(dev, pipe);
+ cur_vblank = __get_vblank_counter(vblank);
rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank,
in_vblank_irq);
- } while (cur_vblank != __get_vblank_counter(dev, pipe) && --count > 0);
+ } while (cur_vblank != __get_vblank_counter(vblank) && --count > 0);
if (max_vblank_count) {
/* trust the hw counter when it's around */
@@ -1555,7 +1555,7 @@ void drm_crtc_vblank_restore(struct drm_crtc *crtc)
u64 diff_ns;
u32 cur_vblank, diff = 1;
int count = DRM_TIMESTAMP_MAXRETRIES;
- u32 max_vblank_count = drm_max_vblank_count(dev, pipe);
+ u32 max_vblank_count = drm_max_vblank_count(vblank);
drm_WARN_ON_ONCE(dev, !crtc->funcs->get_vblank_timestamp);
drm_WARN_ON_ONCE(dev, vblank->inmodeset);
@@ -1570,9 +1570,9 @@ void drm_crtc_vblank_restore(struct drm_crtc *crtc)
framedur_ns = vblank->framedur_ns;
do {
- cur_vblank = __get_vblank_counter(dev, pipe);
+ cur_vblank = __get_vblank_counter(vblank);
drm_get_last_vbltimestamp(dev, pipe, &t_vblank, false);
- } while (cur_vblank != __get_vblank_counter(dev, pipe) && --count > 0);
+ } while (cur_vblank != __get_vblank_counter(vblank) && --count > 0);
diff_ns = ktime_to_ns(ktime_sub(t_vblank, vblank->time));
if (framedur_ns)
--
2.47.3