Lines Matching defs:data
35 #define VCNL_PS_RDY BIT(5) /* proximity data ready? */
44 * struct vcnl3020_data - vcnl3020 specific data.
84 static int vcnl3020_get_and_apply_property(struct vcnl3020_data *data,
90 rc = device_property_read_u32(data->dev, prop.name, &val);
97 rc = regmap_write(data->regmap, prop.reg, val);
99 dev_err(data->dev, "Error (%d) setting property (%s)\n",
106 static int vcnl3020_init(struct vcnl3020_data *data)
111 rc = regmap_read(data->regmap, VCNL_PROD_REV, ®);
113 dev_err(data->dev,
119 dev_err(data->dev,
125 data->rev = reg;
126 mutex_init(&data->lock);
128 return vcnl3020_get_and_apply_property(data,
132 static int vcnl3020_measure_proximity(struct vcnl3020_data *data, int *val)
138 mutex_lock(&data->lock);
140 rc = regmap_write(data->regmap, VCNL_COMMAND, VCNL_PS_OD);
144 /* wait for data to become ready */
145 rc = regmap_read_poll_timeout(data->regmap, VCNL_COMMAND, reg,
149 dev_err(data->dev,
155 rc = regmap_bulk_read(data->regmap, VCNL_PS_RESULT_HI, &res,
163 mutex_unlock(&data->lock);
180 struct vcnl3020_data *data = iio_priv(indio_dev);
184 rc = vcnl3020_measure_proximity(data, val);
205 struct vcnl3020_data *data;
216 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
220 data = iio_priv(indio_dev);
222 data->regmap = regmap;
223 data->dev = &client->dev;
225 rc = vcnl3020_init(data);