[PATCH v2 3/3] arm64:dts: Add APM X-Gene standby GPIO controller DTS entries
Y Vo
yvo at apm.com
Tue Dec 16 19:55:49 PST 2014
Add standby domain gpio controller for APM X-Gene SoC platform.
Signed-off-by: Y Vo <yvo at apm.com>
---
arch/arm64/boot/dts/apm-storm.dtsi | 13 +++++++++++++
drivers/gpio/gpio-xgene-sb.c | 18 +++---------------
2 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index 295c72d..e2454a2 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -587,6 +587,19 @@
phy-names = "sata-phy";
};
+ sbgpio: sbgpio at 17001000{
+ compatible = "apm,xgene-gpio-sb";
+ reg = <0x0 0x17001000 0x0 0x400>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupts = <0x0 0x28 0x1>,
+ <0x0 0x29 0x1>,
+ <0x0 0x2a 0x1>,
+ <0x0 0x2b 0x1>,
+ <0x0 0x2c 0x1>,
+ <0x0 0x2d 0x1>;
+ };
+
rtc: rtc at 10510000 {
compatible = "apm,xgene-rtc";
reg = <0x0 0x10510000 0x0 0x400>;
diff --git a/drivers/gpio/gpio-xgene-sb.c b/drivers/gpio/gpio-xgene-sb.c
index 7668626..425234b 100644
--- a/drivers/gpio/gpio-xgene-sb.c
+++ b/drivers/gpio/gpio-xgene-sb.c
@@ -44,14 +44,10 @@
#define MPA_GPIO_SEL_LO 0x0294
#define MPA_GPIO_SEL_HIGH 0x029c
-#define GICD_SPI_BASE 0x78010000
-#define GICD_SPIR1 0x00000d08
-
struct xgene_gpio_sb {
struct of_mm_gpio_chip mm;
u32 *irq;
u32 nirq;
- void __iomem *gic_regs;
spinlock_t lock; /* mutual exclusion */
};
@@ -75,14 +71,9 @@ static void xgene_gpio_set_bit(void __iomem *reg, u32 gpio, int val)
static int xgene_gpio_sb_get(struct gpio_chip *gc, u32 gpio)
{
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
- struct xgene_gpio_sb *chip = to_xgene_gpio_sb(mm_gc);
u32 data;
- if (chip->irq[gpio]) {
- data = ioread32(chip->gic_regs + GICD_SPIR1);
- } else {
- data = ioread32(mm_gc->regs + MPA_GPIO_IN_ADDR);
- }
+ data = ioread32(mm_gc->regs + MPA_GPIO_IN_ADDR);
return (data & GPIO_MASK(gpio)) ? 1 : 0;
}
@@ -167,10 +158,6 @@ static int xgene_gpio_sb_probe(struct platform_device *pdev)
mm->gc.ngpio = XGENE_MAX_GPIO_DS;
apm_gc->nirq = XGENE_MAX_GPIO_DS_IRQ;
- apm_gc->gic_regs = ioremap(GICD_SPI_BASE, 16);
- if (!apm_gc->gic_regs)
- return -ENOMEM;
-
apm_gc->irq = devm_kzalloc(&pdev->dev, sizeof(u32) * XGENE_MAX_GPIO_DS,
GFP_KERNEL);
if (!apm_gc->irq)
@@ -202,7 +189,8 @@ static int xgene_gpio_sb_remove(struct platform_device *pdev)
{
struct of_mm_gpio_chip *mm = platform_get_drvdata(pdev);
- return gpiochip_remove(&mm->gc);
+ gpiochip_remove(&mm->gc);
+ return 0;
}
static const struct of_device_id xgene_gpio_sb_of_match[] = {
--
2.2.0
More information about the linux-arm-kernel
mailing list