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

Commit 689c9568 authored by Krzysztof Halasa's avatar Krzysztof Halasa Committed by Linus Torvalds
Browse files

Intel FB: whitespace, bracket and other clean-ups



Intel FB: whitespace, bracket and other clean-ups

Signed-off-by: default avatarKrzysztof Halasa <khc@pm.waw.pl>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: <sylvain.meyer@worldonline.fr>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 53ee1b5b
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -231,8 +231,8 @@ struct intelfb_hwstate {
struct intelfb_heap_data {
	u32 physical;
	u8 __iomem *virtual;
	u32 offset;  // in GATT pages
	u32 size;    // in bytes
	u32 offset;		/* in GATT pages */
	u32 size;		/* in bytes */
};

#ifdef CONFIG_FB_INTEL_I2C
@@ -270,9 +270,9 @@ struct intelfb_info {
	struct intelfb_hwstate save_state;

	/* agpgart structs */
	struct agp_memory *gtt_fb_mem;     // use all stolen memory or vram
	struct agp_memory *gtt_ring_mem;   // ring buffer
	struct agp_memory *gtt_cursor_mem; // hw cursor
	struct agp_memory *gtt_fb_mem;     /* use all stolen memory or vram */
	struct agp_memory *gtt_ring_mem;   /* ring buffer */
	struct agp_memory *gtt_cursor_mem; /* hw cursor */

	/* use a gart reserved fb mem */
	u8 fbmem_gart;
+33 −27
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ static void intelfb_gpio_setscl(void *data, int state)
	struct intelfb_info *dinfo = chan->dinfo;
	u32 val;

	OUTREG(chan->reg, (state ? SCL_VAL_OUT : 0) | SCL_DIR | SCL_DIR_MASK | SCL_VAL_MASK);
	OUTREG(chan->reg, (state ? SCL_VAL_OUT : 0) |
	       SCL_DIR | SCL_DIR_MASK | SCL_VAL_MASK);
	val = INREG(chan->reg);
}

@@ -68,7 +69,8 @@ static void intelfb_gpio_setsda(void *data, int state)
	struct intelfb_info *dinfo = chan->dinfo;
	u32 val;

	OUTREG(chan->reg, (state ? SDA_VAL_OUT : 0) | SDA_DIR | SDA_DIR_MASK | SDA_VAL_MASK);
	OUTREG(chan->reg, (state ? SDA_VAL_OUT : 0) |
	       SDA_DIR | SDA_DIR_MASK | SDA_VAL_MASK);
	val = INREG(chan->reg);
}

@@ -142,7 +144,8 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
	dinfo->output[i].type = INTELFB_OUTPUT_ANALOG;

	/* setup the DDC bus for analog output */
	intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOA, "CRTDDC_A");
	intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOA,
			      "CRTDDC_A");
	i++;

	/* need to add the output busses for each device
@@ -155,8 +158,10 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
	case INTEL_855GM:
	case INTEL_865G:
		dinfo->output[i].type = INTELFB_OUTPUT_DVO;
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOD, "DVODDC_D");
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus, GPIOE, "DVOI2C_E");
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus,
				      GPIOD, "DVODDC_D");
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
				      GPIOE, "DVOI2C_E");
		i++;
		break;
	case INTEL_915G:
@@ -166,16 +171,17 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
	case INTEL_945GM:
		/* SDVO ports have a single control bus - 2 devices */
		dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus, GPIOE, "SDVOCTRL_E");
		intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
				      GPIOE, "SDVOCTRL_E");
		/* TODO: initialize the SDVO */
//		I830SDVOInit(pScrn, i, DVOB);
		/* I830SDVOInit(pScrn, i, DVOB); */
		i++;

		/* set up SDVOC */
		dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
		dinfo->output[i].i2c_bus = dinfo->output[i - 1].i2c_bus;
		/* TODO: initialize the SDVO */
//		I830SDVOInit(pScrn, i, DVOC);
		/* I830SDVOInit(pScrn, i, DVOC); */
		i++;
		break;
	}
+73 −105
Original line number Diff line number Diff line
@@ -99,13 +99,6 @@
 *              Add vram option to reserve more memory than stolen by BIOS
 *              Fix intelfbhw_pan_display typo
 *              Add __initdata annotations
 *
 * TODO:
 *
 *
 * Wish List:
 *
 *
 */

