1 /** @file
2 *
3 *  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
4 *
5 *  This program and the accompanying materials
6 *  are licensed and made available under the terms and conditions of the BSD License
7 *  which accompanies this distribution.  The full text of the license may be found at
8 *  http://opensource.org/licenses/bsd-license.php
9 *
10 *  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 *  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 *
13 **/
14 
15 
16 #ifndef __PL061_GPIO_H__
17 #define __PL061_GPIO_H__
18 
19 #include <Protocol/EmbeddedGpio.h>
20 
21 // PL061 GPIO Registers
22 #define PL061_GPIO_DATA_REG             0x000
23 #define PL061_GPIO_DIR_REG              0x400
24 #define PL061_GPIO_IS_REG               0x404
25 #define PL061_GPIO_IBE_REG              0x408
26 #define PL061_GPIO_IEV_REG              0x40C
27 #define PL061_GPIO_IE_REG               0x410
28 #define PL061_GPIO_RIS_REG              0x414
29 #define PL061_GPIO_MIS_REG              0x410
30 #define PL061_GPIO_IC_REG               0x41C
31 #define PL061_GPIO_AFSEL_REG            0x420
32 
33 #define PL061_GPIO_PERIPH_ID0           0xFE0
34 #define PL061_GPIO_PERIPH_ID1           0xFE4
35 #define PL061_GPIO_PERIPH_ID2           0xFE8
36 #define PL061_GPIO_PERIPH_ID3           0xFEC
37 
38 #define PL061_GPIO_PCELL_ID0            0xFF0
39 #define PL061_GPIO_PCELL_ID1            0xFF4
40 #define PL061_GPIO_PCELL_ID2            0xFF8
41 #define PL061_GPIO_PCELL_ID3            0xFFC
42 
43 
44 #define PL061_GPIO_PINS                 8
45 
46 // All bits low except one bit high, native bit length
47 #define GPIO_PIN_MASK(Pin)              (1UL << ((UINTN)(Pin)))
48 
49 #endif  // __PL061_GPIO_H__
50