Lines Matching refs:client
78 struct i2c_client *client; member
102 static s32 mlx90614_write_word(const struct i2c_client *client, u8 command, in mlx90614_write_word() argument
113 dev_dbg(&client->dev, "Writing 0x%x to address 0x%x", value, command); in mlx90614_write_word()
116 ret = i2c_smbus_xfer(client->adapter, client->addr, in mlx90614_write_word()
117 client->flags | I2C_CLIENT_PEC, in mlx90614_write_word()
126 ret = i2c_smbus_xfer(client->adapter, client->addr, in mlx90614_write_word()
127 client->flags | I2C_CLIENT_PEC, in mlx90614_write_word()
140 static inline s32 mlx90614_iir_search(const struct i2c_client *client, in mlx90614_iir_search() argument
159 ret = i2c_smbus_read_word_data(client, MLX90614_CONFIG); in mlx90614_iir_search()
169 ret = mlx90614_write_word(client, MLX90614_CONFIG, ret); in mlx90614_iir_search()
187 pm_runtime_get_sync(&data->client->dev); in mlx90614_power_get()
194 pm_runtime_put_autosuspend(&data->client->dev); in mlx90614_power_get()
207 pm_runtime_mark_last_busy(&data->client->dev); in mlx90614_power_put()
208 pm_runtime_put_autosuspend(&data->client->dev); in mlx90614_power_put()
254 ret = i2c_smbus_read_word_data(data->client, cmd); in mlx90614_read_raw()
276 ret = i2c_smbus_read_word_data(data->client, in mlx90614_read_raw()
296 ret = i2c_smbus_read_word_data(data->client, MLX90614_CONFIG); in mlx90614_read_raw()
328 ret = mlx90614_write_word(data->client, MLX90614_EMISSIVITY, in mlx90614_write_raw()
340 ret = mlx90614_iir_search(data->client, in mlx90614_write_raw()
412 dev_dbg(&data->client->dev, "Sleep disabled"); in mlx90614_sleep()
416 dev_dbg(&data->client->dev, "Requesting sleep"); in mlx90614_sleep()
419 ret = i2c_smbus_xfer(data->client->adapter, data->client->addr, in mlx90614_sleep()
420 data->client->flags | I2C_CLIENT_PEC, in mlx90614_sleep()
431 dev_dbg(&data->client->dev, "Wake-up disabled"); in mlx90614_wakeup()
435 dev_dbg(&data->client->dev, "Requesting wake-up"); in mlx90614_wakeup()
437 i2c_lock_adapter(data->client->adapter); in mlx90614_wakeup()
441 i2c_unlock_adapter(data->client->adapter); in mlx90614_wakeup()
452 i2c_smbus_read_word_data(data->client, MLX90614_CONFIG); in mlx90614_wakeup()
458 static struct gpio_desc *mlx90614_probe_wakeup(struct i2c_client *client) in mlx90614_probe_wakeup() argument
462 if (!i2c_check_functionality(client->adapter, in mlx90614_probe_wakeup()
464 dev_info(&client->dev, in mlx90614_probe_wakeup()
469 gpio = devm_gpiod_get_optional(&client->dev, "wakeup", GPIOD_IN); in mlx90614_probe_wakeup()
472 dev_warn(&client->dev, in mlx90614_probe_wakeup()
477 dev_info(&client->dev, in mlx90614_probe_wakeup()
492 static inline struct gpio_desc *mlx90614_probe_wakeup(struct i2c_client *client) in mlx90614_probe_wakeup() argument
499 static int mlx90614_probe_num_ir_sensors(struct i2c_client *client) in mlx90614_probe_num_ir_sensors() argument
503 ret = i2c_smbus_read_word_data(client, MLX90614_CONFIG); in mlx90614_probe_num_ir_sensors()
511 static int mlx90614_probe(struct i2c_client *client, in mlx90614_probe() argument
518 if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_WORD_DATA)) in mlx90614_probe()
521 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in mlx90614_probe()
526 i2c_set_clientdata(client, indio_dev); in mlx90614_probe()
527 data->client = client; in mlx90614_probe()
529 data->wakeup_gpio = mlx90614_probe_wakeup(client); in mlx90614_probe()
533 indio_dev->dev.parent = &client->dev; in mlx90614_probe()
538 ret = mlx90614_probe_num_ir_sensors(client); in mlx90614_probe()
541 dev_dbg(&client->dev, "Found single sensor"); in mlx90614_probe()
546 dev_dbg(&client->dev, "Found dual sensor"); in mlx90614_probe()
555 pm_runtime_set_autosuspend_delay(&client->dev, in mlx90614_probe()
557 pm_runtime_use_autosuspend(&client->dev); in mlx90614_probe()
558 pm_runtime_set_active(&client->dev); in mlx90614_probe()
559 pm_runtime_enable(&client->dev); in mlx90614_probe()
565 static int mlx90614_remove(struct i2c_client *client) in mlx90614_remove() argument
567 struct iio_dev *indio_dev = i2c_get_clientdata(client); in mlx90614_remove()
573 pm_runtime_disable(&client->dev); in mlx90614_remove()
574 if (!pm_runtime_status_suspended(&client->dev)) in mlx90614_remove()
576 pm_runtime_set_suspended(&client->dev); in mlx90614_remove()