1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2015 Google, Inc
4  */
5 
6 #ifndef _ASM_ARCH_GPIO_H
7 #define _ASM_ARCH_GPIO_H
8 
9 struct rockchip_gpio_regs {
10 	u32 swport_dr;
11 	u32 swport_ddr;
12 	u32 reserved0[(0x30 - 0x08) / 4];
13 	u32 inten;
14 	u32 intmask;
15 	u32 inttype_level;
16 	u32 int_polarity;
17 	u32 int_status;
18 	u32 int_rawstatus;
19 	u32 debounce;
20 	u32 porta_eoi;
21 	u32 ext_port;
22 	u32 reserved1[(0x60 - 0x54) / 4];
23 	u32 ls_sync;
24 };
25 check_member(rockchip_gpio_regs, ls_sync, 0x60);
26 
27 enum gpio_pu_pd {
28 	GPIO_PULL_NORMAL = 0,
29 	GPIO_PULL_UP,
30 	GPIO_PULL_DOWN,
31 	GPIO_PULL_REPEAT,
32 };
33 
34 /* These defines are only used by spl_gpio.h */
35 enum {
36 	/* Banks have 8 GPIOs, so 3 bits, and there are 4 banks, so 2 bits */
37 	GPIO_BANK_SHIFT		= 3,
38 	GPIO_BANK_MASK		= 3 << GPIO_BANK_SHIFT,
39 
40 	GPIO_OFFSET_MASK	= 0x1f,
41 };
42 
43 #define GPIO(bank, offset)	((bank) << GPIO_BANK_SHIFT | (offset))
44 
45 enum gpio_bank_t {
46 	BANK_A = 0,
47 	BANK_B,
48 	BANK_C,
49 	BANK_D,
50 };
51 
52 enum gpio_dir_t {
53 	GPIO_INPUT = 0,
54 	GPIO_OUTPUT,
55 };
56 
57 #endif
58