@ -330,7 +330,29 @@ mode_fixup(struct drm_atomic_state *state)
return 0 ;
}
static int
/**
* drm_atomic_helper_check - validate state object for modeset changes
* @ dev : DRM device
* @ state : the driver state object
*
* Check the state object to see if the requested state is physically possible .
* This does all the crtc and connector related computations for an atomic
* update . It computes and updates crtc_state - > mode_changed , adds any additional
* connectors needed for full modesets and calls down into - > mode_fixup
* functions of the driver backend .
*
* IMPORTANT :
*
* Drivers which update - > mode_changed ( e . g . in their - > atomic_check hooks if a
* plane update can ' t be done without a full modeset ) _must_ call this function
* afterwards after that change . It is permitted to call this function multiple
* times for the same update , e . g . when the - > atomic_check functions depend upon
* the adjusted dotclock for fifo space allocation and watermark computation .
*
* RETURNS
* Zero for success or - errno
*/
int
drm_atomic_helper_check_modeset ( struct drm_device * dev ,
struct drm_atomic_state * state )
{
@ -406,23 +428,23 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
return mode_fixup ( state ) ;
}
EXPORT_SYMBOL ( drm_atomic_helper_check_modeset ) ;
/**
* drm_atomic_helper_check - validate state object
* drm_atomic_helper_check - validate state object for modeset changes
* @ dev : DRM device
* @ state : the driver state object
*
* Check the state object to see if the requested state is physically possible .
* Only crtcs and planes have check callbacks , so for any additional ( global )
* checking that a driver needs it can simply wrap that around this function .
* Drivers without such needs can directly use this as their - > atomic_check ( )
* callback .
* This does all the plane update related checks using by calling into the
* - > atomic_check hooks provided by the driver .
*
* RETURNS
* Zero for success or - errno
*/
int drm_atomic_helper_check ( struct drm_device * dev ,
struct drm_atomic_state * state )
int
drm_atomic_helper_check_planes ( struct drm_device * dev ,
struct drm_atomic_state * state )
{
int nplanes = dev - > mode_config . num_total_plane ;
int ncrtcs = dev - > mode_config . num_crtc ;
@ -471,6 +493,33 @@ int drm_atomic_helper_check(struct drm_device *dev,
}
}
return ret ;
}
EXPORT_SYMBOL ( drm_atomic_helper_check_planes ) ;
/**
* drm_atomic_helper_check - validate state object
* @ dev : DRM device
* @ state : the driver state object
*
* Check the state object to see if the requested state is physically possible .
* Only crtcs and planes have check callbacks , so for any additional ( global )
* checking that a driver needs it can simply wrap that around this function .
* Drivers without such needs can directly use this as their - > atomic_check ( )
* callback .
*
* RETURNS
* Zero for success or - errno
*/
int drm_atomic_helper_check ( struct drm_device * dev ,
struct drm_atomic_state * state )
{
int ret ;
ret = drm_atomic_helper_check_planes ( dev , state ) ;
if ( ret )
return ret ;
ret = drm_atomic_helper_check_modeset ( dev , state ) ;
if ( ret )
return ret ;