int *val, int *val2, long mask)
 {
        struct afe4404_data *afe = iio_priv(indio_dev);
-       unsigned int value_reg = afe4404_channel_values[chan->address];
-       unsigned int led_field = afe4404_channel_leds[chan->address];
-       unsigned int offdac_field = afe4404_channel_offdacs[chan->address];
+       unsigned int value_reg, led_field, offdac_field;
        int ret;
 
        switch (chan->type) {
        case IIO_INTENSITY:
                switch (mask) {
                case IIO_CHAN_INFO_RAW:
+                       value_reg = afe4404_channel_values[chan->address];
                        ret = regmap_read(afe->regmap, value_reg, val);
                        if (ret)
                                return ret;
                        return IIO_VAL_INT;
                case IIO_CHAN_INFO_OFFSET:
+                       offdac_field = afe4404_channel_offdacs[chan->address];
                        ret = regmap_field_read(afe->fields[offdac_field], val);
                        if (ret)
                                return ret;
        case IIO_CURRENT:
                switch (mask) {
                case IIO_CHAN_INFO_RAW:
+                       led_field = afe4404_channel_leds[chan->address];
                        ret = regmap_field_read(afe->fields[led_field], val);
                        if (ret)
                                return ret;
                             int val, int val2, long mask)
 {
        struct afe4404_data *afe = iio_priv(indio_dev);
-       unsigned int led_field = afe4404_channel_leds[chan->address];
-       unsigned int offdac_field = afe4404_channel_offdacs[chan->address];
+       unsigned int led_field, offdac_field;
 
        switch (chan->type) {
        case IIO_INTENSITY:
                switch (mask) {
                case IIO_CHAN_INFO_OFFSET:
+                       offdac_field = afe4404_channel_offdacs[chan->address];
                        return regmap_field_write(afe->fields[offdac_field], val);
                }
                break;
        case IIO_CURRENT:
                switch (mask) {
                case IIO_CHAN_INFO_RAW:
+                       led_field = afe4404_channel_leds[chan->address];
                        return regmap_field_write(afe->fields[led_field], val);
                }
                break;