Loading drivers/gpio/gpio-pl061.c +22 −37 Original line number Diff line number Diff line Loading @@ -216,39 +216,34 @@ static void __init pl061_init_gc(struct pl061_gpio *chip, int irq_base) IRQ_GC_INIT_NESTED_LOCK, IRQ_NOREQUEST, 0); } static int pl061_probe(struct amba_device *dev, const struct amba_id *id) static int pl061_probe(struct amba_device *adev, const struct amba_id *id) { struct pl061_platform_data *pdata; struct device *dev = &adev->dev; struct pl061_platform_data *pdata = dev->platform_data; struct pl061_gpio *chip; int ret, irq, i; chip = kzalloc(sizeof(*chip), GFP_KERNEL); chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); if (chip == NULL) return -ENOMEM; pdata = dev->dev.platform_data; if (pdata) { chip->gc.base = pdata->gpio_base; chip->irq_base = pdata->irq_base; } else if (dev->dev.of_node) { } else if (adev->dev.of_node) { chip->gc.base = -1; chip->irq_base = 0; } else { ret = -ENODEV; goto free_mem; } } else return -ENODEV; if (!request_mem_region(dev->res.start, resource_size(&dev->res), "pl061")) { ret = -EBUSY; goto free_mem; } if (!devm_request_mem_region(dev, adev->res.start, resource_size(&adev->res), "pl061")) return -EBUSY; chip->base = ioremap(dev->res.start, resource_size(&dev->res)); if (chip->base == NULL) { ret = -ENOMEM; goto release_region; } chip->base = devm_ioremap(dev, adev->res.start, resource_size(&adev->res)); if (chip->base == NULL) return -ENOMEM; spin_lock_init(&chip->lock); Loading @@ -258,13 +253,13 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) chip->gc.set = pl061_set_value; chip->gc.to_irq = pl061_to_irq; chip->gc.ngpio = PL061_GPIO_NR; chip->gc.label = dev_name(&dev->dev); chip->gc.dev = &dev->dev; chip->gc.label = dev_name(dev); chip->gc.dev = dev; chip->gc.owner = THIS_MODULE; ret = gpiochip_add(&chip->gc); if (ret) goto iounmap; return ret; /* * irq_chip support Loading @@ -276,11 +271,10 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) pl061_init_gc(chip, chip->irq_base); writeb(0, chip->base + GPIOIE); /* disable irqs */ irq = dev->irq[0]; if (irq < 0) { ret = -ENODEV; goto iounmap; } irq = adev->irq[0]; if (irq < 0) return -ENODEV; irq_set_chained_handler(irq, pl061_irq_handler); irq_set_handler_data(irq, chip); Loading @@ -294,18 +288,9 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) } } amba_set_drvdata(dev, chip); amba_set_drvdata(adev, chip); return 0; iounmap: iounmap(chip->base); release_region: release_mem_region(dev->res.start, resource_size(&dev->res)); free_mem: kfree(chip); return ret; } #ifdef CONFIG_PM Loading Loading
drivers/gpio/gpio-pl061.c +22 −37 Original line number Diff line number Diff line Loading @@ -216,39 +216,34 @@ static void __init pl061_init_gc(struct pl061_gpio *chip, int irq_base) IRQ_GC_INIT_NESTED_LOCK, IRQ_NOREQUEST, 0); } static int pl061_probe(struct amba_device *dev, const struct amba_id *id) static int pl061_probe(struct amba_device *adev, const struct amba_id *id) { struct pl061_platform_data *pdata; struct device *dev = &adev->dev; struct pl061_platform_data *pdata = dev->platform_data; struct pl061_gpio *chip; int ret, irq, i; chip = kzalloc(sizeof(*chip), GFP_KERNEL); chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); if (chip == NULL) return -ENOMEM; pdata = dev->dev.platform_data; if (pdata) { chip->gc.base = pdata->gpio_base; chip->irq_base = pdata->irq_base; } else if (dev->dev.of_node) { } else if (adev->dev.of_node) { chip->gc.base = -1; chip->irq_base = 0; } else { ret = -ENODEV; goto free_mem; } } else return -ENODEV; if (!request_mem_region(dev->res.start, resource_size(&dev->res), "pl061")) { ret = -EBUSY; goto free_mem; } if (!devm_request_mem_region(dev, adev->res.start, resource_size(&adev->res), "pl061")) return -EBUSY; chip->base = ioremap(dev->res.start, resource_size(&dev->res)); if (chip->base == NULL) { ret = -ENOMEM; goto release_region; } chip->base = devm_ioremap(dev, adev->res.start, resource_size(&adev->res)); if (chip->base == NULL) return -ENOMEM; spin_lock_init(&chip->lock); Loading @@ -258,13 +253,13 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) chip->gc.set = pl061_set_value; chip->gc.to_irq = pl061_to_irq; chip->gc.ngpio = PL061_GPIO_NR; chip->gc.label = dev_name(&dev->dev); chip->gc.dev = &dev->dev; chip->gc.label = dev_name(dev); chip->gc.dev = dev; chip->gc.owner = THIS_MODULE; ret = gpiochip_add(&chip->gc); if (ret) goto iounmap; return ret; /* * irq_chip support Loading @@ -276,11 +271,10 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) pl061_init_gc(chip, chip->irq_base); writeb(0, chip->base + GPIOIE); /* disable irqs */ irq = dev->irq[0]; if (irq < 0) { ret = -ENODEV; goto iounmap; } irq = adev->irq[0]; if (irq < 0) return -ENODEV; irq_set_chained_handler(irq, pl061_irq_handler); irq_set_handler_data(irq, chip); Loading @@ -294,18 +288,9 @@ static int pl061_probe(struct amba_device *dev, const struct amba_id *id) } } amba_set_drvdata(dev, chip); amba_set_drvdata(adev, chip); return 0; iounmap: iounmap(chip->base); release_region: release_mem_region(dev->res.start, resource_size(&dev->res)); free_mem: kfree(chip); return ret; } #ifdef CONFIG_PM Loading