]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/video/matrox/i2c-matroxfb.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg...
[linux-2.6-omap-h63xx.git] / drivers / video / matrox / i2c-matroxfb.c
index fe28848e7b52e201f128d58b56f1a50c23a23526..75ee5a12e549ec703a0974c984975c1cdf2ac29a 100644 (file)
@@ -104,17 +104,21 @@ static struct i2c_algo_bit_data matrox_i2c_algo_template =
 };
 
 static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo, 
-               unsigned int data, unsigned int clock, const char* name) {
+               unsigned int data, unsigned int clock, const char *name,
+               int class)
+{
        int err;
 
        b->minfo = minfo;
        b->mask.data = data;
        b->mask.clock = clock;
        b->adapter = matrox_i2c_adapter_template;
-       snprintf(b->adapter.name, I2C_NAME_SIZE, name,
+       snprintf(b->adapter.name, sizeof(b->adapter.name), name,
                minfo->fbcon.node);
        i2c_set_adapdata(&b->adapter, b);
+       b->adapter.class = class;
        b->adapter.algo_data = &b->bac;
+       b->adapter.dev.parent = &ACCESS_FBINFO(pcidev)->dev;
        b->bac = matrox_i2c_algo_template;
        b->bac.data = b;
        err = i2c_bit_add_bus(&b->adapter);
@@ -146,7 +150,7 @@ static void* i2c_matroxfb_probe(struct matrox_fb_info* minfo) {
        unsigned long flags;
        struct matroxfb_dh_maven_info* m2info;
 
-       m2info = kmalloc(sizeof(*m2info), GFP_KERNEL);
+       m2info = kzalloc(sizeof(*m2info), GFP_KERNEL);
        if (!m2info)
                return NULL;
 
@@ -155,27 +159,32 @@ static void* i2c_matroxfb_probe(struct matrox_fb_info* minfo) {
        matroxfb_DAC_out(PMINFO DAC_XGENIOCTRL, 0x00);
        matroxfb_DAC_unlock_irqrestore(flags);
 
-       memset(m2info, 0, sizeof(*m2info));
-
        switch (ACCESS_FBINFO(chip)) {
                case MGA_2064:
                case MGA_2164:
-                       err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1B_DATA, DDC1B_CLK, "DDC:fb%u #0");
+                       err = i2c_bus_reg(&m2info->ddc1, minfo,
+                                         DDC1B_DATA, DDC1B_CLK,
+                                         "DDC:fb%u #0", I2C_CLASS_DDC);
                        break;
                default:
-                       err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1_DATA, DDC1_CLK, "DDC:fb%u #0");
+                       err = i2c_bus_reg(&m2info->ddc1, minfo,
+                                         DDC1_DATA, DDC1_CLK,
+                                         "DDC:fb%u #0", I2C_CLASS_DDC);
                        break;
        }
        if (err)
                goto fail_ddc1;
        if (ACCESS_FBINFO(devflags.dualhead)) {
-               err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1");
+               err = i2c_bus_reg(&m2info->ddc2, minfo,
+                                 DDC2_DATA, DDC2_CLK,
+                                 "DDC:fb%u #1", I2C_CLASS_DDC);
                if (err == -ENODEV) {
                        printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n");
                } else if (err)
                        printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n");
                /* Register maven bus even on G450/G550 */
-               err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u");
+               err = i2c_bus_reg(&m2info->maven, minfo,
+                                 MAT_DATA, MAT_CLK, "MAVEN:fb%u", 0);
                if (err)
                        printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n");
        }