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