Message ID | 1486458995-31018-4-git-send-email-shawnguo@kernel.org |
---|---|
State | New |
Headers | show |
Series | Add vblank hooks to struct drm_crtc_funcs | expand |
Hi Shawn, Thank you for the patch. On Tuesday 07 Feb 2017 17:16:15 Shawn Guo wrote: > From: Shawn Guo <shawn.guo@linaro.org> > > The function drm_vblank_no_hw_counter() is now only used in core vblank > wrapper code. Let's unexport it by making it a static function. > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/gpu/drm/drm_irq.c | 28 ++++++++++------------------ > include/drm/drm_drv.h | 7 +++---- > include/drm/drm_irq.h | 1 - > 3 files changed, 13 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > index 646b3e57b9ad..1906723af389 100644 > --- a/drivers/gpu/drm/drm_irq.c > +++ b/drivers/gpu/drm/drm_irq.c > @@ -89,6 +89,16 @@ static void store_vblank(struct drm_device *dev, unsigned > int pipe, write_sequnlock(&vblank->seqlock); > } > > +/* > + * "No hw counter" fallback implementation of .get_vblank_counter() hook, > + * if there is no useable hardware frame counter available. > + */ > +static u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int > pipe) +{ > + WARN_ON_ONCE(dev->max_vblank_count != 0); > + return 0; > +} > + > static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe) > { > if (drm_core_check_feature(dev, DRIVER_MODESET)) { > @@ -1748,21 +1758,3 @@ bool drm_crtc_handle_vblank(struct drm_crtc *crtc) > return drm_handle_vblank(crtc->dev, drm_crtc_index(crtc)); > } > EXPORT_SYMBOL(drm_crtc_handle_vblank); > - > -/** > - * drm_vblank_no_hw_counter - "No hw counter" implementation of > .get_vblank_counter() - * @dev: DRM device > - * @pipe: CRTC for which to read the counter > - * > - * Drivers can plug this into the .get_vblank_counter() function if > - * there is no useable hardware frame counter available. > - * > - * Returns: > - * 0 > - */ > -u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe) > -{ > - WARN_ON_ONCE(dev->max_vblank_count != 0); > - return 0; > -} > -EXPORT_SYMBOL(drm_vblank_no_hw_counter); > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h > index 40ae89106594..661ca24a4c97 100644 > --- a/include/drm/drm_drv.h > +++ b/include/drm/drm_drv.h > @@ -120,10 +120,9 @@ struct drm_driver { > * > * Driver callback for fetching a raw hardware vblank counter for the > * CRTC specified with the pipe argument. If a device doesn't have a > - * hardware counter, the driver can simply use > - * drm_vblank_no_hw_counter() function. The DRM core will account for > - * missed vblank events while interrupts where disabled based on system > - * timestamps. > + * hardware counter, the driver can simply leave the hook as NULL. > + * The DRM core will account for missed vblank events while interrupts > + * where disabled based on system timestamps. > * > * Wraparound handling and loss of events due to modesetting is dealt > * with in the DRM core code, as long as drivers call > diff --git a/include/drm/drm_irq.h b/include/drm/drm_irq.h > index 2fb880462a57..cf0be6594c8c 100644 > --- a/include/drm/drm_irq.h > +++ b/include/drm/drm_irq.h > @@ -152,7 +152,6 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc, > void drm_crtc_vblank_on(struct drm_crtc *crtc); > void drm_vblank_cleanup(struct drm_device *dev); > u32 drm_accurate_vblank_count(struct drm_crtc *crtc); > -u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe); > > int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, > unsigned int pipe, int *max_error,
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 646b3e57b9ad..1906723af389 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -89,6 +89,16 @@ static void store_vblank(struct drm_device *dev, unsigned int pipe, write_sequnlock(&vblank->seqlock); } +/* + * "No hw counter" fallback implementation of .get_vblank_counter() hook, + * if there is no useable hardware frame counter available. + */ +static u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe) +{ + WARN_ON_ONCE(dev->max_vblank_count != 0); + return 0; +} + static u32 __get_vblank_counter(struct drm_device *dev, unsigned int pipe) { if (drm_core_check_feature(dev, DRIVER_MODESET)) { @@ -1748,21 +1758,3 @@ bool drm_crtc_handle_vblank(struct drm_crtc *crtc) return drm_handle_vblank(crtc->dev, drm_crtc_index(crtc)); } EXPORT_SYMBOL(drm_crtc_handle_vblank); - -/** - * drm_vblank_no_hw_counter - "No hw counter" implementation of .get_vblank_counter() - * @dev: DRM device - * @pipe: CRTC for which to read the counter - * - * Drivers can plug this into the .get_vblank_counter() function if - * there is no useable hardware frame counter available. - * - * Returns: - * 0 - */ -u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe) -{ - WARN_ON_ONCE(dev->max_vblank_count != 0); - return 0; -} -EXPORT_SYMBOL(drm_vblank_no_hw_counter); diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 40ae89106594..661ca24a4c97 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -120,10 +120,9 @@ struct drm_driver { * * Driver callback for fetching a raw hardware vblank counter for the * CRTC specified with the pipe argument. If a device doesn't have a - * hardware counter, the driver can simply use - * drm_vblank_no_hw_counter() function. The DRM core will account for - * missed vblank events while interrupts where disabled based on system - * timestamps. + * hardware counter, the driver can simply leave the hook as NULL. + * The DRM core will account for missed vblank events while interrupts + * where disabled based on system timestamps. * * Wraparound handling and loss of events due to modesetting is dealt * with in the DRM core code, as long as drivers call diff --git a/include/drm/drm_irq.h b/include/drm/drm_irq.h index 2fb880462a57..cf0be6594c8c 100644 --- a/include/drm/drm_irq.h +++ b/include/drm/drm_irq.h @@ -152,7 +152,6 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc, void drm_crtc_vblank_on(struct drm_crtc *crtc); void drm_vblank_cleanup(struct drm_device *dev); u32 drm_accurate_vblank_count(struct drm_crtc *crtc); -u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe); int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, unsigned int pipe, int *max_error,