1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2012
4  * Philippe Reynes <tremyfr@yahoo.fr>
5  */
6 
7 
8 #ifndef __ASM_ARCH_MX27_GPIO_H
9 #define __ASM_ARCH_MX27_GPIO_H
10 
11 /* GPIO registers */
12 struct gpio_regs {
13 	u32 gpio_dir; /* DDIR */
14 	u32 ocr1;
15 	u32 ocr2;
16 	u32 iconfa1;
17 	u32 iconfa2;
18 	u32 iconfb1;
19 	u32 iconfb2;
20 	u32 gpio_dr; /* DR */
21 	u32 gius;
22 	u32 gpio_psr; /* SSR */
23 	u32 icr1;
24 	u32 icr2;
25 	u32 imr;
26 	u32 isr;
27 	u32 gpr;
28 	u32 swr;
29 	u32 puen;
30 	u32 res[0x2f];
31 };
32 
33 /* This structure is used by the function imx_gpio_mode */
34 struct gpio_port_regs {
35 	struct gpio_regs port[6];
36 };
37 
38 /*
39  *  GPIO Module and I/O Multiplexer
40  */
41 #define PORTA 0
42 #define PORTB 1
43 #define PORTC 2
44 #define PORTD 3
45 #define PORTE 4
46 #define PORTF 5
47 
48 #define GPIO_PIN_MASK		0x1f
49 #define GPIO_PORT_SHIFT		5
50 #define GPIO_PORT_MASK		(0x7 << GPIO_PORT_SHIFT)
51 #define GPIO_PORTA		(PORTA << GPIO_PORT_SHIFT)
52 #define GPIO_PORTB		(PORTB << GPIO_PORT_SHIFT)
53 #define GPIO_PORTC		(PORTC << GPIO_PORT_SHIFT)
54 #define GPIO_PORTD		(PORTD << GPIO_PORT_SHIFT)
55 #define GPIO_PORTE		(PORTE << GPIO_PORT_SHIFT)
56 #define GPIO_PORTF		(PORTF << GPIO_PORT_SHIFT)
57 
58 #endif
59