patch-2.4.0-test6 linux/drivers/video/valkyriefb.c
Next file: linux/drivers/video/valkyriefb.h
Previous file: linux/drivers/video/sgivwfb.c
Back to the patch index
Back to the overall index
- Lines: 97
- Date:
Fri Aug 4 18:06:34 2000
- Orig file:
v2.4.0-test5/linux/drivers/video/valkyriefb.c
- Orig date:
Thu Jul 27 17:38:01 2000
diff -u --recursive --new-file v2.4.0-test5/linux/drivers/video/valkyriefb.c linux/drivers/video/valkyriefb.c
@@ -1,7 +1,8 @@
/*
* valkyriefb.c -- frame buffer device for the PowerMac 'valkyrie' display
*
- * Created 8 August 1998 by Martin Costabel and Kevin Schoedel
+ * Created 8 August 1998 by
+ * Martin Costabel <costabel@wanadoo.fr> and Kevin Schoedel
*
* Vmode-switching changes and vmode 15/17 modifications created 29 August
* 1998 by Barry K. Nathan <barryn@pobox.com>.
@@ -114,9 +115,9 @@
* Exported functions
*/
int valkyriefb_init(void);
-void valkyrie_of_init(struct device_node *dp);
int valkyriefb_setup(char*);
+static void valkyrie_of_init(struct device_node *dp);
static int valkyrie_get_fix(struct fb_fix_screeninfo *fix, int con,
struct fb_info *info);
static int valkyrie_get_var(struct fb_var_screeninfo *var, int con,
@@ -547,20 +548,18 @@
int __init valkyriefb_init(void)
{
-#ifndef CONFIG_FB_OF
struct device_node *dp;
dp = find_devices("valkyrie");
if (dp != 0)
valkyrie_of_init(dp);
-#endif /* CONFIG_FB_OF */
return 0;
}
-void __init valkyrie_of_init(struct device_node *dp)
+static void __init valkyrie_of_init(struct device_node *dp)
{
struct fb_info_valkyrie *p;
- unsigned long addr, size;
+ unsigned long addr;
if(dp->n_addrs != 1) {
printk(KERN_ERR "expecting 1 address for valkyrie (got %d)", dp->n_addrs);
@@ -574,13 +573,16 @@
/* Map in frame buffer and registers */
addr = dp->addrs[0].address;
- size = 4096;
+ if (!request_mem_region(addr, dp->addrs[0].size, "valkyriefb")) {
+ kfree(p);
+ return;
+ }
p->frame_buffer_phys = addr;
p->frame_buffer = __ioremap(addr, 0x100000, _PAGE_WRITETHRU);
p->cmap_regs_phys = addr + 0x304000;
- p->cmap_regs = ioremap(p->cmap_regs_phys, size);
+ p->cmap_regs = ioremap(p->cmap_regs_phys,4096);
p->valkyrie_regs_phys = addr + 0x30a000;
- p->valkyrie_regs = ioremap(p->valkyrie_regs_phys, size);
+ p->valkyrie_regs = ioremap(p->valkyrie_regs_phys, 4096);
/*
* kps: As far as I know, all Valkyries have fixed usable VRAM.
@@ -650,31 +652,9 @@
struct valkyrie_regvals *init;
struct fb_info_valkyrie *p = (struct fb_info_valkyrie *) fb_info;
- /* these are old variables that are no longer needed with my new code
- [bkn]
-
- int xres = var->xres;
- int yres = var->yres;
- */
-
- /*
- * Get the video params out of 'var'. If a value doesn't fit, round it up,
- * if it's too big, return -EINVAL.
- *
- * Suggestion: Round up in the following order: bits_per_pixel, xres,
- * yres, xres_virtual, yres_virtual, xoffset, yoffset, grayscale,
- * bitfields, horizontal timing, vertical timing.
- */
if(mac_var_to_vmode(var, &par->vmode, &par->cmode) != 0) {
- printk(KERN_ERR "valkyrie_var_to_par: mac_var_to_vmode unsuccessful.\n");
- printk(KERN_ERR "valkyrie_var_to_par: var->xres = %d\n", var->xres);
- printk(KERN_ERR "valkyrie_var_to_par: var->yres = %d\n", var->yres);
- printk(KERN_ERR "valkyrie_var_to_par: var->xres_virtual = %d\n", var->xres_virtual);
- printk(KERN_ERR "valkyrie_var_to_par: var->yres_virtual = %d\n", var->yres_virtual);
- printk(KERN_ERR "valkyrie_var_to_par: var->bits_per_pixel = %d\n", var->bits_per_pixel);
- printk(KERN_ERR "valkyrie_var_to_par: var->pixclock = %d\n", var->pixclock);
- printk(KERN_ERR "valkyrie_var_to_par: var->vmode = %d\n", var->vmode);
+ printk(KERN_ERR "valkyrie_var_to_par: %dx%dx%d unsuccessful.\n",var->xres,var->yres,var->bits_per_pixel);
return -EINVAL;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)