Lines Matching refs:rmi_dev
35 void rmi_free_function_list(struct rmi_device *rmi_dev) in rmi_free_function_list() argument
38 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_free_function_list()
40 rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev, "Freeing function list\n"); in rmi_free_function_list()
49 devm_kfree(&rmi_dev->dev, data->irq_memory); in rmi_free_function_list()
98 static int rmi_driver_process_reset_requests(struct rmi_device *rmi_dev) in rmi_driver_process_reset_requests() argument
100 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_process_reset_requests()
113 static int rmi_driver_process_config_requests(struct rmi_device *rmi_dev) in rmi_driver_process_config_requests() argument
115 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_process_config_requests()
128 static int rmi_process_interrupt_requests(struct rmi_device *rmi_dev) in rmi_process_interrupt_requests() argument
130 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_process_interrupt_requests()
131 struct device *dev = &rmi_dev->dev; in rmi_process_interrupt_requests()
139 error = rmi_read_block(rmi_dev, in rmi_process_interrupt_requests()
166 void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status, in rmi_set_attn_data() argument
169 struct rmi_driver_data *drvdata = dev_get_drvdata(&rmi_dev->dev); in rmi_set_attn_data()
190 struct rmi_device *rmi_dev = dev_id; in rmi_irq_fn() local
191 struct rmi_driver_data *drvdata = dev_get_drvdata(&rmi_dev->dev); in rmi_irq_fn()
201 ret = rmi_process_interrupt_requests(rmi_dev); in rmi_irq_fn()
203 rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev, in rmi_irq_fn()
217 static int rmi_irq_init(struct rmi_device *rmi_dev) in rmi_irq_init() argument
219 struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev); in rmi_irq_init()
220 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_irq_init()
227 ret = devm_request_threaded_irq(&rmi_dev->dev, pdata->irq, NULL, in rmi_irq_init()
229 dev_driver_string(rmi_dev->xport->dev), in rmi_irq_init()
230 rmi_dev); in rmi_irq_init()
232 dev_err(&rmi_dev->dev, "Failed to register interrupt %d\n", in rmi_irq_init()
243 struct rmi_function *rmi_find_function(struct rmi_device *rmi_dev, u8 number) in rmi_find_function() argument
245 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_find_function()
275 static int rmi_suspend_functions(struct rmi_device *rmi_dev) in rmi_suspend_functions() argument
277 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_suspend_functions()
309 static int rmi_resume_functions(struct rmi_device *rmi_dev) in rmi_resume_functions() argument
311 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_resume_functions()
324 int rmi_enable_sensor(struct rmi_device *rmi_dev) in rmi_enable_sensor() argument
328 retval = rmi_driver_process_config_requests(rmi_dev); in rmi_enable_sensor()
332 return rmi_process_interrupt_requests(rmi_dev); in rmi_enable_sensor()
342 static int rmi_driver_set_input_params(struct rmi_device *rmi_dev, in rmi_driver_set_input_params() argument
351 static void rmi_driver_set_input_name(struct rmi_device *rmi_dev, in rmi_driver_set_input_name() argument
354 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_set_input_name()
358 name = devm_kasprintf(&rmi_dev->dev, GFP_KERNEL, in rmi_driver_set_input_name()
366 static int rmi_driver_set_irq_bits(struct rmi_device *rmi_dev, in rmi_driver_set_irq_bits() argument
370 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_set_irq_bits()
371 struct device *dev = &rmi_dev->dev; in rmi_driver_set_irq_bits()
377 error = rmi_write_block(rmi_dev, in rmi_driver_set_irq_bits()
395 static int rmi_driver_clear_irq_bits(struct rmi_device *rmi_dev, in rmi_driver_clear_irq_bits() argument
399 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_clear_irq_bits()
400 struct device *dev = &rmi_dev->dev; in rmi_driver_clear_irq_bits()
408 error = rmi_write_block(rmi_dev, in rmi_driver_clear_irq_bits()
424 static int rmi_driver_reset_handler(struct rmi_device *rmi_dev) in rmi_driver_reset_handler() argument
426 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_reset_handler()
434 dev_warn(&rmi_dev->dev, in rmi_driver_reset_handler()
439 error = rmi_read_block(rmi_dev, in rmi_driver_reset_handler()
443 dev_err(&rmi_dev->dev, "%s: Failed to read current IRQ mask.\n", in rmi_driver_reset_handler()
448 error = rmi_driver_process_reset_requests(rmi_dev); in rmi_driver_reset_handler()
452 error = rmi_driver_process_config_requests(rmi_dev); in rmi_driver_reset_handler()
459 static int rmi_read_pdt_entry(struct rmi_device *rmi_dev, in rmi_read_pdt_entry() argument
465 error = rmi_read_block(rmi_dev, pdt_address, buf, RMI_PDT_ENTRY_SIZE); in rmi_read_pdt_entry()
467 dev_err(&rmi_dev->dev, "Read PDT entry at %#06x failed, code: %d.\n", in rmi_read_pdt_entry()
499 static int rmi_scan_pdt_page(struct rmi_device *rmi_dev, in rmi_scan_pdt_page() argument
503 int (*callback)(struct rmi_device *rmi_dev, in rmi_scan_pdt_page() argument
507 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_scan_pdt_page()
517 error = rmi_read_pdt_entry(rmi_dev, &pdt_entry, addr); in rmi_scan_pdt_page()
524 retval = callback(rmi_dev, ctx, &pdt_entry); in rmi_scan_pdt_page()
542 int rmi_scan_pdt(struct rmi_device *rmi_dev, void *ctx, in rmi_scan_pdt() argument
543 int (*callback)(struct rmi_device *rmi_dev, in rmi_scan_pdt() argument
551 retval = rmi_scan_pdt_page(rmi_dev, page, &empty_pages, in rmi_scan_pdt()
744 static int rmi_check_bootloader_mode(struct rmi_device *rmi_dev, in rmi_check_bootloader_mode() argument
747 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_check_bootloader_mode()
752 ret = rmi_read(rmi_dev, pdt->data_base_addr, &status); in rmi_check_bootloader_mode()
754 dev_err(&rmi_dev->dev, in rmi_check_bootloader_mode()
762 ret = rmi_read(rmi_dev, pdt->data_base_addr, &status); in rmi_check_bootloader_mode()
764 dev_err(&rmi_dev->dev, in rmi_check_bootloader_mode()
776 static int rmi_count_irqs(struct rmi_device *rmi_dev, in rmi_count_irqs() argument
784 ret = rmi_check_bootloader_mode(rmi_dev, pdt); in rmi_count_irqs()
791 int rmi_initial_reset(struct rmi_device *rmi_dev, void *ctx, in rmi_initial_reset() argument
800 rmi_get_platform_data(rmi_dev); in rmi_initial_reset()
802 if (rmi_dev->xport->ops->reset) { in rmi_initial_reset()
803 error = rmi_dev->xport->ops->reset(rmi_dev->xport, in rmi_initial_reset()
811 rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev, "Sending reset\n"); in rmi_initial_reset()
812 error = rmi_write_block(rmi_dev, cmd_addr, &cmd_buf, 1); in rmi_initial_reset()
814 dev_err(&rmi_dev->dev, in rmi_initial_reset()
828 static int rmi_create_function(struct rmi_device *rmi_dev, in rmi_create_function() argument
831 struct device *dev = &rmi_dev->dev; in rmi_create_function()
853 fn->rmi_dev = rmi_dev; in rmi_create_function()
876 void rmi_enable_irq(struct rmi_device *rmi_dev, bool clear_wake) in rmi_enable_irq() argument
878 struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev); in rmi_enable_irq()
879 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_enable_irq()
891 if (clear_wake && device_may_wakeup(rmi_dev->xport->dev)) { in rmi_enable_irq()
894 dev_warn(&rmi_dev->dev, in rmi_enable_irq()
905 rmi_process_interrupt_requests(rmi_dev); in rmi_enable_irq()
911 void rmi_disable_irq(struct rmi_device *rmi_dev, bool enable_wake) in rmi_disable_irq() argument
913 struct rmi_device_platform_data *pdata = rmi_get_platform_data(rmi_dev); in rmi_disable_irq()
914 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_disable_irq()
926 if (enable_wake && device_may_wakeup(rmi_dev->xport->dev)) { in rmi_disable_irq()
929 dev_warn(&rmi_dev->dev, in rmi_disable_irq()
945 int rmi_driver_suspend(struct rmi_device *rmi_dev, bool enable_wake) in rmi_driver_suspend() argument
949 retval = rmi_suspend_functions(rmi_dev); in rmi_driver_suspend()
951 dev_warn(&rmi_dev->dev, "Failed to suspend functions: %d\n", in rmi_driver_suspend()
954 rmi_disable_irq(rmi_dev, enable_wake); in rmi_driver_suspend()
959 int rmi_driver_resume(struct rmi_device *rmi_dev, bool clear_wake) in rmi_driver_resume() argument
963 rmi_enable_irq(rmi_dev, clear_wake); in rmi_driver_resume()
965 retval = rmi_resume_functions(rmi_dev); in rmi_driver_resume()
967 dev_warn(&rmi_dev->dev, "Failed to suspend functions: %d\n", in rmi_driver_resume()
976 struct rmi_device *rmi_dev = to_rmi_device(dev); in rmi_driver_remove() local
977 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev); in rmi_driver_remove()
979 rmi_disable_irq(rmi_dev, false); in rmi_driver_remove()
981 rmi_f34_remove_sysfs(rmi_dev); in rmi_driver_remove()
982 rmi_free_function_list(rmi_dev); in rmi_driver_remove()
1013 struct rmi_device *rmi_dev = data->rmi_dev; in rmi_probe_interrupts() local
1014 struct device *dev = &rmi_dev->dev; in rmi_probe_interrupts()
1015 struct fwnode_handle *fwnode = rmi_dev->xport->dev->fwnode; in rmi_probe_interrupts()
1029 retval = rmi_scan_pdt(rmi_dev, &irq_count, rmi_count_irqs); in rmi_probe_interrupts()
1043 dev_err(&rmi_dev->dev, "Failed to create IRQ domain\n"); in rmi_probe_interrupts()
1067 struct rmi_device *rmi_dev = data->rmi_dev; in rmi_init_functions() local
1068 struct device *dev = &rmi_dev->dev; in rmi_init_functions()
1073 retval = rmi_scan_pdt(rmi_dev, &irq_count, rmi_create_function); in rmi_init_functions()
1086 retval = rmi_read_block(rmi_dev, in rmi_init_functions()
1098 rmi_free_function_list(rmi_dev); in rmi_init_functions()
1107 struct rmi_device *rmi_dev; in rmi_driver_probe() local
1118 rmi_dev = to_rmi_device(dev); in rmi_driver_probe()
1120 rmi_dev->driver = rmi_driver; in rmi_driver_probe()
1122 pdata = rmi_get_platform_data(rmi_dev); in rmi_driver_probe()
1124 if (rmi_dev->xport->dev->of_node) { in rmi_driver_probe()
1125 retval = rmi_driver_of_probe(rmi_dev->xport->dev, pdata); in rmi_driver_probe()
1135 data->rmi_dev = rmi_dev; in rmi_driver_probe()
1136 dev_set_drvdata(&rmi_dev->dev, data); in rmi_driver_probe()
1159 retval = rmi_scan_pdt(rmi_dev, NULL, rmi_initial_reset); in rmi_driver_probe()
1163 retval = rmi_read(rmi_dev, PDT_PROPERTIES_LOCATION, &data->pdt_props); in rmi_driver_probe()
1180 if (rmi_dev->xport->input) { in rmi_driver_probe()
1188 data->input = rmi_dev->xport->input; in rmi_driver_probe()
1197 rmi_driver_set_input_params(rmi_dev, data->input); in rmi_driver_probe()
1210 retval = rmi_f34_create_sysfs(rmi_dev); in rmi_driver_probe()
1215 rmi_driver_set_input_name(rmi_dev, data->input); in rmi_driver_probe()
1216 if (!rmi_dev->xport->input) { in rmi_driver_probe()
1226 retval = rmi_irq_init(rmi_dev); in rmi_driver_probe()
1232 retval = rmi_enable_sensor(rmi_dev); in rmi_driver_probe()
1240 rmi_disable_irq(rmi_dev, false); in rmi_driver_probe()
1242 rmi_free_function_list(rmi_dev); in rmi_driver_probe()