diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-09-24 00:25:02 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-24 00:25:02 -0400 |
commit | c1d9728ecc5b560465df3c0c0d3b3825c2710b40 (patch) | |
tree | d0abb5c923a7a3eca2d4b2c3e1964bf484870909 /drivers/video | |
parent | 165415f700b0c77fa1f8db6198f48582639adf78 (diff) | |
parent | 87e807b6c461bbd449496a4c3ab78ab164a4ba97 (diff) |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/video')
26 files changed, 103 insertions, 87 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 615874e03ce8..773ae11b4a19 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -650,6 +650,7 @@ config FB_NVIDIA | |||
650 | select FB_CFB_FILLRECT | 650 | select FB_CFB_FILLRECT |
651 | select FB_CFB_COPYAREA | 651 | select FB_CFB_COPYAREA |
652 | select FB_CFB_IMAGEBLIT | 652 | select FB_CFB_IMAGEBLIT |
653 | select FB_SOFT_CURSOR | ||
653 | help | 654 | help |
654 | This driver supports graphics boards with the nVidia chips, TNT | 655 | This driver supports graphics boards with the nVidia chips, TNT |
655 | and newer. For very old chipsets, such as the RIVA128, then use | 656 | and newer. For very old chipsets, such as the RIVA128, then use |
@@ -753,7 +754,8 @@ config FB_I810_GTF | |||
753 | 754 | ||
754 | config FB_I810_I2C | 755 | config FB_I810_I2C |
755 | bool "Enable DDC Support" | 756 | bool "Enable DDC Support" |
756 | depends on FB_I810 && I2C && FB_I810_GTF | 757 | depends on FB_I810 && FB_I810_GTF |
758 | select I2C | ||
757 | select I2C_ALGOBIT | 759 | select I2C_ALGOBIT |
758 | help | 760 | help |
759 | 761 | ||
diff --git a/drivers/video/aty/xlinit.c b/drivers/video/aty/xlinit.c index 92643af12581..a085cbf74ecb 100644 --- a/drivers/video/aty/xlinit.c +++ b/drivers/video/aty/xlinit.c | |||
@@ -174,7 +174,7 @@ int atyfb_xl_init(struct fb_info *info) | |||
174 | const struct xl_card_cfg_t * card = &card_cfg[xl_card]; | 174 | const struct xl_card_cfg_t * card = &card_cfg[xl_card]; |
175 | struct atyfb_par *par = (struct atyfb_par *) info->par; | 175 | struct atyfb_par *par = (struct atyfb_par *) info->par; |
176 | union aty_pll pll; | 176 | union aty_pll pll; |
177 | int i, err; | 177 | int err; |
178 | u32 temp; | 178 | u32 temp; |
179 | 179 | ||
180 | aty_st_8(CONFIG_STAT0, 0x85, par); | 180 | aty_st_8(CONFIG_STAT0, 0x85, par); |
@@ -252,9 +252,14 @@ int atyfb_xl_init(struct fb_info *info) | |||
252 | aty_st_le32(0xEC, 0x00000000, par); | 252 | aty_st_le32(0xEC, 0x00000000, par); |
253 | aty_st_le32(0xFC, 0x00000000, par); | 253 | aty_st_le32(0xFC, 0x00000000, par); |
254 | 254 | ||
255 | for (i=0; i<sizeof(lcd_tbl)/sizeof(lcd_tbl_t); i++) { | 255 | #if defined (CONFIG_FB_ATY_GENERIC_LCD) |
256 | aty_st_lcd(lcd_tbl[i].lcd_reg, lcd_tbl[i].val, par); | 256 | { |
257 | int i; | ||
258 | |||
259 | for (i = 0; i < ARRAY_SIZE(lcd_tbl); i++) | ||
260 | aty_st_lcd(lcd_tbl[i].lcd_reg, lcd_tbl[i].val, par); | ||
257 | } | 261 | } |
262 | #endif | ||
258 | 263 | ||
259 | aty_st_le16(CONFIG_STAT0, 0x00A4, par); | 264 | aty_st_le16(CONFIG_STAT0, 0x00A4, par); |
260 | mdelay(10); | 265 | mdelay(10); |
diff --git a/drivers/video/backlight/corgi_bl.c b/drivers/video/backlight/corgi_bl.c index 353cb3f73cf2..630f2dfa9699 100644 --- a/drivers/video/backlight/corgi_bl.c +++ b/drivers/video/backlight/corgi_bl.c | |||
@@ -19,17 +19,18 @@ | |||
19 | #include <linux/fb.h> | 19 | #include <linux/fb.h> |
20 | #include <linux/backlight.h> | 20 | #include <linux/backlight.h> |
21 | 21 | ||
22 | #include <asm/arch-pxa/corgi.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/hardware/scoop.h> | 23 | #include <asm/arch/sharpsl.h> |
24 | 24 | ||
25 | #define CORGI_MAX_INTENSITY 0x3e | ||
26 | #define CORGI_DEFAULT_INTENSITY 0x1f | 25 | #define CORGI_DEFAULT_INTENSITY 0x1f |
27 | #define CORGI_LIMIT_MASK 0x0b | 26 | #define CORGI_LIMIT_MASK 0x0b |
28 | 27 | ||
29 | static int corgibl_powermode = FB_BLANK_UNBLANK; | 28 | static int corgibl_powermode = FB_BLANK_UNBLANK; |
30 | static int current_intensity = 0; | 29 | static int current_intensity = 0; |
31 | static int corgibl_limit = 0; | 30 | static int corgibl_limit = 0; |
31 | static void (*corgibl_mach_set_intensity)(int intensity); | ||
32 | static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED; | 32 | static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED; |
33 | static struct backlight_properties corgibl_data; | ||
33 | 34 | ||
34 | static void corgibl_send_intensity(int intensity) | 35 | static void corgibl_send_intensity(int intensity) |
35 | { | 36 | { |
@@ -43,18 +44,10 @@ static void corgibl_send_intensity(int intensity) | |||
43 | intensity &= CORGI_LIMIT_MASK; | 44 | intensity &= CORGI_LIMIT_MASK; |
44 | } | 45 | } |
45 | 46 | ||
46 | /* Skip 0x20 as it will blank the display */ | ||
47 | if (intensity >= 0x20) | ||
48 | intensity++; | ||
49 | |||
50 | spin_lock_irqsave(&bl_lock, flags); | 47 | spin_lock_irqsave(&bl_lock, flags); |
51 | /* Bits 0-4 are accessed via the SSP interface */ | 48 | |
52 | corgi_ssp_blduty_set(intensity & 0x1f); | 49 | corgibl_mach_set_intensity(intensity); |
53 | /* Bit 5 is via SCOOP */ | 50 | |
54 | if (intensity & 0x0020) | ||
55 | set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_BACKLIGHT_CONT); | ||
56 | else | ||
57 | reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_BACKLIGHT_CONT); | ||
58 | spin_unlock_irqrestore(&bl_lock, flags); | 51 | spin_unlock_irqrestore(&bl_lock, flags); |
59 | } | 52 | } |
60 | 53 | ||
@@ -113,8 +106,8 @@ static int corgibl_get_power(struct backlight_device *bd) | |||
113 | 106 | ||
114 | static int corgibl_set_intensity(struct backlight_device *bd, int intensity) | 107 | static int corgibl_set_intensity(struct backlight_device *bd, int intensity) |
115 | { | 108 | { |
116 | if (intensity > CORGI_MAX_INTENSITY) | 109 | if (intensity > corgibl_data.max_brightness) |
117 | intensity = CORGI_MAX_INTENSITY; | 110 | intensity = corgibl_data.max_brightness; |
118 | corgibl_send_intensity(intensity); | 111 | corgibl_send_intensity(intensity); |
119 | current_intensity=intensity; | 112 | current_intensity=intensity; |
120 | return 0; | 113 | return 0; |
@@ -141,7 +134,6 @@ static struct backlight_properties corgibl_data = { | |||
141 | .owner = THIS_MODULE, | 134 | .owner = THIS_MODULE, |
142 | .get_power = corgibl_get_power, | 135 | .get_power = corgibl_get_power, |
143 | .set_power = corgibl_set_power, | 136 | .set_power = corgibl_set_power, |
144 | .max_brightness = CORGI_MAX_INTENSITY, | ||
145 | .get_brightness = corgibl_get_intensity, | 137 | .get_brightness = corgibl_get_intensity, |
146 | .set_brightness = corgibl_set_intensity, | 138 | .set_brightness = corgibl_set_intensity, |
147 | }; | 139 | }; |
@@ -150,12 +142,18 @@ static struct backlight_device *corgi_backlight_device; | |||
150 | 142 | ||
151 | static int __init corgibl_probe(struct device *dev) | 143 | static int __init corgibl_probe(struct device *dev) |
152 | { | 144 | { |
145 | struct corgibl_machinfo *machinfo = dev->platform_data; | ||
146 | |||
147 | corgibl_data.max_brightness = machinfo->max_intensity; | ||
148 | corgibl_mach_set_intensity = machinfo->set_bl_intensity; | ||
149 | |||
153 | corgi_backlight_device = backlight_device_register ("corgi-bl", | 150 | corgi_backlight_device = backlight_device_register ("corgi-bl", |
154 | NULL, &corgibl_data); | 151 | NULL, &corgibl_data); |
155 | if (IS_ERR (corgi_backlight_device)) | 152 | if (IS_ERR (corgi_backlight_device)) |
156 | return PTR_ERR (corgi_backlight_device); | 153 | return PTR_ERR (corgi_backlight_device); |
157 | 154 | ||
158 | corgibl_set_intensity(NULL, CORGI_DEFAULT_INTENSITY); | 155 | corgibl_set_intensity(NULL, CORGI_DEFAULT_INTENSITY); |
156 | corgibl_limit_intensity(0); | ||
159 | 157 | ||
160 | printk("Corgi Backlight Driver Initialized.\n"); | 158 | printk("Corgi Backlight Driver Initialized.\n"); |
161 | return 0; | 159 | return 0; |
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 2e93224d2d55..0fc8bb499c3f 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -767,7 +767,7 @@ static const char *fbcon_startup(void) | |||
767 | const char *display_desc = "frame buffer device"; | 767 | const char *display_desc = "frame buffer device"; |
768 | struct display *p = &fb_display[fg_console]; | 768 | struct display *p = &fb_display[fg_console]; |
769 | struct vc_data *vc = vc_cons[fg_console].d; | 769 | struct vc_data *vc = vc_cons[fg_console].d; |
770 | struct font_desc *font = NULL; | 770 | const struct font_desc *font = NULL; |
771 | struct module *owner; | 771 | struct module *owner; |
772 | struct fb_info *info = NULL; | 772 | struct fb_info *info = NULL; |
773 | struct fbcon_ops *ops; | 773 | struct fbcon_ops *ops; |
@@ -841,7 +841,7 @@ static const char *fbcon_startup(void) | |||
841 | info->var.yres); | 841 | info->var.yres); |
842 | vc->vc_font.width = font->width; | 842 | vc->vc_font.width = font->width; |
843 | vc->vc_font.height = font->height; | 843 | vc->vc_font.height = font->height; |
844 | vc->vc_font.data = p->fontdata = font->data; | 844 | vc->vc_font.data = (void *)(p->fontdata = font->data); |
845 | vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */ | 845 | vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */ |
846 | } | 846 | } |
847 | 847 | ||
@@ -941,7 +941,7 @@ static void fbcon_init(struct vc_data *vc, int init) | |||
941 | fb, copy the font from that console */ | 941 | fb, copy the font from that console */ |
942 | t = &fb_display[svc->vc_num]; | 942 | t = &fb_display[svc->vc_num]; |
943 | if (!vc->vc_font.data) { | 943 | if (!vc->vc_font.data) { |
944 | vc->vc_font.data = p->fontdata = t->fontdata; | 944 | vc->vc_font.data = (void *)(p->fontdata = t->fontdata); |
945 | vc->vc_font.width = (*default_mode)->vc_font.width; | 945 | vc->vc_font.width = (*default_mode)->vc_font.width; |
946 | vc->vc_font.height = (*default_mode)->vc_font.height; | 946 | vc->vc_font.height = (*default_mode)->vc_font.height; |
947 | p->userfont = t->userfont; | 947 | p->userfont = t->userfont; |
@@ -1188,7 +1188,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, | |||
1188 | return; | 1188 | return; |
1189 | t = &fb_display[svc->vc_num]; | 1189 | t = &fb_display[svc->vc_num]; |
1190 | if (!vc->vc_font.data) { | 1190 | if (!vc->vc_font.data) { |
1191 | vc->vc_font.data = p->fontdata = t->fontdata; | 1191 | vc->vc_font.data = (void *)(p->fontdata = t->fontdata); |
1192 | vc->vc_font.width = (*default_mode)->vc_font.width; | 1192 | vc->vc_font.width = (*default_mode)->vc_font.width; |
1193 | vc->vc_font.height = (*default_mode)->vc_font.height; | 1193 | vc->vc_font.height = (*default_mode)->vc_font.height; |
1194 | p->userfont = t->userfont; | 1194 | p->userfont = t->userfont; |
@@ -1687,6 +1687,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | |||
1687 | case SM_DOWN: | 1687 | case SM_DOWN: |
1688 | if (count > vc->vc_rows) /* Maximum realistic size */ | 1688 | if (count > vc->vc_rows) /* Maximum realistic size */ |
1689 | count = vc->vc_rows; | 1689 | count = vc->vc_rows; |
1690 | if (logo_shown >= 0) | ||
1691 | goto redraw_down; | ||
1690 | switch (p->scrollmode) { | 1692 | switch (p->scrollmode) { |
1691 | case SCROLL_MOVE: | 1693 | case SCROLL_MOVE: |
1692 | ops->bmove(vc, info, t, 0, t + count, 0, | 1694 | ops->bmove(vc, info, t, 0, t + count, 0, |
@@ -2148,7 +2150,7 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) | |||
2148 | } | 2150 | } |
2149 | 2151 | ||
2150 | static int fbcon_do_set_font(struct vc_data *vc, int w, int h, | 2152 | static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
2151 | u8 * data, int userfont) | 2153 | const u8 * data, int userfont) |
2152 | { | 2154 | { |
2153 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | 2155 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
2154 | struct display *p = &fb_display[vc->vc_num]; | 2156 | struct display *p = &fb_display[vc->vc_num]; |
@@ -2166,7 +2168,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, | |||
2166 | cnt = FNTCHARCNT(data); | 2168 | cnt = FNTCHARCNT(data); |
2167 | else | 2169 | else |
2168 | cnt = 256; | 2170 | cnt = 256; |
2169 | vc->vc_font.data = p->fontdata = data; | 2171 | vc->vc_font.data = (void *)(p->fontdata = data); |
2170 | if ((p->userfont = userfont)) | 2172 | if ((p->userfont = userfont)) |
2171 | REFCOUNT(data)++; | 2173 | REFCOUNT(data)++; |
2172 | vc->vc_font.width = w; | 2174 | vc->vc_font.width = w; |
@@ -2323,7 +2325,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne | |||
2323 | tmp->vc_font.width == w && | 2325 | tmp->vc_font.width == w && |
2324 | !memcmp(fb_display[i].fontdata, new_data, size)) { | 2326 | !memcmp(fb_display[i].fontdata, new_data, size)) { |
2325 | kfree(new_data - FONT_EXTRA_WORDS * sizeof(int)); | 2327 | kfree(new_data - FONT_EXTRA_WORDS * sizeof(int)); |
2326 | new_data = fb_display[i].fontdata; | 2328 | new_data = (u8 *)fb_display[i].fontdata; |
2327 | break; | 2329 | break; |
2328 | } | 2330 | } |
2329 | } | 2331 | } |
@@ -2333,7 +2335,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne | |||
2333 | static int fbcon_set_def_font(struct vc_data *vc, struct console_font *font, char *name) | 2335 | static int fbcon_set_def_font(struct vc_data *vc, struct console_font *font, char *name) |
2334 | { | 2336 | { |
2335 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | 2337 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
2336 | struct font_desc *f; | 2338 | const struct font_desc *f; |
2337 | 2339 | ||
2338 | if (!name) | 2340 | if (!name) |
2339 | f = get_default_font(info->var.xres, info->var.yres); | 2341 | f = get_default_font(info->var.xres, info->var.yres); |
diff --git a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h index 08befafe11d1..0738cd62def2 100644 --- a/drivers/video/console/fbcon.h +++ b/drivers/video/console/fbcon.h | |||
@@ -30,7 +30,7 @@ struct display { | |||
30 | /* Filled in by the frame buffer device */ | 30 | /* Filled in by the frame buffer device */ |
31 | u_short inverse; /* != 0 text black on white as default */ | 31 | u_short inverse; /* != 0 text black on white as default */ |
32 | /* Filled in by the low-level console driver */ | 32 | /* Filled in by the low-level console driver */ |
33 | u_char *fontdata; | 33 | const u_char *fontdata; |
34 | int userfont; /* != 0 if fontdata kmalloc()ed */ | 34 | int userfont; /* != 0 if fontdata kmalloc()ed */ |
35 | u_short scrollmode; /* Scroll Method */ | 35 | u_short scrollmode; /* Scroll Method */ |
36 | short yscroll; /* Hardware scrolling */ | 36 | short yscroll; /* Hardware scrolling */ |
diff --git a/drivers/video/console/font_10x18.c b/drivers/video/console/font_10x18.c index ff0af96e4dfc..e6aa0eab5bb6 100644 --- a/drivers/video/console/font_10x18.c +++ b/drivers/video/console/font_10x18.c | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | #define FONTDATAMAX 9216 | 8 | #define FONTDATAMAX 9216 |
9 | 9 | ||
10 | static unsigned char fontdata_10x18[FONTDATAMAX] = { | 10 | static const unsigned char fontdata_10x18[FONTDATAMAX] = { |
11 | 11 | ||
12 | /* 0 0x00 '^@' */ | 12 | /* 0 0x00 '^@' */ |
13 | 0x00, 0x00, /* 0000000000 */ | 13 | 0x00, 0x00, /* 0000000000 */ |
@@ -5132,7 +5132,7 @@ static unsigned char fontdata_10x18[FONTDATAMAX] = { | |||
5132 | }; | 5132 | }; |
5133 | 5133 | ||
5134 | 5134 | ||
5135 | struct font_desc font_10x18 = { | 5135 | const struct font_desc font_10x18 = { |
5136 | FONT10x18_IDX, | 5136 | FONT10x18_IDX, |
5137 | "10x18", | 5137 | "10x18", |
5138 | 10, | 5138 | 10, |
diff --git a/drivers/video/console/font_6x11.c b/drivers/video/console/font_6x11.c index c52f1294044a..89976cd97494 100644 --- a/drivers/video/console/font_6x11.c +++ b/drivers/video/console/font_6x11.c | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #define FONTDATAMAX (11*256) | 9 | #define FONTDATAMAX (11*256) |
10 | 10 | ||
11 | static unsigned char fontdata_6x11[FONTDATAMAX] = { | 11 | static const unsigned char fontdata_6x11[FONTDATAMAX] = { |
12 | 12 | ||
13 | /* 0 0x00 '^@' */ | 13 | /* 0 0x00 '^@' */ |
14 | 0x00, /* 00000000 */ | 14 | 0x00, /* 00000000 */ |
@@ -3341,7 +3341,7 @@ static unsigned char fontdata_6x11[FONTDATAMAX] = { | |||
3341 | }; | 3341 | }; |
3342 | 3342 | ||
3343 | 3343 | ||
3344 | struct font_desc font_vga_6x11 = { | 3344 | const struct font_desc font_vga_6x11 = { |
3345 | VGA6x11_IDX, | 3345 | VGA6x11_IDX, |
3346 | "ProFont6x11", | 3346 | "ProFont6x11", |
3347 | 6, | 3347 | 6, |
diff --git a/drivers/video/console/font_7x14.c b/drivers/video/console/font_7x14.c index 1fa7fcf2ff72..bbf116647397 100644 --- a/drivers/video/console/font_7x14.c +++ b/drivers/video/console/font_7x14.c | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | #define FONTDATAMAX 3584 | 8 | #define FONTDATAMAX 3584 |
9 | 9 | ||
10 | static unsigned char fontdata_7x14[FONTDATAMAX] = { | 10 | static const unsigned char fontdata_7x14[FONTDATAMAX] = { |
11 | 11 | ||
12 | /* 0 0x00 '^@' */ | 12 | /* 0 0x00 '^@' */ |
13 | 0x00, /* 0000000 */ | 13 | 0x00, /* 0000000 */ |
@@ -4108,7 +4108,7 @@ static unsigned char fontdata_7x14[FONTDATAMAX] = { | |||
4108 | }; | 4108 | }; |
4109 | 4109 | ||
4110 | 4110 | ||
4111 | struct font_desc font_7x14 = { | 4111 | const struct font_desc font_7x14 = { |
4112 | FONT7x14_IDX, | 4112 | FONT7x14_IDX, |
4113 | "7x14", | 4113 | "7x14", |
4114 | 7, | 4114 | 7, |
diff --git a/drivers/video/console/font_8x16.c b/drivers/video/console/font_8x16.c index e6f8dbaa122b..74fe86f28ff4 100644 --- a/drivers/video/console/font_8x16.c +++ b/drivers/video/console/font_8x16.c | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #define FONTDATAMAX 4096 | 9 | #define FONTDATAMAX 4096 |
10 | 10 | ||
11 | static unsigned char fontdata_8x16[FONTDATAMAX] = { | 11 | static const unsigned char fontdata_8x16[FONTDATAMAX] = { |
12 | 12 | ||
13 | /* 0 0x00 '^@' */ | 13 | /* 0 0x00 '^@' */ |
14 | 0x00, /* 00000000 */ | 14 | 0x00, /* 00000000 */ |
@@ -4621,7 +4621,7 @@ static unsigned char fontdata_8x16[FONTDATAMAX] = { | |||
4621 | }; | 4621 | }; |
4622 | 4622 | ||
4623 | 4623 | ||
4624 | struct font_desc font_vga_8x16 = { | 4624 | const struct font_desc font_vga_8x16 = { |
4625 | VGA8x16_IDX, | 4625 | VGA8x16_IDX, |
4626 | "VGA8x16", | 4626 | "VGA8x16", |
4627 | 8, | 4627 | 8, |
diff --git a/drivers/video/console/font_8x8.c b/drivers/video/console/font_8x8.c index 57fbe266a6b9..26199f8ee908 100644 --- a/drivers/video/console/font_8x8.c +++ b/drivers/video/console/font_8x8.c | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #define FONTDATAMAX 2048 | 9 | #define FONTDATAMAX 2048 |
10 | 10 | ||
11 | static unsigned char fontdata_8x8[FONTDATAMAX] = { | 11 | static const unsigned char fontdata_8x8[FONTDATAMAX] = { |
12 | 12 | ||
13 | /* 0 0x00 '^@' */ | 13 | /* 0 0x00 '^@' */ |
14 | 0x00, /* 00000000 */ | 14 | 0x00, /* 00000000 */ |
@@ -2573,7 +2573,7 @@ static unsigned char fontdata_8x8[FONTDATAMAX] = { | |||
2573 | }; | 2573 | }; |
2574 | 2574 | ||
2575 | 2575 | ||
2576 | struct font_desc font_vga_8x8 = { | 2576 | const struct font_desc font_vga_8x8 = { |
2577 | VGA8x8_IDX, | 2577 | VGA8x8_IDX, |
2578 | "VGA8x8", | 2578 | "VGA8x8", |
2579 | 8, | 2579 | 8, |
diff --git a/drivers/video/console/font_acorn_8x8.c b/drivers/video/console/font_acorn_8x8.c index d565505e3069..2d2e39632e2d 100644 --- a/drivers/video/console/font_acorn_8x8.c +++ b/drivers/video/console/font_acorn_8x8.c | |||
@@ -3,7 +3,7 @@ | |||
3 | #include <linux/config.h> | 3 | #include <linux/config.h> |
4 | #include <linux/font.h> | 4 | #include <linux/font.h> |
5 | 5 | ||
6 | static unsigned char acorndata_8x8[] = { | 6 | static const unsigned char acorndata_8x8[] = { |
7 | /* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */ | 7 | /* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */ |
8 | /* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */ | 8 | /* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */ |
9 | /* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */ | 9 | /* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */ |
@@ -262,7 +262,7 @@ static unsigned char acorndata_8x8[] = { | |||
262 | /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | 262 | /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
263 | }; | 263 | }; |
264 | 264 | ||
265 | struct font_desc font_acorn_8x8 = { | 265 | const struct font_desc font_acorn_8x8 = { |
266 | ACORN8x8_IDX, | 266 | ACORN8x8_IDX, |
267 | "Acorn8x8", | 267 | "Acorn8x8", |
268 | 8, | 268 | 8, |
diff --git a/drivers/video/console/font_mini_4x6.c b/drivers/video/console/font_mini_4x6.c index 593b95500a0c..d818234fdf11 100644 --- a/drivers/video/console/font_mini_4x6.c +++ b/drivers/video/console/font_mini_4x6.c | |||
@@ -43,7 +43,7 @@ __END__; | |||
43 | 43 | ||
44 | #define FONTDATAMAX 1536 | 44 | #define FONTDATAMAX 1536 |
45 | 45 | ||
46 | static unsigned char fontdata_mini_4x6[FONTDATAMAX] = { | 46 | static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { |
47 | 47 | ||
48 | /*{*/ | 48 | /*{*/ |
49 | /* Char 0: ' ' */ | 49 | /* Char 0: ' ' */ |
@@ -2147,7 +2147,7 @@ static unsigned char fontdata_mini_4x6[FONTDATAMAX] = { | |||
2147 | /*}*/ | 2147 | /*}*/ |
2148 | }; | 2148 | }; |
2149 | 2149 | ||
2150 | struct font_desc font_mini_4x6 = { | 2150 | const struct font_desc font_mini_4x6 = { |
2151 | MINI4x6_IDX, | 2151 | MINI4x6_IDX, |
2152 | "MINI4x6", | 2152 | "MINI4x6", |
2153 | 4, | 2153 | 4, |
diff --git a/drivers/video/console/font_pearl_8x8.c b/drivers/video/console/font_pearl_8x8.c index 5fa95f118818..e646c88f55c7 100644 --- a/drivers/video/console/font_pearl_8x8.c +++ b/drivers/video/console/font_pearl_8x8.c | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #define FONTDATAMAX 2048 | 14 | #define FONTDATAMAX 2048 |
15 | 15 | ||
16 | static unsigned char fontdata_pearl8x8[FONTDATAMAX] = { | 16 | static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { |
17 | 17 | ||
18 | /* 0 0x00 '^@' */ | 18 | /* 0 0x00 '^@' */ |
19 | 0x00, /* 00000000 */ | 19 | 0x00, /* 00000000 */ |
@@ -2577,7 +2577,7 @@ static unsigned char fontdata_pearl8x8[FONTDATAMAX] = { | |||
2577 | 2577 | ||
2578 | }; | 2578 | }; |
2579 | 2579 | ||
2580 | struct font_desc font_pearl_8x8 = { | 2580 | const struct font_desc font_pearl_8x8 = { |
2581 | PEARL8x8_IDX, | 2581 | PEARL8x8_IDX, |
2582 | "PEARL8x8", | 2582 | "PEARL8x8", |
2583 | 8, | 2583 | 8, |
diff --git a/drivers/video/console/font_sun12x22.c b/drivers/video/console/font_sun12x22.c index c7bd967ea100..ab5eb93407b4 100644 --- a/drivers/video/console/font_sun12x22.c +++ b/drivers/video/console/font_sun12x22.c | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | #define FONTDATAMAX 11264 | 3 | #define FONTDATAMAX 11264 |
4 | 4 | ||
5 | static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | 5 | static const unsigned char fontdata_sun12x22[FONTDATAMAX] = { |
6 | 6 | ||
7 | /* 0 0x00 '^@' */ | 7 | /* 0 0x00 '^@' */ |
8 | 0x00, 0x00, /* 000000000000 */ | 8 | 0x00, 0x00, /* 000000000000 */ |
@@ -6151,7 +6151,7 @@ static unsigned char fontdata_sun12x22[FONTDATAMAX] = { | |||
6151 | }; | 6151 | }; |
6152 | 6152 | ||
6153 | 6153 | ||
6154 | struct font_desc font_sun_12x22 = { | 6154 | const struct font_desc font_sun_12x22 = { |
6155 | SUN12x22_IDX, | 6155 | SUN12x22_IDX, |
6156 | "SUN12x22", | 6156 | "SUN12x22", |
6157 | 12, | 6157 | 12, |
diff --git a/drivers/video/console/font_sun8x16.c b/drivers/video/console/font_sun8x16.c index 2af3ab354652..41f910f5529c 100644 --- a/drivers/video/console/font_sun8x16.c +++ b/drivers/video/console/font_sun8x16.c | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | #define FONTDATAMAX 4096 | 3 | #define FONTDATAMAX 4096 |
4 | 4 | ||
5 | static unsigned char fontdata_sun8x16[FONTDATAMAX] = { | 5 | static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { |
6 | /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 6 | /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
7 | /* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00, | 7 | /* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00, |
8 | /* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00, | 8 | /* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00, |
@@ -261,7 +261,7 @@ static unsigned char fontdata_sun8x16[FONTDATAMAX] = { | |||
261 | /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 261 | /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
262 | }; | 262 | }; |
263 | 263 | ||
264 | struct font_desc font_sun_8x16 = { | 264 | const struct font_desc font_sun_8x16 = { |
265 | SUN8x16_IDX, | 265 | SUN8x16_IDX, |
266 | "SUN8x16", | 266 | "SUN8x16", |
267 | 8, | 267 | 8, |
diff --git a/drivers/video/console/fonts.c b/drivers/video/console/fonts.c index e79b29702649..4fd07d9eca03 100644 --- a/drivers/video/console/fonts.c +++ b/drivers/video/console/fonts.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #define NO_FONTS | 24 | #define NO_FONTS |
25 | 25 | ||
26 | static struct font_desc *fonts[] = { | 26 | static const struct font_desc *fonts[] = { |
27 | #ifdef CONFIG_FONT_8x8 | 27 | #ifdef CONFIG_FONT_8x8 |
28 | #undef NO_FONTS | 28 | #undef NO_FONTS |
29 | &font_vga_8x8, | 29 | &font_vga_8x8, |
@@ -84,7 +84,7 @@ static struct font_desc *fonts[] = { | |||
84 | * | 84 | * |
85 | */ | 85 | */ |
86 | 86 | ||
87 | struct font_desc *find_font(char *name) | 87 | const struct font_desc *find_font(const char *name) |
88 | { | 88 | { |
89 | unsigned int i; | 89 | unsigned int i; |
90 | 90 | ||
@@ -108,10 +108,10 @@ struct font_desc *find_font(char *name) | |||
108 | * | 108 | * |
109 | */ | 109 | */ |
110 | 110 | ||
111 | struct font_desc *get_default_font(int xres, int yres) | 111 | const struct font_desc *get_default_font(int xres, int yres) |
112 | { | 112 | { |
113 | int i, c, cc; | 113 | int i, c, cc; |
114 | struct font_desc *f, *g; | 114 | const struct font_desc *f, *g; |
115 | 115 | ||
116 | g = NULL; | 116 | g = NULL; |
117 | cc = -10000; | 117 | cc = -10000; |
@@ -138,7 +138,6 @@ struct font_desc *get_default_font(int xres, int yres) | |||
138 | return g; | 138 | return g; |
139 | } | 139 | } |
140 | 140 | ||
141 | EXPORT_SYMBOL(fonts); | ||
142 | EXPORT_SYMBOL(find_font); | 141 | EXPORT_SYMBOL(find_font); |
143 | EXPORT_SYMBOL(get_default_font); | 142 | EXPORT_SYMBOL(get_default_font); |
144 | 143 | ||
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 0705cd741411..6ef6f7760e47 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c | |||
@@ -1020,7 +1020,9 @@ static int vgacon_font_get(struct vc_data *c, struct console_font *font) | |||
1020 | static int vgacon_resize(struct vc_data *c, unsigned int width, | 1020 | static int vgacon_resize(struct vc_data *c, unsigned int width, |
1021 | unsigned int height) | 1021 | unsigned int height) |
1022 | { | 1022 | { |
1023 | if (width % 2 || width > ORIG_VIDEO_COLS || height > ORIG_VIDEO_LINES) | 1023 | if (width % 2 || width > ORIG_VIDEO_COLS || |
1024 | height > (ORIG_VIDEO_LINES * vga_default_font_height)/ | ||
1025 | c->vc_font.height) | ||
1024 | return -EINVAL; | 1026 | return -EINVAL; |
1025 | 1027 | ||
1026 | if (CON_IS_VISIBLE(c) && !vga_is_gfx) /* who knows */ | 1028 | if (CON_IS_VISIBLE(c) && !vga_is_gfx) /* who knows */ |
diff --git a/drivers/video/fbcvt.c b/drivers/video/fbcvt.c index cfa61b512de0..0b6af00d197e 100644 --- a/drivers/video/fbcvt.c +++ b/drivers/video/fbcvt.c | |||
@@ -272,11 +272,11 @@ static void fb_cvt_convert_to_mode(struct fb_cvt_data *cvt, | |||
272 | { | 272 | { |
273 | mode->refresh = cvt->f_refresh; | 273 | mode->refresh = cvt->f_refresh; |
274 | mode->pixclock = KHZ2PICOS(cvt->pixclock/1000); | 274 | mode->pixclock = KHZ2PICOS(cvt->pixclock/1000); |
275 | mode->left_margin = cvt->h_front_porch; | 275 | mode->left_margin = cvt->h_back_porch; |
276 | mode->right_margin = cvt->h_back_porch; | 276 | mode->right_margin = cvt->h_front_porch; |
277 | mode->hsync_len = cvt->hsync; | 277 | mode->hsync_len = cvt->hsync; |
278 | mode->upper_margin = cvt->v_front_porch; | 278 | mode->upper_margin = cvt->v_back_porch; |
279 | mode->lower_margin = cvt->v_back_porch; | 279 | mode->lower_margin = cvt->v_front_porch; |
280 | mode->vsync_len = cvt->vsync; | 280 | mode->vsync_len = cvt->vsync; |
281 | 281 | ||
282 | mode->sync &= ~(FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT); | 282 | mode->sync &= ~(FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT); |
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c index cabd53cec991..6c2244cf0e74 100644 --- a/drivers/video/imxfb.c +++ b/drivers/video/imxfb.c | |||
@@ -425,7 +425,7 @@ static void imxfb_setup_gpio(struct imxfb_info *fbi) | |||
425 | * Power management hooks. Note that we won't be called from IRQ context, | 425 | * Power management hooks. Note that we won't be called from IRQ context, |
426 | * unlike the blank functions above, so we may sleep. | 426 | * unlike the blank functions above, so we may sleep. |
427 | */ | 427 | */ |
428 | static int imxfb_suspend(struct device *dev, u32 state, u32 level) | 428 | static int imxfb_suspend(struct device *dev, pm_message_t state, u32 level) |
429 | { | 429 | { |
430 | struct imxfb_info *fbi = dev_get_drvdata(dev); | 430 | struct imxfb_info *fbi = dev_get_drvdata(dev); |
431 | pr_debug("%s\n",__FUNCTION__); | 431 | pr_debug("%s\n",__FUNCTION__); |
diff --git a/drivers/video/matrox/matroxfb_base.c b/drivers/video/matrox/matroxfb_base.c index 98e00d8601e5..e02da41f1b26 100644 --- a/drivers/video/matrox/matroxfb_base.c +++ b/drivers/video/matrox/matroxfb_base.c | |||
@@ -1285,7 +1285,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1285 | vaddr_t vm; | 1285 | vaddr_t vm; |
1286 | unsigned int offs; | 1286 | unsigned int offs; |
1287 | unsigned int offs2; | 1287 | unsigned int offs2; |
1288 | unsigned char store; | 1288 | unsigned char store, orig; |
1289 | unsigned char bytes[32]; | 1289 | unsigned char bytes[32]; |
1290 | unsigned char* tmp; | 1290 | unsigned char* tmp; |
1291 | 1291 | ||
@@ -1298,7 +1298,8 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1298 | if (maxSize > 0x2000000) maxSize = 0x2000000; | 1298 | if (maxSize > 0x2000000) maxSize = 0x2000000; |
1299 | 1299 | ||
1300 | mga_outb(M_EXTVGA_INDEX, 0x03); | 1300 | mga_outb(M_EXTVGA_INDEX, 0x03); |
1301 | mga_outb(M_EXTVGA_DATA, mga_inb(M_EXTVGA_DATA) | 0x80); | 1301 | orig = mga_inb(M_EXTVGA_DATA); |
1302 | mga_outb(M_EXTVGA_DATA, orig | 0x80); | ||
1302 | 1303 | ||
1303 | store = mga_readb(vm, 0x1234); | 1304 | store = mga_readb(vm, 0x1234); |
1304 | tmp = bytes; | 1305 | tmp = bytes; |
@@ -1323,7 +1324,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1323 | mga_writeb(vm, 0x1234, store); | 1324 | mga_writeb(vm, 0x1234, store); |
1324 | 1325 | ||
1325 | mga_outb(M_EXTVGA_INDEX, 0x03); | 1326 | mga_outb(M_EXTVGA_INDEX, 0x03); |
1326 | mga_outb(M_EXTVGA_DATA, mga_inb(M_EXTVGA_DATA) & ~0x80); | 1327 | mga_outb(M_EXTVGA_DATA, orig); |
1327 | 1328 | ||
1328 | *realSize = offs - 0x100000; | 1329 | *realSize = offs - 0x100000; |
1329 | #ifdef CONFIG_FB_MATROX_MILLENIUM | 1330 | #ifdef CONFIG_FB_MATROX_MILLENIUM |
@@ -1858,6 +1859,8 @@ static int initMatrox2(WPMINFO struct board* b){ | |||
1858 | to yres_virtual * xres_virtual < 2^32 */ | 1859 | to yres_virtual * xres_virtual < 2^32 */ |
1859 | } | 1860 | } |
1860 | matroxfb_init_fix(PMINFO2); | 1861 | matroxfb_init_fix(PMINFO2); |
1862 | ACCESS_FBINFO(fbcon.screen_base) = vaddr_va(ACCESS_FBINFO(video.vbase)); | ||
1863 | matroxfb_update_fix(PMINFO2); | ||
1861 | /* Normalize values (namely yres_virtual) */ | 1864 | /* Normalize values (namely yres_virtual) */ |
1862 | matroxfb_check_var(&vesafb_defined, &ACCESS_FBINFO(fbcon)); | 1865 | matroxfb_check_var(&vesafb_defined, &ACCESS_FBINFO(fbcon)); |
1863 | /* And put it into "current" var. Do NOT program hardware yet, or we'll not take over | 1866 | /* And put it into "current" var. Do NOT program hardware yet, or we'll not take over |
@@ -2010,11 +2013,11 @@ static int matroxfb_probe(struct pci_dev* pdev, const struct pci_device_id* dumm | |||
2010 | } | 2013 | } |
2011 | /* not match... */ | 2014 | /* not match... */ |
2012 | if (!b->vendor) | 2015 | if (!b->vendor) |
2013 | return -1; | 2016 | return -ENODEV; |
2014 | if (dev > 0) { | 2017 | if (dev > 0) { |
2015 | /* not requested one... */ | 2018 | /* not requested one... */ |
2016 | dev--; | 2019 | dev--; |
2017 | return -1; | 2020 | return -ENODEV; |
2018 | } | 2021 | } |
2019 | pci_read_config_dword(pdev, PCI_COMMAND, &cmd); | 2022 | pci_read_config_dword(pdev, PCI_COMMAND, &cmd); |
2020 | if (pci_enable_device(pdev)) { | 2023 | if (pci_enable_device(pdev)) { |
diff --git a/drivers/video/nvidia/nv_i2c.c b/drivers/video/nvidia/nv_i2c.c index ace484fa61ce..12f2884d3f0b 100644 --- a/drivers/video/nvidia/nv_i2c.c +++ b/drivers/video/nvidia/nv_i2c.c | |||
@@ -209,10 +209,13 @@ int nvidia_probe_i2c_connector(struct fb_info *info, int conn, u8 **out_edid) | |||
209 | 209 | ||
210 | if (!edid && conn == 1) { | 210 | if (!edid && conn == 1) { |
211 | /* try to get from firmware */ | 211 | /* try to get from firmware */ |
212 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); | 212 | const u8 *e = fb_firmware_edid(info->device); |
213 | if (edid) | 213 | |
214 | memcpy(edid, fb_firmware_edid(info->device), | 214 | if (e != NULL) { |
215 | EDID_LENGTH); | 215 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); |
216 | if (edid) | ||
217 | memcpy(edid, e, EDID_LENGTH); | ||
218 | } | ||
216 | } | 219 | } |
217 | 220 | ||
218 | if (out_edid) | 221 | if (out_edid) |
diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c index 3620de0f252e..a7f020ada630 100644 --- a/drivers/video/nvidia/nvidia.c +++ b/drivers/video/nvidia/nvidia.c | |||
@@ -893,7 +893,7 @@ static int nvidiafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
893 | int i, set = cursor->set; | 893 | int i, set = cursor->set; |
894 | u16 fg, bg; | 894 | u16 fg, bg; |
895 | 895 | ||
896 | if (!hwcur || cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) | 896 | if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) |
897 | return -ENXIO; | 897 | return -ENXIO; |
898 | 898 | ||
899 | NVShowHideCursor(par, 0); | 899 | NVShowHideCursor(par, 0); |
@@ -1356,6 +1356,9 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info) | |||
1356 | info->pixmap.size = 8 * 1024; | 1356 | info->pixmap.size = 8 * 1024; |
1357 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1357 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1358 | 1358 | ||
1359 | if (!hwcur) | ||
1360 | info->fbops->fb_cursor = soft_cursor; | ||
1361 | |||
1359 | info->var.accel_flags = (!noaccel); | 1362 | info->var.accel_flags = (!noaccel); |
1360 | 1363 | ||
1361 | switch (par->Architecture) { | 1364 | switch (par->Architecture) { |
diff --git a/drivers/video/pm3fb.c b/drivers/video/pm3fb.c index e0dad948467b..2e11b601c488 100644 --- a/drivers/video/pm3fb.c +++ b/drivers/video/pm3fb.c | |||
@@ -67,6 +67,7 @@ | |||
67 | #include <linux/init.h> | 67 | #include <linux/init.h> |
68 | #include <linux/pci.h> | 68 | #include <linux/pci.h> |
69 | #include <linux/ioport.h> | 69 | #include <linux/ioport.h> |
70 | #include <linux/ctype.h> | ||
70 | 71 | ||
71 | #include <video/fbcon.h> | 72 | #include <video/fbcon.h> |
72 | #include <video/fbcon-mfb.h> | 73 | #include <video/fbcon-mfb.h> |
@@ -2594,7 +2595,7 @@ static char *pm3fb_boardnum_setup(char *options, unsigned long *bn) | |||
2594 | { | 2595 | { |
2595 | char *next; | 2596 | char *next; |
2596 | 2597 | ||
2597 | if (!(CHAR_IS_NUM(options[0]))) { | 2598 | if (!(isdigit(options[0]))) { |
2598 | (*bn) = 0; | 2599 | (*bn) = 0; |
2599 | return (options); | 2600 | return (options); |
2600 | } | 2601 | } |
diff --git a/drivers/video/savage/savagefb-i2c.c b/drivers/video/savage/savagefb-i2c.c index 959404ad68f4..3c98457783c4 100644 --- a/drivers/video/savage/savagefb-i2c.c +++ b/drivers/video/savage/savagefb-i2c.c | |||
@@ -274,10 +274,13 @@ int savagefb_probe_i2c_connector(struct fb_info *info, u8 **out_edid) | |||
274 | 274 | ||
275 | if (!edid) { | 275 | if (!edid) { |
276 | /* try to get from firmware */ | 276 | /* try to get from firmware */ |
277 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); | 277 | const u8 *e = fb_firmware_edid(info->device); |
278 | if (edid) | 278 | |
279 | memcpy(edid, fb_firmware_edid(info->device), | 279 | if (e) { |
280 | EDID_LENGTH); | 280 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); |
281 | if (edid) | ||
282 | memcpy(edid, e, EDID_LENGTH); | ||
283 | } | ||
281 | } | 284 | } |
282 | 285 | ||
283 | if (out_edid) | 286 | if (out_edid) |
diff --git a/drivers/video/savage/savagefb.h b/drivers/video/savage/savagefb.h index d6f94742c9f2..ea17f7e0482c 100644 --- a/drivers/video/savage/savagefb.h +++ b/drivers/video/savage/savagefb.h | |||
@@ -60,8 +60,6 @@ | |||
60 | 60 | ||
61 | #define S3_SAVAGE_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE2000)) | 61 | #define S3_SAVAGE_SERIES(chip) ((chip>=S3_SAVAGE3D) && (chip<=S3_SAVAGE2000)) |
62 | 62 | ||
63 | #define S3_MOBILE_TWISTER_SERIES(chip) ((chip==S3_TWISTER) || (chip == S3_PROSAVAGEDDR)) | ||
64 | |||
65 | /* Chip tags. These are used to group the adapters into | 63 | /* Chip tags. These are used to group the adapters into |
66 | * related families. | 64 | * related families. |
67 | */ | 65 | */ |
@@ -74,8 +72,6 @@ typedef enum { | |||
74 | S3_PROSAVAGE, | 72 | S3_PROSAVAGE, |
75 | S3_SUPERSAVAGE, | 73 | S3_SUPERSAVAGE, |
76 | S3_SAVAGE2000, | 74 | S3_SAVAGE2000, |
77 | S3_PROSAVAGEDDR, | ||
78 | S3_TWISTER, | ||
79 | S3_LAST | 75 | S3_LAST |
80 | } savage_chipset; | 76 | } savage_chipset; |
81 | 77 | ||
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c index b5ca3ef8271f..7c285455c924 100644 --- a/drivers/video/savage/savagefb_driver.c +++ b/drivers/video/savage/savagefb_driver.c | |||
@@ -1773,8 +1773,7 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1773 | } | 1773 | } |
1774 | } | 1774 | } |
1775 | 1775 | ||
1776 | if (S3_SAVAGE_MOBILE_SERIES(par->chip) || | 1776 | if (S3_SAVAGE_MOBILE_SERIES(par->chip) && !par->crtonly) |
1777 | (S3_MOBILE_TWISTER_SERIES(par->chip) && !par->crtonly)) | ||
1778 | par->display_type = DISP_LCD; | 1777 | par->display_type = DISP_LCD; |
1779 | else if (dvi || (par->chip == S3_SAVAGE4 && par->dvi)) | 1778 | else if (dvi || (par->chip == S3_SAVAGE4 && par->dvi)) |
1780 | par->display_type = DISP_DFP; | 1779 | par->display_type = DISP_DFP; |
@@ -1783,7 +1782,7 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1783 | 1782 | ||
1784 | /* Check LCD panel parrmation */ | 1783 | /* Check LCD panel parrmation */ |
1785 | 1784 | ||
1786 | if (par->chip == S3_SAVAGE_MX) { | 1785 | if (par->display_type == DISP_LCD) { |
1787 | unsigned char cr6b = VGArCR( 0x6b ); | 1786 | unsigned char cr6b = VGArCR( 0x6b ); |
1788 | 1787 | ||
1789 | int panelX = (VGArSEQ (0x61) + | 1788 | int panelX = (VGArSEQ (0x61) + |
@@ -1922,15 +1921,15 @@ static int __devinit savage_init_fb_info (struct fb_info *info, | |||
1922 | snprintf (info->fix.id, 16, "ProSavageKM"); | 1921 | snprintf (info->fix.id, 16, "ProSavageKM"); |
1923 | break; | 1922 | break; |
1924 | case FB_ACCEL_S3TWISTER_P: | 1923 | case FB_ACCEL_S3TWISTER_P: |
1925 | par->chip = S3_TWISTER; | 1924 | par->chip = S3_PROSAVAGE; |
1926 | snprintf (info->fix.id, 16, "TwisterP"); | 1925 | snprintf (info->fix.id, 16, "TwisterP"); |
1927 | break; | 1926 | break; |
1928 | case FB_ACCEL_S3TWISTER_K: | 1927 | case FB_ACCEL_S3TWISTER_K: |
1929 | par->chip = S3_TWISTER; | 1928 | par->chip = S3_PROSAVAGE; |
1930 | snprintf (info->fix.id, 16, "TwisterK"); | 1929 | snprintf (info->fix.id, 16, "TwisterK"); |
1931 | break; | 1930 | break; |
1932 | case FB_ACCEL_PROSAVAGE_DDR: | 1931 | case FB_ACCEL_PROSAVAGE_DDR: |
1933 | par->chip = S3_PROSAVAGEDDR; | 1932 | par->chip = S3_PROSAVAGE; |
1934 | snprintf (info->fix.id, 16, "ProSavageDDR"); | 1933 | snprintf (info->fix.id, 16, "ProSavageDDR"); |
1935 | break; | 1934 | break; |
1936 | case FB_ACCEL_PROSAVAGE_DDRK: | 1935 | case FB_ACCEL_PROSAVAGE_DDRK: |