pnp: add PNP resource range checking function
Add a PNP resource range check function, indicating whether a resource has been assigned to any device. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> [apw@canonical.com: fixed up exports et al] Signed-off-by: Andy Whitcroft <apw@canonical.com> Signed-off-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
committed by
Eric Anholt
parent
b66d18ddb1
commit
1b8e69662e
@ -638,6 +638,24 @@ int pnp_possible_config(struct pnp_dev *dev, int type, resource_size_t start,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(pnp_possible_config);
|
EXPORT_SYMBOL(pnp_possible_config);
|
||||||
|
|
||||||
|
int pnp_range_reserved(resource_size_t start, resource_size_t end)
|
||||||
|
{
|
||||||
|
struct pnp_dev *dev;
|
||||||
|
struct pnp_resource *pnp_res;
|
||||||
|
resource_size_t *dev_start, *dev_end;
|
||||||
|
|
||||||
|
pnp_for_each_dev(dev) {
|
||||||
|
list_for_each_entry(pnp_res, &dev->resources, list) {
|
||||||
|
dev_start = &pnp_res->res.start;
|
||||||
|
dev_end = &pnp_res->res.end;
|
||||||
|
if (ranged_conflict(&start, &end, dev_start, dev_end))
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(pnp_range_reserved);
|
||||||
|
|
||||||
/* 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)
|
||||||
{
|
{
|
||||||
|
@ -446,6 +446,7 @@ int pnp_start_dev(struct pnp_dev *dev);
|
|||||||
int pnp_stop_dev(struct pnp_dev *dev);
|
int pnp_stop_dev(struct pnp_dev *dev);
|
||||||
int pnp_activate_dev(struct pnp_dev *dev);
|
int pnp_activate_dev(struct pnp_dev *dev);
|
||||||
int pnp_disable_dev(struct pnp_dev *dev);
|
int pnp_disable_dev(struct pnp_dev *dev);
|
||||||
|
int pnp_range_reserved(resource_size_t start, resource_size_t end);
|
||||||
|
|
||||||
/* protocol helpers */
|
/* protocol helpers */
|
||||||
int pnp_is_active(struct pnp_dev *dev);
|
int pnp_is_active(struct pnp_dev *dev);
|
||||||
@ -476,6 +477,7 @@ static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; }
|
|||||||
static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; }
|
static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||||
static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
|
static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||||
static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
|
static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||||
|
static inline int pnp_range_reserved(resource_size_t start, resource_size_t end) { return 0;}
|
||||||
|
|
||||||
/* protocol helpers */
|
/* protocol helpers */
|
||||||
static inline int pnp_is_active(struct pnp_dev *dev) { return 0; }
|
static inline int pnp_is_active(struct pnp_dev *dev) { return 0; }
|
||||||
|
Reference in New Issue
Block a user