.name         = "Silvercrest Webcam 1.3mpix",
                .tuner_type   = TUNER_ABSENT,
                .is_webcam    = 1,
-               .decoder      = EM28XX_MT9V011,
                .input        = { {
                        .type     = EM28XX_VMUX_COMPOSITE1,
                        .vmux     = 0,
        case MT9V011_VERSION:
                dev->model = EM2820_BOARD_SILVERCREST_WEBCAM;
                sensor_name = "mt9v011";
+               dev->em28xx_sensor = EM28XX_MT9V011;
                break;
        default:
                printk("Unknown Micron Sensor 0x%04x\n", be16_to_cpu(version));
                v4l2_i2c_new_probed_subdev(&dev->v4l2_dev, &dev->i2c_adap,
                        "tvp5150", "tvp5150", tvp5150_addrs);
 
-       if (dev->board.decoder == EM28XX_MT9V011)
+       if (dev->em28xx_sensor == EM28XX_MT9V011)
                v4l2_i2c_new_probed_subdev(&dev->v4l2_dev, &dev->i2c_adap,
                        "mt9v011", "mt9v011", mt9v011_addrs);
 
 
 #define INPUT(nr) (&em28xx_boards[dev->model].input[nr])
 
 enum em28xx_decoder {
-       EM28XX_NODECODER,
+       EM28XX_NODECODER = 0,
        EM28XX_TVP5150,
        EM28XX_SAA711X,
+};
+
+enum em28xx_sensor {
+       EM28XX_NOSENSOR = 0,
        EM28XX_MT9V011,
 };
 
        struct v4l2_device v4l2_dev;
        struct em28xx_board board;
 
+       enum em28xx_sensor em28xx_sensor;
+
        unsigned int stream_on:1;       /* Locks streams */
        unsigned int has_audio_class:1;
        unsigned int has_alsa_audio:1;