};
 MODULE_DEVICE_TABLE(of, tmp421_of_match);
 
+struct tmp421_channel {
+       s16 temp;
+};
+
 struct tmp421_data {
        struct i2c_client *client;
        struct mutex update_lock;
        unsigned long last_updated;
        unsigned long channels;
        u8 config;
-       s16 temp[MAX_CHANNELS];
+       struct tmp421_channel channel[MAX_CHANNELS];
 };
 
 static int temp_from_raw(u16 reg, bool extended)
                        ret = i2c_smbus_read_byte_data(client, TMP421_TEMP_MSB[i]);
                        if (ret < 0)
                                goto exit;
-                       data->temp[i] = ret << 8;
+                       data->channel[i].temp = ret << 8;
 
                        ret = i2c_smbus_read_byte_data(client, TMP421_TEMP_LSB[i]);
                        if (ret < 0)
                                goto exit;
-                       data->temp[i] |= ret;
+                       data->channel[i].temp |= ret;
                }
                data->last_updated = jiffies;
                data->valid = true;
 
        switch (attr) {
        case hwmon_temp_input:
-               *val = temp_from_raw(tmp421->temp[channel],
+               *val = temp_from_raw(tmp421->channel[channel].temp,
                                     tmp421->config & TMP421_CONFIG_RANGE);
                return 0;
        case hwmon_temp_fault:
                 * Any of OPEN or /PVLD bits indicate a hardware mulfunction
                 * and the conversion result may be incorrect
                 */
-               *val = !!(tmp421->temp[channel] & 0x03);
+               *val = !!(tmp421->channel[channel].temp & 0x03);
                return 0;
        default:
                return -EOPNOTSUPP;