};
 
 struct nvkm_i2c {
-       struct nvkm_subdev base;
+       struct nvkm_subdev subdev;
        struct nvkm_event event;
 
        struct nvkm_i2c_port *(*find)(struct nvkm_i2c *, u8 index);
 
                impl->aux_stat(i2c, &mask, &mask, &mask, &mask);
        }
 
-       return nvkm_subdev_fini(&i2c->base, suspend);
+       return nvkm_subdev_fini(&i2c->subdev, suspend);
 fail:
        list_for_each_entry_continue_reverse(port, &i2c->ports, head) {
                nv_ofuncs(port)->init(nv_object(port));
        struct nvkm_i2c_port *port;
        int ret;
 
-       ret = nvkm_subdev_init(&i2c->base);
+       ret = nvkm_subdev_init(&i2c->subdev);
        if (ret == 0) {
                list_for_each_entry(port, &i2c->ports, head) {
                        ret = nv_ofuncs(port)->init(nv_object(port));
                nvkm_object_ref(NULL, (struct nvkm_object **)&port);
        }
 
-       nvkm_subdev_destroy(&i2c->base);
+       nvkm_subdev_destroy(&i2c->subdev);
 }
 
 static struct nvkm_oclass *
 
        AUX_DBG("%d: 0x%08x %d\n", type, addr, size);
 
        ret = auxch_init(aux, ch);
-       if (ret)
+       if (ret < 0)
                goto out;
 
        stat = nv_rd32(aux, 0x00e4e8 + (ch * 0x50));
 
 static int
 gf110_i2c_sense_scl(struct nvkm_i2c_port *base)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00000010);
+       return !!(nv_rd32(i2c, port->addr) & 0x00000010);
 }
 
 static int
 gf110_i2c_sense_sda(struct nvkm_i2c_port *base)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00000020);
+       return !!(nv_rd32(i2c, port->addr) & 0x00000020);
 }
 
 static const struct nvkm_i2c_func
 
        AUX_DBG("%d: 0x%08x %d\n", type, addr, size);
 
        ret = auxch_init(aux, ch);
-       if (ret)
+       if (ret < 0)
                goto out;
 
        stat = nv_rd32(aux, 0x00d958 + (ch * 0x50));
 
 
 #include <subdev/vga.h>
 
-struct nv04_i2c_priv {
-       struct nvkm_i2c base;
-};
-
 struct nv04_i2c_port {
        struct nvkm_i2c_port base;
        u8 drive;
 static void
 nv04_i2c_drive_scl(struct nvkm_i2c_port *base, int state)
 {
-       struct nv04_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv04_i2c_port *port = (void *)base;
-       u8 val = nv_rdvgac(priv, 0, port->drive);
+       u8 val = nv_rdvgac(i2c, 0, port->drive);
        if (state) val |= 0x20;
        else       val &= 0xdf;
-       nv_wrvgac(priv, 0, port->drive, val | 0x01);
+       nv_wrvgac(i2c, 0, port->drive, val | 0x01);
 }
 
 static void
 nv04_i2c_drive_sda(struct nvkm_i2c_port *base, int state)
 {
-       struct nv04_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv04_i2c_port *port = (void *)base;
-       u8 val = nv_rdvgac(priv, 0, port->drive);
+       u8 val = nv_rdvgac(i2c, 0, port->drive);
        if (state) val |= 0x10;
        else       val &= 0xef;
-       nv_wrvgac(priv, 0, port->drive, val | 0x01);
+       nv_wrvgac(i2c, 0, port->drive, val | 0x01);
 }
 
 static int
 nv04_i2c_sense_scl(struct nvkm_i2c_port *base)
 {
-       struct nv04_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv04_i2c_port *port = (void *)base;
-       return !!(nv_rdvgac(priv, 0, port->sense) & 0x04);
+       return !!(nv_rdvgac(i2c, 0, port->sense) & 0x04);
 }
 
 static int
 nv04_i2c_sense_sda(struct nvkm_i2c_port *base)
 {
-       struct nv04_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv04_i2c_port *port = (void *)base;
-       return !!(nv_rdvgac(priv, 0, port->sense) & 0x08);
+       return !!(nv_rdvgac(i2c, 0, port->sense) & 0x08);
 }
 
 static const struct nvkm_i2c_func
 
 
 #include <subdev/vga.h>
 
-struct nv4e_i2c_priv {
-       struct nvkm_i2c base;
-};
-
 struct nv4e_i2c_port {
        struct nvkm_i2c_port base;
        u32 addr;
 static void
 nv4e_i2c_drive_scl(struct nvkm_i2c_port *base, int state)
 {
-       struct nv4e_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv4e_i2c_port *port = (void *)base;
-       nv_mask(priv, port->addr, 0x2f, state ? 0x21 : 0x01);
+       nv_mask(i2c, port->addr, 0x2f, state ? 0x21 : 0x01);
 }
 
 static void
 nv4e_i2c_drive_sda(struct nvkm_i2c_port *base, int state)
 {
-       struct nv4e_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv4e_i2c_port *port = (void *)base;
-       nv_mask(priv, port->addr, 0x1f, state ? 0x11 : 0x01);
+       nv_mask(i2c, port->addr, 0x1f, state ? 0x11 : 0x01);
 }
 
 static int
 nv4e_i2c_sense_scl(struct nvkm_i2c_port *base)
 {
-       struct nv4e_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv4e_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00040000);
+       return !!(nv_rd32(i2c, port->addr) & 0x00040000);
 }
 
 static int
 nv4e_i2c_sense_sda(struct nvkm_i2c_port *base)
 {
-       struct nv4e_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv4e_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00080000);
+       return !!(nv_rd32(i2c, port->addr) & 0x00080000);
 }
 
 static const struct nvkm_i2c_func
 
 void
 nv50_i2c_drive_scl(struct nvkm_i2c_port *base, int state)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
        if (state) port->state |= 0x01;
        else       port->state &= 0xfe;
-       nv_wr32(priv, port->addr, port->state);
+       nv_wr32(i2c, port->addr, port->state);
 }
 
 void
 nv50_i2c_drive_sda(struct nvkm_i2c_port *base, int state)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
        if (state) port->state |= 0x02;
        else       port->state &= 0xfd;
-       nv_wr32(priv, port->addr, port->state);
+       nv_wr32(i2c, port->addr, port->state);
 }
 
 int
 nv50_i2c_sense_scl(struct nvkm_i2c_port *base)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00000001);
+       return !!(nv_rd32(i2c, port->addr) & 0x00000001);
 }
 
 int
 nv50_i2c_sense_sda(struct nvkm_i2c_port *base)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(base);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(base);
        struct nv50_i2c_port *port = (void *)base;
-       return !!(nv_rd32(priv, port->addr) & 0x00000002);
+       return !!(nv_rd32(i2c, port->addr) & 0x00000002);
 }
 
 static const struct nvkm_i2c_func
 int
 nv50_i2c_port_init(struct nvkm_object *object)
 {
-       struct nv50_i2c_priv *priv = (void *)nvkm_i2c(object);
+       struct nvkm_i2c *i2c = (void *)nvkm_i2c(object);
        struct nv50_i2c_port *port = (void *)object;
-       nv_wr32(priv, port->addr, port->state);
+       nv_wr32(i2c, port->addr, port->state);
        return nvkm_i2c_port_init(&port->base);
 }
 
 
 #define __NV50_I2C_H__
 #include "priv.h"
 
-struct nv50_i2c_priv {
-       struct nvkm_i2c base;
-};
-
 struct nv50_i2c_port {
        struct nvkm_i2c_port base;
        u32 addr;