Lines Matching defs:cm36651
143 static int cm36651_setup_reg(struct cm36651_data *cm36651)
145 struct i2c_client *client = cm36651->client;
146 struct i2c_client *ps_client = cm36651->ps_client;
150 cm36651->cs_ctrl_regs[CM36651_CS_CONF1] = CM36651_ALS_ENABLE |
152 cm36651->cs_ctrl_regs[CM36651_CS_CONF2] = CM36651_CS_CONF2_DEFAULT_BIT;
156 cm36651->cs_ctrl_regs[i]);
162 cm36651->ps_ctrl_regs[CM36651_PS_CONF1] = CM36651_PS_ENABLE |
164 cm36651->ps_ctrl_regs[CM36651_PS_THD] = CM36651_PS_INITIAL_THD;
165 cm36651->ps_ctrl_regs[CM36651_PS_CANC] = CM36651_PS_CANC_DEFAULT;
166 cm36651->ps_ctrl_regs[CM36651_PS_CONF2] = CM36651_PS_HYS2 |
171 cm36651->ps_ctrl_regs[i]);
182 ret = i2c_smbus_write_byte_data(cm36651->ps_client,
190 static int cm36651_read_output(struct cm36651_data *cm36651,
193 struct i2c_client *client = cm36651->client;
210 *val = i2c_smbus_read_byte(cm36651->ps_client);
214 if (!test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
215 ret = i2c_smbus_write_byte_data(cm36651->ps_client,
233 struct cm36651_data *cm36651 = iio_priv(indio_dev);
234 struct i2c_client *client = cm36651->client;
245 ret = i2c_smbus_read_byte(cm36651->ara_client);
273 static int cm36651_set_operation_mode(struct cm36651_data *cm36651, int cmd)
275 struct i2c_client *client = cm36651->client;
276 struct i2c_client *ps_client = cm36651->ps_client;
282 cm36651->cs_ctrl_regs[CM36651_CS_CONF1]);
285 if (test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags))
289 cm36651->ps_ctrl_regs[CM36651_PS_CONF1]);
292 if (test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
297 set_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
309 if (!test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
314 clear_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
326 static int cm36651_read_channel(struct cm36651_data *cm36651,
329 struct i2c_client *client = cm36651->client;
339 ret = cm36651_set_operation_mode(cm36651, cmd);
346 ret = cm36651_read_output(cm36651, chan, val);
355 static int cm36651_read_int_time(struct cm36651_data *cm36651,
360 if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT1)
362 else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT2)
364 else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT3)
366 else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT4)
372 if (cm36651->ps_int_time == CM36651_PS_IT1)
374 else if (cm36651->ps_int_time == CM36651_PS_IT2)
376 else if (cm36651->ps_int_time == CM36651_PS_IT3)
378 else if (cm36651->ps_int_time == CM36651_PS_IT4)
390 static int cm36651_write_int_time(struct cm36651_data *cm36651,
393 struct i2c_client *client = cm36651->client;
394 struct i2c_client *ps_client = cm36651->ps_client;
416 cm36651->cs_int_time[chan->address] = int_time;
436 cm36651->ps_int_time = int_time;
449 struct cm36651_data *cm36651 = iio_priv(indio_dev);
452 mutex_lock(&cm36651->lock);
456 ret = cm36651_read_channel(cm36651, chan, val);
460 ret = cm36651_read_int_time(cm36651, chan, val2);
466 mutex_unlock(&cm36651->lock);
475 struct cm36651_data *cm36651 = iio_priv(indio_dev);
476 struct i2c_client *client = cm36651->client;
480 ret = cm36651_write_int_time(cm36651, chan, val2);
495 struct cm36651_data *cm36651 = iio_priv(indio_dev);
497 *val = cm36651->ps_ctrl_regs[CM36651_PS_THD];
509 struct cm36651_data *cm36651 = iio_priv(indio_dev);
510 struct i2c_client *client = cm36651->client;
516 cm36651->ps_ctrl_regs[CM36651_PS_THD] = val;
517 ret = i2c_smbus_write_byte_data(cm36651->ps_client, CM36651_PS_THD,
518 cm36651->ps_ctrl_regs[CM36651_PS_THD]);
534 struct cm36651_data *cm36651 = iio_priv(indio_dev);
537 mutex_lock(&cm36651->lock);
540 ret = cm36651_set_operation_mode(cm36651, cmd);
542 mutex_unlock(&cm36651->lock);
552 struct cm36651_data *cm36651 = iio_priv(indio_dev);
555 mutex_lock(&cm36651->lock);
557 event_en = test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
559 mutex_unlock(&cm36651->lock);
624 struct cm36651_data *cm36651;
628 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*cm36651));
632 cm36651 = iio_priv(indio_dev);
634 cm36651->vled_reg = devm_regulator_get(&client->dev, "vled");
635 if (IS_ERR(cm36651->vled_reg))
636 return dev_err_probe(&client->dev, PTR_ERR(cm36651->vled_reg),
639 ret = regulator_enable(cm36651->vled_reg);
647 cm36651->client = client;
648 cm36651->ps_client = i2c_new_dummy_device(client->adapter,
650 if (IS_ERR(cm36651->ps_client)) {
652 ret = PTR_ERR(cm36651->ps_client);
656 cm36651->ara_client = i2c_new_dummy_device(client->adapter, CM36651_ARA);
657 if (IS_ERR(cm36651->ara_client)) {
659 ret = PTR_ERR(cm36651->ara_client);
663 mutex_init(&cm36651->lock);
670 ret = cm36651_setup_reg(cm36651);
678 "cm36651", indio_dev);
695 i2c_unregister_device(cm36651->ara_client);
697 i2c_unregister_device(cm36651->ps_client);
699 regulator_disable(cm36651->vled_reg);
706 struct cm36651_data *cm36651 = iio_priv(indio_dev);
709 regulator_disable(cm36651->vled_reg);
711 i2c_unregister_device(cm36651->ps_client);
712 i2c_unregister_device(cm36651->ara_client);
716 { "cm36651" },
723 { .compatible = "capella,cm36651" },
730 .name = "cm36651",