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

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

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: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 784f01d5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
+18 −6
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res)
#endif
}

struct resource *pnp_get_resource(struct pnp_dev *dev,
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,20 +508,32 @@ 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);