Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 375726d7 authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds
Browse files

[PATCH] intelfb: Fix regression (blank display) from ioremap patch



- Workaround for the ioremap patch that produces a blank display on some
  chipsets
- Make hwcursor = 0 the default.  The hardware cursor does not work with all
  hardware.

Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b2846dfa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -768,6 +768,7 @@ config FB_INTEL
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	select FB_SOFT_CURSOR
	help
	  This driver supports the on-board graphics built in to the Intel
          830M/845G/852GM/855GM/865G chipsets.
+10 −11
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ MODULE_DEVICE_TABLE(pci, intelfb_pci_table);

static int accel        = 1;
static int vram         = 4;
static int hwcursor     = 1;
static int hwcursor     = 0;
static int mtrr         = 1;
static int fixed        = 0;
static int noinit       = 0;
@@ -609,15 +609,9 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		dinfo->accel = 0;
	}

	if (MB(voffset) < stolen_size)
		offset = (stolen_size >> 12);
	else
		offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE;

	/* Framebuffer parameters - Use all the stolen memory if >= vram */
	if (ROUND_UP_TO_PAGE(stolen_size) >= ((offset << 12) +  MB(vram))) {
	if (ROUND_UP_TO_PAGE(stolen_size) >= MB(vram)) {
		dinfo->fb.size = ROUND_UP_TO_PAGE(stolen_size);
		dinfo->fb.offset = 0;
		dinfo->fbmem_gart = 0;
	} else {
		dinfo->fb.size =  MB(vram);
@@ -648,6 +642,11 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		return -ENODEV;
	}

	if (MB(voffset) < stolen_size)
		offset = (stolen_size >> 12);
	else
		offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE;

	/* set the mem offsets - set them after the already used pages */
	if (dinfo->accel) {
		dinfo->ring.offset = offset + gtt_info.current_memory;
@@ -662,10 +661,11 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
			+ (dinfo->cursor.size >> 12);
	}

	/* Allocate memories (which aren't stolen) */
	/* Map the fb and MMIO regions */
	/* ioremap only up to the end of used aperture */
	dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
		(dinfo->aperture.physical, (dinfo->fb.offset << 12)
		(dinfo->aperture.physical, ((offset + dinfo->fb.offset) << 12)
		 + dinfo->fb.size);
	if (!dinfo->aperture.virtual) {
		ERR_MSG("Cannot remap FB region.\n");
@@ -682,7 +682,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		return -ENODEV;
	}

	/* Allocate memories (which aren't stolen) */
	if (dinfo->accel) {
		if (!(dinfo->gtt_ring_mem =
		      agp_allocate_memory(bridge, dinfo->ring.size >> 12,
@@ -1484,7 +1483,7 @@ intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
#endif

	if (!dinfo->hwcursor)
		return -ENXIO;
		return soft_cursor(info, cursor);

	intelfbhw_cursor_hide(dinfo);