#include <linux/module.h>
@@ -222,8 +215,8 @@ static struct pci_driver intelfb_driver = {
/* Module description/parameters */
MODULE_AUTHOR("David Dawes <dawes@tungstengraphics.com>, "
	      "Sylvain Meyer <sylvain.meyer@worldonline.fr>");
MODULE_DESCRIPTION(
	"Framebuffer driver for Intel(R) " SUPPORTED_CHIPSETS " chipsets");
MODULE_DESCRIPTION("Framebuffer driver for Intel(R) " SUPPORTED_CHIPSETS
		   " chipsets");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DEVICE_TABLE(pci, intelfb_pci_table);

@@ -271,8 +264,7 @@ MODULE_PARM_DESC(mode,
#define OPT_INTVAL(opt, name) simple_strtoul(opt + strlen(name) + 1, NULL, 0)
#define OPT_STRVAL(opt, name) (opt + strlen(name))

static __inline__ char *
get_opt_string(const char *this_opt, const char *name)
static __inline__ char * get_opt_string(const char *this_opt, const char *name)
{
	const char *p;
	int i;
@@ -290,8 +282,8 @@ get_opt_string(const char *this_opt, const char *name)
	return ret;
}

static __inline__ int
get_opt_int(const char *this_opt, const char *name, int *ret)
static __inline__ int get_opt_int(const char *this_opt, const char *name,
				  int *ret)
{
	if (!ret)
		return 0;
@@ -303,8 +295,8 @@ get_opt_int(const char *this_opt, const char *name, int *ret)
	return 1;
}

static __inline__ int
get_opt_bool(const char *this_opt, const char *name, int *ret)
static __inline__ int get_opt_bool(const char *this_opt, const char *name,
				   int *ret)
{
	if (!ret)
		return 0;
@@ -324,8 +316,7 @@ get_opt_bool(const char *this_opt, const char *name, int *ret)
	return 1;
}

static int __init
intelfb_setup(char *options)
static int __init intelfb_setup(char *options)
{
	char *this_opt;

@@ -376,8 +367,7 @@ intelfb_setup(char *options)

#endif

static int __init
intelfb_init(void)
static int __init intelfb_init(void)
{
#ifndef MODULE
	char *option = NULL;
@@ -401,8 +391,7 @@ intelfb_init(void)
	return pci_register_driver(&intelfb_driver);
}

static void __exit
intelfb_exit(void)
static void __exit intelfb_exit(void)
{
	DBG_MSG("intelfb_exit\n");
	pci_unregister_driver(&intelfb_driver);
@@ -442,8 +431,7 @@ static inline void unset_mtrr(struct intelfb_info *dinfo)
 *                        driver init / cleanup                *
 ***************************************************************/

static void
cleanup(struct intelfb_info *dinfo)
static void cleanup(struct intelfb_info *dinfo)
{
	DBG_MSG("cleanup\n");

@@ -499,8 +487,8 @@ cleanup(struct intelfb_info *dinfo)
} while (0)


static int __devinit
intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
static int __devinit intelfb_pci_register(struct pci_dev *pdev,
					  const struct pci_device_id *ent)
{
	struct fb_info *info;
	struct intelfb_info *dinfo;
@@ -637,9 +625,8 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		dinfo->ring.size = RINGBUFFER_SIZE;
		dinfo->ring_tail_mask = dinfo->ring.size - 1;
	}
	if (dinfo->hwcursor) {
	if (dinfo->hwcursor)
		dinfo->cursor.size = HW_CURSOR_SIZE;
	}

	/* Use agpgart to manage the GATT */
	if (!(bridge = agp_backend_acquire(pdev))) {
@@ -662,18 +649,15 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE;

	/* set the mem offsets - set them after the already used pages */
	if (dinfo->accel) {
	if (dinfo->accel)
		dinfo->ring.offset = offset + gtt_info.current_memory;
	}
	if (dinfo->hwcursor) {
	if (dinfo->hwcursor)
		dinfo->cursor.offset = offset +
			+ gtt_info.current_memory + (dinfo->ring.size >> 12);
	}
	if (dinfo->fbmem_gart) {
	if (dinfo->fbmem_gart)
		dinfo->fb.offset = offset +
			+ gtt_info.current_memory + (dinfo->ring.size >> 12)
			+ (dinfo->cursor.size >> 12);
	}

	/* Allocate memories (which aren't stolen) */
	/* Map the fb and MMIO regions */
@@ -837,10 +821,8 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (bailearly == 3)
		bailout(dinfo);

	if (FIXED_MODE(dinfo)) {
		/* remap fb address */
	if (FIXED_MODE(dinfo))	/* remap fb address */
		update_dinfo(dinfo, &dinfo->initial_var);
	}

	if (bailearly == 4)
		bailout(dinfo);
@@ -939,8 +921,7 @@ intelfb_pci_unregister(struct pci_dev *pdev)
 *                       helper functions                      *
 ***************************************************************/

int __inline__
intelfb_var_to_depth(const struct fb_var_screeninfo *var)
int __inline__ intelfb_var_to_depth(const struct fb_var_screeninfo *var)
{
	DBG_MSG("intelfb_var_to_depth: bpp: %d, green.length is %d\n",
		var->bits_per_pixel, var->green.length);
@@ -956,8 +937,7 @@ intelfb_var_to_depth(const struct fb_var_screeninfo *var)
}


static __inline__ int
var_to_refresh(const struct fb_var_screeninfo *var)
static __inline__ int var_to_refresh(const struct fb_var_screeninfo *var)
{
	int xtot = var->xres + var->left_margin + var->right_margin +
		   var->hsync_len;
@@ -971,8 +951,7 @@ var_to_refresh(const struct fb_var_screeninfo *var)
 *                Various intialisation functions              *
 ***************************************************************/

static void __devinit
get_initial_mode(struct intelfb_info *dinfo)
static void __devinit get_initial_mode(struct intelfb_info *dinfo)
{
	struct fb_var_screeninfo *var;
	int xtot, ytot;
@@ -1039,8 +1018,7 @@ get_initial_mode(struct intelfb_info *dinfo)
	}
}

static int __devinit
intelfb_init_var(struct intelfb_info *dinfo)
static int __devinit intelfb_init_var(struct intelfb_info *dinfo)
{
	struct fb_var_screeninfo *var;
	int msrc = 0;
@@ -1087,11 +1065,10 @@ intelfb_init_var(struct intelfb_info *dinfo)

		}

		if (!msrc) {
		if (!msrc)
			msrc = fb_find_mode(var, dinfo->info, PREFERRED_MODE,
					    NULL, 0, NULL, 0);
	}
	}

	if (!msrc) {
		ERR_MSG("Cannot find a suitable video mode.\n");
@@ -1122,8 +1099,7 @@ intelfb_init_var(struct intelfb_info *dinfo)
	return 0;
}

static int __devinit
intelfb_set_fbinfo(struct intelfb_info *dinfo)
static int __devinit intelfb_set_fbinfo(struct intelfb_info *dinfo)
{
	struct fb_info *info = dinfo->info;

@@ -1159,8 +1135,8 @@ intelfb_set_fbinfo(struct intelfb_info *dinfo)
}

/* Update dinfo to match the active video mode. */
static void
update_dinfo(struct intelfb_info *dinfo, struct fb_var_screeninfo *var)
static void update_dinfo(struct intelfb_info *dinfo,
			 struct fb_var_screeninfo *var)
{
	DBG_MSG("update_dinfo\n");

@@ -1208,36 +1184,32 @@ update_dinfo(struct intelfb_info *dinfo, struct fb_var_screeninfo *var)
 *                       fbdev interface                       *
 ***************************************************************/

static int
intelfb_open(struct fb_info *info, int user)
static int intelfb_open(struct fb_info *info, int user)
{
	struct intelfb_info *dinfo = GET_DINFO(info);

	if (user) {
	if (user)
		dinfo->open++;
	}

	return 0;
}

static int
intelfb_release(struct fb_info *info, int user)
static int intelfb_release(struct fb_info *info, int user)
{
	struct intelfb_info *dinfo = GET_DINFO(info);

	if (user) {
		dinfo->open--;
		msleep(1);
		if (!dinfo->open) {
		if (!dinfo->open)
			intelfbhw_disable_irq(dinfo);
	}
	}

	return 0;
}

static int
intelfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
static int intelfb_check_var(struct fb_var_screeninfo *var,
			     struct fb_info *info)
{
	int change_var = 0;
	struct fb_var_screeninfo v;
@@ -1271,15 +1243,15 @@ intelfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
	}

	/* Check for a supported bpp. */
	if (v.bits_per_pixel <= 8) {
	if (v.bits_per_pixel <= 8)
		v.bits_per_pixel = 8;
	} else if (v.bits_per_pixel <= 16) {
	else if (v.bits_per_pixel <= 16) {
		if (v.bits_per_pixel == 16)
			v.green.length = 6;
		v.bits_per_pixel = 16;
	} else if (v.bits_per_pixel <= 32) {
	} else if (v.bits_per_pixel <= 32)
		v.bits_per_pixel = 32;
	} else
	else
		return -EINVAL;

	change_var = ((info->var.xres != var->xres) ||
@@ -1361,8 +1333,7 @@ intelfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
	return 0;
}

static int
intelfb_set_par(struct fb_info *info)
static int intelfb_set_par(struct fb_info *info)
{
	struct intelfb_hwstate *hw;
        struct intelfb_info *dinfo = GET_DINFO(info);
@@ -1408,9 +1379,9 @@ intelfb_set_par(struct fb_info *info)
		info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN |
		FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT |
		FBINFO_HWACCEL_IMAGEBLIT;
	} else {
	} else
		info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN;
	}

	kfree(hw);
	return 0;
invalid_mode:
@@ -1418,9 +1389,9 @@ invalid_mode:
	return -EINVAL;
}

static int
intelfb_setcolreg(unsigned regno, unsigned red, unsigned green,
		  unsigned blue, unsigned transp, struct fb_info *info)
static int intelfb_setcolreg(unsigned regno, unsigned red, unsigned green,
			     unsigned blue, unsigned transp,
			     struct fb_info *info)
{
	struct intelfb_info *dinfo = GET_DINFO(info);

@@ -1463,23 +1434,22 @@ intelfb_setcolreg(unsigned regno, unsigned red, unsigned green,
	return 0;
}

static int
intelfb_blank(int blank, struct fb_info *info)
static int intelfb_blank(int blank, struct fb_info *info)
{
	intelfbhw_do_blank(blank, info);
	return 0;
}

static int
intelfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
static int intelfb_pan_display(struct fb_var_screeninfo *var,
			       struct fb_info *info)
{
	intelfbhw_pan_display(var, info);
	return 0;
}

/* When/if we have our own ioctls. */
static int
intelfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
static int intelfb_ioctl(struct fb_info *info, unsigned int cmd,
			 unsigned long arg)
{
	int retval = 0;
	struct intelfb_info *dinfo = GET_DINFO(info);
@@ -1499,8 +1469,8 @@ intelfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
	return retval;
}

static void
intelfb_fillrect (struct fb_info *info, const struct fb_fillrect *rect)
static void intelfb_fillrect (struct fb_info *info,
			      const struct fb_fillrect *rect)
{
        struct intelfb_info *dinfo = GET_DINFO(info);
	u32 rop, color;
@@ -1514,7 +1484,7 @@ intelfb_fillrect (struct fb_info *info, const struct fb_fillrect *rect)

	if (rect->rop == ROP_COPY)
		rop = PAT_ROP_GXCOPY;
	else // ROP_XOR
	else /* ROP_XOR */
		rop = PAT_ROP_GXXOR;

	if (dinfo->depth != 8)
@@ -1528,8 +1498,8 @@ intelfb_fillrect (struct fb_info *info, const struct fb_fillrect *rect)
			      rop);
}

static void
intelfb_copyarea(struct fb_info *info, const struct fb_copyarea *region)
static void intelfb_copyarea(struct fb_info *info,
			     const struct fb_copyarea *region)
{
        struct intelfb_info *dinfo = GET_DINFO(info);

@@ -1545,8 +1515,8 @@ intelfb_copyarea(struct fb_info *info, const struct fb_copyarea *region)
			    dinfo->pitch, info->var.bits_per_pixel);
}

static void
intelfb_imageblit(struct fb_info *info, const struct fb_image *image)
static void intelfb_imageblit(struct fb_info *info,
			      const struct fb_image *image)
{
        struct intelfb_info *dinfo = GET_DINFO(info);
	u32 fgcolor, bgcolor;
@@ -1574,8 +1544,7 @@ intelfb_imageblit(struct fb_info *info, const struct fb_image *image)
		return cfb_imageblit(info, image);
}

static int
intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
static int intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
{
        struct intelfb_info *dinfo = GET_DINFO(info);
	u32 physical;
@@ -1689,8 +1658,7 @@ intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
	return 0;
}

static int
intelfb_sync(struct fb_info *info)
static int intelfb_sync(struct fb_info *info)
{
        struct intelfb_info *dinfo = GET_DINFO(info);

+83 −107
Original line number Diff line number Diff line
@@ -56,17 +56,16 @@ static struct pll_min_max plls[PLLS_MAX] = {
	  6, 16, 3, 16,
	  4, 128, 0, 31,
	  930000, 1400000, 165000, 48000,
	  4, 2 }, //I8xx
	  4, 2 },		/* I8xx */

	{ 75, 120, 10, 20,
	  5, 9, 4, 7,
	  5, 80, 1, 8,
	  1400000, 2800000, 200000, 96000,
	  10, 5 }  //I9xx
	  10, 5 }		/* I9xx */
};

