u16                     int_vref_mv;
        u16                     command;
        u16                     c_mask; /* Active voltage channels for events */
-       struct mutex            state_lock;
+       struct mutex            state_lock;
 };
 
 static int ad7291_i2c_read(struct ad7291_chip_info *chip, u8 reg, u16 *data)
                *val =  scale_uv / 1000;
                *val2 = (scale_uv % 1000) * 1000;
                return IIO_VAL_INT_PLUS_MICRO;
+       case (1 << IIO_CHAN_INFO_SCALE_SEPARATE):
+               /*
+               * One LSB of the ADC corresponds to 0.25 deg C.
+               * The temperature reading is in 12-bit twos complement format
+               */
+               *val = 250;
+               return IIO_VAL_INT;
        default:
                return -EINVAL;
        }
        AD7291_VOLTAGE_CHAN(7),
        {
                .type = IIO_TEMP,
-               .info_mask = (1 << IIO_CHAN_INFO_AVERAGE_RAW_SEPARATE),
+               .info_mask = (1 << IIO_CHAN_INFO_AVERAGE_RAW_SEPARATE) |
+                               (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
                .indexed = 1,
                .channel = 0,
                .event_mask =
 
 static struct i2c_driver ad7291_driver = {
        .driver = {
-               .name = "ad7291",
+               .name = KBUILD_MODNAME,
        },
        .probe = ad7291_probe,
        .remove = __devexit_p(ad7291_remove),
 }
 
 MODULE_AUTHOR("Sonic Zhang <sonic.zhang@analog.com>");
-MODULE_DESCRIPTION("Analog Devices AD7291 digital"
-                       " temperature sensor driver");
+MODULE_DESCRIPTION("Analog Devices AD7291 ADC driver");
 MODULE_LICENSE("GPL v2");
 
 module_init(ad7291_init);