Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

[PATCH] i810fb: Do not probe the third i2c bus by default

Some time before 2.6.15, a third DDC channel was added to i810fb. On
systems where these ddc pins are not connected, the probe takes about 10
seconds.

Add a boot/module option for i810fb to explicitly probe for the 3rd ddc bus
if needed.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Manuel Lauss and committed by
Linus Torvalds
00d340b9 06c6f900

+14 -6
+3 -3
drivers/video/i810/i810-i2c.c
··· 191 191 u8 *edid = NULL; 192 192 int i; 193 193 194 - DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn); 195 - if (conn < 4) { 194 + DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn+1); 195 + if (conn < par->ddc_num) { 196 196 for (i = 0; i < 3; i++) { 197 197 /* Do the real work */ 198 - edid = i810_do_probe_i2c_edid(&par->chan[conn-1]); 198 + edid = i810_do_probe_i2c_edid(&par->chan[conn]); 199 199 if (edid) 200 200 break; 201 201 }
+1
drivers/video/i810/i810.h
··· 280 280 u32 blit_bpp; 281 281 u32 ovract; 282 282 u32 cur_state; 283 + u32 ddc_num; 283 284 int mtrr_reg; 284 285 u16 bltcntl; 285 286 u8 interlace;
+10 -3
drivers/video/i810/i810_main.c
··· 149 149 static int sync __devinitdata; 150 150 static int extvga __devinitdata; 151 151 static int dcolor __devinitdata; 152 + static int ddc3 __devinitdata = 2; 152 153 153 154 /*------------------------------------------------------------*/ 154 155 ··· 1764 1763 if (sync) 1765 1764 par->dev_flags |= ALWAYS_SYNC; 1766 1765 1766 + par->ddc_num = ddc3; 1767 + 1767 1768 if (bpp < 8) 1768 1769 bpp = 8; 1769 1770 ··· 1888 1885 int found = 0; 1889 1886 #ifdef CONFIG_FB_I810_I2C 1890 1887 int i; 1891 - int err; 1888 + int err = 1; 1892 1889 struct i810fb_par *par = info->par; 1893 1890 #endif 1894 1891 ··· 1898 1895 #ifdef CONFIG_FB_I810_I2C 1899 1896 i810_create_i2c_busses(par); 1900 1897 1901 - for (i = 0; i < 4; i++) { 1902 - err = i810_probe_i2c_connector(info, &par->edid, i+1); 1898 + for (i = 0; i < par->ddc_num + 1; i++) { 1899 + err = i810_probe_i2c_connector(info, &par->edid, i); 1903 1900 if (!err) 1904 1901 break; 1905 1902 } ··· 1986 1983 vsync2 = simple_strtoul(this_opt+7, NULL, 0); 1987 1984 else if (!strncmp(this_opt, "dcolor", 6)) 1988 1985 dcolor = 1; 1986 + else if (!strncmp(this_opt, "ddc3", 4)) 1987 + ddc3 = 3; 1989 1988 else 1990 1989 mode_option = this_opt; 1991 1990 } ··· 2195 2190 module_param(dcolor, bool, 0); 2196 2191 MODULE_PARM_DESC(dcolor, "use DirectColor visuals" 2197 2192 " (default = 0 = TrueColor)"); 2193 + module_param(ddc3, bool, 0); 2194 + MODULE_PARM_DESC(ddc3, "Probe DDC bus 3 (default = 0 = no)"); 2198 2195 module_param(mode_option, charp, 0); 2199 2196 MODULE_PARM_DESC(mode_option, "Specify initial video mode"); 2200 2197