/* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_adv7170 = {
-       .owner = THIS_MODULE,
-       .name = "adv7170",      /* name */
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "adv7170",      /* name */
+       },
 
        .id = I2C_DRIVERID_ADV7170,
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_adv7175 = {
-       .owner = THIS_MODULE,
-       .name = "adv7175",      /* name */
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "adv7175",      /* name */
+       },
 
        .id = I2C_DRIVERID_ADV7175,
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_bt819 = {
-       .owner = THIS_MODULE,
-       .name = "bt819",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "bt819",
+       },
 
        .id = I2C_DRIVERID_BT819,
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner          = THIS_MODULE,
-       .name           = "i2c bt832 driver",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "i2c bt832 driver",
+       },
        .id             = -1, /* FIXME */
        .attach_adapter = bt832_probe,
        .detach_client  = bt832_detach,
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_bt856 = {
-       .owner = THIS_MODULE,
-       .name = "bt856",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "bt856",
+       },
 
        .id = I2C_DRIVERID_BT856,
 
 
 
        if (bttv_debug)
                printk(KERN_DEBUG "bttv%d: %s i2c attach [addr=0x%x,client=%s]\n",
-                       btv->c.nr,client->driver->name,client->addr,
+                       btv->c.nr, client->driver->driver.name, client->addr,
                        client->name);
        if (!client->driver->command)
                return 0;
 
 #define cs53l32a_dbg(fmt, arg...) \
        do { \
                if (debug) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                              client->driver->driver.name, \
                               i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define cs53l32a_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
                i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define cs53l32a_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
                i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 static unsigned short normal_i2c[] = { 0x22 >> 1, I2C_CLIENT_END };
 
 /* i2c implementation */
 static struct i2c_driver i2c_driver = {
-       .name = "cs53l32a",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "cs53l32a",
+       },
        .id = I2C_DRIVERID_CS53L32A,
        .attach_adapter = cs53l32a_probe,
        .detach_client = cs53l32a_detach,
        .command = cs53l32a_command,
-       .owner = THIS_MODULE,
 };
 
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_cx25840 = {
-       .name = "cx25840",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "cx25840",
+       },
 
        .id = I2C_DRIVERID_CX25840,
 
        .attach_adapter = cx25840_attach_adapter,
        .detach_client = cx25840_detach_client,
        .command = cx25840_command,
-       .owner = THIS_MODULE,
 };
 
 
 
 extern int cx25840_debug;
 
 #define cx25840_dbg(fmt, arg...) do { if (cx25840_debug) \
-       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+              client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 #define cx25840_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 #define cx25840_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 #define CX25840_CID_CARDTYPE (V4L2_CID_PRIVATE_BASE+0)
 
        struct cx88_core *core = i2c_get_adapdata(client->adapter);
 
        dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
