| .. | .. |
|---|
| 232 | 232 | u32 value) |
|---|
| 233 | 233 | { |
|---|
| 234 | 234 | const struct isl29501_register_desc *reg = &isl29501_registers[name]; |
|---|
| 235 | | - u8 msb, lsb; |
|---|
| 236 | 235 | int ret; |
|---|
| 237 | 236 | |
|---|
| 238 | 237 | if (!reg->msb && value > U8_MAX) |
|---|
| .. | .. |
|---|
| 241 | 240 | if (value > U16_MAX) |
|---|
| 242 | 241 | return -ERANGE; |
|---|
| 243 | 242 | |
|---|
| 244 | | - if (!reg->msb) { |
|---|
| 245 | | - lsb = value & 0xFF; |
|---|
| 246 | | - } else { |
|---|
| 247 | | - msb = (value >> 8) & 0xFF; |
|---|
| 248 | | - lsb = value & 0xFF; |
|---|
| 249 | | - } |
|---|
| 250 | | - |
|---|
| 251 | 243 | mutex_lock(&isl29501->lock); |
|---|
| 252 | 244 | if (reg->msb) { |
|---|
| 253 | 245 | ret = i2c_smbus_write_byte_data(isl29501->client, |
|---|
| 254 | | - reg->msb, msb); |
|---|
| 246 | + reg->msb, value >> 8); |
|---|
| 255 | 247 | if (ret < 0) |
|---|
| 256 | 248 | goto err; |
|---|
| 257 | 249 | } |
|---|
| 258 | 250 | |
|---|
| 259 | | - ret = i2c_smbus_write_byte_data(isl29501->client, reg->lsb, lsb); |
|---|
| 251 | + ret = i2c_smbus_write_byte_data(isl29501->client, reg->lsb, value); |
|---|
| 260 | 252 | |
|---|
| 261 | 253 | err: |
|---|
| 262 | 254 | mutex_unlock(&isl29501->lock); |
|---|
| .. | .. |
|---|
| 980 | 972 | return ret; |
|---|
| 981 | 973 | |
|---|
| 982 | 974 | indio_dev->modes = INDIO_DIRECT_MODE; |
|---|
| 983 | | - indio_dev->dev.parent = &client->dev; |
|---|
| 984 | 975 | indio_dev->channels = isl29501_channels; |
|---|
| 985 | 976 | indio_dev->num_channels = ARRAY_SIZE(isl29501_channels); |
|---|
| 986 | 977 | indio_dev->name = client->name; |
|---|