Message ID | 1374798926-18743-1-git-send-email-eric.nelson@boundarydevices.com |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
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
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
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
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 ;)
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");
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(-)