GNU Linux-libre 4.19.264-gnu1
[releases.git] / include / linux / platform_data / gpio-davinci.h
1 /*
2  * DaVinci GPIO Platform Related Defines
3  *
4  * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License as
8  * published by the Free Software Foundation version 2.
9  *
10  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
11  * kind, whether express or implied; without even the implied warranty
12  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  */
15
16 #ifndef __DAVINCI_GPIO_PLATFORM_H
17 #define __DAVINCI_GPIO_PLATFORM_H
18
19 #include <linux/io.h>
20 #include <linux/spinlock.h>
21
22 #include <asm-generic/gpio.h>
23
24 #define MAX_REGS_BANKS          5
25 #define MAX_INT_PER_BANK 32
26
27 struct davinci_gpio_platform_data {
28         u32     ngpio;
29         u32     gpio_unbanked;
30 };
31
32 struct davinci_gpio_irq_data {
33         void __iomem                    *regs;
34         struct davinci_gpio_controller  *chip;
35         int                             bank_num;
36 };
37
38 struct davinci_gpio_controller {
39         struct gpio_chip        chip;
40         struct irq_domain       *irq_domain;
41         /* Serialize access to GPIO registers */
42         spinlock_t              lock;
43         void __iomem            *regs[MAX_REGS_BANKS];
44         int                     gpio_unbanked;
45         int                     irqs[MAX_INT_PER_BANK];
46         unsigned int            base;
47 };
48
49 /*
50  * basic gpio routines
51  */
52 #define GPIO(X)         (X)     /* 0 <= X <= (DAVINCI_N_GPIO - 1) */
53
54 /* Convert GPIO signal to GPIO pin number */
55 #define GPIO_TO_PIN(bank, gpio) (16 * (bank) + (gpio))
56
57 static inline u32 __gpio_mask(unsigned gpio)
58 {
59         return 1 << (gpio % 32);
60 }
61 #endif