git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
string: factorize skip_spaces and export it to be generally available
[safe/jmp/linux-2.6]
/
drivers
/
video
/
atafb.c
diff --git
a/drivers/video/atafb.c
b/drivers/video/atafb.c
index
477ce55
..
b7687c5
100644
(file)
--- a/
drivers/video/atafb.c
+++ b/
drivers/video/atafb.c
@@
-329,12
+329,6
@@
extern unsigned char fontdata_8x16[];
*
* * perform fb specific mmap *
* int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
*
* * perform fb specific mmap *
* int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
- *
- * * save current hardware state *
- * void (*fb_save_state)(struct fb_info *info);
- *
- * * restore saved state *
- * void (*fb_restore_state)(struct fb_info *info);
* } ;
*/
* } ;
*/
@@
-841,7
+835,7
@@
static int tt_detect(void)
tt_dmasnd.ctrl = DMASND_CTRL_OFF;
udelay(20); /* wait a while for things to settle down */
}
tt_dmasnd.ctrl = DMASND_CTRL_OFF;
udelay(20); /* wait a while for things to settle down */
}
- mono_moni = (mfp.par_dt_reg & 0x80) == 0;
+ mono_moni = (
st_
mfp.par_dt_reg & 0x80) == 0;
tt_get_par(&par);
tt_encode_var(&atafb_predefined[0], &par);
tt_get_par(&par);
tt_encode_var(&atafb_predefined[0], &par);
@@
-2035,7
+2029,7
@@
static int stste_detect(void)
tt_dmasnd.ctrl = DMASND_CTRL_OFF;
udelay(20); /* wait a while for things to settle down */
}
tt_dmasnd.ctrl = DMASND_CTRL_OFF;
udelay(20); /* wait a while for things to settle down */
}
- mono_moni = (mfp.par_dt_reg & 0x80) == 0;
+ mono_moni = (
st_
mfp.par_dt_reg & 0x80) == 0;
stste_get_par(&par);
stste_encode_var(&atafb_predefined[0], &par);
stste_get_par(&par);
stste_encode_var(&atafb_predefined[0], &par);
@@
-2086,20
+2080,20
@@
static void st_ovsc_switch(void)
return;
local_irq_save(flags);
return;
local_irq_save(flags);
- mfp.tim_ct_b = 0x10;
- mfp.active_edge |= 8;
- mfp.tim_ct_b = 0;
- mfp.tim_dt_b = 0xf0;
- mfp.tim_ct_b = 8;
- while (
mfp.tim_dt_b > 1)
/* TOS does it this way, don't ask why */
+
st_
mfp.tim_ct_b = 0x10;
+
st_
mfp.active_edge |= 8;
+
st_
mfp.tim_ct_b = 0;
+
st_
mfp.tim_dt_b = 0xf0;
+
st_
mfp.tim_ct_b = 8;
+ while (
st_mfp.tim_dt_b > 1)
/* TOS does it this way, don't ask why */
;
;
- new = mfp.tim_dt_b;
+ new =
st_
mfp.tim_dt_b;
do {
udelay(LINE_DELAY);
old = new;
do {
udelay(LINE_DELAY);
old = new;
- new = mfp.tim_dt_b;
+ new =
st_
mfp.tim_dt_b;
} while (old != new);
} while (old != new);
- mfp.tim_ct_b = 0x10;
+
st_
mfp.tim_ct_b = 0x10;
udelay(SYNC_DELAY);
if (atari_switches & ATARI_SWITCH_OVSC_IKBD)
udelay(SYNC_DELAY);
if (atari_switches & ATARI_SWITCH_OVSC_IKBD)
@@
-2248,6
+2242,9
@@
static int ext_setcolreg(unsigned int regno, unsigned int red,
if (!external_vgaiobase)
return 1;
if (!external_vgaiobase)
return 1;
+ if (regno > 255)
+ return 1;
+
switch (external_card_type) {
case IS_VGA:
OUTB(0x3c8, regno);
switch (external_card_type) {
case IS_VGA:
OUTB(0x3c8, regno);
@@
-2405,6
+2402,9
@@
static int do_fb_set_var(struct fb_var_screeninfo *var, int isactive)
return 0;
}
return 0;
}
+/* fbhw->encode_fix() must be called with fb_info->mm_lock held
+ * if it is called after the register_framebuffer() - not a case here
+ */
static int atafb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
{
struct atafb_par par;
static int atafb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
{
struct atafb_par par;
@@
-2414,7
+2414,8
@@
static int atafb_get_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
if (err)
return err;
memset(fix, 0, sizeof(struct fb_fix_screeninfo));
if (err)
return err;
memset(fix, 0, sizeof(struct fb_fix_screeninfo));
- return fbhw->encode_fix(fix, &par);
+ err = fbhw->encode_fix(fix, &par);
+ return err;
}
static int atafb_get_var(struct fb_var_screeninfo *var, struct fb_info *info)
}
static int atafb_get_var(struct fb_var_screeninfo *var, struct fb_info *info)
@@
-2743,7
+2744,9
@@
static int atafb_set_par(struct fb_info *info)
/* Decode wanted screen parameters */
fbhw->decode_var(&info->var, par);
/* Decode wanted screen parameters */
fbhw->decode_var(&info->var, par);
+ mutex_lock(&info->mm_lock);
fbhw->encode_fix(&info->fix, par);
fbhw->encode_fix(&info->fix, par);
+ mutex_unlock(&info->mm_lock);
/* Set new videomode */
ata_set_par(par);
/* Set new videomode */
ata_set_par(par);
@@
-3075,8
+3078,7
@@
int __init atafb_setup(char *options)
int __init atafb_init(void)
{
int __init atafb_init(void)
{
- int pad;
- int detected_mode;
+ int pad, detected_mode, error;
unsigned int defmode = 0;
unsigned long mem_req;
unsigned int defmode = 0;
unsigned long mem_req;
@@
-3116,8
+3118,12
@@
int __init atafb_init(void)
printk("atafb_init: initializing Falcon hw\n");
fbhw = &falcon_switch;
atafb_ops.fb_setcolreg = &falcon_setcolreg;
printk("atafb_init: initializing Falcon hw\n");
fbhw = &falcon_switch;
atafb_ops.fb_setcolreg = &falcon_setcolreg;
- request_irq(IRQ_AUTO_4, falcon_vbl_switcher, IRQ_TYPE_PRIO,
- "framebuffer/modeswitch", falcon_vbl_switcher);
+ error = request_irq(IRQ_AUTO_4, falcon_vbl_switcher,
+ IRQ_TYPE_PRIO,
+ "framebuffer/modeswitch",
+ falcon_vbl_switcher);
+ if (error)
+ return error;
defmode = DEFMODE_F30;
break;
}
defmode = DEFMODE_F30;
break;
}