Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-omap1/gpio15xx.c
10817 views
1
/*
2
* OMAP15xx specific gpio init
3
*
4
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
5
*
6
* Author:
7
* Charulatha V <[email protected]>
8
*
9
* This program is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU General Public License as
11
* published by the Free Software Foundation version 2.
12
*
13
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
14
* kind, whether express or implied; without even the implied warranty
15
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*/
18
19
#include <linux/gpio.h>
20
21
#define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE
22
#define OMAP1510_GPIO_BASE 0xFFFCE000
23
24
/* gpio1 */
25
static struct __initdata resource omap15xx_mpu_gpio_resources[] = {
26
{
27
.start = OMAP1_MPUIO_VBASE,
28
.end = OMAP1_MPUIO_VBASE + SZ_2K - 1,
29
.flags = IORESOURCE_MEM,
30
},
31
{
32
.start = INT_MPUIO,
33
.flags = IORESOURCE_IRQ,
34
},
35
};
36
37
static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = {
38
.virtual_irq_start = IH_MPUIO_BASE,
39
.bank_type = METHOD_MPUIO,
40
.bank_width = 16,
41
.bank_stride = 1,
42
};
43
44
static struct platform_device omap15xx_mpu_gpio = {
45
.name = "omap_gpio",
46
.id = 0,
47
.dev = {
48
.platform_data = &omap15xx_mpu_gpio_config,
49
},
50
.num_resources = ARRAY_SIZE(omap15xx_mpu_gpio_resources),
51
.resource = omap15xx_mpu_gpio_resources,
52
};
53
54
/* gpio2 */
55
static struct __initdata resource omap15xx_gpio_resources[] = {
56
{
57
.start = OMAP1510_GPIO_BASE,
58
.end = OMAP1510_GPIO_BASE + SZ_2K - 1,
59
.flags = IORESOURCE_MEM,
60
},
61
{
62
.start = INT_GPIO_BANK1,
63
.flags = IORESOURCE_IRQ,
64
},
65
};
66
67
static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = {
68
.virtual_irq_start = IH_GPIO_BASE,
69
.bank_type = METHOD_GPIO_1510,
70
.bank_width = 16,
71
};
72
73
static struct platform_device omap15xx_gpio = {
74
.name = "omap_gpio",
75
.id = 1,
76
.dev = {
77
.platform_data = &omap15xx_gpio_config,
78
},
79
.num_resources = ARRAY_SIZE(omap15xx_gpio_resources),
80
.resource = omap15xx_gpio_resources,
81
};
82
83
/*
84
* omap15xx_gpio_init needs to be done before
85
* machine_init functions access gpio APIs.
86
* Hence omap15xx_gpio_init is a postcore_initcall.
87
*/
88
static int __init omap15xx_gpio_init(void)
89
{
90
if (!cpu_is_omap15xx())
91
return -EINVAL;
92
93
platform_device_register(&omap15xx_mpu_gpio);
94
platform_device_register(&omap15xx_gpio);
95
96
gpio_bank_count = 2;
97
return 0;
98
}
99
postcore_initcall(omap15xx_gpio_init);
100
101