Commit | Line | Data |
---|---|---|
fbf1eadf RV |
1 | /* |
2 | * Copyright (C) ST-Ericsson SA 2010 | |
3 | * | |
4 | * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson | |
5 | * License terms: GNU General Public License (GPL), version 2. | |
6 | */ | |
7 | ||
8 | #include <linux/kernel.h> | |
9 | #include <linux/dma-mapping.h> | |
10 | #include <linux/err.h> | |
11 | #include <linux/irq.h> | |
12 | #include <linux/slab.h> | |
13 | #include <linux/platform_device.h> | |
7cb15e10 | 14 | #include <linux/platform_data/pinctrl-nomadik.h> |
01afdd13 | 15 | |
fbf1eadf | 16 | #include <mach/hardware.h> |
c3b9d1db | 17 | #include <mach/irqs.h> |
fbf1eadf RV |
18 | |
19 | #include "devices-common.h" | |
20 | ||
01afdd13 | 21 | static struct platform_device * |
18403424 | 22 | dbx500_add_gpio(struct device *parent, int id, resource_size_t addr, int irq, |
01afdd13 RV |
23 | struct nmk_gpio_platform_data *pdata) |
24 | { | |
25 | struct resource resources[] = { | |
26 | { | |
27 | .start = addr, | |
28 | .end = addr + 127, | |
29 | .flags = IORESOURCE_MEM, | |
30 | }, | |
31 | { | |
32 | .start = irq, | |
33 | .end = irq, | |
34 | .flags = IORESOURCE_IRQ, | |
35 | } | |
36 | }; | |
37 | ||
b024a0c8 LJ |
38 | return platform_device_register_resndata( |
39 | parent, | |
40 | "gpio", | |
41 | id, | |
42 | resources, | |
43 | ARRAY_SIZE(resources), | |
44 | pdata, | |
45 | sizeof(*pdata)); | |
01afdd13 RV |
46 | } |
47 | ||
18403424 LJ |
48 | void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num, |
49 | int irq, struct nmk_gpio_platform_data *pdata) | |
01afdd13 RV |
50 | { |
51 | int first = 0; | |
52 | int i; | |
53 | ||
54 | for (i = 0; i < num; i++, first += 32, irq++) { | |
55 | pdata->first_gpio = first; | |
56 | pdata->first_irq = NOMADIK_GPIO_TO_IRQ(first); | |
e493e06f | 57 | pdata->num_gpio = 32; |
01afdd13 | 58 | |
18403424 | 59 | dbx500_add_gpio(parent, i, base[i], irq, pdata); |
01afdd13 RV |
60 | } |
61 | } |