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