Lines Matching +full:client +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-or-later
49 struct i2c_client *client; member
56 static int qt1070_read(struct i2c_client *client, u8 reg) in qt1070_read() argument
60 ret = i2c_smbus_read_byte_data(client, reg); in qt1070_read()
62 dev_err(&client->dev, in qt1070_read()
68 static int qt1070_write(struct i2c_client *client, u8 reg, u8 data) in qt1070_write() argument
72 ret = i2c_smbus_write_byte_data(client, reg, data); in qt1070_write()
74 dev_err(&client->dev, in qt1070_write()
80 static bool qt1070_identify(struct i2c_client *client) in qt1070_identify() argument
82 int id, ver; in qt1070_identify() local
84 /* Read Chip ID */ in qt1070_identify()
85 id = qt1070_read(client, CHIP_ID); in qt1070_identify()
86 if (id != QT1070_CHIP_ID) { in qt1070_identify()
87 dev_err(&client->dev, "ID %d not supported\n", id); in qt1070_identify()
92 ver = qt1070_read(client, FW_VERSION); in qt1070_identify()
94 dev_err(&client->dev, "could not read the firmware version\n"); in qt1070_identify()
98 dev_info(&client->dev, "AT42QT1070 firmware version %x\n", ver); in qt1070_identify()
106 struct i2c_client *client = data->client; in qt1070_interrupt() local
107 struct input_dev *input = data->input; in qt1070_interrupt()
112 qt1070_read(client, DET_STATUS); in qt1070_interrupt()
115 new_keys = qt1070_read(client, KEY_STATUS); in qt1070_interrupt()
119 if ((data->last_keys & mask) != keyval) in qt1070_interrupt()
120 input_report_key(input, data->keycodes[i], keyval); in qt1070_interrupt()
125 data->last_keys = new_keys; in qt1070_interrupt()
129 static int qt1070_probe(struct i2c_client *client, in qt1070_probe() argument
130 const struct i2c_device_id *id) in qt1070_probe() argument
137 err = i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE); in qt1070_probe()
139 dev_err(&client->dev, "%s adapter not supported\n", in qt1070_probe()
140 dev_driver_string(&client->adapter->dev)); in qt1070_probe()
141 return -ENODEV; in qt1070_probe()
144 if (!client->irq) { in qt1070_probe()
145 dev_err(&client->dev, "please assign the irq to this device\n"); in qt1070_probe()
146 return -EINVAL; in qt1070_probe()
150 if (!qt1070_identify(client)) in qt1070_probe()
151 return -ENODEV; in qt1070_probe()
156 dev_err(&client->dev, "insufficient memory\n"); in qt1070_probe()
157 err = -ENOMEM; in qt1070_probe()
161 data->client = client; in qt1070_probe()
162 data->input = input; in qt1070_probe()
163 data->irq = client->irq; in qt1070_probe()
165 input->name = "AT42QT1070 QTouch Sensor"; in qt1070_probe()
166 input->dev.parent = &client->dev; in qt1070_probe()
167 input->id.bustype = BUS_I2C; in qt1070_probe()
170 input->keycode = data->keycodes; in qt1070_probe()
171 input->keycodesize = sizeof(data->keycodes[0]); in qt1070_probe()
172 input->keycodemax = ARRAY_SIZE(qt1070_key2code); in qt1070_probe()
174 __set_bit(EV_KEY, input->evbit); in qt1070_probe()
177 data->keycodes[i] = qt1070_key2code[i]; in qt1070_probe()
178 __set_bit(qt1070_key2code[i], input->keybit); in qt1070_probe()
182 qt1070_write(client, CALIBRATE_CMD, 1); in qt1070_probe()
186 qt1070_write(client, RESET, 1); in qt1070_probe()
189 err = request_threaded_irq(client->irq, NULL, qt1070_interrupt, in qt1070_probe()
191 client->dev.driver->name, data); in qt1070_probe()
193 dev_err(&client->dev, "fail to request irq\n"); in qt1070_probe()
198 err = input_register_device(data->input); in qt1070_probe()
200 dev_err(&client->dev, "Failed to register input device\n"); in qt1070_probe()
204 i2c_set_clientdata(client, data); in qt1070_probe()
207 qt1070_read(client, DET_STATUS); in qt1070_probe()
212 free_irq(client->irq, data); in qt1070_probe()
219 static void qt1070_remove(struct i2c_client *client) in qt1070_remove() argument
221 struct qt1070_data *data = i2c_get_clientdata(client); in qt1070_remove()
224 free_irq(client->irq, data); in qt1070_remove()
226 input_unregister_device(data->input); in qt1070_remove()
233 struct i2c_client *client = to_i2c_client(dev); in qt1070_suspend() local
234 struct qt1070_data *data = i2c_get_clientdata(client); in qt1070_suspend()
237 enable_irq_wake(data->irq); in qt1070_suspend()
244 struct i2c_client *client = to_i2c_client(dev); in qt1070_resume() local
245 struct qt1070_data *data = i2c_get_clientdata(client); in qt1070_resume()
248 disable_irq_wake(data->irq); in qt1070_resume()