Lines Matching refs:dev
21 static struct resource *pnp_find_resource(struct pnp_dev *dev, in pnp_find_resource() argument
26 struct resource *res = pnp_get_resource(dev, type, bar); in pnp_find_resource()
37 static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx) in pnp_assign_port() argument
41 res = pnp_find_resource(dev, rule->flags, IORESOURCE_IO, idx); in pnp_assign_port()
43 pnp_dbg(&dev->dev, " io %d already set to %#llx-%#llx " in pnp_assign_port()
56 pnp_dbg(&dev->dev, " io %d disabled\n", idx); in pnp_assign_port()
63 while (!pnp_check_port(dev, res)) { in pnp_assign_port()
67 pnp_dbg(&dev->dev, " couldn't assign io %d " in pnp_assign_port()
76 pnp_add_io_resource(dev, res->start, res->end, res->flags); in pnp_assign_port()
80 static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx) in pnp_assign_mem() argument
84 res = pnp_find_resource(dev, rule->flags, IORESOURCE_MEM, idx); in pnp_assign_mem()
86 pnp_dbg(&dev->dev, " mem %d already set to %#llx-%#llx " in pnp_assign_mem()
107 pnp_dbg(&dev->dev, " mem %d disabled\n", idx); in pnp_assign_mem()
114 while (!pnp_check_mem(dev, res)) { in pnp_assign_mem()
118 pnp_dbg(&dev->dev, " couldn't assign mem %d " in pnp_assign_mem()
127 pnp_add_mem_resource(dev, res->start, res->end, res->flags); in pnp_assign_mem()
131 static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx) in pnp_assign_irq() argument
141 res = pnp_find_resource(dev, rule->flags, IORESOURCE_IRQ, idx); in pnp_assign_irq()
143 pnp_dbg(&dev->dev, " irq %d already set to %d flags %#lx\n", in pnp_assign_irq()
155 pnp_dbg(&dev->dev, " irq %d disabled\n", idx); in pnp_assign_irq()
168 if (pnp_check_irq(dev, res)) in pnp_assign_irq()
177 pnp_dbg(&dev->dev, " irq %d disabled (optional)\n", idx); in pnp_assign_irq()
181 pnp_dbg(&dev->dev, " couldn't assign irq %d\n", idx); in pnp_assign_irq()
185 pnp_add_irq_resource(dev, res->start, res->flags); in pnp_assign_irq()
190 static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx) in pnp_assign_dma() argument
200 res = pnp_find_resource(dev, rule->flags, IORESOURCE_DMA, idx); in pnp_assign_dma()
202 pnp_dbg(&dev->dev, " dma %d already set to %d flags %#lx\n", in pnp_assign_dma()
214 pnp_dbg(&dev->dev, " dma %d disabled\n", idx); in pnp_assign_dma()
221 if (pnp_check_dma(dev, res)) in pnp_assign_dma()
226 pnp_dbg(&dev->dev, " couldn't assign dma %d\n", idx); in pnp_assign_dma()
230 pnp_add_dma_resource(dev, res->start, res->flags); in pnp_assign_dma()
235 void pnp_init_resources(struct pnp_dev *dev) in pnp_init_resources() argument
237 pnp_free_resources(dev); in pnp_init_resources()
240 static void pnp_clean_resource_table(struct pnp_dev *dev) in pnp_clean_resource_table() argument
244 list_for_each_entry_safe(pnp_res, tmp, &dev->resources, list) { in pnp_clean_resource_table()
255 static int pnp_assign_resources(struct pnp_dev *dev, int set) in pnp_assign_resources() argument
262 pnp_dbg(&dev->dev, "pnp_assign_resources, try dependent set %d\n", set); in pnp_assign_resources()
264 pnp_clean_resource_table(dev); in pnp_assign_resources()
266 list_for_each_entry(option, &dev->options, list) { in pnp_assign_resources()
273 ret = pnp_assign_port(dev, &option->u.port, nport++); in pnp_assign_resources()
276 ret = pnp_assign_mem(dev, &option->u.mem, nmem++); in pnp_assign_resources()
279 ret = pnp_assign_irq(dev, &option->u.irq, nirq++); in pnp_assign_resources()
283 ret = pnp_assign_dma(dev, &option->u.dma, ndma++); in pnp_assign_resources()
296 pnp_dbg(&dev->dev, "pnp_assign_resources failed (%d)\n", ret); in pnp_assign_resources()
297 pnp_clean_resource_table(dev); in pnp_assign_resources()
299 dbg_pnp_show_resources(dev, "pnp_assign_resources succeeded"); in pnp_assign_resources()
307 int pnp_auto_config_dev(struct pnp_dev *dev) in pnp_auto_config_dev() argument
311 if (!pnp_can_configure(dev)) { in pnp_auto_config_dev()
312 pnp_dbg(&dev->dev, "configuration not supported\n"); in pnp_auto_config_dev()
316 ret = pnp_assign_resources(dev, 0); in pnp_auto_config_dev()
320 for (i = 1; i < dev->num_dependent_sets; i++) { in pnp_auto_config_dev()
321 ret = pnp_assign_resources(dev, i); in pnp_auto_config_dev()
326 dev_err(&dev->dev, "unable to assign resources\n"); in pnp_auto_config_dev()
336 int pnp_start_dev(struct pnp_dev *dev) in pnp_start_dev() argument
338 if (!pnp_can_write(dev)) { in pnp_start_dev()
339 pnp_dbg(&dev->dev, "activation not supported\n"); in pnp_start_dev()
343 dbg_pnp_show_resources(dev, "pnp_start_dev"); in pnp_start_dev()
344 if (dev->protocol->set(dev) < 0) { in pnp_start_dev()
345 dev_err(&dev->dev, "activation failed\n"); in pnp_start_dev()
349 dev_info(&dev->dev, "activated\n"); in pnp_start_dev()
359 int pnp_stop_dev(struct pnp_dev *dev) in pnp_stop_dev() argument
361 if (!pnp_can_disable(dev)) { in pnp_stop_dev()
362 pnp_dbg(&dev->dev, "disabling not supported\n"); in pnp_stop_dev()
365 if (dev->protocol->disable(dev) < 0) { in pnp_stop_dev()
366 dev_err(&dev->dev, "disable failed\n"); in pnp_stop_dev()
370 dev_info(&dev->dev, "disabled\n"); in pnp_stop_dev()
380 int pnp_activate_dev(struct pnp_dev *dev) in pnp_activate_dev() argument
384 if (dev->active) in pnp_activate_dev()
388 if (pnp_auto_config_dev(dev)) in pnp_activate_dev()
391 error = pnp_start_dev(dev); in pnp_activate_dev()
395 dev->active = 1; in pnp_activate_dev()
405 int pnp_disable_dev(struct pnp_dev *dev) in pnp_disable_dev() argument
409 if (!dev->active) in pnp_disable_dev()
412 error = pnp_stop_dev(dev); in pnp_disable_dev()
416 dev->active = 0; in pnp_disable_dev()
420 pnp_clean_resource_table(dev); in pnp_disable_dev()