int
intelfbhw_get_chipset(struct pci_dev *pdev, struct intelfb_info *dinfo)
int intelfbhw_get_chipset(struct pci_dev *pdev, struct intelfb_info *dinfo)
{
	u32 tmp;
	if (!pdev || !dinfo)
@@ -149,8 +148,7 @@ intelfbhw_get_chipset(struct pci_dev *pdev, struct intelfb_info *dinfo)
	}
}

int
intelfbhw_get_memory(struct pci_dev *pdev, int *aperture_size,
int intelfbhw_get_memory(struct pci_dev *pdev, int *aperture_size,
			 int *stolen_size)
{
	struct pci_dev *bridge_dev;
@@ -254,8 +252,7 @@ intelfbhw_get_memory(struct pci_dev *pdev, int *aperture_size,
	}
}

int
intelfbhw_check_non_crt(struct intelfb_info *dinfo)
int intelfbhw_check_non_crt(struct intelfb_info *dinfo)
{
	int dvo = 0;

@@ -271,8 +268,7 @@ intelfbhw_check_non_crt(struct intelfb_info *dinfo)
	return dvo;
}

const char *
intelfbhw_dvo_to_string(int dvo)
const char * intelfbhw_dvo_to_string(int dvo)
{
	if (dvo & DVOA_PORT)
		return "DVO port A";
@@ -287,8 +283,7 @@ intelfbhw_dvo_to_string(int dvo)
}


int
intelfbhw_validate_mode(struct intelfb_info *dinfo,
int intelfbhw_validate_mode(struct intelfb_info *dinfo,
			    struct fb_var_screeninfo *var)
{
	int bytes_per_pixel;
@@ -345,8 +340,7 @@ intelfbhw_validate_mode(struct intelfb_info *dinfo,
	return 0;
}

int
intelfbhw_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
int intelfbhw_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
{
	struct intelfb_info *dinfo = GET_DINFO(info);
	u32 offset, xoffset, yoffset;
@@ -368,9 +362,10 @@ intelfbhw_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
	offset += dinfo->fb.offset << 12;

	dinfo->vsync.pan_offset = offset;
	if ((var->activate & FB_ACTIVATE_VBL) && !intelfbhw_enable_irq(dinfo, 0)) {
	if ((var->activate & FB_ACTIVATE_VBL) &&
	    !intelfbhw_enable_irq(dinfo, 0))
		dinfo->vsync.pan_display = 1;
	} else {
	else {
		dinfo->vsync.pan_display = 0;
		OUTREG(DSPABASE, offset);
	}
@@ -379,8 +374,7 @@ intelfbhw_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
}

/* Blank the screen. */
void
intelfbhw_do_blank(int blank, struct fb_info *info)
void intelfbhw_do_blank(int blank, struct fb_info *info)
{
	struct intelfb_info *dinfo = GET_DINFO(info);
	u32 tmp;
@@ -405,11 +399,10 @@ intelfbhw_do_blank(int blank, struct fb_info *info)
	DBG_MSG("cursor_on is %d\n", dinfo->cursor_on);
#endif
	if (dinfo->cursor_on) {
		if (blank) {
		if (blank)
			intelfbhw_cursor_hide(dinfo);
		} else {
		else
			intelfbhw_cursor_show(dinfo);
		}
		dinfo->cursor_on = 1;
	}
	dinfo->cursor_blanked = blank;
@@ -437,8 +430,7 @@ intelfbhw_do_blank(int blank, struct fb_info *info)
}


void
intelfbhw_setcolreg(struct intelfb_info *dinfo, unsigned regno,
void intelfbhw_setcolreg(struct intelfb_info *dinfo, unsigned regno,
			 unsigned red, unsigned green, unsigned blue,
			 unsigned transp)
{
@@ -457,9 +449,8 @@ intelfbhw_setcolreg(struct intelfb_info *dinfo, unsigned regno,
}


int
intelfbhw_read_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw,
			int flag)
int intelfbhw_read_hw_state(struct intelfb_info *dinfo,
			    struct intelfb_hwstate *hw, int flag)
{
	int i;

@@ -606,7 +597,8 @@ static int calc_vclock3(int index, int m, int n, int p)
	return plls[index].ref_clk * m / n / p;
}

static int calc_vclock(int index, int m1, int m2, int n, int p1, int p2, int lvds)
static int calc_vclock(int index, int m1, int m2, int n, int p1, int p2,
		       int lvds)
{
	struct pll_min_max *pll = &plls[index];
	u32 m, vco, p;
@@ -615,17 +607,16 @@ static int calc_vclock(int index, int m1, int m2, int n, int p1, int p2, int lvd
	n += 2;
	vco = pll->ref_clk * m / n;

	if (index == PLLS_I8xx) {
	if (index == PLLS_I8xx)
		p = ((p1 + 2) * (1 << (p2 + 1)));
	} else {
	else
		p = ((p1) * (p2 ? 5 : 10));
	}
	return vco / p;
}

#if REGDUMP
static void
intelfbhw_get_p1p2(struct intelfb_info *dinfo, int dpll, int *o_p1, int *o_p2)
static void intelfbhw_get_p1p2(struct intelfb_info *dinfo, int dpll,
			       int *o_p1, int *o_p2)
{
	int p1, p2;

@@ -652,8 +643,8 @@ intelfbhw_get_p1p2(struct intelfb_info *dinfo, int dpll, int *o_p1, int *o_p2)
#endif


void
intelfbhw_print_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw)
void intelfbhw_print_hw_state(struct intelfb_info *dinfo,
			      struct intelfb_hwstate *hw)
{
#if REGDUMP
	int i, m1, m2, n, p1, p2;
@@ -685,7 +676,8 @@ intelfbhw_print_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw)
	intelfbhw_get_p1p2(dinfo, hw->vga_pd, &p1, &p2);
	printk("	VGA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n",
	       m1, m2, n, p1, p2);
	printk("	VGA1: clock is %d\n", calc_vclock(index, m1, m2, n, p1, p2, 0));
	printk("	VGA1: clock is %d\n",
	       calc_vclock(index, m1, m2, n, p1, p2, 0));

	printk("	DPLL_A:			0x%08x\n", hw->dpll_a);
	printk("	DPLL_B:			0x%08x\n", hw->dpll_b);
@@ -702,7 +694,8 @@ intelfbhw_print_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw)

	printk("	PLLA0: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n",
	       m1, m2, n, p1, p2);
	printk("	PLLA0: clock is %d\n", calc_vclock(index, m1, m2, n, p1, p2, 0));
	printk("	PLLA0: clock is %d\n",
	       calc_vclock(index, m1, m2, n, p1, p2, 0));

	n = (hw->fpa1 >> FP_N_DIVISOR_SHIFT) & FP_DIVISOR_MASK;
	m1 = (hw->fpa1 >> FP_M1_DIVISOR_SHIFT) & FP_DIVISOR_MASK;
@@ -712,7 +705,8 @@ intelfbhw_print_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw)

	printk("	PLLA1: (m1, m2, n, p1, p2) = (%d, %d, %d, %d, %d)\n",
	       m1, m2, n, p1, p2);
	printk("	PLLA1: clock is %d\n", calc_vclock(index, m1, m2, n, p1, p2, 0));
	printk("	PLLA1: clock is %d\n",
	       calc_vclock(index, m1, m2, n, p1, p2, 0));

#if 0
	printk("	PALETTE_A:\n");
@@ -817,8 +811,8 @@ intelfbhw_print_hw_state(struct intelfb_info *dinfo, struct intelfb_hwstate *hw)


/* Split the M parameter into M1 and M2. */
static int
splitm(int index, unsigned int m, unsigned int *retm1, unsigned int *retm2)
static int splitm(int index, unsigned int m, unsigned int *retm1,
		  unsigned int *retm2)
{
	int m1, m2;
	int testm;
@@ -839,8 +833,8 @@ splitm(int index, unsigned int m, unsigned int *retm1, unsigned int *retm2)
}

/* Split the P parameter into P1 and P2. */
static int
splitp(int index, unsigned int p, unsigned int *retp1, unsigned int *retp2)
static int splitp(int index, unsigned int p, unsigned int *retp1,
		  unsigned int *retp2)
{
	int p1, p2;
	struct pll_min_max *pll = &plls[index];
@@ -874,9 +868,8 @@ splitp(int index, unsigned int p, unsigned int *retp1, unsigned int *retp2)
	}
}

static int
calc_pll_params(int index, int clock, u32 *retm1, u32 *retm2, u32 *retn, u32 *retp1,
		u32 *retp2, u32 *retclock)
static int calc_pll_params(int index, int clock, u32 *retm1, u32 *retm2,
			   u32 *retn, u32 *retp1, u32 *retp2, u32 *retclock)
{
	u32 m1, m2, n, p1, p2, n1, testm;
	u32 f_vco, p, p_best = 0, m, f_out = 0;
@@ -971,8 +964,8 @@ calc_pll_params(int index, int clock, u32 *retm1, u32 *retm2, u32 *retn, u32 *re
	return 0;
}

static __inline__ int
check_overflow(u32 value, u32 limit, const char *description)
static __inline__ int check_overflow(u32 value, u32 limit,
				     const char *description)
{
	if (value > limit) {
		WRN_MSG("%s value %d exceeds limit %d\n",
@@ -983,8 +976,8 @@ check_overflow(u32 value, u32 limit, const char *description)
}

/* It is assumed that hw is filled in with the initial state information. */
int
intelfbhw_mode_to_hw(struct intelfb_info *dinfo, struct intelfb_hwstate *hw,
int intelfbhw_mode_to_hw(struct intelfb_info *dinfo,
			 struct intelfb_hwstate *hw,
			 struct fb_var_screeninfo *var)
{
	int pipe = PIPE_A;
@@ -1089,9 +1082,8 @@ intelfbhw_mode_to_hw(struct intelfb_info *dinfo, struct intelfb_hwstate *hw,
	if (IS_I9XX(dinfo)) {
		*dpll |= (p2 << DPLL_I9XX_P2_SHIFT);
		*dpll |= (1 << (p1 - 1)) << DPLL_P1_SHIFT;
	} else {
	} else
		*dpll |= (p2 << DPLL_P2_SHIFT) | (p1 << DPLL_P1_SHIFT);
	}

	*fp0 = (n << FP_N_DIVISOR_SHIFT) |
	       (m1 << FP_M1_DIVISOR_SHIFT) |
@@ -1226,8 +1218,7 @@ intelfbhw_mode_to_hw(struct intelfb_info *dinfo, struct intelfb_hwstate *hw,
}

/* Program a (non-VGA) video mode. */
int
intelfbhw_program_mode(struct intelfb_info *dinfo,
int intelfbhw_program_mode(struct intelfb_info *dinfo,
			   const struct intelfb_hwstate *hw, int blank)
{
	int pipe = PIPE_A;
@@ -1448,8 +1439,7 @@ static u32 get_ring_space(struct intelfb_info *dinfo)
	return ring_space;
}

static int
wait_ring(struct intelfb_info *dinfo, int n)
static int wait_ring(struct intelfb_info *dinfo, int n)
{
	int i = 0;
	unsigned long end;
@@ -1491,16 +1481,15 @@ wait_ring(struct intelfb_info *dinfo, int n)
	return i;
}

static void
do_flush(struct intelfb_info *dinfo) {
static void do_flush(struct intelfb_info *dinfo)
{
	START_RING(2);
	OUT_RING(MI_FLUSH | MI_WRITE_DIRTY_STATE | MI_INVALIDATE_MAP_CACHE);
	OUT_RING(MI_NOOP);
	ADVANCE_RING();
}

void
intelfbhw_do_sync(struct intelfb_info *dinfo)
void intelfbhw_do_sync(struct intelfb_info *dinfo)
{
#if VERBOSE > 0
	DBG_MSG("intelfbhw_do_sync\n");
@@ -1519,8 +1508,7 @@ intelfbhw_do_sync(struct intelfb_info *dinfo)
	dinfo->ring_space = dinfo->ring.size - RING_MIN_FREE;
}

static void
refresh_ring(struct intelfb_info *dinfo)
static void refresh_ring(struct intelfb_info *dinfo)
{
#if VERBOSE > 0
	DBG_MSG("refresh_ring\n");
@@ -1531,8 +1519,7 @@ refresh_ring(struct intelfb_info *dinfo)
	dinfo->ring_space = get_ring_space(dinfo);
}

static void
reset_state(struct intelfb_info *dinfo)
static void reset_state(struct intelfb_info *dinfo)
{
	int i;
	u32 tmp;
@@ -1562,12 +1549,11 @@ reset_state(struct intelfb_info *dinfo)
}

/* Stop the 2D engine, and turn off the ring buffer. */
void
intelfbhw_2d_stop(struct intelfb_info *dinfo)
void intelfbhw_2d_stop(struct intelfb_info *dinfo)
{
#if VERBOSE > 0
	DBG_MSG("intelfbhw_2d_stop: accel: %d, ring_active: %d\n", dinfo->accel,
		dinfo->ring_active);
	DBG_MSG("intelfbhw_2d_stop: accel: %d, ring_active: %d\n",
		dinfo->accel, dinfo->ring_active);
#endif

	if (!dinfo->accel)
@@ -1582,8 +1568,7 @@ intelfbhw_2d_stop(struct intelfb_info *dinfo)
 * It is assumed that the graphics engine has been stopped by previously
 * calling intelfb_2d_stop().
 */
void
intelfbhw_2d_start(struct intelfb_info *dinfo)
void intelfbhw_2d_start(struct intelfb_info *dinfo)
{
#if VERBOSE > 0
	DBG_MSG("intelfbhw_2d_start: accel: %d, ring_active: %d\n",
@@ -1607,9 +1592,8 @@ intelfbhw_2d_start(struct intelfb_info *dinfo)
}

/* 2D fillrect (solid fill or invert) */
void
intelfbhw_do_fillrect(struct intelfb_info *dinfo, u32 x, u32 y, u32 w, u32 h,
		      u32 color, u32 pitch, u32 bpp, u32 rop)
void intelfbhw_do_fillrect(struct intelfb_info *dinfo, u32 x, u32 y, u32 w,
			   u32 h, u32 color, u32 pitch, u32 bpp, u32 rop)
{
	u32 br00, br09, br13, br14, br16;

@@ -1698,9 +1682,9 @@ intelfbhw_do_bitblt(struct intelfb_info *dinfo, u32 curx, u32 cury,
	ADVANCE_RING();
}

int
intelfbhw_do_drawglyph(struct intelfb_info *dinfo, u32 fg, u32 bg, u32 w,
		       u32 h, const u8* cdat, u32 x, u32 y, u32 pitch, u32 bpp)
int intelfbhw_do_drawglyph(struct intelfb_info *dinfo, u32 fg, u32 bg, u32 w,
			   u32 h, const u8* cdat, u32 x, u32 y, u32 pitch,
			   u32 bpp)
{
	int nbytes, ndwords, pad, tmp;
	u32 br00, br09, br13, br18, br19, br22, br23;
@@ -1787,8 +1771,7 @@ intelfbhw_do_drawglyph(struct intelfb_info *dinfo, u32 fg, u32 bg, u32 w,
}

/* HW cursor functions. */
void
intelfbhw_cursor_init(struct intelfb_info *dinfo)
void intelfbhw_cursor_init(struct intelfb_info *dinfo)
{
	u32 tmp;

@@ -1819,8 +1802,7 @@ intelfbhw_cursor_init(struct intelfb_info *dinfo)
	}
}

void
intelfbhw_cursor_hide(struct intelfb_info *dinfo)
void intelfbhw_cursor_hide(struct intelfb_info *dinfo)
{
	u32 tmp;

@@ -1845,8 +1827,7 @@ intelfbhw_cursor_hide(struct intelfb_info *dinfo)
	}
}

void
intelfbhw_cursor_show(struct intelfb_info *dinfo)
void intelfbhw_cursor_show(struct intelfb_info *dinfo)
{
	u32 tmp;

@@ -1875,8 +1856,7 @@ intelfbhw_cursor_show(struct intelfb_info *dinfo)
	}
}

void
intelfbhw_cursor_setpos(struct intelfb_info *dinfo, int x, int y)
void intelfbhw_cursor_setpos(struct intelfb_info *dinfo, int x, int y)
{
	u32 tmp;

@@ -1894,13 +1874,11 @@ intelfbhw_cursor_setpos(struct intelfb_info *dinfo, int x, int y)
	      ((y & CURSOR_POS_MASK) << CURSOR_Y_SHIFT);
	OUTREG(CURSOR_A_POSITION, tmp);

	if (IS_I9XX(dinfo)) {
	if (IS_I9XX(dinfo))
		OUTREG(CURSOR_A_BASEADDR, dinfo->cursor.physical);
}
}

void
intelfbhw_cursor_setcolor(struct intelfb_info *dinfo, u32 bg, u32 fg)
void intelfbhw_cursor_setcolor(struct intelfb_info *dinfo, u32 bg, u32 fg)
{
#if VERBOSE > 0
	DBG_MSG("intelfbhw_cursor_setcolor\n");
@@ -1912,8 +1890,7 @@ intelfbhw_cursor_setcolor(struct intelfb_info *dinfo, u32 bg, u32 fg)
	OUTREG(CURSOR_A_PALETTE3, bg & CURSOR_PALETTE_MASK);
}

void
intelfbhw_cursor_load(struct intelfb_info *dinfo, int width, int height,
void intelfbhw_cursor_load(struct intelfb_info *dinfo, int width, int height,
			   u8 *data)
{
	u8 __iomem *addr = (u8 __iomem *)dinfo->cursor.virtual;
@@ -1942,8 +1919,8 @@ intelfbhw_cursor_load(struct intelfb_info *dinfo, int width, int height,
	}
}

void
intelfbhw_cursor_reset(struct intelfb_info *dinfo) {
void intelfbhw_cursor_reset(struct intelfb_info *dinfo)
{
	u8 __iomem *addr = (u8 __iomem *)dinfo->cursor.virtual;
	int i, j;

@@ -2047,8 +2024,8 @@ intelfbhw_disable_irq(struct intelfb_info *dinfo) {
	}
}

int
intelfbhw_wait_for_vsync(struct intelfb_info *dinfo, u32 pipe) {
int intelfbhw_wait_for_vsync(struct intelfb_info *dinfo, u32 pipe)
{
	struct intelfb_vsync *vsync;
	unsigned int count;
	int ret;
@@ -2062,15 +2039,14 @@ intelfbhw_wait_for_vsync(struct intelfb_info *dinfo, u32 pipe) {
	}

	ret = intelfbhw_enable_irq(dinfo, 0);
	if (ret) {
	if (ret)
		return ret;
	}

	count = vsync->count;
	ret = wait_event_interruptible_timeout(vsync->wait, count != vsync->count, HZ/10);
	if (ret < 0) {
	ret = wait_event_interruptible_timeout(vsync->wait,
					       count != vsync->count, HZ / 10);
	if (ret < 0)
		return ret;
	}
	if (ret == 0) {
		intelfbhw_enable_irq(dinfo, 1);
		DBG_MSG("wait_for_vsync timed out!\n");
+7 −7
Original line number Diff line number Diff line
@@ -128,9 +128,9 @@

#define GPIOA             0x5010
#define GPIOB             0x5014
#define GPIOC             0x5018 // this may be external DDC on i830
#define GPIOD             0x501C // this is DVO DDC
#define GPIOE             0x5020 // this is DVO i2C
#define GPIOC             0x5018 /* this may be external DDC on i830 */
#define GPIOD             0x501C /* this is DVO DDC */
#define GPIOE             0x5020 /* this is DVO i2C */
#define GPIOF             0x5024

/* PLL registers */
@@ -269,8 +269,8 @@
#define PORT_ENABLE		        (1 << 31)
#define PORT_PIPE_SELECT_SHIFT	        30
#define PORT_TV_FLAGS_MASK              0xFF
#define PORT_TV_FLAGS                   0xC4  // ripped from my BIOS
                                              // to understand and correct
#define PORT_TV_FLAGS                   0xC4	/* ripped from my BIOS
						   to understand and correct */

#define DVOA_SRCDIM		0x61124
#define DVOB_SRCDIM		0x61144