cm36651           143 drivers/iio/light/cm36651.c static int cm36651_setup_reg(struct cm36651_data *cm36651)
cm36651           145 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           146 drivers/iio/light/cm36651.c 	struct i2c_client *ps_client = cm36651->ps_client;
cm36651           150 drivers/iio/light/cm36651.c 	cm36651->cs_ctrl_regs[CM36651_CS_CONF1] = CM36651_ALS_ENABLE |
cm36651           152 drivers/iio/light/cm36651.c 	cm36651->cs_ctrl_regs[CM36651_CS_CONF2] = CM36651_CS_CONF2_DEFAULT_BIT;
cm36651           156 drivers/iio/light/cm36651.c 						     cm36651->cs_ctrl_regs[i]);
cm36651           162 drivers/iio/light/cm36651.c 	cm36651->ps_ctrl_regs[CM36651_PS_CONF1] = CM36651_PS_ENABLE |
cm36651           164 drivers/iio/light/cm36651.c 	cm36651->ps_ctrl_regs[CM36651_PS_THD] = CM36651_PS_INITIAL_THD;
cm36651           165 drivers/iio/light/cm36651.c 	cm36651->ps_ctrl_regs[CM36651_PS_CANC] = CM36651_PS_CANC_DEFAULT;
cm36651           166 drivers/iio/light/cm36651.c 	cm36651->ps_ctrl_regs[CM36651_PS_CONF2] = CM36651_PS_HYS2 |
cm36651           171 drivers/iio/light/cm36651.c 						     cm36651->ps_ctrl_regs[i]);
cm36651           182 drivers/iio/light/cm36651.c 	ret = i2c_smbus_write_byte_data(cm36651->ps_client,
cm36651           190 drivers/iio/light/cm36651.c static int cm36651_read_output(struct cm36651_data *cm36651,
cm36651           193 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           210 drivers/iio/light/cm36651.c 		*val = i2c_smbus_read_byte(cm36651->ps_client);
cm36651           214 drivers/iio/light/cm36651.c 		if (!test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
cm36651           215 drivers/iio/light/cm36651.c 			ret = i2c_smbus_write_byte_data(cm36651->ps_client,
cm36651           233 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           234 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           245 drivers/iio/light/cm36651.c 	ret = i2c_smbus_read_byte(cm36651->ara_client);
cm36651           273 drivers/iio/light/cm36651.c static int cm36651_set_operation_mode(struct cm36651_data *cm36651, int cmd)
cm36651           275 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           276 drivers/iio/light/cm36651.c 	struct i2c_client *ps_client = cm36651->ps_client;
cm36651           282 drivers/iio/light/cm36651.c 				cm36651->cs_ctrl_regs[CM36651_CS_CONF1]);
cm36651           285 drivers/iio/light/cm36651.c 		if (test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags))
cm36651           289 drivers/iio/light/cm36651.c 				cm36651->ps_ctrl_regs[CM36651_PS_CONF1]);
cm36651           292 drivers/iio/light/cm36651.c 		if (test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
cm36651           297 drivers/iio/light/cm36651.c 		set_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
cm36651           309 drivers/iio/light/cm36651.c 		if (!test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags)) {
cm36651           314 drivers/iio/light/cm36651.c 		clear_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
cm36651           326 drivers/iio/light/cm36651.c static int cm36651_read_channel(struct cm36651_data *cm36651,
cm36651           329 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           339 drivers/iio/light/cm36651.c 	ret = cm36651_set_operation_mode(cm36651, cmd);
cm36651           346 drivers/iio/light/cm36651.c 	ret = cm36651_read_output(cm36651, chan, val);
cm36651           355 drivers/iio/light/cm36651.c static int cm36651_read_int_time(struct cm36651_data *cm36651,
cm36651           360 drivers/iio/light/cm36651.c 		if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT1)
cm36651           362 drivers/iio/light/cm36651.c 		else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT2)
cm36651           364 drivers/iio/light/cm36651.c 		else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT3)
cm36651           366 drivers/iio/light/cm36651.c 		else if (cm36651->cs_int_time[chan->address] == CM36651_CS_IT4)
cm36651           372 drivers/iio/light/cm36651.c 		if (cm36651->ps_int_time == CM36651_PS_IT1)
cm36651           374 drivers/iio/light/cm36651.c 		else if (cm36651->ps_int_time == CM36651_PS_IT2)
cm36651           376 drivers/iio/light/cm36651.c 		else if (cm36651->ps_int_time == CM36651_PS_IT3)
cm36651           378 drivers/iio/light/cm36651.c 		else if (cm36651->ps_int_time == CM36651_PS_IT4)
cm36651           390 drivers/iio/light/cm36651.c static int cm36651_write_int_time(struct cm36651_data *cm36651,
cm36651           393 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           394 drivers/iio/light/cm36651.c 	struct i2c_client *ps_client = cm36651->ps_client;
cm36651           416 drivers/iio/light/cm36651.c 		cm36651->cs_int_time[chan->address] = int_time;
cm36651           436 drivers/iio/light/cm36651.c 		cm36651->ps_int_time = int_time;
cm36651           449 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           452 drivers/iio/light/cm36651.c 	mutex_lock(&cm36651->lock);
cm36651           456 drivers/iio/light/cm36651.c 		ret = cm36651_read_channel(cm36651, chan, val);
cm36651           460 drivers/iio/light/cm36651.c 		ret = cm36651_read_int_time(cm36651, chan, val2);
cm36651           466 drivers/iio/light/cm36651.c 	mutex_unlock(&cm36651->lock);
cm36651           475 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           476 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           480 drivers/iio/light/cm36651.c 		ret = cm36651_write_int_time(cm36651, chan, val2);
cm36651           495 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           497 drivers/iio/light/cm36651.c 	*val = cm36651->ps_ctrl_regs[CM36651_PS_THD];
cm36651           509 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           510 drivers/iio/light/cm36651.c 	struct i2c_client *client = cm36651->client;
cm36651           516 drivers/iio/light/cm36651.c 	cm36651->ps_ctrl_regs[CM36651_PS_THD] = val;
cm36651           517 drivers/iio/light/cm36651.c 	ret = i2c_smbus_write_byte_data(cm36651->ps_client, CM36651_PS_THD,
cm36651           518 drivers/iio/light/cm36651.c 					cm36651->ps_ctrl_regs[CM36651_PS_THD]);
cm36651           534 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           537 drivers/iio/light/cm36651.c 	mutex_lock(&cm36651->lock);
cm36651           540 drivers/iio/light/cm36651.c 	ret = cm36651_set_operation_mode(cm36651, cmd);
cm36651           542 drivers/iio/light/cm36651.c 	mutex_unlock(&cm36651->lock);
cm36651           552 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           555 drivers/iio/light/cm36651.c 	mutex_lock(&cm36651->lock);
cm36651           557 drivers/iio/light/cm36651.c 	event_en = test_bit(CM36651_PROXIMITY_EV_EN, &cm36651->flags);
cm36651           559 drivers/iio/light/cm36651.c 	mutex_unlock(&cm36651->lock);
cm36651           624 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651;
cm36651           628 drivers/iio/light/cm36651.c 	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*cm36651));
cm36651           632 drivers/iio/light/cm36651.c 	cm36651 = iio_priv(indio_dev);
cm36651           634 drivers/iio/light/cm36651.c 	cm36651->vled_reg = devm_regulator_get(&client->dev, "vled");
cm36651           635 drivers/iio/light/cm36651.c 	if (IS_ERR(cm36651->vled_reg)) {
cm36651           637 drivers/iio/light/cm36651.c 		return PTR_ERR(cm36651->vled_reg);
cm36651           640 drivers/iio/light/cm36651.c 	ret = regulator_enable(cm36651->vled_reg);
cm36651           648 drivers/iio/light/cm36651.c 	cm36651->client = client;
cm36651           649 drivers/iio/light/cm36651.c 	cm36651->ps_client = i2c_new_dummy_device(client->adapter,
cm36651           651 drivers/iio/light/cm36651.c 	if (IS_ERR(cm36651->ps_client)) {
cm36651           653 drivers/iio/light/cm36651.c 		ret = PTR_ERR(cm36651->ps_client);
cm36651           657 drivers/iio/light/cm36651.c 	cm36651->ara_client = i2c_new_dummy_device(client->adapter, CM36651_ARA);
cm36651           658 drivers/iio/light/cm36651.c 	if (IS_ERR(cm36651->ara_client)) {
cm36651           660 drivers/iio/light/cm36651.c 		ret = PTR_ERR(cm36651->ara_client);
cm36651           664 drivers/iio/light/cm36651.c 	mutex_init(&cm36651->lock);
cm36651           672 drivers/iio/light/cm36651.c 	ret = cm36651_setup_reg(cm36651);
cm36651           697 drivers/iio/light/cm36651.c 	i2c_unregister_device(cm36651->ara_client);
cm36651           699 drivers/iio/light/cm36651.c 	i2c_unregister_device(cm36651->ps_client);
cm36651           701 drivers/iio/light/cm36651.c 	regulator_disable(cm36651->vled_reg);
cm36651           708 drivers/iio/light/cm36651.c 	struct cm36651_data *cm36651 = iio_priv(indio_dev);
cm36651           711 drivers/iio/light/cm36651.c 	regulator_disable(cm36651->vled_reg);
cm36651           713 drivers/iio/light/cm36651.c 	i2c_unregister_device(cm36651->ps_client);
cm36651           714 drivers/iio/light/cm36651.c 	i2c_unregister_device(cm36651->ara_client);