Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
79b357c2
Commit
79b357c2
authored
Dec 10, 2010
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'devel-gpio' into omap-for-linus
parents
b2d6fef5
5de62b86
Changes
51
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
51 changed files
with
2175 additions
and
538 deletions
+2175
-538
arch/arm/mach-omap1/Makefile
arch/arm/mach-omap1/Makefile
+6
-0
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-ams-delta.c
+0
-1
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-fsample.c
+11
-11
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h2.c
+2
-2
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-h3.c
+11
-11
arch/arm/mach-omap1/board-htcherald.c
arch/arm/mach-omap1/board-htcherald.c
+0
-2
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-innovator.c
+2
-2
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-nokia770.c
+0
-1
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-osk.c
+3
-3
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmte.c
+0
-1
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-palmz71.c
+0
-1
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/board-perseus2.c
+11
-11
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/board-sx1.c
+0
-1
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/board-voiceblue.c
+0
-1
arch/arm/mach-omap1/clock_data.c
arch/arm/mach-omap1/clock_data.c
+2
-2
arch/arm/mach-omap1/gpio15xx.c
arch/arm/mach-omap1/gpio15xx.c
+99
-0
arch/arm/mach-omap1/gpio16xx.c
arch/arm/mach-omap1/gpio16xx.c
+200
-0
arch/arm/mach-omap1/gpio7xx.c
arch/arm/mach-omap1/gpio7xx.c
+262
-0
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/Makefile
+1
-1
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-2430sdp.c
+0
-1
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-3430sdp.c
+0
-1
arch/arm/mach-omap2/board-3630sdp.c
arch/arm/mach-omap2/board-3630sdp.c
+0
-1
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
+0
-1
arch/arm/mach-omap2/board-am3517crane.c
arch/arm/mach-omap2/board-am3517crane.c
+0
-2
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-am3517evm.c
+0
-1
arch/arm/mach-omap2/board-apollon.c
arch/arm/mach-omap2/board-apollon.c
+1
-2
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-cm-t35.c
+0
-1
arch/arm/mach-omap2/board-cm-t3517.c
arch/arm/mach-omap2/board-cm-t3517.c
+0
-1
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-devkit8000.c
+0
-1
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-h4.c
+0
-1
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-igep0020.c
+0
-1
arch/arm/mach-omap2/board-igep0030.c
arch/arm/mach-omap2/board-igep0030.c
+0
-1
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-omap2/board-ldp.c
+1
-2
arch/arm/mach-omap2/board-n8x0.c
arch/arm/mach-omap2/board-n8x0.c
+0
-1
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3beagle.c
+0
-1
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3evm.c
+0
-1
arch/arm/mach-omap2/board-omap3logic.c
arch/arm/mach-omap2/board-omap3logic.c
+0
-1
arch/arm/mach-omap2/board-omap3pandora.c
arch/arm/mach-omap2/board-omap3pandora.c
+0
-1
arch/arm/mach-omap2/board-omap3stalker.c
arch/arm/mach-omap2/board-omap3stalker.c
+0
-1
arch/arm/mach-omap2/board-omap3touchbook.c
arch/arm/mach-omap2/board-omap3touchbook.c
+0
-1
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-omap4panda.c
+0
-1
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-overo.c
+0
-1
arch/arm/mach-omap2/board-rx51.c
arch/arm/mach-omap2/board-rx51.c
+0
-1
arch/arm/mach-omap2/board-zoom.c
arch/arm/mach-omap2/board-zoom.c
+0
-1
arch/arm/mach-omap2/gpio.c
arch/arm/mach-omap2/gpio.c
+104
-0
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
+229
-1
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
+279
-1
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+360
-1
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+341
-0
arch/arm/plat-omap/gpio.c
arch/arm/plat-omap/gpio.c
+222
-438
arch/arm/plat-omap/include/plat/gpio.h
arch/arm/plat-omap/include/plat/gpio.h
+28
-18
No files found.
arch/arm/mach-omap1/Makefile
View file @
79b357c2
...
...
@@ -49,6 +49,12 @@ ifeq ($(CONFIG_ARCH_OMAP15XX),y)
obj-$(CONFIG_MACH_OMAP_INNOVATOR)
+=
fpga.o
endif
# GPIO
obj-$(CONFIG_ARCH_OMAP730)
+=
gpio7xx.o
obj-$(CONFIG_ARCH_OMAP850)
+=
gpio7xx.o
obj-$(CONFIG_ARCH_OMAP15XX)
+=
gpio15xx.o
obj-$(CONFIG_ARCH_OMAP16XX)
+=
gpio16xx.o
# LEDs support
led-$(CONFIG_MACH_OMAP_H2)
+=
leds-h2p2-debug.o
led-$(CONFIG_MACH_OMAP_H3)
+=
leds-h2p2-debug.o
...
...
arch/arm/mach-omap1/board-ams-delta.c
View file @
79b357c2
...
...
@@ -141,7 +141,6 @@ static void __init ams_delta_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
}
static
struct
map_desc
ams_delta_io_desc
[]
__initdata
=
{
...
...
arch/arm/mach-omap1/board-fsample.c
View file @
79b357c2
...
...
@@ -120,6 +120,15 @@ static struct resource smc91x_resources[] = {
},
};
static
void
__init
fsample_init_smc91x
(
void
)
{
fpga_write
(
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
fpga_write
(
fpga_read
(
H2P2_DBG_FPGA_LAN_RESET
)
&
~
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
}
static
struct
mtd_partition
nor_partitions
[]
=
{
/* bootloader (U-Boot, etc) in first sector */
{
...
...
@@ -285,6 +294,8 @@ static struct omap_board_config_kernel fsample_config[] = {
static
void
__init
omap_fsample_init
(
void
)
{
fsample_init_smc91x
();
if
(
gpio_request
(
FSAMPLE_NAND_RB_GPIO_PIN
,
"NAND ready"
)
<
0
)
BUG
();
gpio_direction_input
(
FSAMPLE_NAND_RB_GPIO_PIN
);
...
...
@@ -312,21 +323,10 @@ static void __init omap_fsample_init(void)
omap_register_i2c_bus
(
1
,
100
,
NULL
,
0
);
}
static
void
__init
fsample_init_smc91x
(
void
)
{
fpga_write
(
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
fpga_write
(
fpga_read
(
H2P2_DBG_FPGA_LAN_RESET
)
&
~
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
}
static
void
__init
omap_fsample_init_irq
(
void
)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
fsample_init_smc91x
();
}
/* Only FPGA needs to be mapped here. All others are done with ioremap */
...
...
arch/arm/mach-omap1/board-h2.c
View file @
79b357c2
...
...
@@ -374,8 +374,6 @@ static void __init h2_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
h2_init_smc91x
();
}
static
struct
omap_usb_config
h2_usb_config
__initdata
=
{
...
...
@@ -403,6 +401,8 @@ static struct omap_board_config_kernel h2_config[] __initdata = {
static
void
__init
h2_init
(
void
)
{
h2_init_smc91x
();
/* Here we assume the NOR boot config: NOR on CS3 (possibly swapped
* to address 0 by a dip switch), NAND on CS2B. The NAND driver will
* notice whether a NAND chip is enabled at probe time.
...
...
arch/arm/mach-omap1/board-h3.c
View file @
79b357c2
...
...
@@ -264,6 +264,15 @@ static struct platform_device smc91x_device = {
.
resource
=
smc91x_resources
,
};
static
void
__init
h3_init_smc91x
(
void
)
{
omap_cfg_reg
(
W15_1710_GPIO40
);
if
(
gpio_request
(
40
,
"SMC91x irq"
)
<
0
)
{
printk
(
"Error requesting gpio 40 for smc91x irq
\n
"
);
return
;
}
}
#define GPTIMER_BASE 0xFFFB1400
#define GPTIMER_REGS(x) (0xFFFB1400 + (x * 0x800))
#define GPTIMER_REGS_SIZE 0x46
...
...
@@ -376,6 +385,8 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = {
static
void
__init
h3_init
(
void
)
{
h3_init_smc91x
();
/* Here we assume the NOR boot config: NOR on CS3 (possibly swapped
* to address 0 by a dip switch), NAND on CS2B. The NAND driver will
* notice whether a NAND chip is enabled at probe time.
...
...
@@ -422,21 +433,10 @@ static void __init h3_init(void)
h3_mmc_init
();
}
static
void
__init
h3_init_smc91x
(
void
)
{
omap_cfg_reg
(
W15_1710_GPIO40
);
if
(
gpio_request
(
40
,
"SMC91x irq"
)
<
0
)
{
printk
(
"Error requesting gpio 40 for smc91x irq
\n
"
);
return
;
}
}
static
void
__init
h3_init_irq
(
void
)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
h3_init_smc91x
();
}
static
void
__init
h3_map_io
(
void
)
...
...
arch/arm/mach-omap1/board-htcherald.c
View file @
79b357c2
...
...
@@ -577,8 +577,6 @@ static void __init htcherald_init(void)
printk
(
KERN_INFO
"HTC Herald init.
\n
"
);
/* Do board initialization before we register all the devices */
omap_gpio_init
();
omap_board_config
=
htcherald_config
;
omap_board_config_size
=
ARRAY_SIZE
(
htcherald_config
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
...
...
arch/arm/mach-omap1/board-innovator.c
View file @
79b357c2
...
...
@@ -290,13 +290,11 @@ static void __init innovator_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
#ifdef CONFIG_ARCH_OMAP15XX
if
(
cpu_is_omap1510
())
{
omap1510_fpga_init_irq
();
}
#endif
innovator_init_smc91x
();
}
#ifdef CONFIG_ARCH_OMAP15XX
...
...
@@ -387,6 +385,8 @@ static struct omap_board_config_kernel innovator_config[] = {
static
void
__init
innovator_init
(
void
)
{
innovator_init_smc91x
();
#ifdef CONFIG_ARCH_OMAP15XX
if
(
cpu_is_omap1510
())
{
unsigned
char
reg
;
...
...
arch/arm/mach-omap1/board-nokia770.c
View file @
79b357c2
...
...
@@ -246,7 +246,6 @@ static void __init omap_nokia770_init(void)
platform_add_devices
(
nokia770_devices
,
ARRAY_SIZE
(
nokia770_devices
));
spi_register_board_info
(
nokia770_spi_board_info
,
ARRAY_SIZE
(
nokia770_spi_board_info
));
omap_gpio_init
();
omap_serial_init
();
omap_register_i2c_bus
(
1
,
100
,
NULL
,
0
);
hwa742_dev_init
();
...
...
arch/arm/mach-omap1/board-osk.c
View file @
79b357c2
...
...
@@ -283,9 +283,6 @@ static void __init osk_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
osk_init_smc91x
();
osk_init_cf
();
}
static
struct
omap_usb_config
osk_usb_config
__initdata
=
{
...
...
@@ -541,6 +538,9 @@ static void __init osk_init(void)
{
u32
l
;
osk_init_smc91x
();
osk_init_cf
();
/* Workaround for wrong CS3 (NOR flash) timing
* There are some U-Boot versions out there which configure
* wrong CS3 memory timings. This mainly leads to CRC
...
...
arch/arm/mach-omap1/board-palmte.c
View file @
79b357c2
...
...
@@ -63,7 +63,6 @@ static void __init omap_palmte_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
}
static
const
int
palmte_keymap
[]
=
{
...
...
arch/arm/mach-omap1/board-palmz71.c
View file @
79b357c2
...
...
@@ -62,7 +62,6 @@ omap_palmz71_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
}
static
int
palmz71_keymap
[]
=
{
...
...
arch/arm/mach-omap1/board-perseus2.c
View file @
79b357c2
...
...
@@ -251,8 +251,19 @@ static struct omap_board_config_kernel perseus2_config[] __initdata = {
{
OMAP_TAG_LCD
,
&
perseus2_lcd_config
},
};
static
void
__init
perseus2_init_smc91x
(
void
)
{
fpga_write
(
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
fpga_write
(
fpga_read
(
H2P2_DBG_FPGA_LAN_RESET
)
&
~
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
}
static
void
__init
omap_perseus2_init
(
void
)
{
perseus2_init_smc91x
();
if
(
gpio_request
(
P2_NAND_RB_GPIO_PIN
,
"NAND ready"
)
<
0
)
BUG
();
gpio_direction_input
(
P2_NAND_RB_GPIO_PIN
);
...
...
@@ -280,21 +291,10 @@ static void __init omap_perseus2_init(void)
omap_register_i2c_bus
(
1
,
100
,
NULL
,
0
);
}
static
void
__init
perseus2_init_smc91x
(
void
)
{
fpga_write
(
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
fpga_write
(
fpga_read
(
H2P2_DBG_FPGA_LAN_RESET
)
&
~
1
,
H2P2_DBG_FPGA_LAN_RESET
);
mdelay
(
50
);
}
static
void
__init
omap_perseus2_init_irq
(
void
)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
perseus2_init_smc91x
();
}
/* Only FPGA needs to be mapped here. All others are done with ioremap */
static
struct
map_desc
omap_perseus2_io_desc
[]
__initdata
=
{
...
...
arch/arm/mach-omap1/board-sx1.c
View file @
79b357c2
...
...
@@ -409,7 +409,6 @@ static void __init omap_sx1_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
}
/*----------------------------------------*/
...
...
arch/arm/mach-omap1/board-voiceblue.c
View file @
79b357c2
...
...
@@ -161,7 +161,6 @@ static void __init voiceblue_init_irq(void)
{
omap1_init_common_hw
();
omap_init_irq
();
omap_gpio_init
();
}
static
void
__init
voiceblue_init
(
void
)
...
...
arch/arm/mach-omap1/clock_data.c
View file @
79b357c2
...
...
@@ -143,7 +143,7 @@ static struct arm_idlect1_clk armper_ck = {
* activation. [ GPIO code for 1510 ]
*/
static
struct
clk
arm_gpio_ck
=
{
.
name
=
"
arm_gpio_
ck"
,
.
name
=
"
i
ck"
,
.
ops
=
&
clkops_generic
,
.
parent
=
&
ck_dpll1
,
.
flags
=
ENABLE_ON_INIT
,
...
...
@@ -684,7 +684,7 @@ static struct omap_clk omap_clks[] = {
CLK
(
NULL
,
"ck_sossi"
,
&
sossi_ck
,
CK_16XX
),
CLK
(
NULL
,
"arm_ck"
,
&
arm_ck
,
CK_16XX
|
CK_1510
|
CK_310
),
CLK
(
NULL
,
"armper_ck"
,
&
armper_ck
.
clk
,
CK_16XX
|
CK_1510
|
CK_310
),
CLK
(
NULL
,
"arm_gpio_
ck"
,
&
arm_gpio_ck
,
CK_1510
|
CK_310
),
CLK
(
"omap_gpio.0"
,
"i
ck"
,
&
arm_gpio_ck
,
CK_1510
|
CK_310
),
CLK
(
NULL
,
"armxor_ck"
,
&
armxor_ck
.
clk
,
CK_16XX
|
CK_1510
|
CK_310
|
CK_7XX
),
CLK
(
NULL
,
"armtim_ck"
,
&
armtim_ck
.
clk
,
CK_16XX
|
CK_1510
|
CK_310
),
CLK
(
"omap_wdt"
,
"fck"
,
&
armwdt_ck
.
clk
,
CK_16XX
|
CK_1510
|
CK_310
),
...
...
arch/arm/mach-omap1/gpio15xx.c
0 → 100644
View file @
79b357c2
/*
* OMAP15xx specific gpio init
*
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
*
* Author:
* Charulatha V <charu@ti.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/gpio.h>
#define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE
#define OMAP1510_GPIO_BASE 0xFFFCE000
/* gpio1 */
static
struct
__initdata
resource
omap15xx_mpu_gpio_resources
[]
=
{
{
.
start
=
OMAP1_MPUIO_VBASE
,
.
end
=
OMAP1_MPUIO_VBASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_MPUIO
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap15xx_mpu_gpio_config
=
{
.
virtual_irq_start
=
IH_MPUIO_BASE
,
.
bank_type
=
METHOD_MPUIO
,
.
bank_width
=
16
,
.
bank_stride
=
1
,
};
static
struct
__initdata
platform_device
omap15xx_mpu_gpio
=
{
.
name
=
"omap_gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
omap15xx_mpu_gpio_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap15xx_mpu_gpio_resources
),
.
resource
=
omap15xx_mpu_gpio_resources
,
};
/* gpio2 */
static
struct
__initdata
resource
omap15xx_gpio_resources
[]
=
{
{
.
start
=
OMAP1510_GPIO_BASE
,
.
end
=
OMAP1510_GPIO_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_GPIO_BANK1
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap15xx_gpio_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
,
.
bank_type
=
METHOD_GPIO_1510
,
.
bank_width
=
16
,
};
static
struct
__initdata
platform_device
omap15xx_gpio
=
{
.
name
=
"omap_gpio"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
omap15xx_gpio_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap15xx_gpio_resources
),
.
resource
=
omap15xx_gpio_resources
,
};
/*
* omap15xx_gpio_init needs to be done before
* machine_init functions access gpio APIs.
* Hence omap15xx_gpio_init is a postcore_initcall.
*/
static
int
__init
omap15xx_gpio_init
(
void
)
{
if
(
!
cpu_is_omap15xx
())
return
-
EINVAL
;
platform_device_register
(
&
omap15xx_mpu_gpio
);
platform_device_register
(
&
omap15xx_gpio
);
gpio_bank_count
=
2
;
return
0
;
}
postcore_initcall
(
omap15xx_gpio_init
);
arch/arm/mach-omap1/gpio16xx.c
0 → 100644
View file @
79b357c2
/*
* OMAP16xx specific gpio init
*
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
*
* Author:
* Charulatha V <charu@ti.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/gpio.h>
#define OMAP1610_GPIO1_BASE 0xfffbe400
#define OMAP1610_GPIO2_BASE 0xfffbec00
#define OMAP1610_GPIO3_BASE 0xfffbb400
#define OMAP1610_GPIO4_BASE 0xfffbbc00
#define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE
/* mpu gpio */
static
struct
__initdata
resource
omap16xx_mpu_gpio_resources
[]
=
{
{
.
start
=
OMAP1_MPUIO_VBASE
,
.
end
=
OMAP1_MPUIO_VBASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_MPUIO
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap16xx_mpu_gpio_config
=
{
.
virtual_irq_start
=
IH_MPUIO_BASE
,
.
bank_type
=
METHOD_MPUIO
,
.
bank_width
=
16
,
.
bank_stride
=
1
,
};
static
struct
__initdata
platform_device
omap16xx_mpu_gpio
=
{
.
name
=
"omap_gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
omap16xx_mpu_gpio_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap16xx_mpu_gpio_resources
),
.
resource
=
omap16xx_mpu_gpio_resources
,
};
/* gpio1 */
static
struct
__initdata
resource
omap16xx_gpio1_resources
[]
=
{
{
.
start
=
OMAP1610_GPIO1_BASE
,
.
end
=
OMAP1610_GPIO1_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_GPIO_BANK1
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap16xx_gpio1_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
,
.
bank_type
=
METHOD_GPIO_1610
,
.
bank_width
=
16
,
};
static
struct
__initdata
platform_device
omap16xx_gpio1
=
{
.
name
=
"omap_gpio"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
omap16xx_gpio1_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap16xx_gpio1_resources
),
.
resource
=
omap16xx_gpio1_resources
,
};
/* gpio2 */
static
struct
__initdata
resource
omap16xx_gpio2_resources
[]
=
{
{
.
start
=
OMAP1610_GPIO2_BASE
,
.
end
=
OMAP1610_GPIO2_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_1610_GPIO_BANK2
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap16xx_gpio2_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
16
,
.
bank_type
=
METHOD_GPIO_1610
,
.
bank_width
=
16
,
};
static
struct
__initdata
platform_device
omap16xx_gpio2
=
{
.
name
=
"omap_gpio"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
omap16xx_gpio2_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap16xx_gpio2_resources
),
.
resource
=
omap16xx_gpio2_resources
,
};
/* gpio3 */
static
struct
__initdata
resource
omap16xx_gpio3_resources
[]
=
{
{
.
start
=
OMAP1610_GPIO3_BASE
,
.
end
=
OMAP1610_GPIO3_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_1610_GPIO_BANK3
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap16xx_gpio3_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
32
,
.
bank_type
=
METHOD_GPIO_1610
,
.
bank_width
=
16
,
};
static
struct
__initdata
platform_device
omap16xx_gpio3
=
{
.
name
=
"omap_gpio"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
omap16xx_gpio3_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap16xx_gpio3_resources
),
.
resource
=
omap16xx_gpio3_resources
,
};
/* gpio4 */
static
struct
__initdata
resource
omap16xx_gpio4_resources
[]
=
{
{
.
start
=
OMAP1610_GPIO4_BASE
,
.
end
=
OMAP1610_GPIO4_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_1610_GPIO_BANK4
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap16xx_gpio4_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
48
,
.
bank_type
=
METHOD_GPIO_1610
,
.
bank_width
=
16
,
};
static
struct
__initdata
platform_device
omap16xx_gpio4
=
{
.
name
=
"omap_gpio"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
omap16xx_gpio4_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap16xx_gpio4_resources
),
.
resource
=
omap16xx_gpio4_resources
,
};
static
struct
__initdata
platform_device
*
omap16xx_gpio_dev
[]
=
{
&
omap16xx_mpu_gpio
,
&
omap16xx_gpio1
,
&
omap16xx_gpio2
,
&
omap16xx_gpio3
,
&
omap16xx_gpio4
,
};
/*
* omap16xx_gpio_init needs to be done before
* machine_init functions access gpio APIs.
* Hence omap16xx_gpio_init is a postcore_initcall.
*/
static
int
__init
omap16xx_gpio_init
(
void
)
{
int
i
;
if
(
!
cpu_is_omap16xx
())
return
-
EINVAL
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
omap16xx_gpio_dev
);
i
++
)
platform_device_register
(
omap16xx_gpio_dev
[
i
]);
gpio_bank_count
=
ARRAY_SIZE
(
omap16xx_gpio_dev
);
return
0
;
}
postcore_initcall
(
omap16xx_gpio_init
);
arch/arm/mach-omap1/gpio7xx.c
0 → 100644
View file @
79b357c2
/*
* OMAP7xx specific gpio init
*
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
*
* Author:
* Charulatha V <charu@ti.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/gpio.h>
#define OMAP7XX_GPIO1_BASE 0xfffbc000
#define OMAP7XX_GPIO2_BASE 0xfffbc800
#define OMAP7XX_GPIO3_BASE 0xfffbd000
#define OMAP7XX_GPIO4_BASE 0xfffbd800
#define OMAP7XX_GPIO5_BASE 0xfffbe000
#define OMAP7XX_GPIO6_BASE 0xfffbe800
#define OMAP1_MPUIO_VBASE OMAP1_MPUIO_BASE
/* mpu gpio */
static
struct
__initdata
resource
omap7xx_mpu_gpio_resources
[]
=
{
{
.
start
=
OMAP1_MPUIO_VBASE
,
.
end
=
OMAP1_MPUIO_VBASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_MPUIO
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_mpu_gpio_config
=
{
.
virtual_irq_start
=
IH_MPUIO_BASE
,
.
bank_type
=
METHOD_MPUIO
,
.
bank_width
=
32
,
.
bank_stride
=
2
,
};
static
struct
__initdata
platform_device
omap7xx_mpu_gpio
=
{
.
name
=
"omap_gpio"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
omap7xx_mpu_gpio_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_mpu_gpio_resources
),
.
resource
=
omap7xx_mpu_gpio_resources
,
};
/* gpio1 */
static
struct
__initdata
resource
omap7xx_gpio1_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO1_BASE
,
.
end
=
OMAP7XX_GPIO1_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK1
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio1_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio1
=
{
.
name
=
"omap_gpio"
,
.
id
=
1
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio1_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio1_resources
),
.
resource
=
omap7xx_gpio1_resources
,
};
/* gpio2 */
static
struct
__initdata
resource
omap7xx_gpio2_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO2_BASE
,
.
end
=
OMAP7XX_GPIO2_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK2
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio2_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
32
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio2
=
{
.
name
=
"omap_gpio"
,
.
id
=
2
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio2_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio2_resources
),
.
resource
=
omap7xx_gpio2_resources
,
};
/* gpio3 */
static
struct
__initdata
resource
omap7xx_gpio3_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO3_BASE
,
.
end
=
OMAP7XX_GPIO3_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK3
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio3_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
64
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio3
=
{
.
name
=
"omap_gpio"
,
.
id
=
3
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio3_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio3_resources
),
.
resource
=
omap7xx_gpio3_resources
,
};
/* gpio4 */
static
struct
__initdata
resource
omap7xx_gpio4_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO4_BASE
,
.
end
=
OMAP7XX_GPIO4_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK4
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio4_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
96
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio4
=
{
.
name
=
"omap_gpio"
,
.
id
=
4
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio4_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio4_resources
),
.
resource
=
omap7xx_gpio4_resources
,
};
/* gpio5 */
static
struct
__initdata
resource
omap7xx_gpio5_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO5_BASE
,
.
end
=
OMAP7XX_GPIO5_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK5
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio5_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
128
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio5
=
{
.
name
=
"omap_gpio"
,
.
id
=
5
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio5_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio5_resources
),
.
resource
=
omap7xx_gpio5_resources
,
};
/* gpio6 */
static
struct
__initdata
resource
omap7xx_gpio6_resources
[]
=
{
{
.
start
=
OMAP7XX_GPIO6_BASE
,
.
end
=
OMAP7XX_GPIO6_BASE
+
SZ_2K
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
{
.
start
=
INT_7XX_GPIO_BANK6
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
__initdata
omap_gpio_platform_data
omap7xx_gpio6_config
=
{
.
virtual_irq_start
=
IH_GPIO_BASE
+
160
,
.
bank_type
=
METHOD_GPIO_7XX
,
.
bank_width
=
32
,
};
static
struct
__initdata
platform_device
omap7xx_gpio6
=
{
.
name
=
"omap_gpio"
,
.
id
=
6
,
.
dev
=
{
.
platform_data
=
&
omap7xx_gpio6_config
,
},
.
num_resources
=
ARRAY_SIZE
(
omap7xx_gpio6_resources
),
.
resource
=
omap7xx_gpio6_resources
,
};
static
struct
__initdata
platform_device
*
omap7xx_gpio_dev
[]
=
{
&
omap7xx_mpu_gpio
,
&
omap7xx_gpio1
,
&
omap7xx_gpio2
,
&
omap7xx_gpio3
,
&
omap7xx_gpio4
,
&
omap7xx_gpio5
,
&
omap7xx_gpio6
,
};
/*
* omap7xx_gpio_init needs to be done before
* machine_init functions access gpio APIs.
* Hence omap7xx_gpio_init is a postcore_initcall.
*/
static
int
__init
omap7xx_gpio_init
(
void
)
{
int
i
;
if
(
!
cpu_is_omap7xx
())
return
-
EINVAL
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
omap7xx_gpio_dev
);
i
++
)
platform_device_register
(
omap7xx_gpio_dev
[
i
]);
gpio_bank_count
=
ARRAY_SIZE
(
omap7xx_gpio_dev
);
return
0
;
}
postcore_initcall
(
omap7xx_gpio_init
);
arch/arm/mach-omap2/Makefile
View file @
79b357c2
...
...
@@ -4,7 +4,7 @@
# Common support
obj-y
:=
id.o io.o control.o mux.o devices.o serial.o gpmc.o timer-gp.o pm.o
\
common.o
common.o
gpio.o
omap-2-3-common
=
irq.o sdrc.o prm2xxx_3xxx.o
hwmod-common
=
omap_hwmod.o
\
...
...
arch/arm/mach-omap2/board-2430sdp.c
View file @
79b357c2
...
...
@@ -145,7 +145,6 @@ static void __init omap_2430sdp_init_irq(void)
omap_board_config_size
=
ARRAY_SIZE
(
sdp2430_config
);
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
twl4030_gpio_platform_data
sdp2430_gpio_data
=
{
...
...
arch/arm/mach-omap2/board-3430sdp.c
View file @
79b357c2
...
...
@@ -328,7 +328,6 @@ static void __init omap_3430sdp_init_irq(void)
omap3_pm_init_cpuidle
(
omap3_cpuidle_params_table
);
omap2_init_common_hw
(
hyb18m512160af6_sdrc_params
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
int
sdp3430_batt_table
[]
=
{
...
...
arch/arm/mach-omap2/board-3630sdp.c
View file @
79b357c2
...
...
@@ -76,7 +76,6 @@ static void __init omap_sdp_init_irq(void)
omap2_init_common_hw
(
h8mbx00u0mer0em_sdrc_params
,
h8mbx00u0mer0em_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
#ifdef CONFIG_OMAP_MUX
...
...
arch/arm/mach-omap2/board-4430sdp.c
View file @
79b357c2
...
...
@@ -223,7 +223,6 @@ static void __init omap_4430sdp_init_irq(void)
omap2_gp_clockevent_set_gptimer
(
1
);
#endif
gic_init_irq
();
omap_gpio_init
();
}
static
struct
omap_musb_board_data
musb_board_data
=
{
...
...
arch/arm/mach-omap2/board-am3517crane.c
View file @
79b357c2
...
...
@@ -19,7 +19,6 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/gpio.h>
#include <mach/hardware.h>
#include <asm/mach-types.h>
...
...
@@ -50,7 +49,6 @@ static void __init am3517_crane_init_irq(void)
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
void
__init
am3517_crane_init
(
void
)
...
...
arch/arm/mach-omap2/board-am3517evm.c
View file @
79b357c2
...
...
@@ -392,7 +392,6 @@ static void __init am3517_evm_init_irq(void)
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
omap_musb_board_data
musb_board_data
=
{
...
...
arch/arm/mach-omap2/board-apollon.c
View file @
79b357c2
...
...
@@ -280,8 +280,6 @@ static void __init omap_apollon_init_irq(void)
omap_board_config_size
=
ARRAY_SIZE
(
apollon_config
);
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
apollon_init_smc91x
();
}
static
void
__init
apollon_led_init
(
void
)
...
...
@@ -322,6 +320,7 @@ static void __init omap_apollon_init(void)
omap2420_mux_init
(
board_mux
,
OMAP_PACKAGE_ZAC
);
apollon_init_smc91x
();
apollon_led_init
();
apollon_flash_init
();
apollon_usb_init
();
...
...
arch/arm/mach-omap2/board-cm-t35.c
View file @
79b357c2
...
...
@@ -686,7 +686,6 @@ static void __init cm_t35_init_irq(void)
omap2_init_common_hw
(
mt46h32m32lf6_sdrc_params
,
mt46h32m32lf6_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
omap_board_mux
board_mux
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-cm-t3517.c
View file @
79b357c2
...
...
@@ -250,7 +250,6 @@ static void __init cm_t3517_init_irq(void)
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
omap_board_mux
board_mux
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-devkit8000.c
View file @
79b357c2
...
...
@@ -450,7 +450,6 @@ static void __init devkit8000_init_irq(void)
#ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer
(
12
);
#endif
omap_gpio_init
();
}
static
void
__init
devkit8000_ads7846_init
(
void
)
...
...
arch/arm/mach-omap2/board-h4.c
View file @
79b357c2
...
...
@@ -293,7 +293,6 @@ static void __init omap_h4_init_irq(void)
omap_board_config_size
=
ARRAY_SIZE
(
h4_config
);
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
h4_init_flash
();
}
...
...
arch/arm/mach-omap2/board-igep0020.c
View file @
79b357c2
...
...
@@ -484,7 +484,6 @@ static void __init igep2_init_irq(void)
{
omap2_init_common_hw
(
m65kxxxxam_sdrc_params
,
m65kxxxxam_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
twl4030_codec_audio_data
igep2_audio_data
=
{
...
...
arch/arm/mach-omap2/board-igep0030.c
View file @
79b357c2
...
...
@@ -291,7 +291,6 @@ static void __init igep3_init_irq(void)
{
omap2_init_common_hw
(
m65kxxxxam_sdrc_params
,
m65kxxxxam_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
twl4030_platform_data
igep3_twl4030_pdata
=
{
...
...
arch/arm/mach-omap2/board-ldp.c
View file @
79b357c2
...
...
@@ -294,8 +294,6 @@ static void __init omap_ldp_init_irq(void)
omap_board_config_size
=
ARRAY_SIZE
(
ldp_config
);
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
ldp_init_smsc911x
();
}
static
struct
twl4030_usb_data
ldp_usb_data
=
{
...
...
@@ -424,6 +422,7 @@ static struct mtd_partition ldp_nand_partitions[] = {
static
void
__init
omap_ldp_init
(
void
)
{
omap3_mux_init
(
board_mux
,
OMAP_PACKAGE_CBB
);
ldp_init_smsc911x
();
omap_i2c_init
();
platform_add_devices
(
ldp_devices
,
ARRAY_SIZE
(
ldp_devices
));
ts_gpio
=
54
;
...
...
arch/arm/mach-omap2/board-n8x0.c
View file @
79b357c2
...
...
@@ -633,7 +633,6 @@ static void __init n8x0_init_irq(void)
{
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
#ifdef CONFIG_OMAP_MUX
...
...
arch/arm/mach-omap2/board-omap3beagle.c
View file @
79b357c2
...
...
@@ -490,7 +490,6 @@ static void __init omap3_beagle_init_irq(void)
#ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer
(
12
);
#endif
omap_gpio_init
();
}
static
struct
platform_device
*
omap3_beagle_devices
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-omap3evm.c
View file @
79b357c2
...
...
@@ -625,7 +625,6 @@ static void __init omap3_evm_init_irq(void)
omap_board_config_size
=
ARRAY_SIZE
(
omap3_evm_config
);
omap2_init_common_hw
(
mt46h32m32lf6_sdrc_params
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
platform_device
*
omap3_evm_devices
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-omap3logic.c
View file @
79b357c2
...
...
@@ -199,7 +199,6 @@ static void __init omap3logic_init_irq(void)
{
omap2_init_common_hw
(
NULL
,
NULL
);
omap_init_irq
();
omap_gpio_init
();
}
#ifdef CONFIG_OMAP_MUX
...
...
arch/arm/mach-omap2/board-omap3pandora.c
View file @
79b357c2
...
...
@@ -639,7 +639,6 @@ static void __init omap3pandora_init_irq(void)
omap2_init_common_hw
(
mt46h32m32lf6_sdrc_params
,
mt46h32m32lf6_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
static
void
pandora_wl1251_set_power
(
bool
enable
)
...
...
arch/arm/mach-omap2/board-omap3stalker.c
View file @
79b357c2
...
...
@@ -589,7 +589,6 @@ static void __init omap3_stalker_init_irq(void)
#ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer
(
12
);
#endif
omap_gpio_init
();
}
static
struct
platform_device
*
omap3_stalker_devices
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-omap3touchbook.c
View file @
79b357c2
...
...
@@ -426,7 +426,6 @@ static void __init omap3_touchbook_init_irq(void)
#ifdef CONFIG_OMAP_32K_TIMER
omap2_gp_clockevent_set_gptimer
(
12
);
#endif
omap_gpio_init
();
}
static
struct
platform_device
*
omap3_touchbook_devices
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-omap4panda.c
View file @
79b357c2
...
...
@@ -79,7 +79,6 @@ static void __init omap4_panda_init_irq(void)
{
omap2_init_common_hw
(
NULL
,
NULL
);
gic_init_irq
();
omap_gpio_init
();
}
static
const
struct
ehci_hcd_omap_platform_data
ehci_pdata
__initconst
=
{
...
...
arch/arm/mach-omap2/board-overo.c
View file @
79b357c2
...
...
@@ -416,7 +416,6 @@ static void __init overo_init_irq(void)
omap2_init_common_hw
(
mt46h32m32lf6_sdrc_params
,
mt46h32m32lf6_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
static
struct
platform_device
*
overo_devices
[]
__initdata
=
{
...
...
arch/arm/mach-omap2/board-rx51.c
View file @
79b357c2
...
...
@@ -108,7 +108,6 @@ static void __init rx51_init_irq(void)
sdrc_params
=
rx51_get_sdram_timings
();
omap2_init_common_hw
(
sdrc_params
,
sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
extern
void
__init
rx51_peripherals_init
(
void
);
...
...
arch/arm/mach-omap2/board-zoom.c
View file @
79b357c2
...
...
@@ -43,7 +43,6 @@ static void __init omap_zoom_init_irq(void)
h8mbx00u0mer0em_sdrc_params
);
omap_init_irq
();
omap_gpio_init
();
}
#ifdef CONFIG_OMAP_MUX
...
...
arch/arm/mach-omap2/gpio.c
0 → 100644
View file @
79b357c2
/*
* OMAP2+ specific gpio initialization
*
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
*
* Author:
* Charulatha V <charu@ti.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/gpio.h>
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <plat/omap_hwmod.h>
#include <plat/omap_device.h>
static
struct
omap_device_pm_latency
omap_gpio_latency
[]
=
{
[
0
]
=
{
.
deactivate_func
=
omap_device_idle_hwmods
,
.
activate_func
=
omap_device_enable_hwmods
,
.
flags
=
OMAP_DEVICE_LATENCY_AUTO_ADJUST
,
},
};
static
int
omap2_gpio_dev_init
(
struct
omap_hwmod
*
oh
,
void
*
unused
)
{
struct
omap_device
*
od
;
struct
omap_gpio_platform_data
*
pdata
;
struct
omap_gpio_dev_attr
*
dev_attr
;
char
*
name
=
"omap_gpio"
;
int
id
;
/*
* extract the device id from name field available in the
* hwmod database and use the same for constructing ids for
* gpio devices.
* CAUTION: Make sure the name in the hwmod database does
* not change. If changed, make corresponding change here
* or make use of static variable mechanism to handle this.
*/
sscanf
(
oh
->
name
,
"gpio%d"
,
&
id
);
pdata
=
kzalloc
(
sizeof
(
struct
omap_gpio_platform_data
),
GFP_KERNEL
);
if
(
!
pdata
)
{
pr_err
(
"gpio%d: Memory allocation failed
\n
"
,
id
);
return
-
ENOMEM
;
}
dev_attr
=
(
struct
omap_gpio_dev_attr
*
)
oh
->
dev_attr
;
pdata
->
bank_width
=
dev_attr
->
bank_width
;
pdata
->
dbck_flag
=
dev_attr
->
dbck_flag
;
pdata
->
virtual_irq_start
=
IH_GPIO_BASE
+
32
*
(
id
-
1
);
switch
(
oh
->
class
->
rev
)
{
case
0
:
case
1
:
pdata
->
bank_type
=
METHOD_GPIO_24XX
;
break
;
case
2
:
pdata
->
bank_type
=
METHOD_GPIO_44XX
;
break
;
default:
WARN
(
1
,
"Invalid gpio bank_type
\n
"
);
kfree
(
pdata
);
return
-
EINVAL
;
}
od
=
omap_device_build
(
name
,
id
-
1
,
oh
,
pdata
,
sizeof
(
*
pdata
),
omap_gpio_latency
,
ARRAY_SIZE
(
omap_gpio_latency
),
false
);
kfree
(
pdata
);
if
(
IS_ERR
(
od
))
{
WARN
(
1
,
"Cant build omap_device for %s:%s.
\n
"
,
name
,
oh
->
name
);
return
PTR_ERR
(
od
);
}
gpio_bank_count
++
;
return
0
;
}
/*
* gpio_init needs to be done before
* machine_init functions access gpio APIs.
* Hence gpio_init is a postcore_initcall.
*/
static
int
__init
omap2_gpio_init
(
void
)
{
return
omap_hwmod_for_each_by_class
(
"gpio"
,
omap2_gpio_dev_init
,
NULL
);
}
postcore_initcall
(
omap2_gpio_init
);
arch/arm/mach-omap2/omap_hwmod_2420_data.c
View file @
79b357c2
...
...
@@ -17,7 +17,7 @@
#include <plat/dma.h>
#include <plat/serial.h>
#include <plat/i2c.h>
#include <plat/
omap24xx
.h>
#include <plat/
gpio
.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -38,6 +38,10 @@ static struct omap_hwmod omap2420_iva_hwmod;
static
struct
omap_hwmod
omap2420_l3_main_hwmod
;
static
struct
omap_hwmod
omap2420_l4_core_hwmod
;
static
struct
omap_hwmod
omap2420_wd_timer2_hwmod
;
static
struct
omap_hwmod
omap2420_gpio1_hwmod
;
static
struct
omap_hwmod
omap2420_gpio2_hwmod
;
static
struct
omap_hwmod
omap2420_gpio3_hwmod
;
static
struct
omap_hwmod
omap2420_gpio4_hwmod
;
/* L3 -> L4_CORE interface */
static
struct
omap_hwmod_ocp_if
omap2420_l3_main__l4_core
=
{
...
...
@@ -557,6 +561,224 @@ static struct omap_hwmod omap2420_i2c2_hwmod = {
.
flags
=
HWMOD_16BIT_REG
,
};
/* l4_wkup -> gpio1 */
static
struct
omap_hwmod_addr_space
omap2420_gpio1_addr_space
[]
=
{
{
.
pa_start
=
0x48018000
,
.
pa_end
=
0x480181ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2420_l4_wkup__gpio1
=
{
.
master
=
&
omap2420_l4_wkup_hwmod
,
.
slave
=
&
omap2420_gpio1_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2420_gpio1_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_gpio1_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio2 */
static
struct
omap_hwmod_addr_space
omap2420_gpio2_addr_space
[]
=
{
{
.
pa_start
=
0x4801a000
,
.
pa_end
=
0x4801a1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2420_l4_wkup__gpio2
=
{
.
master
=
&
omap2420_l4_wkup_hwmod
,
.
slave
=
&
omap2420_gpio2_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2420_gpio2_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_gpio2_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio3 */
static
struct
omap_hwmod_addr_space
omap2420_gpio3_addr_space
[]
=
{
{
.
pa_start
=
0x4801c000
,
.
pa_end
=
0x4801c1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2420_l4_wkup__gpio3
=
{
.
master
=
&
omap2420_l4_wkup_hwmod
,
.
slave
=
&
omap2420_gpio3_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2420_gpio3_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_gpio3_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio4 */
static
struct
omap_hwmod_addr_space
omap2420_gpio4_addr_space
[]
=
{
{
.
pa_start
=
0x4801e000
,
.
pa_end
=
0x4801e1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2420_l4_wkup__gpio4
=
{
.
master
=
&
omap2420_l4_wkup_hwmod
,
.
slave
=
&
omap2420_gpio4_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2420_gpio4_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2420_gpio4_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio dev_attr */
static
struct
omap_gpio_dev_attr
gpio_dev_attr
=
{
.
bank_width
=
32
,
.
dbck_flag
=
false
,
};
static
struct
omap_hwmod_class_sysconfig
omap242x_gpio_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
/*
* 'gpio' class
* general purpose io module
*/
static
struct
omap_hwmod_class
omap242x_gpio_hwmod_class
=
{
.
name
=
"gpio"
,
.
sysc
=
&
omap242x_gpio_sysc
,
.
rev
=
0
,
};
/* gpio1 */
static
struct
omap_hwmod_irq_info
omap242x_gpio1_irqs
[]
=
{
{
.
irq
=
29
},
/* INT_24XX_GPIO_BANK1 */
};
static
struct
omap_hwmod_ocp_if
*
omap2420_gpio1_slaves
[]
=
{
&
omap2420_l4_wkup__gpio1
,
};
static
struct
omap_hwmod
omap2420_gpio1_hwmod
=
{
.
name
=
"gpio1"
,
.
mpu_irqs
=
omap242x_gpio1_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap242x_gpio1_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2420_gpio1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_gpio1_slaves
),
.
class
=
&
omap242x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* gpio2 */
static
struct
omap_hwmod_irq_info
omap242x_gpio2_irqs
[]
=
{
{
.
irq
=
30
},
/* INT_24XX_GPIO_BANK2 */
};
static
struct
omap_hwmod_ocp_if
*
omap2420_gpio2_slaves
[]
=
{
&
omap2420_l4_wkup__gpio2
,
};
static
struct
omap_hwmod
omap2420_gpio2_hwmod
=
{
.
name
=
"gpio2"
,
.
mpu_irqs
=
omap242x_gpio2_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap242x_gpio2_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2420_gpio2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_gpio2_slaves
),
.
class
=
&
omap242x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* gpio3 */
static
struct
omap_hwmod_irq_info
omap242x_gpio3_irqs
[]
=
{
{
.
irq
=
31
},
/* INT_24XX_GPIO_BANK3 */
};
static
struct
omap_hwmod_ocp_if
*
omap2420_gpio3_slaves
[]
=
{
&
omap2420_l4_wkup__gpio3
,
};
static
struct
omap_hwmod
omap2420_gpio3_hwmod
=
{
.
name
=
"gpio3"
,
.
mpu_irqs
=
omap242x_gpio3_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap242x_gpio3_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2420_gpio3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_gpio3_slaves
),
.
class
=
&
omap242x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
/* gpio4 */
static
struct
omap_hwmod_irq_info
omap242x_gpio4_irqs
[]
=
{
{
.
irq
=
32
},
/* INT_24XX_GPIO_BANK4 */
};
static
struct
omap_hwmod_ocp_if
*
omap2420_gpio4_slaves
[]
=
{
&
omap2420_l4_wkup__gpio4
,
};
static
struct
omap_hwmod
omap2420_gpio4_hwmod
=
{
.
name
=
"gpio4"
,
.
mpu_irqs
=
omap242x_gpio4_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap242x_gpio4_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2420_gpio4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2420_gpio4_slaves
),
.
class
=
&
omap242x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2420
),
};
static
__initdata
struct
omap_hwmod
*
omap2420_hwmods
[]
=
{
&
omap2420_l3_main_hwmod
,
&
omap2420_l4_core_hwmod
,
...
...
@@ -569,6 +791,12 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = {
&
omap2420_uart3_hwmod
,
&
omap2420_i2c1_hwmod
,
&
omap2420_i2c2_hwmod
,
/* gpio class */
&
omap2420_gpio1_hwmod
,
&
omap2420_gpio2_hwmod
,
&
omap2420_gpio3_hwmod
,
&
omap2420_gpio4_hwmod
,
NULL
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_2430_data.c
View file @
79b357c2
...
...
@@ -17,7 +17,7 @@
#include <plat/dma.h>
#include <plat/serial.h>
#include <plat/i2c.h>
#include <plat/
omap24xx
.h>
#include <plat/
gpio
.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -38,6 +38,11 @@ static struct omap_hwmod omap2430_iva_hwmod;
static
struct
omap_hwmod
omap2430_l3_main_hwmod
;
static
struct
omap_hwmod
omap2430_l4_core_hwmod
;
static
struct
omap_hwmod
omap2430_wd_timer2_hwmod
;
static
struct
omap_hwmod
omap2430_gpio1_hwmod
;
static
struct
omap_hwmod
omap2430_gpio2_hwmod
;
static
struct
omap_hwmod
omap2430_gpio3_hwmod
;
static
struct
omap_hwmod
omap2430_gpio4_hwmod
;
static
struct
omap_hwmod
omap2430_gpio5_hwmod
;
/* L3 -> L4_CORE interface */
static
struct
omap_hwmod_ocp_if
omap2430_l3_main__l4_core
=
{
...
...
@@ -569,6 +574,272 @@ static struct omap_hwmod omap2430_i2c2_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* l4_wkup -> gpio1 */
static
struct
omap_hwmod_addr_space
omap2430_gpio1_addr_space
[]
=
{
{
.
pa_start
=
0x4900C000
,
.
pa_end
=
0x4900C1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2430_l4_wkup__gpio1
=
{
.
master
=
&
omap2430_l4_wkup_hwmod
,
.
slave
=
&
omap2430_gpio1_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2430_gpio1_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_gpio1_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio2 */
static
struct
omap_hwmod_addr_space
omap2430_gpio2_addr_space
[]
=
{
{
.
pa_start
=
0x4900E000
,
.
pa_end
=
0x4900E1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2430_l4_wkup__gpio2
=
{
.
master
=
&
omap2430_l4_wkup_hwmod
,
.
slave
=
&
omap2430_gpio2_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2430_gpio2_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_gpio2_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio3 */
static
struct
omap_hwmod_addr_space
omap2430_gpio3_addr_space
[]
=
{
{
.
pa_start
=
0x49010000
,
.
pa_end
=
0x490101ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2430_l4_wkup__gpio3
=
{
.
master
=
&
omap2430_l4_wkup_hwmod
,
.
slave
=
&
omap2430_gpio3_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2430_gpio3_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_gpio3_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_wkup -> gpio4 */
static
struct
omap_hwmod_addr_space
omap2430_gpio4_addr_space
[]
=
{
{
.
pa_start
=
0x49012000
,
.
pa_end
=
0x490121ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2430_l4_wkup__gpio4
=
{
.
master
=
&
omap2430_l4_wkup_hwmod
,
.
slave
=
&
omap2430_gpio4_hwmod
,
.
clk
=
"gpios_ick"
,
.
addr
=
omap2430_gpio4_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_gpio4_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* l4_core -> gpio5 */
static
struct
omap_hwmod_addr_space
omap2430_gpio5_addr_space
[]
=
{
{
.
pa_start
=
0x480B6000
,
.
pa_end
=
0x480B61ff
,
.
flags
=
ADDR_TYPE_RT
},
};
static
struct
omap_hwmod_ocp_if
omap2430_l4_core__gpio5
=
{
.
master
=
&
omap2430_l4_core_hwmod
,
.
slave
=
&
omap2430_gpio5_hwmod
,
.
clk
=
"gpio5_ick"
,
.
addr
=
omap2430_gpio5_addr_space
,
.
addr_cnt
=
ARRAY_SIZE
(
omap2430_gpio5_addr_space
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio dev_attr */
static
struct
omap_gpio_dev_attr
gpio_dev_attr
=
{
.
bank_width
=
32
,
.
dbck_flag
=
false
,
};
static
struct
omap_hwmod_class_sysconfig
omap243x_gpio_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0014
,
.
sysc_flags
=
(
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
/*
* 'gpio' class
* general purpose io module
*/
static
struct
omap_hwmod_class
omap243x_gpio_hwmod_class
=
{
.
name
=
"gpio"
,
.
sysc
=
&
omap243x_gpio_sysc
,
.
rev
=
0
,
};
/* gpio1 */
static
struct
omap_hwmod_irq_info
omap243x_gpio1_irqs
[]
=
{
{
.
irq
=
29
},
/* INT_24XX_GPIO_BANK1 */
};
static
struct
omap_hwmod_ocp_if
*
omap2430_gpio1_slaves
[]
=
{
&
omap2430_l4_wkup__gpio1
,
};
static
struct
omap_hwmod
omap2430_gpio1_hwmod
=
{
.
name
=
"gpio1"
,
.
mpu_irqs
=
omap243x_gpio1_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap243x_gpio1_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2430_gpio1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_gpio1_slaves
),
.
class
=
&
omap243x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* gpio2 */
static
struct
omap_hwmod_irq_info
omap243x_gpio2_irqs
[]
=
{
{
.
irq
=
30
},
/* INT_24XX_GPIO_BANK2 */
};
static
struct
omap_hwmod_ocp_if
*
omap2430_gpio2_slaves
[]
=
{
&
omap2430_l4_wkup__gpio2
,
};
static
struct
omap_hwmod
omap2430_gpio2_hwmod
=
{
.
name
=
"gpio2"
,
.
mpu_irqs
=
omap243x_gpio2_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap243x_gpio2_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2430_gpio2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_gpio2_slaves
),
.
class
=
&
omap243x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* gpio3 */
static
struct
omap_hwmod_irq_info
omap243x_gpio3_irqs
[]
=
{
{
.
irq
=
31
},
/* INT_24XX_GPIO_BANK3 */
};
static
struct
omap_hwmod_ocp_if
*
omap2430_gpio3_slaves
[]
=
{
&
omap2430_l4_wkup__gpio3
,
};
static
struct
omap_hwmod
omap2430_gpio3_hwmod
=
{
.
name
=
"gpio3"
,
.
mpu_irqs
=
omap243x_gpio3_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap243x_gpio3_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2430_gpio3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_gpio3_slaves
),
.
class
=
&
omap243x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* gpio4 */
static
struct
omap_hwmod_irq_info
omap243x_gpio4_irqs
[]
=
{
{
.
irq
=
32
},
/* INT_24XX_GPIO_BANK4 */
};
static
struct
omap_hwmod_ocp_if
*
omap2430_gpio4_slaves
[]
=
{
&
omap2430_l4_wkup__gpio4
,
};
static
struct
omap_hwmod
omap2430_gpio4_hwmod
=
{
.
name
=
"gpio4"
,
.
mpu_irqs
=
omap243x_gpio4_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap243x_gpio4_irqs
),
.
main_clk
=
"gpios_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
1
,
.
module_bit
=
OMAP24XX_EN_GPIOS_SHIFT
,
.
module_offs
=
WKUP_MOD
,
.
idlest_reg_id
=
1
,
.
idlest_idle_bit
=
OMAP24XX_ST_GPIOS_SHIFT
,
},
},
.
slaves
=
omap2430_gpio4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_gpio4_slaves
),
.
class
=
&
omap243x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
/* gpio5 */
static
struct
omap_hwmod_irq_info
omap243x_gpio5_irqs
[]
=
{
{
.
irq
=
33
},
/* INT_24XX_GPIO_BANK5 */
};
static
struct
omap_hwmod_ocp_if
*
omap2430_gpio5_slaves
[]
=
{
&
omap2430_l4_core__gpio5
,
};
static
struct
omap_hwmod
omap2430_gpio5_hwmod
=
{
.
name
=
"gpio5"
,
.
mpu_irqs
=
omap243x_gpio5_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap243x_gpio5_irqs
),
.
main_clk
=
"gpio5_fck"
,
.
prcm
=
{
.
omap2
=
{
.
prcm_reg_id
=
2
,
.
module_bit
=
OMAP2430_EN_GPIO5_SHIFT
,
.
module_offs
=
CORE_MOD
,
.
idlest_reg_id
=
2
,
.
idlest_idle_bit
=
OMAP2430_ST_GPIO5_SHIFT
,
},
},
.
slaves
=
omap2430_gpio5_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap2430_gpio5_slaves
),
.
class
=
&
omap243x_gpio_hwmod_class
,
.
dev_attr
=
&
gpio_dev_attr
,
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP2430
),
};
static
__initdata
struct
omap_hwmod
*
omap2430_hwmods
[]
=
{
&
omap2430_l3_main_hwmod
,
&
omap2430_l4_core_hwmod
,
...
...
@@ -581,6 +852,13 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = {
&
omap2430_uart3_hwmod
,
&
omap2430_i2c1_hwmod
,
&
omap2430_i2c2_hwmod
,
/* gpio class */
&
omap2430_gpio1_hwmod
,
&
omap2430_gpio2_hwmod
,
&
omap2430_gpio3_hwmod
,
&
omap2430_gpio4_hwmod
,
&
omap2430_gpio5_hwmod
,
NULL
,
};
...
...
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
View file @
79b357c2
This diff is collapsed.
Click to expand it.
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
View file @
79b357c2
...
...
@@ -22,6 +22,7 @@
#include <plat/omap_hwmod.h>
#include <plat/cpu.h>
#include <plat/gpio.h>
#include "omap_hwmod_common_data.h"
...
...
@@ -1043,6 +1044,338 @@ static struct omap_hwmod omap44xx_uart4_hwmod = {
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/*
* 'gpio' class
* general purpose io module
*/
static
struct
omap_hwmod_class_sysconfig
omap44xx_gpio_sysc
=
{
.
rev_offs
=
0x0000
,
.
sysc_offs
=
0x0010
,
.
syss_offs
=
0x0114
,
.
sysc_flags
=
(
SYSC_HAS_ENAWAKEUP
|
SYSC_HAS_SIDLEMODE
|
SYSC_HAS_SOFTRESET
|
SYSC_HAS_AUTOIDLE
),
.
idlemodes
=
(
SIDLE_FORCE
|
SIDLE_NO
|
SIDLE_SMART
),
.
sysc_fields
=
&
omap_hwmod_sysc_type1
,
};
static
struct
omap_hwmod_class
omap44xx_gpio_hwmod_class
=
{
.
name
=
"gpio"
,
.
sysc
=
&
omap44xx_gpio_sysc
,
.
rev
=
2
,
};
/* gpio dev_attr */
static
struct
omap_gpio_dev_attr
gpio_dev_attr
=
{
.
bank_width
=
32
,
.
dbck_flag
=
true
,
};
/* gpio1 */
static
struct
omap_hwmod
omap44xx_gpio1_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio1_irqs
[]
=
{
{
.
irq
=
29
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio1_addrs
[]
=
{
{
.
pa_start
=
0x4a310000
,
.
pa_end
=
0x4a3101ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_wkup -> gpio1 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_wkup__gpio1
=
{
.
master
=
&
omap44xx_l4_wkup_hwmod
,
.
slave
=
&
omap44xx_gpio1_hwmod
,
.
addr
=
omap44xx_gpio1_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio1_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio1 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio1_slaves
[]
=
{
&
omap44xx_l4_wkup__gpio1
,
};
static
struct
omap_hwmod_opt_clk
gpio1_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio1_hwmod
=
{
.
name
=
"gpio1"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio1_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio1_irqs
),
.
main_clk
=
"gpio1_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_WKUP_GPIO1_CLKCTRL
,
},
},
.
opt_clks
=
gpio1_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio1_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio1_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio1_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* gpio2 */
static
struct
omap_hwmod
omap44xx_gpio2_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio2_irqs
[]
=
{
{
.
irq
=
30
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio2_addrs
[]
=
{
{
.
pa_start
=
0x48055000
,
.
pa_end
=
0x480551ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> gpio2 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__gpio2
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_gpio2_hwmod
,
.
addr
=
omap44xx_gpio2_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio2_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio2 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio2_slaves
[]
=
{
&
omap44xx_l4_per__gpio2
,
};
static
struct
omap_hwmod_opt_clk
gpio2_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio2_hwmod
=
{
.
name
=
"gpio2"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio2_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio2_irqs
),
.
main_clk
=
"gpio2_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_GPIO2_CLKCTRL
,
},
},
.
opt_clks
=
gpio2_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio2_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio2_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio2_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* gpio3 */
static
struct
omap_hwmod
omap44xx_gpio3_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio3_irqs
[]
=
{
{
.
irq
=
31
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio3_addrs
[]
=
{
{
.
pa_start
=
0x48057000
,
.
pa_end
=
0x480571ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> gpio3 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__gpio3
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_gpio3_hwmod
,
.
addr
=
omap44xx_gpio3_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio3_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio3 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio3_slaves
[]
=
{
&
omap44xx_l4_per__gpio3
,
};
static
struct
omap_hwmod_opt_clk
gpio3_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio3_hwmod
=
{
.
name
=
"gpio3"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio3_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio3_irqs
),
.
main_clk
=
"gpio3_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_GPIO3_CLKCTRL
,
},
},
.
opt_clks
=
gpio3_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio3_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio3_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio3_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* gpio4 */
static
struct
omap_hwmod
omap44xx_gpio4_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio4_irqs
[]
=
{
{
.
irq
=
32
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio4_addrs
[]
=
{
{
.
pa_start
=
0x48059000
,
.
pa_end
=
0x480591ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> gpio4 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__gpio4
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_gpio4_hwmod
,
.
addr
=
omap44xx_gpio4_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio4_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio4 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio4_slaves
[]
=
{
&
omap44xx_l4_per__gpio4
,
};
static
struct
omap_hwmod_opt_clk
gpio4_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio4_hwmod
=
{
.
name
=
"gpio4"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio4_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio4_irqs
),
.
main_clk
=
"gpio4_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_GPIO4_CLKCTRL
,
},
},
.
opt_clks
=
gpio4_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio4_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio4_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio4_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* gpio5 */
static
struct
omap_hwmod
omap44xx_gpio5_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio5_irqs
[]
=
{
{
.
irq
=
33
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio5_addrs
[]
=
{
{
.
pa_start
=
0x4805b000
,
.
pa_end
=
0x4805b1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> gpio5 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__gpio5
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_gpio5_hwmod
,
.
addr
=
omap44xx_gpio5_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio5_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio5 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio5_slaves
[]
=
{
&
omap44xx_l4_per__gpio5
,
};
static
struct
omap_hwmod_opt_clk
gpio5_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio5_hwmod
=
{
.
name
=
"gpio5"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio5_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio5_irqs
),
.
main_clk
=
"gpio5_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_GPIO5_CLKCTRL
,
},
},
.
opt_clks
=
gpio5_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio5_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio5_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio5_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
/* gpio6 */
static
struct
omap_hwmod
omap44xx_gpio6_hwmod
;
static
struct
omap_hwmod_irq_info
omap44xx_gpio6_irqs
[]
=
{
{
.
irq
=
34
+
OMAP44XX_IRQ_GIC_START
},
};
static
struct
omap_hwmod_addr_space
omap44xx_gpio6_addrs
[]
=
{
{
.
pa_start
=
0x4805d000
,
.
pa_end
=
0x4805d1ff
,
.
flags
=
ADDR_TYPE_RT
},
};
/* l4_per -> gpio6 */
static
struct
omap_hwmod_ocp_if
omap44xx_l4_per__gpio6
=
{
.
master
=
&
omap44xx_l4_per_hwmod
,
.
slave
=
&
omap44xx_gpio6_hwmod
,
.
addr
=
omap44xx_gpio6_addrs
,
.
addr_cnt
=
ARRAY_SIZE
(
omap44xx_gpio6_addrs
),
.
user
=
OCP_USER_MPU
|
OCP_USER_SDMA
,
};
/* gpio6 slave ports */
static
struct
omap_hwmod_ocp_if
*
omap44xx_gpio6_slaves
[]
=
{
&
omap44xx_l4_per__gpio6
,
};
static
struct
omap_hwmod_opt_clk
gpio6_opt_clks
[]
=
{
{
.
role
=
"dbclk"
,
.
clk
=
"sys_32k_ck"
},
};
static
struct
omap_hwmod
omap44xx_gpio6_hwmod
=
{
.
name
=
"gpio6"
,
.
class
=
&
omap44xx_gpio_hwmod_class
,
.
mpu_irqs
=
omap44xx_gpio6_irqs
,
.
mpu_irqs_cnt
=
ARRAY_SIZE
(
omap44xx_gpio6_irqs
),
.
main_clk
=
"gpio6_ick"
,
.
prcm
=
{
.
omap4
=
{
.
clkctrl_reg
=
OMAP4430_CM_L4PER_GPIO6_CLKCTRL
,
},
},
.
opt_clks
=
gpio6_opt_clks
,
.
opt_clks_cnt
=
ARRAY_SIZE
(
gpio6_opt_clks
),
.
dev_attr
=
&
gpio_dev_attr
,
.
slaves
=
omap44xx_gpio6_slaves
,
.
slaves_cnt
=
ARRAY_SIZE
(
omap44xx_gpio6_slaves
),
.
omap_chip
=
OMAP_CHIP_INIT
(
CHIP_IS_OMAP4430
),
};
static
__initdata
struct
omap_hwmod
*
omap44xx_hwmods
[]
=
{
/* dmm class */
&
omap44xx_dmm_hwmod
,
...
...
@@ -1066,6 +1399,14 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
/* mpu_bus class */
&
omap44xx_mpu_private_hwmod
,
/* gpio class */
&
omap44xx_gpio1_hwmod
,
&
omap44xx_gpio2_hwmod
,
&
omap44xx_gpio3_hwmod
,
&
omap44xx_gpio4_hwmod
,
&
omap44xx_gpio5_hwmod
,
&
omap44xx_gpio6_hwmod
,
/* mpu class */
&
omap44xx_mpu_hwmod
,
/* wd_timer class */
...
...
arch/arm/plat-omap/gpio.c
View file @
79b357c2
This diff is collapsed.
Click to expand it.
arch/arm/plat-omap/include/plat/gpio.h
View file @
79b357c2
...
...
@@ -27,26 +27,15 @@
#define __ASM_ARCH_OMAP_GPIO_H
#include <linux/io.h>
#include <linux/platform_device.h>
#include <mach/irqs.h>
#define OMAP1_MPUIO_BASE 0xfffb5000
#if (defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850))
#define OMAP_MPUIO_INPUT_LATCH 0x00
#define OMAP_MPUIO_OUTPUT 0x02
#define OMAP_MPUIO_IO_CNTL 0x04
#define OMAP_MPUIO_KBR_LATCH 0x08
#define OMAP_MPUIO_KBC 0x0a
#define OMAP_MPUIO_GPIO_EVENT_MODE 0x0c
#define OMAP_MPUIO_GPIO_INT_EDGE 0x0e
#define OMAP_MPUIO_KBD_INT 0x10
#define OMAP_MPUIO_GPIO_INT 0x12
#define OMAP_MPUIO_KBD_MASKIT 0x14
#define OMAP_MPUIO_GPIO_MASKIT 0x16
#define OMAP_MPUIO_GPIO_DEBOUNCING 0x18
#define OMAP_MPUIO_LATCH 0x1a
#else
/*
* These are the omap15xx/16xx offsets. The omap7xx offset are
* OMAP_MPUIO_ / 2 offsets below.
*/
#define OMAP_MPUIO_INPUT_LATCH 0x00
#define OMAP_MPUIO_OUTPUT 0x04
#define OMAP_MPUIO_IO_CNTL 0x08
...
...
@@ -60,7 +49,6 @@
#define OMAP_MPUIO_GPIO_MASKIT 0x2c
#define OMAP_MPUIO_GPIO_DEBOUNCING 0x30
#define OMAP_MPUIO_LATCH 0x34
#endif
#define OMAP34XX_NR_GPIOS 6
...
...
@@ -71,7 +59,29 @@
IH_MPUIO_BASE + ((nr) & 0x0f) : \
IH_GPIO_BASE + (nr))
extern
int
omap_gpio_init
(
void
);
/* Call from board init only */
#define METHOD_MPUIO 0
#define METHOD_GPIO_1510 1
#define METHOD_GPIO_1610 2
#define METHOD_GPIO_7XX 3
#define METHOD_GPIO_24XX 5
#define METHOD_GPIO_44XX 6
struct
omap_gpio_dev_attr
{
int
bank_width
;
/* GPIO bank width */
bool
dbck_flag
;
/* dbck required or not - True for OMAP3&4 */
};
struct
omap_gpio_platform_data
{
u16
virtual_irq_start
;
int
bank_type
;
int
bank_width
;
/* GPIO bank width */
int
bank_stride
;
/* Only needed for omap1 MPUIO */
bool
dbck_flag
;
/* dbck required or not - True for OMAP3&4 */
};
/* TODO: Analyze removing gpio_bank_count usage from driver code */
extern
int
gpio_bank_count
;
extern
void
omap2_gpio_prepare_for_idle
(
int
power_state
);
extern
void
omap2_gpio_resume_after_idle
(
void
);
extern
void
omap_set_gpio_debounce
(
int
gpio
,
int
enable
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment