Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
devices-common.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) ST-Ericsson SA 2010
3  *
4  * Author: Rabin Vincent <[email protected]> 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>
14 
15 #include <plat/gpio-nomadik.h>
16 
17 #include <mach/hardware.h>
18 
19 #include "devices-common.h"
20 
21 static struct platform_device *
22 dbx500_add_gpio(struct device *parent, int id, resource_size_t addr, int irq,
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 
38  return platform_device_register_resndata(
39  parent,
40  "gpio",
41  id,
42  resources,
43  ARRAY_SIZE(resources),
44  pdata,
45  sizeof(*pdata));
46 }
47 
48 void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
49  int irq, struct nmk_gpio_platform_data *pdata)
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);
57  pdata->num_gpio = 32;
58 
59  dbx500_add_gpio(parent, i, base[i], irq, pdata);
60  }
61 }