[PATCH] drm/exynos: use adjusted_mode of crtc_state instead of mode

Joonyoung Shim jy0922.shim at samsung.com
Sun May 31 19:52:06 PDT 2015


On 05/30/2015 12:57 AM, Gustavo Padovan wrote:
> Hi Joonyoung,
> 
> 2015-05-29 Joonyoung Shim <jy0922.shim at samsung.com>:
> 
>> Handle changes by removing copy from adjusted_mode to mode as using
>> adjusted_mode of crtc_state.
>>
>> Signed-off-by: Joonyoung Shim <jy0922.shim at samsung.com>
>> ---
>> This is based on a patch "[PATCH v9 04/18] drm/exynos: atomic phase 1:
>> add .mode_set_nofb() callback" of Gustavo.
>>
>>  drivers/gpu/drm/exynos/exynos7_drm_decon.c |  4 ++--
>>  drivers/gpu/drm/exynos/exynos_drm_fimd.c   |  2 +-
>>  drivers/gpu/drm/exynos/exynos_drm_plane.c  | 13 +++++++------
>>  3 files changed, 10 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> index 6714e5b..f29e4be 100644
>> --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> @@ -175,7 +175,7 @@ static bool decon_mode_fixup(struct exynos_drm_crtc *crtc,
>>  static void decon_commit(struct exynos_drm_crtc *crtc)
>>  {
>>  	struct decon_context *ctx = crtc->ctx;
>> -	struct drm_display_mode *mode = &crtc->base.mode;
>> +	struct drm_display_mode *mode = &crtc->base.state->adjusted_mode;
>>  	u32 val, clkdiv;
>>  
>>  	if (ctx->suspended)
>> @@ -395,7 +395,7 @@ static void decon_shadow_protect_win(struct decon_context *ctx,
>>  static void decon_win_commit(struct exynos_drm_crtc *crtc, unsigned int win)
>>  {
>>  	struct decon_context *ctx = crtc->ctx;
>> -	struct drm_display_mode *mode = &crtc->base.mode;
>> +	struct drm_display_mode *mode = &crtc->base.state->adjusted_mode;
>>  	struct exynos_drm_plane *plane;
>>  	int padding;
>>  	unsigned long val, alpha;
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>> index a0edab8..b326b31 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
>> @@ -337,7 +337,7 @@ static bool fimd_mode_fixup(struct exynos_drm_crtc *crtc,
>>  static void fimd_commit(struct exynos_drm_crtc *crtc)
>>  {
>>  	struct fimd_context *ctx = crtc->ctx;
>> -	struct drm_display_mode *mode = &crtc->base.mode;
>> +	struct drm_display_mode *mode = &crtc->base.state->adjusted_mode;
> 
> Please take a look on the discussion here:
> 
> http://www.spinics.net/lists/linux-samsung-soc/msg44734.html
> 
> Tobias reports that he was seeing oops due to null pointer with an
> approach similar to this one.
> 
> The lastest version of the patch is here:
> 
> http://www.spinics.net/lists/linux-samsung-soc/msg44790.html
> 

It's impossible crtc->base.state is NULL as driver is switched by atomic
modeset functions, right?

I don't get any oops by NULL pointer on boot now.


More information about the dri-devel mailing list