diff options
author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2008-04-28 18:34:31 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-04-29 03:22:28 -0400 |
commit | 0a977f15469457d9a19eed992caf71995c674064 (patch) | |
tree | 8f20c1f93782908112dba5cf835bb0110eb1ffb1 | |
parent | 784f01d5bdeae7d7005ede17305306b042ba2617 (diff) |
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 1d6bb351d323..49b4138f3476 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); | |||
21 | 21 | ||
22 | void pnp_init_resource(struct resource *res); | 22 | void pnp_init_resource(struct resource *res); |
23 | 23 | ||
24 | struct pnp_resource *pnp_get_pnp_resource(struct pnp_dev *dev, | ||
25 | unsigned int type, unsigned int num); | ||
26 | |||
24 | #define PNP_MAX_PORT 40 | 27 | #define PNP_MAX_PORT 40 |
25 | #define PNP_MAX_MEM 24 | 28 | #define PNP_MAX_MEM 24 |
26 | #define PNP_MAX_IRQ 2 | 29 | #define PNP_MAX_IRQ 2 |
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c index 7e9f4300e5f6..c57cfe51d52a 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) | |||
499 | #endif | 499 | #endif |
500 | } | 500 | } |
501 | 501 | ||
502 | struct resource *pnp_get_resource(struct pnp_dev *dev, | 502 | struct pnp_resource *pnp_get_pnp_resource(struct pnp_dev *dev, |
503 | unsigned int type, unsigned int num) | 503 | unsigned int type, unsigned int num) |
504 | { | 504 | { |
505 | struct pnp_resource_table *res = dev->res; | 505 | struct pnp_resource_table *res = dev->res; |
506 | 506 | ||
@@ -508,22 +508,34 @@ struct resource *pnp_get_resource(struct pnp_dev *dev, | |||
508 | case IORESOURCE_IO: | 508 | case IORESOURCE_IO: |
509 | if (num >= PNP_MAX_PORT) | 509 | if (num >= PNP_MAX_PORT) |
510 | return NULL; | 510 | return NULL; |
511 | return &res->port[num].res; | 511 | return &res->port[num]; |
512 | case IORESOURCE_MEM: | 512 | case IORESOURCE_MEM: |
513 | if (num >= PNP_MAX_MEM) | 513 | if (num >= PNP_MAX_MEM) |
514 | return NULL; | 514 | return NULL; |
515 | return &res->mem[num].res; | 515 | return &res->mem[num]; |
516 | case IORESOURCE_IRQ: | 516 | case IORESOURCE_IRQ: |
517 | if (num >= PNP_MAX_IRQ) | 517 | if (num >= PNP_MAX_IRQ) |
518 | return NULL; | 518 | return NULL; |
519 | return &res->irq[num].res; | 519 | return &res->irq[num]; |
520 | case IORESOURCE_DMA: | 520 | case IORESOURCE_DMA: |
521 | if (num >= PNP_MAX_DMA) | 521 | if (num >= PNP_MAX_DMA) |
522 | return NULL; | 522 | return NULL; |
523 | return &res->dma[num].res; | 523 | return &res->dma[num]; |
524 | } | 524 | } |
525 | return NULL; | 525 | return NULL; |
526 | } | 526 | } |
527 | |||
528 | struct resource *pnp_get_resource(struct pnp_dev *dev, | ||
529 | unsigned int type, unsigned int num) | ||
530 | { | ||
531 | struct pnp_resource *pnp_res; | ||
532 | |||
533 | pnp_res = pnp_get_pnp_resource(dev, type, num); | ||
534 | if (pnp_res) | ||
535 | return &pnp_res->res; | ||
536 | |||
537 | return NULL; | ||
538 | } | ||
527 | EXPORT_SYMBOL(pnp_get_resource); | 539 | EXPORT_SYMBOL(pnp_get_resource); |
528 | 540 | ||
529 | /* format is: pnp_reserve_irq=irq1[,irq2] .... */ | 541 | /* format is: pnp_reserve_irq=irq1[,irq2] .... */ |