aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2008-04-28 18:34:14 -0400
committerLen Brown <len.brown@intel.com>2008-04-29 03:22:23 -0400
commitb90eca0a61ebd010036242e29610bc6a909e3f19 (patch)
tree7f92620157786997dc0123b75b8c38b61e8dd2be
parentd948a8daa059cf5b3e7f002e7b92acf00fc70c49 (diff)
PNP: add pnp_get_resource() interface
This adds a pnp_get_resource() that works the same way as platform_get_resource(). This will enable us to consolidate many pnp_resource_table references in one place, which will make it easier to make the table dynamic. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Acked-By: Rene Herman <rene.herman@gmail.com> Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r--drivers/pnp/resource.c27
-rw-r--r--include/linux/pnp.h1
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
index eee6d8eddcb4..ef8835ec5778 100644
--- a/drivers/pnp/resource.c
+++ b/drivers/pnp/resource.c
@@ -487,6 +487,33 @@ int pnp_check_dma(struct pnp_dev *dev, int idx)
487#endif 487#endif
488} 488}
489 489
490struct resource *pnp_get_resource(struct pnp_dev *dev,
491 unsigned int type, unsigned int num)
492{
493 struct pnp_resource_table *res = &dev->res;
494
495 switch (type) {
496 case IORESOURCE_IO:
497 if (num >= PNP_MAX_PORT)
498 return NULL;
499 return &res->port_resource[num];
500 case IORESOURCE_MEM:
501 if (num >= PNP_MAX_MEM)
502 return NULL;
503 return &res->mem_resource[num];
504 case IORESOURCE_IRQ:
505 if (num >= PNP_MAX_IRQ)
506 return NULL;
507 return &res->irq_resource[num];
508 case IORESOURCE_DMA:
509 if (num >= PNP_MAX_DMA)
510 return NULL;
511 return &res->dma_resource[num];
512 }
513 return NULL;
514}
515EXPORT_SYMBOL(pnp_get_resource);
516
490/* format is: pnp_reserve_irq=irq1[,irq2] .... */ 517/* format is: pnp_reserve_irq=irq1[,irq2] .... */
491static int __init pnp_setup_reserve_irq(char *str) 518static int __init pnp_setup_reserve_irq(char *str)
492{ 519{
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index e8187d9faf01..b5fd03854fa4 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -25,6 +25,7 @@ struct pnp_dev;
25/* 25/*
26 * Resource Management 26 * Resource Management
27 */ 27 */
28struct resource *pnp_get_resource(struct pnp_dev *, unsigned int, unsigned int);
28 29
29/* Use these instead of directly reading pnp_dev to get resource information */ 30/* Use these instead of directly reading pnp_dev to get resource information */
30#define pnp_port_start(dev,bar) ((dev)->res.port_resource[(bar)].start) 31#define pnp_port_start(dev,bar) ((dev)->res.port_resource[(bar)].start)