Patchwork [U-Boot] video: mxc_ipuv3: fix memory alignment of framebuffer

login
register
mail settings
Submitter Eric Nelson
Date July 26, 2013, 12:35 a.m.
Message ID <1374798926-18743-1-git-send-email-eric.nelson@boundarydevices.com>
Download mbox | patch
Permalink /patch/262025/
State Changes Requested
Delegated to: Stefano Babic
Headers show

Comments

Eric Nelson - July 26, 2013, 12:35 a.m.
The frame-buffer on i.MX boards needs to be aligned for DMA.

Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
---
 drivers/video/mxc_ipuv3_fb.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Marek Vasut - July 26, 2013, 4:27 a.m.
Dear Eric Nelson,

> The frame-buffer on i.MX boards needs to be aligned for DMA.
> 
> Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
> ---
>  drivers/video/mxc_ipuv3_fb.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
> index ace226c..ad95831 100644
> --- a/drivers/video/mxc_ipuv3_fb.c
> +++ b/drivers/video/mxc_ipuv3_fb.c
> @@ -416,7 +416,8 @@ static int mxcfb_map_video_memory(struct fb_info *fbi)
>  				    fbi->fix.line_length;
>  	}
> 
> -	fbi->screen_base = (char *)malloc(fbi->fix.smem_len);
> +	fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN,
> +					    fbi->fix.smem_len);

You might want to round-up the length too, like I did in the MXS driver.

>  	fbi->fix.smem_start = (unsigned long)fbi->screen_base;
>  	if (fbi->screen_base == 0) {
>  		puts("Unable to allocate framebuffer memory\n");

Best regards,
Marek Vasut
Eric Nelson - July 26, 2013, 2:35 p.m.
Hi Marek,

On 07/25/2013 09:27 PM, Marek Vasut wrote:
> Dear Eric Nelson,
>
>> The frame-buffer on i.MX boards needs to be aligned for DMA.
>>
>> Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
>> ---
>>   drivers/video/mxc_ipuv3_fb.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
>> index ace226c..ad95831 100644
>> --- a/drivers/video/mxc_ipuv3_fb.c
>> +++ b/drivers/video/mxc_ipuv3_fb.c
>> @@ -416,7 +416,8 @@ static int mxcfb_map_video_memory(struct fb_info *fbi)
>>   				    fbi->fix.line_length;
>>   	}
>>
>> -	fbi->screen_base = (char *)malloc(fbi->fix.smem_len);
>> +	fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN,
>> +					    fbi->fix.smem_len);
>
> You might want to round-up the length too, like I did in the MXS driver.
>

Did you really run across a display whose size wasn't a multiple of
32, or is this rounding just in muscle-memory for you?

Regards,


Eric
Marek Vasut - July 26, 2013, 7:38 p.m.
Dear Eric Nelson,

> Hi Marek,
> 
> On 07/25/2013 09:27 PM, Marek Vasut wrote:
> > Dear Eric Nelson,
> > 
> >> The frame-buffer on i.MX boards needs to be aligned for DMA.
> >> 
> >> Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
> >> ---
> >> 
> >>   drivers/video/mxc_ipuv3_fb.c | 3 ++-
> >>   1 file changed, 2 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
> >> index ace226c..ad95831 100644
> >> --- a/drivers/video/mxc_ipuv3_fb.c
> >> +++ b/drivers/video/mxc_ipuv3_fb.c
> >> @@ -416,7 +416,8 @@ static int mxcfb_map_video_memory(struct fb_info
> >> *fbi)
> >> 
> >>   				    fbi->fix.line_length;
> >>   	
> >>   	}
> >> 
> >> -	fbi->screen_base = (char *)malloc(fbi->fix.smem_len);
> >> +	fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN,
> >> +					    fbi->fix.smem_len);
> > 
> > You might want to round-up the length too, like I did in the MXS driver.
> 
> Did you really run across a display whose size wasn't a multiple of
> 32, or is this rounding just in muscle-memory for you?

Palm devices with PXA27x (PalmT5, PalmLD, PalmTX) had 484x324 LCDs ;-)

Best regards,
Marek Vasut
Eric Nelson - July 27, 2013, 12:56 a.m.
On 07/26/2013 12:38 PM, Marek Vasut wrote:
> Dear Eric Nelson,
>
>>>> -	fbi->screen_base = (char *)malloc(fbi->fix.smem_len);
>>>> +	fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN,
>>>> +					    fbi->fix.smem_len);
>>>
>>> You might want to round-up the length too, like I did in the MXS driver.
>>
>> Did you really run across a display whose size wasn't a multiple of
>> 32, or is this rounding just in muscle-memory for you?
>
> Palm devices with PXA27x (PalmT5, PalmLD, PalmTX) had 484x324 LCDs ;-)
>

With as much cache-enablement as you've done lately, I have a feeling
you round up at the grocery store or pub ;)

Patch

diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
index ace226c..ad95831 100644
--- a/drivers/video/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc_ipuv3_fb.c
@@ -416,7 +416,8 @@  static int mxcfb_map_video_memory(struct fb_info *fbi)
 				    fbi->fix.line_length;
 	}
 
-	fbi->screen_base = (char *)malloc(fbi->fix.smem_len);
+	fbi->screen_base = (char *)memalign(ARCH_DMA_MINALIGN,
+					    fbi->fix.smem_len);
 	fbi->fix.smem_start = (unsigned long)fbi->screen_base;
 	if (fbi->screen_base == 0) {
 		puts("Unable to allocate framebuffer memory\n");