diff options
author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2008-04-28 16:34:31 -0600 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-04-29 03:22:28 -0400 |
commit | 0a977f15469457d9a19eed992caf71995c674064 (patch) | |
tree | 8f20c1f93782908112dba5cf835bb0110eb1ffb1 | |
parent | 784f01d5bdeae7d7005ede17305306b042ba2617 (diff) | |
download | op-kernel-dev-0a977f15469457d9a19eed992caf71995c674064.zip op-kernel-dev-0a977f15469457d9a19eed992caf71995c674064.tar.gz |
PNP: add pnp_get_pnp_resource()
In some places, we need to get the struct pnp_resource, not just
the struct resource, because ISAPNP needs to store the register
index in the pnp_resource.
I don't like pnp_get_pnp_resource() and hope that it is temporary,
but we need it for a little while.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r-- | drivers/pnp/base.h | 3 | ||||
-rw-r--r-- | drivers/pnp/resource.c | 24 |
2 files changed, 21 insertions, 6 deletions
diff --git a/drivers/pnp/base.h b/drivers/pnp/base.h index 1d6bb35..49b4138 100644 --- a/drivers/pnp/base.h +++ b/drivers/pnp/base.h @@ -21,6 +21,9 @@ void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc); void pnp_init_resource(struct resource *res); +struct pnp_resource *pnp_get_pnp_resource(struct pnp_dev *dev, + unsigned int type, unsigned int num); + #define PNP_MAX_PORT 40 #define PNP_MAX_MEM 24 #define PNP_MAX_IRQ 2 diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c index 7e9f430..c57cfe5 100644 --- a/drivers/pnp/resource.c +++ b/drivers/pnp/resource.c @@ -499,8 +499,8 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res) #endif } -struct resource *pnp_get_resource(struct pnp_dev *dev, - unsigned int type, unsigned int num) +struct pnp_resource *pnp_get_pnp_resource(struct pnp_dev *dev, + unsigned int type, unsigned int num) { struct pnp_resource_table *res = dev->res; @@ -508,22 +508,34 @@ struct resource *pnp_get_resource(struct pnp_dev *dev, case IORESOURCE_IO: if (num >= PNP_MAX_PORT) return NULL; - return &res->port[num].res; + return &res->port[num]; case IORESOURCE_MEM: if (num >= PNP_MAX_MEM) return NULL; - return &res->mem[num].res; + return &res->mem[num]; case IORESOURCE_IRQ: if (num >= PNP_MAX_IRQ) return NULL; - return &res->irq[num].res; + return &res->irq[num]; case IORESOURCE_DMA: if (num >= PNP_MAX_DMA) return NULL; - return &res->dma[num].res; + return &res->dma[num]; } return NULL; } + +struct resource *pnp_get_resource(struct pnp_dev *dev, + unsigned int type, unsigned int num) +{ + struct pnp_resource *pnp_res; + + pnp_res = pnp_get_pnp_resource(dev, type, num); + if (pnp_res) + return &pnp_res->res; + + return NULL; +} EXPORT_SYMBOL(pnp_get_resource); /* format is: pnp_reserve_irq=irq1[,irq2] .... */ |