mirror of
https://github.com/torvalds/linux.git
synced 2024-11-30 16:11:38 +00:00
gpio: aspeed: Always register the irqchip
The driver was implemented in a way that made the irqchip optional, if a irq was not present in the device tree. However, all of the device trees have always had an irq, so the optional-ness has never been used. Signed-off-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
d4c0cf3408
commit
90d17632e7
@ -1137,8 +1137,9 @@ MODULE_DEVICE_TABLE(of, aspeed_gpio_of_table);
|
||||
static int __init aspeed_gpio_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct of_device_id *gpio_id;
|
||||
struct gpio_irq_chip *girq;
|
||||
struct aspeed_gpio *gpio;
|
||||
int rc, i, banks, err;
|
||||
int rc, irq, i, banks, err;
|
||||
u32 ngpio;
|
||||
|
||||
gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
|
||||
@ -1201,31 +1202,27 @@ static int __init aspeed_gpio_probe(struct platform_device *pdev)
|
||||
aspeed_gpio_change_cmd_source(gpio, bank, 3, GPIO_CMDSRC_ARM);
|
||||
}
|
||||
|
||||
/* Optionally set up an irqchip if there is an IRQ */
|
||||
rc = platform_get_irq(pdev, 0);
|
||||
if (rc > 0) {
|
||||
struct gpio_irq_chip *girq;
|
||||
|
||||
gpio->irq = rc;
|
||||
girq = &gpio->chip.irq;
|
||||
girq->chip = &gpio->irqc;
|
||||
girq->chip->name = dev_name(&pdev->dev);
|
||||
girq->chip->irq_ack = aspeed_gpio_irq_ack;
|
||||
girq->chip->irq_mask = aspeed_gpio_irq_mask;
|
||||
girq->chip->irq_unmask = aspeed_gpio_irq_unmask;
|
||||
girq->chip->irq_set_type = aspeed_gpio_set_type;
|
||||
girq->parent_handler = aspeed_gpio_irq_handler;
|
||||
girq->num_parents = 1;
|
||||
girq->parents = devm_kcalloc(&pdev->dev, 1,
|
||||
sizeof(*girq->parents),
|
||||
GFP_KERNEL);
|
||||
if (!girq->parents)
|
||||
return -ENOMEM;
|
||||
girq->parents[0] = gpio->irq;
|
||||
girq->default_type = IRQ_TYPE_NONE;
|
||||
girq->handler = handle_bad_irq;
|
||||
girq->init_valid_mask = aspeed_init_irq_valid_mask;
|
||||
}
|
||||
/* Set up an irqchip */
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0)
|
||||
return irq;
|
||||
gpio->irq = irq;
|
||||
girq = &gpio->chip.irq;
|
||||
girq->chip = &gpio->irqc;
|
||||
girq->chip->name = dev_name(&pdev->dev);
|
||||
girq->chip->irq_ack = aspeed_gpio_irq_ack;
|
||||
girq->chip->irq_mask = aspeed_gpio_irq_mask;
|
||||
girq->chip->irq_unmask = aspeed_gpio_irq_unmask;
|
||||
girq->chip->irq_set_type = aspeed_gpio_set_type;
|
||||
girq->parent_handler = aspeed_gpio_irq_handler;
|
||||
girq->num_parents = 1;
|
||||
girq->parents = devm_kcalloc(&pdev->dev, 1, sizeof(*girq->parents), GFP_KERNEL);
|
||||
if (!girq->parents)
|
||||
return -ENOMEM;
|
||||
girq->parents[0] = gpio->irq;
|
||||
girq->default_type = IRQ_TYPE_NONE;
|
||||
girq->handler = handle_bad_irq;
|
||||
girq->init_valid_mask = aspeed_init_irq_valid_mask;
|
||||
|
||||
gpio->offset_timer =
|
||||
devm_kzalloc(&pdev->dev, gpio->chip.ngpio, GFP_KERNEL);
|
||||
|
Loading…
Reference in New Issue
Block a user