26 #include <linux/i2c.h>
37 if (phloat >= 0x80000000) {
38 dev_err(&client->
dev,
"this is a negative number\n");
42 if (phloat == 0x7f800000)
45 if ((phloat & 0x7f800000) == 0x7f800000) {
46 dev_err(&client->
dev,
"NaN or other special number\n");
54 if (phloat > 0x4f800000)
61 exp = ((
int32_t)phloat >> 23) - 127;
64 man = ((phloat & 0x7fffff) | 0x800000) * 1000000ULL;
73 return man & 0xffffffff;
84 struct i2c_client *client = v4l2_get_subdevdata(&sensor->
src->sd);
86 unsigned char data[4];
96 data[0] = (
u8) (offset >> 8);
97 data[1] = (
u8) offset;
118 *val = (data[0] << 24) + (data[1] << 16) + (data[2] << 8) +
122 *val = (data[0] << 8) + data[1];
134 dev_err(&client->
dev,
"read from offset 0x%x error %d\n", offset, r);
148 for (i = 0; i <
len; i++) {
151 rval = ____smiapp_read(sensor, reg + i, 1, &val8);
154 *val |= val8 << ((len - i - 1) << 3);
167 struct i2c_client *client = v4l2_get_subdevdata(&sensor->
src->sd);
168 unsigned int len = (
u8)(reg >> 16);
179 rval = ____smiapp_read(sensor, (
u16)reg, len, val);
181 rval = ____smiapp_read_8only(sensor, (
u16)reg, len, val);
187 *val = float_to_u32_mul_1000000(client, *val);
194 return __smiapp_read(
202 return __smiapp_read(sensor, reg, val,
true);
211 struct i2c_client *client = v4l2_get_subdevdata(&sensor->
src->sd);
213 unsigned char data[6];
215 unsigned int flags = reg >> 24;
216 unsigned int len = (
u8)(reg >> 16);
230 data[0] = (
u8) (reg >> 8);
231 data[1] = (
u8) (reg & 0xff);
251 for (retries = 0; retries < 5; retries++) {
261 "sensor i2c stall encountered. "
262 "retries: %d\n", retries);
270 "wrote 0x%x to offset 0x%x error %d\n", val, offset, r);