Messages in this thread |  | | | Date | Tue, 3 May 2011 13:41:52 -0600 | | From | Grant Likely <> | | Subject | Re: [PATCHv3 4/7] basic_mmio_gpio: request register regions |
| |
On Mon, Apr 11, 2011 at 12:21:51PM +0100, Jamie Iles wrote: > Make sure that we get the register regions with request_mem_region() > before ioremap() to make sure we have exclusive access. > > Signed-off-by: Jamie Iles <jamie@jamieiles.com> > Acked-by: Anton Vorontsov <cbouatmailru@gmail.com> > Cc: Grant Likely <grant.likely@secretlab.ca>
Merged, thanks.
g.
> --- > drivers/gpio/basic_mmio_gpio.c | 16 +++++++++++++--- > 1 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpio/basic_mmio_gpio.c b/drivers/gpio/basic_mmio_gpio.c > index 2b2d384..90f7f89 100644 > --- a/drivers/gpio/basic_mmio_gpio.c > +++ b/drivers/gpio/basic_mmio_gpio.c > @@ -192,6 +192,16 @@ static int bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) > return 0; > } > > +static void __iomem *bgpio_request_and_map(struct device *dev, > + struct resource *res) > +{ > + if (!devm_request_mem_region(dev, res->start, resource_size(res), > + res->name ?: "mmio_gpio")) > + return NULL; > + > + return devm_ioremap(dev, res->start, resource_size(res)); > +} > + > static int bgpio_setup_accessors(struct platform_device *pdev, > struct bgpio_chip *bgc) > { > @@ -258,7 +268,7 @@ static int __devinit bgpio_probe(struct platform_device *pdev) > if (!bgc) > return -ENOMEM; > > - bgc->reg_dat = devm_ioremap(dev, res_dat->start, dat_sz); > + bgc->reg_dat = bgpio_request_and_map(dev, res_dat); > if (!bgc->reg_dat) > return -ENOMEM; > > @@ -269,8 +279,8 @@ static int __devinit bgpio_probe(struct platform_device *pdev) > resource_size(res_set) != dat_sz) > return -EINVAL; > > - bgc->reg_set = devm_ioremap(dev, res_set->start, dat_sz); > - bgc->reg_clr = devm_ioremap(dev, res_clr->start, dat_sz); > + bgc->reg_set = bgpio_request_and_map(dev, res_set); > + bgc->reg_clr = bgpio_request_and_map(dev, res_clr); > if (!bgc->reg_set || !bgc->reg_clr) > return -ENOMEM; > } else if (res_set || res_clr) { > -- > 1.7.4.2 >
|  |