[PATCH 1/2] UBUNTU: SAUCE: pnp: add PNP resource range checking function

Tim Gardner tim.gardner at canonical.com
Wed May 6 13:56:32 UTC 2009


Andy Whitcroft wrote:
> From: Bjorn Helgaas <bjorn.helgaas at hp.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/349314
> 
> Add a PNP resource range check function, indicating whether a resource
> has been assigned to any device.
> 
> [apw at canonical.com: fixed up exports et al]
> Original Author: Bjorn Helgaas <bjorn.helgaas at hp.com>
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
> ---
>  drivers/pnp/resource.c |   18 ++++++++++++++++++
>  include/linux/pnp.h    |    2 ++
>  2 files changed, 20 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
> index f604061..ba97654 100644
> --- a/drivers/pnp/resource.c
> +++ b/drivers/pnp/resource.c
> @@ -638,6 +638,24 @@ int pnp_possible_config(struct pnp_dev *dev, int type, resource_size_t start,
>  }
>  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] .... */
>  static int __init pnp_setup_reserve_irq(char *str)
>  {
> diff --git a/include/linux/pnp.h b/include/linux/pnp.h
> index ca3c887..b063c73 100644
> --- a/include/linux/pnp.h
> +++ b/include/linux/pnp.h
> @@ -446,6 +446,7 @@ int pnp_start_dev(struct pnp_dev *dev);
>  int pnp_stop_dev(struct pnp_dev *dev);
>  int pnp_activate_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 */
>  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_activate_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 */
>  static inline int pnp_is_active(struct pnp_dev *dev) { return 0; }

ACK - checkpatch issues notwithstanding.

-- 
Tim Gardner tim.gardner at canonical.com




More information about the kernel-team mailing list