gpio-bcm-kona.c (4f2c0a4acffbec01079c28f839422e64ddeff004) | gpio-bcm-kona.c (c9ab610e5cd98f7fe0213b382870437368f11457) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Broadcom Kona GPIO Driver 4 * 5 * Author: Broadcom Corporation <bcm-kernel-feedback-list@broadcom.com> 6 * Copyright (C) 2012-2014 Broadcom Corporation 7 */ 8 9#include <linux/bitops.h> 10#include <linux/err.h> | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Broadcom Kona GPIO Driver 4 * 5 * Author: Broadcom Corporation <bcm-kernel-feedback-list@broadcom.com> 6 * Copyright (C) 2012-2014 Broadcom Corporation 7 */ 8 9#include <linux/bitops.h> 10#include <linux/err.h> |
11#include <linux/io.h> | |
12#include <linux/gpio/driver.h> | 11#include <linux/gpio/driver.h> |
13#include <linux/of_device.h> | |
14#include <linux/init.h> | 12#include <linux/init.h> |
13#include <linux/io.h> |
|
15#include <linux/irqdomain.h> 16#include <linux/irqchip/chained_irq.h> | 14#include <linux/irqdomain.h> 15#include <linux/irqchip/chained_irq.h> |
16#include <linux/mod_devicetable.h> 17#include <linux/platform_device.h> 18#include <linux/property.h> |
|
17 18#define BCM_GPIO_PASSWD 0x00a5a501 19#define GPIO_PER_BANK 32 20#define GPIO_MAX_BANK_NUM 8 21 22#define GPIO_BANK(gpio) ((gpio) >> 5) 23#define GPIO_BIT(gpio) ((gpio) & (GPIO_PER_BANK - 1)) 24 --- 526 unchanged lines hidden (view full) --- 551 /* Now re-lock the bank */ 552 bcm_kona_gpio_write_lock_regs(reg_base, i, LOCK_CODE); 553 } 554} 555 556static int bcm_kona_gpio_probe(struct platform_device *pdev) 557{ 558 struct device *dev = &pdev->dev; | 19 20#define BCM_GPIO_PASSWD 0x00a5a501 21#define GPIO_PER_BANK 32 22#define GPIO_MAX_BANK_NUM 8 23 24#define GPIO_BANK(gpio) ((gpio) >> 5) 25#define GPIO_BIT(gpio) ((gpio) & (GPIO_PER_BANK - 1)) 26 --- 526 unchanged lines hidden (view full) --- 553 /* Now re-lock the bank */ 554 bcm_kona_gpio_write_lock_regs(reg_base, i, LOCK_CODE); 555 } 556} 557 558static int bcm_kona_gpio_probe(struct platform_device *pdev) 559{ 560 struct device *dev = &pdev->dev; |
559 const struct of_device_id *match; | |
560 struct bcm_kona_gpio_bank *bank; 561 struct bcm_kona_gpio *kona_gpio; 562 struct gpio_chip *chip; 563 int ret; 564 int i; 565 | 561 struct bcm_kona_gpio_bank *bank; 562 struct bcm_kona_gpio *kona_gpio; 563 struct gpio_chip *chip; 564 int ret; 565 int i; 566 |
566 match = of_match_device(bcm_kona_gpio_of_match, dev); 567 if (!match) { 568 dev_err(dev, "Failed to find gpio controller\n"); 569 return -ENODEV; 570 } 571 | |
572 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); 573 if (!kona_gpio) 574 return -ENOMEM; 575 576 kona_gpio->gpio_chip = template_chip; 577 chip = &kona_gpio->gpio_chip; 578 ret = platform_irq_count(pdev); 579 if (!ret) { --- 16 unchanged lines hidden (view full) --- 596 if (!kona_gpio->banks) 597 return -ENOMEM; 598 599 kona_gpio->pdev = pdev; 600 platform_set_drvdata(pdev, kona_gpio); 601 chip->parent = dev; 602 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK; 603 | 567 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); 568 if (!kona_gpio) 569 return -ENOMEM; 570 571 kona_gpio->gpio_chip = template_chip; 572 chip = &kona_gpio->gpio_chip; 573 ret = platform_irq_count(pdev); 574 if (!ret) { --- 16 unchanged lines hidden (view full) --- 591 if (!kona_gpio->banks) 592 return -ENOMEM; 593 594 kona_gpio->pdev = pdev; 595 platform_set_drvdata(pdev, kona_gpio); 596 chip->parent = dev; 597 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK; 598 |
604 kona_gpio->irq_domain = irq_domain_add_linear(dev->of_node, 605 chip->ngpio, 606 &bcm_kona_irq_ops, 607 kona_gpio); | 599 kona_gpio->irq_domain = irq_domain_create_linear(dev_fwnode(dev), 600 chip->ngpio, 601 &bcm_kona_irq_ops, 602 kona_gpio); |
608 if (!kona_gpio->irq_domain) { 609 dev_err(dev, "Couldn't allocate IRQ domain\n"); 610 return -ENXIO; 611 } 612 613 kona_gpio->reg_base = devm_platform_ioremap_resource(pdev, 0); 614 if (IS_ERR(kona_gpio->reg_base)) { 615 ret = PTR_ERR(kona_gpio->reg_base); --- 49 unchanged lines hidden --- | 603 if (!kona_gpio->irq_domain) { 604 dev_err(dev, "Couldn't allocate IRQ domain\n"); 605 return -ENXIO; 606 } 607 608 kona_gpio->reg_base = devm_platform_ioremap_resource(pdev, 0); 609 if (IS_ERR(kona_gpio->reg_base)) { 610 ret = PTR_ERR(kona_gpio->reg_base); --- 49 unchanged lines hidden --- |