Lines Matching refs:f34

16 static int rmi_f34_write_bootloader_id(struct f34_data *f34)  in rmi_f34_write_bootloader_id()  argument
18 struct rmi_function *fn = f34->fn; in rmi_f34_write_bootloader_id()
45 static int rmi_f34_command(struct f34_data *f34, u8 command, in rmi_f34_command() argument
48 struct rmi_function *fn = f34->fn; in rmi_f34_command()
53 ret = rmi_f34_write_bootloader_id(f34); in rmi_f34_command()
58 init_completion(&f34->v5.cmd_done); in rmi_f34_command()
60 ret = rmi_read(rmi_dev, f34->v5.ctrl_address, &f34->v5.status); in rmi_f34_command()
62 dev_err(&f34->fn->dev, in rmi_f34_command()
68 f34->v5.status |= command & 0x0f; in rmi_f34_command()
70 ret = rmi_write(rmi_dev, f34->v5.ctrl_address, f34->v5.status); in rmi_f34_command()
72 dev_err(&f34->fn->dev, in rmi_f34_command()
78 if (!wait_for_completion_timeout(&f34->v5.cmd_done, in rmi_f34_command()
81 ret = rmi_read(rmi_dev, f34->v5.ctrl_address, &f34->v5.status); in rmi_f34_command()
83 dev_err(&f34->fn->dev, in rmi_f34_command()
89 if (f34->v5.status & 0x7f) { in rmi_f34_command()
90 dev_err(&f34->fn->dev, in rmi_f34_command()
92 __func__, command, f34->v5.status); in rmi_f34_command()
103 struct f34_data *f34 = dev_get_drvdata(&fn->dev); in rmi_f34_attention() local
107 if (f34->bl_version == 5) { in rmi_f34_attention()
108 ret = rmi_read(f34->fn->rmi_dev, f34->v5.ctrl_address, in rmi_f34_attention()
114 complete(&f34->v5.cmd_done); in rmi_f34_attention()
116 ret = rmi_read_block(f34->fn->rmi_dev, in rmi_f34_attention()
117 f34->fn->fd.data_base_addr + in rmi_f34_attention()
120 rmi_dbg(RMI_DEBUG_FN, &f34->fn->dev, "%s: cmd: %#02x, ret: %d\n", in rmi_f34_attention()
124 complete(&f34->v7.cmd_done); in rmi_f34_attention()
130 static int rmi_f34_write_blocks(struct f34_data *f34, const void *data, in rmi_f34_write_blocks() argument
133 struct rmi_function *fn = f34->fn; in rmi_f34_write_blocks()
149 data, f34->v5.block_size); in rmi_f34_write_blocks()
156 ret = rmi_f34_command(f34, command, F34_IDLE_WAIT_MS, false); in rmi_f34_write_blocks()
167 data += f34->v5.block_size; in rmi_f34_write_blocks()
168 f34->update_progress += f34->v5.block_size; in rmi_f34_write_blocks()
169 f34->update_status = (f34->update_progress * 100) / in rmi_f34_write_blocks()
170 f34->update_size; in rmi_f34_write_blocks()
176 static int rmi_f34_write_firmware(struct f34_data *f34, const void *data) in rmi_f34_write_firmware() argument
178 return rmi_f34_write_blocks(f34, data, f34->v5.fw_blocks, in rmi_f34_write_firmware()
182 static int rmi_f34_write_config(struct f34_data *f34, const void *data) in rmi_f34_write_config() argument
184 return rmi_f34_write_blocks(f34, data, f34->v5.config_blocks, in rmi_f34_write_config()
188 static int rmi_f34_enable_flash(struct f34_data *f34) in rmi_f34_enable_flash() argument
190 return rmi_f34_command(f34, F34_ENABLE_FLASH_PROG, in rmi_f34_enable_flash()
194 static int rmi_f34_flash_firmware(struct f34_data *f34, in rmi_f34_flash_firmware() argument
197 struct rmi_function *fn = f34->fn; in rmi_f34_flash_firmware()
202 f34->update_progress = 0; in rmi_f34_flash_firmware()
203 f34->update_size = image_size + config_size; in rmi_f34_flash_firmware()
207 ret = rmi_f34_command(f34, F34_ERASE_ALL, in rmi_f34_flash_firmware()
214 ret = rmi_f34_write_firmware(f34, syn_fw->data); in rmi_f34_flash_firmware()
226 ret = rmi_f34_command(f34, F34_ERASE_CONFIG, in rmi_f34_flash_firmware()
234 ret = rmi_f34_write_config(f34, &syn_fw->data[image_size]); in rmi_f34_flash_firmware()
242 static int rmi_f34_update_firmware(struct f34_data *f34, in rmi_f34_update_firmware() argument
254 rmi_dbg(RMI_DEBUG_FN, &f34->fn->dev, in rmi_f34_update_firmware()
260 rmi_dbg(RMI_DEBUG_FN, &f34->fn->dev, in rmi_f34_update_firmware()
266 if (image_size && image_size != f34->v5.fw_blocks * f34->v5.block_size) { in rmi_f34_update_firmware()
267 dev_err(&f34->fn->dev, in rmi_f34_update_firmware()
269 image_size, f34->v5.fw_blocks * f34->v5.block_size); in rmi_f34_update_firmware()
275 config_size != f34->v5.config_blocks * f34->v5.block_size) { in rmi_f34_update_firmware()
276 dev_err(&f34->fn->dev, in rmi_f34_update_firmware()
279 f34->v5.config_blocks * f34->v5.block_size); in rmi_f34_update_firmware()
285 dev_err(&f34->fn->dev, "Bad firmware image: no config data\n"); in rmi_f34_update_firmware()
290 dev_info(&f34->fn->dev, "Firmware image OK\n"); in rmi_f34_update_firmware()
291 mutex_lock(&f34->v5.flash_mutex); in rmi_f34_update_firmware()
293 ret = rmi_f34_flash_firmware(f34, syn_fw); in rmi_f34_update_firmware()
295 mutex_unlock(&f34->v5.flash_mutex); in rmi_f34_update_firmware()
303 struct f34_data *f34 = dev_get_drvdata(&fn->dev); in rmi_f34_status() local
309 return f34->update_status; in rmi_f34_status()
318 struct f34_data *f34; in rmi_driver_bootloader_id_show() local
321 f34 = dev_get_drvdata(&fn->dev); in rmi_driver_bootloader_id_show()
323 if (f34->bl_version == 5) in rmi_driver_bootloader_id_show()
325 f34->bootloader_id[0], in rmi_driver_bootloader_id_show()
326 f34->bootloader_id[1]); in rmi_driver_bootloader_id_show()
329 f34->bootloader_id[1], in rmi_driver_bootloader_id_show()
330 f34->bootloader_id[0]); in rmi_driver_bootloader_id_show()
344 struct f34_data *f34; in rmi_driver_configuration_id_show() local
347 f34 = dev_get_drvdata(&fn->dev); in rmi_driver_configuration_id_show()
349 return sysfs_emit(buf, "%s\n", f34->configuration_id); in rmi_driver_configuration_id_show()
363 struct f34_data *f34; in rmi_firmware_update() local
371 f34 = dev_get_drvdata(&data->f34_container->dev); in rmi_firmware_update()
373 if (f34->bl_version >= 7) { in rmi_firmware_update()
378 } else if (f34->bl_version != 5) { in rmi_firmware_update()
385 if (f34->bl_version >= 7) in rmi_firmware_update()
386 ret = rmi_f34v7_start_reflash(f34, fw); in rmi_firmware_update()
388 ret = rmi_f34_enable_flash(f34); in rmi_firmware_update()
413 f34 = dev_get_drvdata(&data->f34_container->dev); in rmi_firmware_update()
416 if (f34->bl_version >= 7) in rmi_firmware_update()
417 ret = rmi_f34v7_do_reflash(f34, fw); in rmi_firmware_update()
419 ret = rmi_f34_update_firmware(f34, fw); in rmi_firmware_update()
422 f34->update_status = ret; in rmi_firmware_update()
423 dev_err(&f34->fn->dev, in rmi_firmware_update()
426 dev_info(&f34->fn->dev, "Firmware update complete\n"); in rmi_firmware_update()
522 struct f34_data *f34; in rmi_f34_probe() local
528 f34 = devm_kzalloc(&fn->dev, sizeof(struct f34_data), GFP_KERNEL); in rmi_f34_probe()
529 if (!f34) in rmi_f34_probe()
532 f34->fn = fn; in rmi_f34_probe()
533 dev_set_drvdata(&fn->dev, f34); in rmi_f34_probe()
537 return rmi_f34v7_probe(f34); in rmi_f34_probe()
539 f34->bl_version = 5; in rmi_f34_probe()
549 snprintf(f34->bootloader_id, sizeof(f34->bootloader_id), in rmi_f34_probe()
552 mutex_init(&f34->v5.flash_mutex); in rmi_f34_probe()
553 init_completion(&f34->v5.cmd_done); in rmi_f34_probe()
555 f34->v5.block_size = get_unaligned_le16(&f34_queries[3]); in rmi_f34_probe()
556 f34->v5.fw_blocks = get_unaligned_le16(&f34_queries[5]); in rmi_f34_probe()
557 f34->v5.config_blocks = get_unaligned_le16(&f34_queries[7]); in rmi_f34_probe()
558 f34->v5.ctrl_address = fn->fd.data_base_addr + F34_BLOCK_DATA_OFFSET + in rmi_f34_probe()
559 f34->v5.block_size; in rmi_f34_probe()
563 f34->bootloader_id); in rmi_f34_probe()
565 f34->v5.block_size); in rmi_f34_probe()
567 f34->v5.fw_blocks); in rmi_f34_probe()
569 f34->v5.config_blocks); in rmi_f34_probe()
579 snprintf(f34->configuration_id, sizeof(f34->configuration_id), in rmi_f34_probe()
585 f34->configuration_id); in rmi_f34_probe()