]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - include/linux/platform_data/gpio-davinci.h
mtd: nand: complain loudly when chip->bits_per_cell is not correctly initialized
[karo-tx-linux.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
26 struct davinci_gpio_platform_data {
27         u32     ngpio;
28         u32     gpio_unbanked;
29 };
30
31 struct davinci_gpio_irq_data {
32         void __iomem                    *regs;
33         struct davinci_gpio_controller  *chip;
34         int                             bank_num;
35 };
36
37 struct davinci_gpio_controller {
38         struct gpio_chip        chip;
39         struct irq_domain       *irq_domain;
40         /* Serialize access to GPIO registers */
41         spinlock_t              lock;
42         void __iomem            *regs[MAX_REGS_BANKS];
43         int                     gpio_unbanked;
44         unsigned int            base_irq;
45         unsigned int            base;
46 };
47
48 /*
49  * basic gpio routines
50  */
51 #define GPIO(X)         (X)     /* 0 <= X <= (DAVINCI_N_GPIO - 1) */
52
53 /* Convert GPIO signal to GPIO pin number */
54 #define GPIO_TO_PIN(bank, gpio) (16 * (bank) + (gpio))
55
56 static inline u32 __gpio_mask(unsigned gpio)
57 {
58         return 1 << (gpio % 32);
59 }
60 #endif