Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b90eca0a authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Len Brown
Browse files

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: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
Acked-By: default avatarRene Herman <rene.herman@gmail.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent d948a8da
Loading
Loading
Loading
Loading
+27 −0
Original line number Original line Diff line number Diff line
@@ -487,6 +487,33 @@ int pnp_check_dma(struct pnp_dev *dev, int idx)
#endif
#endif
}
}


struct resource *pnp_get_resource(struct pnp_dev *dev,
				  unsigned int type, unsigned int num)
{
	struct pnp_resource_table *res = &dev->res;

	switch (type) {
	case IORESOURCE_IO:
		if (num >= PNP_MAX_PORT)
			return NULL;
		return &res->port_resource[num];
	case IORESOURCE_MEM:
		if (num >= PNP_MAX_MEM)
			return NULL;
		return &res->mem_resource[num];
	case IORESOURCE_IRQ:
		if (num >= PNP_MAX_IRQ)
			return NULL;
		return &res->irq_resource[num];
	case IORESOURCE_DMA:
		if (num >= PNP_MAX_DMA)
			return NULL;
		return &res->dma_resource[num];
	}
	return NULL;
}
EXPORT_SYMBOL(pnp_get_resource);

/* format is: pnp_reserve_irq=irq1[,irq2] .... */
/* format is: pnp_reserve_irq=irq1[,irq2] .... */
static int __init pnp_setup_reserve_irq(char *str)
static int __init pnp_setup_reserve_irq(char *str)
{
{
+1 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ struct pnp_dev;
/*
/*
 * Resource Management
 * Resource Management
 */
 */
struct resource *pnp_get_resource(struct pnp_dev *, unsigned int, unsigned int);


/* Use these instead of directly reading pnp_dev to get resource information */
/* Use these instead of directly reading pnp_dev to get resource information */
#define pnp_port_start(dev,bar)   ((dev)->res.port_resource[(bar)].start)
#define pnp_port_start(dev,bar)   ((dev)->res.port_resource[(bar)].start)