gpio.h revision a4f0b32c331a3da1dd1336f1691504268c63fc14
11394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
21394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * File:         arch/blackfin/kernel/bfin_gpio.h
31394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Based on:
41394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Author:	 Michael Hennerich (hennerich@blackfin.uclinux.org)
51394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
61394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Created:
71394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Description:
81394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
91394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Modified:
10a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerich *               Copyright 2004-2008 Analog Devices Inc.
111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * Bugs:         Enter bugs at http://blackfin.uclinux.org/
131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * This program is free software; you can redistribute it and/or modify
151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * it under the terms of the GNU General Public License as published by
161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * the Free Software Foundation; either version 2 of the License, or
171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * (at your option) any later version.
181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * This program is distributed in the hope that it will be useful,
201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * but WITHOUT ANY WARRANTY; without even the implied warranty of
211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * GNU General Public License for more details.
231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu *
241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * You should have received a copy of the GNU General Public License
251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * along with this program; if not, see the file COPYING, or write
261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * to the Free Software Foundation, Inc.,
271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu */
291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/*
311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  Number     BF537/6/4    BF561    BF533/2/1
32590031450a52c373bf72f5fb156fbcc0c78c6f2cMichael Hennerich*             BF527/5/2
331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_0       PF0         PF0        PF0
351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_1       PF1         PF1        PF1
361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_2       PF2         PF2        PF2
371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_3       PF3         PF3        PF3
381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_4       PF4         PF4        PF4
391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_5       PF5         PF5        PF5
401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_6       PF6         PF6        PF6
411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_7       PF7         PF7        PF7
421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_8       PF8         PF8        PF8
431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_9       PF9         PF9        PF9
441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_10      PF10        PF10       PF10
451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_11      PF11        PF11       PF11
461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_12      PF12        PF12       PF12
471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_13      PF13        PF13       PF13
481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_14      PF14        PF14       PF14
491394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_15      PF15        PF15       PF15
501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_16      PG0         PF16
511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_17      PG1         PF17
521394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_18      PG2         PF18
531394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_19      PG3         PF19
541394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_20      PG4         PF20
551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_21      PG5         PF21
561394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_22      PG6         PF22
571394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_23      PG7         PF23
581394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_24      PG8         PF24
591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_25      PG9         PF25
601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_26      PG10        PF26
611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_27      PG11        PF27
621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_28      PG12        PF28
631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_29      PG13        PF29
641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_30      PG14        PF30
651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_31      PG15        PF31
661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_32      PH0         PF32
671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_33      PH1         PF33
681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_34      PH2         PF34
691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_35      PH3         PF35
701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_36      PH4         PF36
711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_37      PH5         PF37
721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_38      PH6         PF38
731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_39      PH7         PF39
741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_40      PH8         PF40
751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_41      PH9         PF41
761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_42      PH10        PF42
771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_43      PH11        PF43
781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_44      PH12        PF44
791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_45      PH13        PF45
801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_46      PH14        PF46
811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*  GPIO_47      PH15        PF47
821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*/
831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifndef __ARCH_BLACKFIN_GPIO_H__
851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define __ARCH_BLACKFIN_GPIO_H__
861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
87a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#define gpio_bank(x) 	((x) >> 4)
88a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#define gpio_bit(x)  	(1<<((x) & 0xF))
89a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#define gpio_sub_n(x) 	((x) & 0xF)
90a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#define GPIO_BANK_NUM 	DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, 16)
911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define GPIO_BANKSIZE 16
931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_0	0
951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_1	1
961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_2	2
971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_3	3
981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_4	4
991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_5	5
1001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_6	6
1011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_7	7
1021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_8	8
1031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_9	9
1041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_10	10
1051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_11	11
1061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_12	12
1071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_13	13
1081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_14	14
1091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_15	15
1101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_16	16
1111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_17	17
1121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_18	18
1131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_19	19
1141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_20	20
1151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_21	21
1161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_22	22
1171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_23	23
1181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_24	24
1191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_25	25
1201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_26	26
1211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_27	27
1221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_28	28
1231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_29	29
1241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_30	30
1251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_31	31
1261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_32	32
1271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_33	33
1281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_34	34
1291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_35	35
1301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_36	36
1311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_37	37
1321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_38	38
1331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_39	39
1341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_40	40
1351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_41	41
1361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_42	42
1371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_43	43
1381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_44	44
1391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_45	45
1401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_46	46
1411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_47	47
1421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PERIPHERAL_USAGE 1
1451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define GPIO_USAGE 0
1461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
1472f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#if defined(BF518_FAMILY)
1482f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define MAX_BLACKFIN_GPIOS 40
1492f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu
1502f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF0	0
1512f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF1	1
1522f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF2	2
1532f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF3	3
1542f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF4	4
1552f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF5	5
1562f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF6	6
1572f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF7	7
1582f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF8	8
1592f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF9	9
1602f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF10	10
1612f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF11	11
1622f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF12	12
1632f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF13	13
1642f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF14	14
1652f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PF15	15
1662f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG0	16
1672f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG1	17
1682f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG2	18
1692f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG3	19
1702f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG4	20
1712f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG5	21
1722f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG6	22
1732f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG7	23
1742f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG8	24
1752f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG9	25
1762f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG10      	26
1772f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG11      	27
1782f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG12      	28
1792f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG13      	29
1802f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG14      	30
1812f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PG15      	31
1822f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH0	32
1832f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH1	33
1842f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH2	34
1852f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH3	35
1862f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH4	36
1872f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH5	37
1882f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH6	38
1892f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define	GPIO_PH7	39
1902f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu
1912f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define PORT_F GPIO_PF0
1922f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define PORT_G GPIO_PG0
1932f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#define PORT_H GPIO_PH0
1942f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu
1952f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu#endif
1962f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu
1972f6f4bcdd611cb968b800f7569c4383727856668Bryan Wu
1981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifdef BF533_FAMILY
1991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define MAX_BLACKFIN_GPIOS 16
200214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu
201214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF0	0
202214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF1	1
203214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF2	2
204214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF3	3
205214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF4	4
206214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF5	5
207214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF6	6
208214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF7	7
209214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF8	8
210214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF9	9
211214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF10	10
212214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF11	11
213214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF12	12
214214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF13	13
215214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF14	14
216214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu#define	GPIO_PF15	15
217214cccbbb22136566e72956fcd23c48c2a4abb33Bryan Wu
2181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
2191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
220dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#if defined(BF538_FAMILY)
221dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	/* FIXME:
222dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	 * For now only support PORTF GPIOs.
223dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	 * PORT C,D and E are for peripheral usage only
224dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich	 */
225dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define MAX_BLACKFIN_GPIOS 16
226dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
227dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF0	0	/* PF */
228dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF1	1
229dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF2	2
230dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF3	3
231dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF4	4
232dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF5	5
233dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF6	6
234dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF7	7
235dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF8	8
236dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF9	9
237dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF10	10
238dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF11	11
239dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF12	12
240dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF13	13
241dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF14	14
242dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PF15	15
243dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC0	16	/* PC */
244dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC1	17
245dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC4	20
246dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC5	21
247dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC6	22
248dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC7	23
249dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC8	24
250dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PC9	25
251dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD0	32	/* PD */
252dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD1	33
253dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD2	34
254dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD3	35
255dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD4	36
256dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD5	37
257dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD6	38
258dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD7	39
259dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD8	40
260dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD9	41
261dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD10      	42
262dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD11      	43
263dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD12      	44
264dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PD13      	45
265dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE0	48	/* PE */
266dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE1	49
267dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE2	50
268dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE3	51
269dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE4	52
270dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE5	53
271dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE6	54
272dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE7	55
273dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE8	56
274dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE9	57
275dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE10      	58
276dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE11      	59
277dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE12      	60
278dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE13      	61
279dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE14      	62
280dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define	GPIO_PE15      	63
281dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
282dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define PORT_F GPIO_PF0
283dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define PORT_C GPIO_PC0
284dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define PORT_D GPIO_PD0
285dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#define PORT_E GPIO_PE0
286dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich#endif
287dc26aec25d1a4e2690df166dbe843344728994ceMichael Hennerich
288590031450a52c373bf72f5fb156fbcc0c78c6f2cMichael Hennerich#if defined(BF527_FAMILY) || defined(BF537_FAMILY)
2891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define MAX_BLACKFIN_GPIOS 48
2901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
2911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF0	0
2921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF1	1
2931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF2	2
2941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF3	3
2951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF4	4
2961394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF5	5
2971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF6	6
2981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF7	7
2991394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF8	8
3001394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF9	9
3011394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF10	10
3021394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF11	11
3031394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF12	12
3041394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF13	13
3051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF14	14
3061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PF15	15
3071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG0	16
3081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG1	17
3091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG2	18
3101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG3	19
3111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG4	20
3121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG5	21
3131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG6	22
3141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG7	23
3151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG8	24
3161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG9	25
3171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG10      	26
3181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG11      	27
3191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG12      	28
3201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG13      	29
3211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG14      	30
3221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PG15      	31
3231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH0	32
3241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH1	33
3251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH2	34
3261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH3	35
3271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH4	36
3281394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH5	37
3291394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH6	38
3301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH7	39
3311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH8	40
3321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH9	41
3331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH10      	42
3341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH11      	43
3351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH12      	44
3361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH13      	45
3371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH14      	46
3381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define	GPIO_PH15      	47
3391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
340678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_F GPIO_PF0
341678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_G GPIO_PG0
342678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_H GPIO_PH0
343678402709602a5e62bb79454f0f41bd952373300Michael Hennerich
3441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
3451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
34624a07a124198153540f8f43d9e91d16227aba66eRoy Huang#ifdef BF548_FAMILY
347639f6571458948b5112be2cf00c0c2c04db2897dBryan Wu#include <mach/gpio.h>
34824a07a124198153540f8f43d9e91d16227aba66eRoy Huang#endif
34924a07a124198153540f8f43d9e91d16227aba66eRoy Huang
3501394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifdef BF561_FAMILY
3511394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define MAX_BLACKFIN_GPIOS 48
3525610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich
3535610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF0	0
3545610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF1	1
3555610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF2	2
3565610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF3	3
3575610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF4	4
3585610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF5	5
3595610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF6	6
3605610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF7	7
3615610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF8	8
3625610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF9	9
3635610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF10	10
3645610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF11	11
3655610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF12	12
3665610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF13	13
3675610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF14	14
3685610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF15	15
3695610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF16	16
3705610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF17	17
3715610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF18	18
3725610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF19	19
3735610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF20	20
3745610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF21	21
3755610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF22	22
3765610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF23	23
3775610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF24	24
3785610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF25	25
3795610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF26	26
3805610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF27	27
3815610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF28	28
3825610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF29	29
3835610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF30	30
3845610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF31	31
3855610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF32	32
3865610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF33	33
3875610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF34	34
3885610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF35	35
3895610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF36	36
3905610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF37	37
3915610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF38	38
3925610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF39	39
3935610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF40	40
3945610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF41	41
3955610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF42	42
3965610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF43	43
3975610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF44	44
3985610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF45	45
3995610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF46	46
4005610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich#define	GPIO_PF47	47
4015610db61cf2945a5e74667e952f2792c96ba53a1Michael Hennerich
402678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_FIO0 GPIO_0
403678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_FIO1 GPIO_16
404678402709602a5e62bb79454f0f41bd952373300Michael Hennerich#define PORT_FIO2 GPIO_32
4051394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif
4061394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifndef __ASSEMBLY__
4081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/***********************************************************
4101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
4111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* FUNCTIONS: Blackfin General Purpose Ports Access Functions
4121394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
4131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* INPUTS/OUTPUTS:
4141394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
4151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
4161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
4171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* DESCRIPTION: These functions abstract direct register access
4181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*              to Blackfin processor General Purpose
4191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*              Ports Regsiters
4201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
4211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* CAUTION: These functions do not belong to the GPIO Driver API
4221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*************************************************************
4231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* MODIFICATION HISTORY :
4241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu**************************************************************/
4251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
426cefe658bca9cf1d4af841c45d170ebd0f881889eMichael Hennerich#ifndef BF548_FAMILY
427a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_dir(unsigned, unsigned short);
428a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_inen(unsigned, unsigned short);
429a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_polar(unsigned, unsigned short);
430a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_edge(unsigned, unsigned short);
431a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_both(unsigned, unsigned short);
432a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_data(unsigned, unsigned short);
433a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_maska(unsigned, unsigned short);
434a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_maskb(unsigned, unsigned short);
435a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpio_toggle(unsigned);
436a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_dir(unsigned, unsigned short);
437a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_inen(unsigned, unsigned short);
438a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_polar(unsigned, unsigned short);
439a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_edge(unsigned, unsigned short);
440a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_both(unsigned, unsigned short);
441a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_data(unsigned, unsigned short);
442a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_maska(unsigned, unsigned short);
443a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid set_gpiop_maskb(unsigned, unsigned short);
444a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_dir(unsigned);
445a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_inen(unsigned);
446a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_polar(unsigned);
447a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_edge(unsigned);
448a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_both(unsigned);
449a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_maska(unsigned);
450a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_maskb(unsigned);
451a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpio_data(unsigned);
452a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_dir(unsigned);
453a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_inen(unsigned);
454a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_polar(unsigned);
455a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_edge(unsigned);
456a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_both(unsigned);
457a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_maska(unsigned);
458a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_maskb(unsigned);
459a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichunsigned short get_gpiop_data(unsigned);
4601394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4611394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustruct gpio_port_t {
4621394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short data;
4631394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy1;
4641394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short data_clear;
4651394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy2;
4661394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short data_set;
4671394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy3;
4681394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short toggle;
4691394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy4;
4701394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maska;
4711394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy5;
4721394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maska_clear;
4731394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy6;
4741394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maska_set;
4751394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy7;
4761394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maska_toggle;
4771394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy8;
4781394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maskb;
4791394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy9;
4801394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maskb_clear;
4811394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy10;
4821394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maskb_set;
4831394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy11;
4841394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maskb_toggle;
4851394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy12;
4861394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dir;
4871394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy13;
4881394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short polar;
4891394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy14;
4901394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short edge;
4911394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy15;
4921394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short both;
4931394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dummy16;
4941394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short inen;
4951394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
49624a07a124198153540f8f43d9e91d16227aba66eRoy Huang#endif
4971394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
4981394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#ifdef CONFIG_PM
4991efc80b53eb54770139219f99657abd92595fc86Michael Hennerich
5001efc80b53eb54770139219f99657abd92595fc86Michael Hennerichunsigned int bfin_pm_standby_setup(void);
5011efc80b53eb54770139219f99657abd92595fc86Michael Hennerichvoid bfin_pm_standby_restore(void);
5021efc80b53eb54770139219f99657abd92595fc86Michael Hennerich
5031efc80b53eb54770139219f99657abd92595fc86Michael Hennerichvoid bfin_gpio_pm_hibernate_restore(void);
5041efc80b53eb54770139219f99657abd92595fc86Michael Hennerichvoid bfin_gpio_pm_hibernate_suspend(void);
505cfefe3c683e0d14c9ce3aeb883c55c7f30c20183Michael Hennerich
506cfefe3c683e0d14c9ce3aeb883c55c7f30c20183Michael Hennerich#ifndef CONFIG_BF54x
5071394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PM_WAKE_RISING	0x1
5081394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PM_WAKE_FALLING	0x2
5091394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PM_WAKE_HIGH	0x4
5101394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PM_WAKE_LOW	0x8
5111394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#define PM_WAKE_BOTH_EDGES	(PM_WAKE_RISING | PM_WAKE_FALLING)
512cfefe3c683e0d14c9ce3aeb883c55c7f30c20183Michael Hennerich#define PM_WAKE_IGNORE	0xF0
5131394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
514a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichint gpio_pm_wakeup_request(unsigned gpio, unsigned char type);
515a2c8cfef6abb33ee49d80c58391ebfc4f94221efMichael Hennerichvoid gpio_pm_wakeup_free(unsigned gpio);
5161394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5171394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wustruct gpio_port_s {
5181394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short data;
5191394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maska;
5201394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short maskb;
5211394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short dir;
5221394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short polar;
5231394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short edge;
5241394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short both;
5251394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short inen;
5261394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5271394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu	unsigned short fer;
528581d62ab304fb43d2ae4de06527676661b171cf6Michael Hennerich	unsigned short reserved;
5291efc80b53eb54770139219f99657abd92595fc86Michael Hennerich	unsigned short mux;
5301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu};
531cfefe3c683e0d14c9ce3aeb883c55c7f30c20183Michael Hennerich#endif /*CONFIG_BF54x*/
5321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif /*CONFIG_PM*/
5331394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu/***********************************************************
5341394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
5351394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* FUNCTIONS: Blackfin GPIO Driver
5361394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
5371394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* INPUTS/OUTPUTS:
5381394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
5391394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
5401394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
5411394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* DESCRIPTION: Blackfin GPIO Driver API
5421394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*
5431394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* CAUTION:
5441394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu*************************************************************
5451394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu* MODIFICATION HISTORY :
5461394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu**************************************************************/
5471394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
5481394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
549a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichint bfin_gpio_request(unsigned gpio, const char *label);
550a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichvoid bfin_gpio_free(unsigned gpio);
551a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichint bfin_gpio_direction_input(unsigned gpio);
552a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichint bfin_gpio_direction_output(unsigned gpio, int value);
553a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichint bfin_gpio_get_value(unsigned gpio);
554a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichvoid bfin_gpio_set_value(unsigned gpio, int value);
5551394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
556cefe658bca9cf1d4af841c45d170ebd0f881889eMichael Hennerich#ifndef BF548_FAMILY
557a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#define bfin_gpio_set_value(gpio, value)    set_gpio_data(gpio, value)
558cefe658bca9cf1d4af841c45d170ebd0f881889eMichael Hennerich#endif
5591394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
560a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#ifdef CONFIG_GPIOLIB
561a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#include <asm-generic/gpio.h>		/* cansleep wrappers */
562a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
563a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_get_value(unsigned int gpio)
564a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
565a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	if (gpio < MAX_BLACKFIN_GPIOS)
566a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich		return bfin_gpio_get_value(gpio);
567a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	else
568a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich		return __gpio_get_value(gpio);
569a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
570a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
571a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline void gpio_set_value(unsigned int gpio, int value)
572a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
573a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	if (gpio < MAX_BLACKFIN_GPIOS)
574a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich		bfin_gpio_set_value(gpio, value);
575a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	else
576a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich		__gpio_set_value(gpio, value);
577a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
578a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
579a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_cansleep(unsigned int gpio)
580a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
581a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return __gpio_cansleep(gpio);
582a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
583a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
584a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#else /* !CONFIG_GPIOLIB */
585a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
586a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_request(unsigned gpio, const char *label)
587a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
588a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_request(gpio, label);
589a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
590a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
591a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline void gpio_free(unsigned gpio)
592a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
593a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_free(gpio);
594a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
595a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
596a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_direction_input(unsigned gpio)
597a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
598a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_direction_input(gpio);
599a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
600a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
601a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_direction_output(unsigned gpio, int value)
602a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
603a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_direction_output(gpio, value);
604a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
605a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
606a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline int gpio_get_value(unsigned gpio)
607a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
608a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_get_value(gpio);
609a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
610a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich
611a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerichstatic inline void gpio_set_value(unsigned gpio, int value)
612a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich{
613a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich	return bfin_gpio_set_value(gpio, value);
614a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich}
6151394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
616301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich#include <asm-generic/gpio.h>		/* cansleep wrappers */
617a4f0b32c331a3da1dd1336f1691504268c63fc14Michael Hennerich#endif	/* !CONFIG_GPIOLIB */
618301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich#include <asm/irq.h>
619301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich
620301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerichstatic inline int gpio_to_irq(unsigned gpio)
621301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich{
622301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich	return (gpio + GPIO_IRQ_BASE);
623301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich}
624301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich
625301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerichstatic inline int irq_to_gpio(unsigned irq)
626301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich{
627301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich	return (irq - GPIO_IRQ_BASE);
628301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich}
629301af2952b35fa527c89b4c0c0c1003d50afc378Michael Hennerich
6301394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif /* __ASSEMBLY__ */
6311394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu
6321394f03221790a988afc3e4b3cb79f2e477246a9Bryan Wu#endif /* __ARCH_BLACKFIN_GPIO_H__ */
633