Lines Matching refs:icn8505

147 static int icn8505_read_data(struct icn8505_data *icn8505, int reg,  in icn8505_read_data()  argument
150 return icn8505_read_xfer(icn8505->client, icn8505->client->addr, reg, in icn8505_read_data()
154 static int icn8505_read_reg_silent(struct icn8505_data *icn8505, int reg) in icn8505_read_reg_silent() argument
159 error = icn8505_read_xfer(icn8505->client, icn8505->client->addr, reg, in icn8505_read_reg_silent()
167 static int icn8505_write_reg(struct icn8505_data *icn8505, int reg, u8 val) in icn8505_write_reg() argument
169 return icn8505_write_xfer(icn8505->client, icn8505->client->addr, reg, in icn8505_write_reg()
173 static int icn8505_read_prog_data(struct icn8505_data *icn8505, int reg, in icn8505_read_prog_data() argument
176 return icn8505_read_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg, in icn8505_read_prog_data()
180 static int icn8505_write_prog_data(struct icn8505_data *icn8505, int reg, in icn8505_write_prog_data() argument
183 return icn8505_write_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg, in icn8505_write_prog_data()
187 static int icn8505_write_prog_reg(struct icn8505_data *icn8505, int reg, u8 val) in icn8505_write_prog_reg() argument
189 return icn8505_write_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg, in icn8505_write_prog_reg()
199 static int icn8505_try_fw_upload(struct icn8505_data *icn8505, in icn8505_try_fw_upload() argument
202 struct device *dev = &icn8505->client->dev; in icn8505_try_fw_upload()
209 error = icn8505_write_prog_reg(icn8505, 0xcc3355, 0x5a); in icn8505_try_fw_upload()
215 error = icn8505_write_prog_reg(icn8505, 0x040400, 0x01); in icn8505_try_fw_upload()
221 error = icn8505_read_prog_data(icn8505, 0x040002, buf, 1); in icn8505_try_fw_upload()
233 error = icn8505_write_prog_reg(icn8505, 0x40028, 1); in icn8505_try_fw_upload()
240 error = icn8505_write_prog_data(icn8505, offset, in icn8505_try_fw_upload()
247 error = icn8505_write_prog_reg(icn8505, 0x40028, 0); in icn8505_try_fw_upload()
252 error = icn8505_read_prog_data(icn8505, 0x40034, buf, 2); in icn8505_try_fw_upload()
261 error = icn8505_read_prog_data(icn8505, 0x4002c, buf, 4); in icn8505_try_fw_upload()
272 error = icn8505_write_prog_reg(icn8505, 0x40400, 0x03); in icn8505_try_fw_upload()
280 static int icn8505_upload_fw(struct icn8505_data *icn8505) in icn8505_upload_fw() argument
282 struct device *dev = &icn8505->client->dev; in icn8505_upload_fw()
291 error = firmware_request_platform(&fw, icn8505->firmware_name, dev); in icn8505_upload_fw()
298 if (icn8505_read_reg_silent(icn8505, 0x000a) == 0x85) in icn8505_upload_fw()
302 error = icn8505_try_fw_upload(icn8505, fw); in icn8505_upload_fw()
324 struct icn8505_data *icn8505 = dev_id; in icn8505_irq() local
325 struct device *dev = &icn8505->client->dev; in icn8505_irq()
329 error = icn8505_read_data(icn8505, ICN8505_REG_TOUCHDATA, in icn8505_irq()
346 input_mt_slot(icn8505->input, touch->slot); in icn8505_irq()
347 input_mt_report_slot_state(icn8505->input, MT_TOOL_FINGER, act); in icn8505_irq()
351 touchscreen_report_pos(icn8505->input, &icn8505->prop, in icn8505_irq()
357 input_mt_sync_frame(icn8505->input); in icn8505_irq()
358 input_report_key(icn8505->input, KEY_LEFTMETA, in icn8505_irq()
360 input_sync(icn8505->input); in icn8505_irq()
365 static int icn8505_probe_acpi(struct icn8505_data *icn8505, struct device *dev) in icn8505_probe_acpi() argument
389 snprintf(icn8505->firmware_name, sizeof(icn8505->firmware_name), in icn8505_probe_acpi()
399 struct icn8505_data *icn8505; in icn8505_probe() local
409 icn8505 = devm_kzalloc(dev, sizeof(*icn8505), GFP_KERNEL); in icn8505_probe()
410 if (!icn8505) in icn8505_probe()
424 icn8505->client = client; in icn8505_probe()
425 icn8505->input = input; in icn8505_probe()
426 input_set_drvdata(input, icn8505); in icn8505_probe()
428 error = icn8505_probe_acpi(icn8505, dev); in icn8505_probe()
432 error = icn8505_upload_fw(icn8505); in icn8505_probe()
436 error = icn8505_read_data(icn8505, ICN8505_REG_CONFIGDATA, in icn8505_probe()
448 touchscreen_parse_properties(input, true, &icn8505->prop); in icn8505_probe()
461 IRQF_ONESHOT, client->name, icn8505); in icn8505_probe()
471 i2c_set_clientdata(client, icn8505); in icn8505_probe()
477 struct icn8505_data *icn8505 = i2c_get_clientdata(to_i2c_client(dev)); in icn8505_suspend() local
479 disable_irq(icn8505->client->irq); in icn8505_suspend()
481 icn8505_write_reg(icn8505, ICN8505_REG_POWER, ICN8505_POWER_HIBERNATE); in icn8505_suspend()
488 struct icn8505_data *icn8505 = i2c_get_clientdata(to_i2c_client(dev)); in icn8505_resume() local
491 error = icn8505_upload_fw(icn8505); in icn8505_resume()
495 enable_irq(icn8505->client->irq); in icn8505_resume()