Loading drivers/video/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -829,6 +829,7 @@ config FB_I810_I2C depends on FB_I810 && FB_I810_GTF select I2C select I2C_ALGOBIT select FB_DDC help config FB_INTEL Loading drivers/video/i810/i810-i2c.c +1 −41 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include "i810_main.h" #include "../edid.h" #define I810_DDC 0x50 /* bit locations in the registers */ #define SCL_DIR_MASK 0x0001 #define SCL_DIR 0x0002 Loading Loading @@ -150,53 +149,14 @@ void i810_delete_i2c_busses(struct i810fb_par *par) par->chan[2].par = NULL; } static u8 *i810_do_probe_i2c_edid(struct i810fb_i2c_chan *chan) { u8 start = 0x0; struct i2c_msg msgs[] = { { .addr = I810_DDC, .len = 1, .buf = &start, }, { .addr = I810_DDC, .flags = I2C_M_RD, .len = EDID_LENGTH, }, }; u8 *buf; buf = kmalloc(EDID_LENGTH, GFP_KERNEL); if (!buf) { DPRINTK("i810-i2c: Failed to allocate memory\n"); return NULL; } msgs[1].buf = buf; if (i2c_transfer(&chan->adapter, msgs, 2) == 2) { DPRINTK("i810-i2c: I2C Transfer successful\n"); return buf; } DPRINTK("i810-i2c: Unable to read EDID block.\n"); kfree(buf); return NULL; } int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn) { struct i810fb_par *par = info->par; u8 *edid = NULL; int i; DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn+1); if (conn < par->ddc_num) { for (i = 0; i < 3; i++) { /* Do the real work */ edid = i810_do_probe_i2c_edid(&par->chan[conn]); if (edid) break; } edid = fb_ddc_read(&par->chan[conn].adapter); } else { const u8 *e = fb_firmware_edid(info->device); Loading Loading
drivers/video/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -829,6 +829,7 @@ config FB_I810_I2C depends on FB_I810 && FB_I810_GTF select I2C select I2C_ALGOBIT select FB_DDC help config FB_INTEL Loading
drivers/video/i810/i810-i2c.c +1 −41 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include "i810_main.h" #include "../edid.h" #define I810_DDC 0x50 /* bit locations in the registers */ #define SCL_DIR_MASK 0x0001 #define SCL_DIR 0x0002 Loading Loading @@ -150,53 +149,14 @@ void i810_delete_i2c_busses(struct i810fb_par *par) par->chan[2].par = NULL; } static u8 *i810_do_probe_i2c_edid(struct i810fb_i2c_chan *chan) { u8 start = 0x0; struct i2c_msg msgs[] = { { .addr = I810_DDC, .len = 1, .buf = &start, }, { .addr = I810_DDC, .flags = I2C_M_RD, .len = EDID_LENGTH, }, }; u8 *buf; buf = kmalloc(EDID_LENGTH, GFP_KERNEL); if (!buf) { DPRINTK("i810-i2c: Failed to allocate memory\n"); return NULL; } msgs[1].buf = buf; if (i2c_transfer(&chan->adapter, msgs, 2) == 2) { DPRINTK("i810-i2c: I2C Transfer successful\n"); return buf; } DPRINTK("i810-i2c: Unable to read EDID block.\n"); kfree(buf); return NULL; } int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn) { struct i810fb_par *par = info->par; u8 *edid = NULL; int i; DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn+1); if (conn < par->ddc_num) { for (i = 0; i < 3; i++) { /* Do the real work */ edid = i810_do_probe_i2c_edid(&par->chan[conn]); if (edid) break; } edid = fb_ddc_read(&par->chan[conn].adapter); } else { const u8 *e = fb_firmware_edid(info->device); Loading