Re: [PATCH v5 1/3] video: fbdev: atyfb: clarify ioremap() base and length used
From: Ville Syrjälä <syrjala@sci.fi>
Date: 2015-07-08 08:39:15
Also in:
linux-pci, lkml
On Tue, Jul 07, 2015 at 05:24:57PM -0700, Luis R. Rodriguez wrote:
quoted hunk ↗ jump to hunk
On Thu, Jul 2, 2015 at 4:23 PM, Luis R. Rodriguez [off-list ref] wrote:quoted
On Fri, Jun 26, 2015 at 12:30 AM, Borislav Petkov [off-list ref] wrote:quoted
On Fri, Jun 26, 2015 at 03:09:27AM +0200, Luis R. Rodriguez wrote:quoted
Sure, mind this as a follow up patch if its too late?No need, you can send me an updated one - I'll replace it.Will do!OK the commend I'm adding:@@ -3489,6 +3489,15 @@ static int atyfb_setup_generic(struct pci_dev*pdev, struct fb_info *info, /* Map in frame buffer */ info->fix.smem_start = addr; + + /* + * The framebuffer is not always 8 MiB that's just the size of the + * PCI BAR, this is later corrected for use with write-combining + * helpers with aty_fudge_framebuffer_len() which will adjust the + * framebuffer accordingly depending on the device.
That somehow gives me the impression that aty_fudge_framebuffer_len() changes smem_len to match the framebuffer size, which it does not. Dunno, maybe something like this? /* * The framebuffer is not always 8 MiB that's just the size of the * PCI BAR. We temporarily abuse smem_len here to store the size * of the BAR. aty_init() will later correct it to match the actual * framebuffer size. * * On devices that don't have the auxiliary register aperture, the * registers are housed at the top end of the framebuffer PCI BAR. * aty_fudge_framebuffer_len() is used to reduce smem_len to not * overlap with the registers. */
We do this
+ * to match semantics over ioremap calls on framebuffer devices
+ * with with other drivers with the info->fix.smem_len.
+ */
info->fix.smem_len = 0x800000;
info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len);
Will respin.
Luis-- Ville Syrjälä syrjala@sci.fi http://www.sci.fi/~syrjala/