drm/mali-dp: Improve writeback handling for DP500.
Mali DP500 operates in continuous writeback mode (writes frame content until stopped) and it needs special handling in order to behave like a one-shot writeback engine. The original state machine added for DP500 was a bit fragile, as it did not handle correctly cases where a new atomic commit was in progress when the SE IRQ happens and it would commit some partial updates. Improve the handling by adding a parameter to the set_config_valid() function to clear the config valid bit in hardware before starting a new commit and by introducing a MW_RESTART state in the writeback state machine to cater for the case where a new writeback commit gets submitted while the last one is still being active. Reported-by: Brian Starkey <brian.starkey@arm.com> Reviewed-by: Brian Starkey <brian.starkey@arm.com> Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Esse commit está contido em:
@@ -152,12 +152,13 @@ struct malidp_hw {
|
||||
bool (*in_config_mode)(struct malidp_hw_device *hwdev);
|
||||
|
||||
/*
|
||||
* Set configuration valid flag for hardware parameters that can
|
||||
* be changed outside the configuration mode. Hardware will use
|
||||
* the new settings when config valid is set after the end of the
|
||||
* current buffer scanout
|
||||
* Set/clear configuration valid flag for hardware parameters that can
|
||||
* be changed outside the configuration mode to the given value.
|
||||
* Hardware will use the new settings when config valid is set,
|
||||
* after the end of the current buffer scanout, and will ignore
|
||||
* any new values for those parameters if config valid flag is cleared
|
||||
*/
|
||||
void (*set_config_valid)(struct malidp_hw_device *hwdev);
|
||||
void (*set_config_valid)(struct malidp_hw_device *hwdev, u8 value);
|
||||
|
||||
/*
|
||||
* Set a new mode in hardware. Requires the hardware to be in
|
||||
|
Referência em uma nova issue
Block a user