Lines Matching refs:fn

132 	struct rmi_function *fn = to_rmi_function(dev);
134 kfree(fn);
150 struct rmi_function *fn = to_rmi_function(dev);
152 return fn->fd.function_number == handler->func;
156 static void rmi_function_of_probe(struct rmi_function *fn)
159 struct device_node *node = fn->rmi_dev->xport->dev->of_node;
162 fn->fd.function_number);
163 fn->dev.of_node = of_get_child_by_name(node, of_name);
166 static inline void rmi_function_of_probe(struct rmi_function *fn)
174 static int rmi_create_function_irq(struct rmi_function *fn,
177 struct rmi_driver_data *drvdata = dev_get_drvdata(&fn->rmi_dev->dev);
180 for (i = 0; i < fn->num_of_irqs; i++) {
181 set_bit(fn->irq_pos + i, fn->irq_mask);
183 fn->irq[i] = irq_create_mapping(drvdata->irqdomain,
184 fn->irq_pos + i);
186 irq_set_chip_data(fn->irq[i], fn);
187 irq_set_chip_and_handler(fn->irq[i], &rmi_irq_chip,
189 irq_set_nested_thread(fn->irq[i], 1);
191 error = devm_request_threaded_irq(&fn->dev, fn->irq[i], NULL,
193 dev_name(&fn->dev), fn);
195 dev_err(&fn->dev, "Error %d registering IRQ\n", error);
205 struct rmi_function *fn = to_rmi_function(dev);
210 rmi_function_of_probe(fn);
213 error = handler->probe(fn);
218 if (fn->num_of_irqs && handler->attention) {
219 error = rmi_create_function_irq(fn, handler);
229 struct rmi_function *fn = to_rmi_function(dev);
234 handler->remove(fn);
239 int rmi_register_function(struct rmi_function *fn)
241 struct rmi_device *rmi_dev = fn->rmi_dev;
244 device_initialize(&fn->dev);
246 dev_set_name(&fn->dev, "%s.fn%02x",
247 dev_name(&rmi_dev->dev), fn->fd.function_number);
249 fn->dev.parent = &rmi_dev->dev;
250 fn->dev.type = &rmi_function_type;
251 fn->dev.bus = &rmi_bus_type;
253 error = device_add(&fn->dev);
257 dev_name(&fn->dev));
262 fn->fd.function_number);
267 put_device(&fn->dev);
271 void rmi_unregister_function(struct rmi_function *fn)
275 rmi_dbg(RMI_DEBUG_CORE, &fn->dev, "Unregistering F%02X.\n",
276 fn->fd.function_number);
278 device_del(&fn->dev);
279 of_node_put(fn->dev.of_node);
281 for (i = 0; i < fn->num_of_irqs; i++)
282 irq_dispose_mapping(fn->irq[i]);
284 put_device(&fn->dev);