-               client->driver->name, client->addr, client->name);
+               client->driver->driver.name, client->addr, client->name);
        if (!client->driver->command)
                return 0;
 
 
 }
 
 static struct i2c_driver i2c_driver_indycam = {
-       .owner          = THIS_MODULE,
-       .name           = "indycam",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "indycam",
+       },
        .id             = I2C_DRIVERID_INDYCAM,
        .attach_adapter = indycam_probe,
        .detach_client  = indycam_detach,
 
 static int ir_probe(struct i2c_adapter *adap);
 
 static struct i2c_driver driver = {
-       .name           = "ir remote kbd driver",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "ir remote kbd driver",
+       },
        .id             = I2C_DRIVERID_INFRARED,
        .attach_adapter = ir_probe,
        .detach_client  = ir_detach,
 
 #define msp3400_dbg(fmt, arg...) \
        do { \
                if (debug) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                              client->driver->driver.name, \
                               i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define msp3400_dbg_mediumvol(fmt, arg...) \
        do { \
                if (debug >= 2) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                               client->driver->driver.name, \
                                i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define msp3400_dbg_highvol(fmt, arg...) \
        do { \
                if (debug >= 16) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                               client->driver->driver.name, \
                                i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define msp3400_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
                i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define msp3400_warn(fmt, arg...) do { \
-       printk(KERN_WARNING "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_WARNING "%s %d-%04x: " fmt, client->driver->driver.name, \
                i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define msp3400_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
                i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 #define OPMODE_AUTO    -1
 static void msp_wake_thread(struct i2c_client *client);
 
 static struct i2c_driver driver = {
-       .owner          = THIS_MODULE,
-       .name           = "msp3400",
        .id             = I2C_DRIVERID_MSP3400,
        .attach_adapter = msp_probe,
        .detach_client  = msp_detach,
        .command        = msp_command,
        .driver = {
+               .owner   = THIS_MODULE,
+               .name    = "i2c msp3400 driver",
                .suspend = msp_suspend,
                .resume  = msp_resume,
        },
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner =                THIS_MODULE,
-       .name =                 "ovcamchip",
+       .driver = {
+               .owner =        THIS_MODULE,
+               .name =         "ovcamchip",
+       },
        .id =                   I2C_DRIVERID_OVCAMCHIP,
        .class =                I2C_CLASS_CAM_DIGITAL,
        .attach_adapter =       ovcamchip_attach,
 
 
 static struct i2c_driver i2c_driver_videotext =
 {
-       .owner          = THIS_MODULE,
-       .name           = IF_NAME,              /* name */
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = IF_NAME,              /* name */
+       },
        .id             = I2C_DRIVERID_SAA5249, /* in i2c.h */
        .attach_adapter = saa5246a_probe,
        .detach_client  = saa5246a_detach,
 
 
 static struct i2c_driver i2c_driver_videotext = 
 {
-       .owner          = THIS_MODULE,
-       .name           = IF_NAME,              /* name */
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = IF_NAME,              /* name */
+       },
        .id             = I2C_DRIVERID_SAA5249, /* in i2c.h */
        .attach_adapter = saa5249_probe,
        .detach_client  = saa5249_detach,
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner = THIS_MODULE,
-       .name = "i2c saa6588 driver",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "i2c saa6588 driver",
+       },
        .id = -1,               /* FIXME */
        .attach_adapter = saa6588_probe,
        .detach_client = saa6588_detach,
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7110 = {
-       .owner = THIS_MODULE,
-       .name = "saa7110",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7110",
+       },
 
        .id = I2C_DRIVERID_SAA7110,
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7111 = {
-       .owner = THIS_MODULE,
-       .name = "saa7111",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7111",
+       },
 
        .id = I2C_DRIVERID_SAA7111A,
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7114 = {
-       .owner = THIS_MODULE,
-       .name = "saa7114",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7114",
+       },
 
        .id = I2C_DRIVERID_SAA7114,
 
 
 #define saa7115_dbg(fmt,arg...) \
        do { \
                if (debug) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                              client->driver->driver.name, \
                               i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define saa7115_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define saa7115_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 static unsigned short normal_i2c[] = { 0x42 >> 1, 0x40 >> 1, I2C_CLIENT_END };
 
 /* i2c implementation */
 static struct i2c_driver i2c_driver_saa7115 = {
-       .name = "saa7115",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7115",
+       },
        .id = I2C_DRIVERID_SAA711X,
        .attach_adapter = saa7115_probe,
        .detach_client = saa7115_detach,
        .command = saa7115_command,
-       .owner = THIS_MODULE,
 };
 
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa711x = {
-       .owner = THIS_MODULE,
-       .name = "saa711x",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa711x",
+       },
 
        .id = I2C_DRIVERID_SAA711X,
 
 
 #define saa7127_dbg(fmt, arg...) \
        do { \
                if (debug >= 1) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                              client->driver->driver.name, \
                               i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define saa7127_dbg_highvol(fmt, arg...) \
        do { \
                if (debug == 2) \
-                       printk(KERN_INFO "%s debug %d-%04x: " fmt, client->driver->name, \
+                       printk(KERN_INFO "%s debug %d-%04x: " fmt, \
+                              client->driver->driver.name, \
                               i2c_adapter_id(client->adapter), client->addr , ## arg); \
        } while (0)
 
 #define saa7127_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define saa7127_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 static unsigned short normal_i2c[] = { 0x88 >> 1, I2C_CLIENT_END };
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7127 = {
-       .name = "saa7127",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7127",
+       },
        .id = I2C_DRIVERID_SAA7127,
        .attach_adapter = saa7127_probe,
        .detach_client = saa7127_detach,
        .command = saa7127_command,
-       .owner = THIS_MODULE,
 };
 
 
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner          = THIS_MODULE,
-       .name           = "i2c saa6752hs MPEG encoder",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "i2c saa6752hs MPEG encoder",
+       },
        .id             = I2C_DRIVERID_SAA6752HS,
        .attach_adapter = saa6752hs_probe,
        .detach_client  = saa6752hs_detach,
 
        struct tuner_setup tun_setup;
 
        d1printk( "%s i2c attach [addr=0x%x,client=%s]\n",
-               client->driver->name, client->addr, client->name);
+               client->driver->driver.name, client->addr, client->name);
 
        /* Am I an i2c remote control? */
 
                {
                        struct IR_i2c *ir = i2c_get_clientdata(client);
                        d1printk("%s i2c IR detected (%s).\n",
-                                client->driver->name,ir->phys);
+                                client->driver->driver.name, ir->phys);
                        saa7134_set_i2c_ir(dev,ir);
                        break;
                }
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver i2c_driver_saa7185 = {
-       .owner = THIS_MODULE,
-       .name = "saa7185",      /* name */
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "saa7185",      /* name */
+       },
 
        .id = I2C_DRIVERID_SAA7185B,
 
 
 }
 
 static struct i2c_driver i2c_driver_saa7191 = {
-       .owner          = THIS_MODULE,
-       .name           = "saa7191",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "saa7191",
+       },
        .id             = I2C_DRIVERID_SAA7191,
        .attach_adapter = saa7191_probe,
        .detach_client  = saa7191_detach,
 
 }
 
 static struct i2c_driver driver = {
-       .owner           = THIS_MODULE,
-       .name            = "i2c tda7432 driver",
+       .driver = {
+               .owner   = THIS_MODULE,
+               .name    = "i2c tda7432 driver",
+       },
        .id              = I2C_DRIVERID_TDA7432,
        .attach_adapter  = tda7432_probe,
        .detach_client   = tda7432_detach,
 
 }
 
 static struct i2c_driver driver = {
-       .owner  = THIS_MODULE,
-       .name   = "tda9840",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "tda9840",
+       },
        .id     = I2C_DRIVERID_TDA9840,
        .attach_adapter = attach,
        .detach_client  = detach,
 
 
 
 static struct i2c_driver driver = {
-       .owner          = THIS_MODULE,
-       .name           = "i2c tda9875 driver",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "i2c tda9875 driver",
+       },
        .id             = I2C_DRIVERID_TDA9875,
        .attach_adapter = tda9875_probe,
        .detach_client  = tda9875_detach,
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner          = THIS_MODULE,
-       .name           = "i2c tda9887 driver",
        .id             = -1, /* FIXME */
        .attach_adapter = tda9887_probe,
        .detach_client  = tda9887_detach,
        .command        = tda9887_command,
        .driver = {
+               .owner   = THIS_MODULE,
+               .name    = "i2c tda9887 driver",
                .suspend = tda9887_suspend,
                .resume  = tda9887_resume,
        },
 
 }
 
 static struct i2c_driver driver = {
-       .owner  = THIS_MODULE,
-       .name   = "tea6415c",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "tea6415c",
+       },
        .id     = I2C_DRIVERID_TEA6415C,
        .attach_adapter = attach,
        .detach_client  = detach,
 
 }
 
 static struct i2c_driver driver = {
-       .owner  = THIS_MODULE,
-       .name   = "tea6420",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "tea6420",
+       },
        .id     = I2C_DRIVERID_TEA6420,
        .attach_adapter = attach,
        .detach_client  = detach,
 
 static struct i2c_driver 
 i2c_driver_tuner = 
 {
-       .owner          =       THIS_MODULE,
-       .name           =       "sab3036",
+       .driver = {
+               .owner  =       THIS_MODULE,
+               .name   =       "sab3036",
+       },
        .id             =       I2C_DRIVERID_SAB3036,
        .attach_adapter =       tuner_probe,
        .detach_client  =       tuner_detach,
 
 
        set_freq(c, t->freq);
        tuner_dbg("%s %s I2C addr 0x%02x with type %d used for 0x%02x\n",
-                 c->adapter->name, c->driver->name, c->addr << 1, type,
+                 c->adapter->name, c->driver->driver.name, c->addr << 1, type,
                  t->mode_mask);
 }
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner = THIS_MODULE,
-       .name = "tuner",
        .id = I2C_DRIVERID_TUNER,
        .attach_adapter = tuner_probe,
        .detach_client = tuner_detach,
        .command = tuner_command,
        .driver = {
+                  .owner = THIS_MODULE,
+                  .name = "tuner",
                   .suspend = tuner_suspend,
                   .resume = tuner_resume,
                   },
 
 
 
 static struct i2c_driver driver = {
-       .owner           = THIS_MODULE,
-       .name            = "generic i2c audio driver",
+       .driver = {
+               .owner   = THIS_MODULE,
+               .name    = "generic i2c audio driver",
+       },
        .id              = I2C_DRIVERID_TVAUDIO,
        .attach_adapter  = chip_probe,
        .detach_client   = chip_detach,
 
 }
 
 static struct i2c_driver i2c_driver_tveeprom = {
-       .owner          = THIS_MODULE,
-       .name           = "tveeprom",
+       .driver = {
+               .owner  = THIS_MODULE,
+               .name   = "tveeprom",
+       },
        .id             = I2C_DRIVERID_TVEEPROM,
        .attach_adapter = tveeprom_attach_adapter,
        .detach_client  = tveeprom_detach_client,
 
 
 static struct i2c_driver driver = {
 #ifdef I2C_PEC
-       .owner           = THIS_MODULE,
-#endif
+       .driver = {
+               .owner   = THIS_MODULE,
+               .name    = "tv card mixer driver",
+       },
+#else
        .name            = "tv card mixer driver",
+#endif
        .id              = I2C_DRIVERID_TVMIXER,
        .detach_adapter  = tvmixer_adapters,
        .attach_adapter  = tvmixer_adapters,
 
 /* ----------------------------------------------------------------------- */
 
 static struct i2c_driver driver = {
-       .owner = THIS_MODULE,
-       .name = "tvp5150",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "tvp5150",
+       },
 
        /* FIXME */
        .id = I2C_DRIVERID_SAA7110,
 
  */
 
 static struct i2c_driver vpx3220_i2c_driver = {
-       .owner = THIS_MODULE,
-       .name = "vpx3220",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "vpx3220",
+       },
 
        .id = I2C_DRIVERID_VPX3220,
 
 
 MODULE_LICENSE("GPL");
 
 #define wm8775_err(fmt, arg...) do { \
-       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_ERR "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 #define wm8775_info(fmt, arg...) do { \
-       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, client->driver->driver.name, \
               i2c_adapter_id(client->adapter), client->addr , ## arg); } while (0)
 
 
 
 /* i2c implementation */
 static struct i2c_driver i2c_driver = {
-       .name = "wm8775",
+       .driver = {
+               .owner = THIS_MODULE,
+               .name = "wm8775",
+       },
 
        .id = I2C_DRIVERID_WM8775,
 
        .attach_adapter = wm8775_probe,
        .detach_client = wm8775_detach,
        .command = wm8775_command,
-       .owner = THIS_MODULE,
 };
 
 
 
                res = -ENODEV;
                goto open_unlock_and_return;
        }
-       if (!try_module_get(zr->decoder->driver->owner)) {
+       if (!try_module_get(zr->decoder->driver->driver.owner)) {
                dprintk(1,
                        KERN_ERR
                        "%s: failed to grab ownership of i2c decoder\n",
                goto open_unlock_and_return;
        }
        if (zr->encoder &&
-           !try_module_get(zr->encoder->driver->owner)) {
+           !try_module_get(zr->encoder->driver->driver.owner)) {
                dprintk(1,
                        KERN_ERR
                        "%s: failed to grab ownership of i2c encoder\n",
                        ZR_DEVNAME(zr));
                res = -EIO;
-               module_put(zr->decoder->driver->owner);
+               module_put(zr->decoder->driver->driver.owner);
                module_put(THIS_MODULE);
                goto open_unlock_and_return;
        }
 open_unlock_and_return:
        /* if we grabbed locks, release them accordingly */
        if (have_module_locks) {
-               module_put(zr->decoder->driver->owner);
+               module_put(zr->decoder->driver->driver.owner);
                if (zr->encoder) {
-                       module_put(zr->encoder->driver->owner);
+                       module_put(zr->encoder->driver->driver.owner);
                }
                module_put(THIS_MODULE);
        }
        kfree(fh);
 
        /* release locks on the i2c modules */
-       module_put(zr->decoder->driver->owner);
+       module_put(zr->decoder->driver->driver.owner);
        if (zr->encoder) {
-                module_put(zr->encoder->driver->owner);
+                module_put(zr->encoder->driver->driver.owner);
        }
        module_put(THIS_MODULE);
 
 
                }
        } else {
                DBG(4, "Rejected client [%s] with driver [%s]", 
-                   client->name, client->driver->name)
+                   client->name, client->driver->driver.name)
                return -EINVAL;
        }
 
        DBG(5, "I2C attach client [%s] with driver [%s]",
-           client->name, client->driver->name)
+           client->name, client->driver->driver.name)
 
        return 0;
 }
 
 extern int tea5767_autodetection(struct i2c_client *c);
 
 #define tuner_warn(fmt, arg...) do {\
-       printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->name, \
+       printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \
                        t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0)
 #define tuner_info(fmt, arg...) do {\
-       printk(KERN_INFO "%s %d-%04x: " fmt, t->i2c.driver->name, \
+       printk(KERN_INFO "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \
                        t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0)
 #define tuner_dbg(fmt, arg...) do {\
        if (tuner_debug) \
-               printk(KERN_DEBUG "%s %d-%04x: " fmt, t->i2c.driver->name, \
+               printk(KERN_DEBUG "%s %d-%04x: " fmt, \
+                       t->i2c.driver->driver.name, \
                        t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0)
 
 #endif /* __KERNEL__ */