1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Copyright (C) 2001-2012 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Definitions for UPIO driver
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef UPIO_H
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_H
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enumeration of UPIO features                                         */
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Not all features enumerated here are supported by the hardware.      */
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Use UPIO_Feature() to determine support of a particular feature.     */
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* LEDs */
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED1,
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED2,
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED3,
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED4,
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED5,
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED6,
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED7,
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_LED8,
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* Switches */
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH1,
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH2,
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH3,
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH4,
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH5,
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH6,
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH7,
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH8,
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH9,
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH10,
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH11,
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH12,
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH13,
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH14,
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH15,
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_SWITCH16,
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* Jumpers */
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER1,
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER2,
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER3,
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER4,
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER5,
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER6,
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER7,
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_JUMPER8,
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* Push buttons */
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON1,
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON2,
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON3,
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON4,
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON5,
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON6,
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON7,
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_BUTTON8,
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* General purpose */
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL1,
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL2,
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL3,
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL4,
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL5,
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL6,
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL7,
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL8,
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL9,
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL10,
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL11,
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL12,
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL13,
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL14,
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL15,
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL16,
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL17,
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL18,
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL19,
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL20,
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL21,
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL22,
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL23,
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL24,
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL25,
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL26,
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL27,
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL28,
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL29,
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL30,
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL31,
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_GENERAL32,
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_IN_HIGH,          /* Support for input with interrupt on high signal level. */
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_IN_LOW,           /* Support for input with interrupt on low signal level. */
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_IN_RISE,          /* Support for input with interrupt on rising edge. */
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_FEAT_IN_FALL           /* Support for input with interrupt on falling. */
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tUPIO_FEATURE;
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enumeration of UPIO configurations */
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_OUT,
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_IN,
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_IN_EDGE,
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_IN_LEVEL,
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_NONE
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tUPIO_CONFIG;
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enumeration of UPIO types */
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_LED,                   /* LED */
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_SWITCH,                /* Switch */
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_JUMPER,                /* Jumper */
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_BUTTON,                /* Push-button switch */
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_GENERAL,               /* General purpose I/O */
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_NUMBER_OF_TYPES
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tUPIO_TYPE;
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Enumeration of UPIO states */
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_OFF,
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_ON,
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_TOGGLE
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tUPIO_STATE;
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_SW_BANK2,
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UPIO_SW_BANK3
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tUPIO_SW_BANK;
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Jumper masks */
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER1    0x00000001
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER2    0x00000002
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER3    0x00000004
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER4    0x00000008
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER5    0x00000010
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER6    0x00000020
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER7    0x00000040
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_JUMPER8    0x00000080
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* General purpose i/o masks */
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL1   0x00000001
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL2   0x00000002
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL3   0x00000004
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL4   0x00000008
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL5   0x00000010
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL6   0x00000020
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL7   0x00000040
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL8   0x00000080
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL9   0x00000100
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL10  0x00000200
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL11  0x00000400
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL12  0x00000800
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL13  0x00001000
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL14  0x00002000
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL15  0x00004000
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL16  0x00008000
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL17  0x00010000
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL18  0x00020000
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL19  0x00040000
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL20  0x00080000
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL21  0x00100000
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL22  0x00200000
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL23  0x00400000
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL24  0x00800000
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL25  0x01000000
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL26  0x02000000
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL27  0x04000000
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL28  0x08000000
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL29  0x10000000
206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL30  0x20000000
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL31  0x40000000
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_GENERAL32  0x80000000
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT32 tUPIO;
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* LED masks */
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED1       0x00000001
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED2       0x00000002
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED3       0x00000004
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED4       0x00000008
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED5       0x00000010
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED6       0x00000020
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED7       0x00000040
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED8       0x00000080
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_LED_ALL    (UPIO_LED1 | UPIO_LED2 | UPIO_LED3 | UPIO_LED4 | \
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                        UPIO_LED5 | UPIO_LED6 | UPIO_LED7 | UPIO_LED8)
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Switch masks */
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH1    0x00000001
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH2    0x00000002
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH3    0x00000004
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH4    0x00000008
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH5    0x00000010
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH6    0x00000020
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH7    0x00000040
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH8    0x00000080
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH9    0x00000100
236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH10   0x00000200
237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH11   0x00000400
238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH12   0x00000800
239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH13   0x00001000
240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH14   0x00002000
241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH15   0x00004000
242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_SWITCH16   0x00008000
243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Push button masks */
245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON1    0x00000001
246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON2    0x00000002
247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON3    0x00000004
248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON4    0x00000008
249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON5    0x00000010
250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON6    0x00000020
251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON7    0x00000040
252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UPIO_BUTTON8    0x00000080
253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tUPIO_CBACK)(tUPIO_TYPE type, tUPIO pio, tUPIO_STATE state);
255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" {
258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* API functions for UPIO driver */
261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         UPIO_Init
265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description
267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      Initialize the GPIO service.
268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      This function is typically called once upon system startup.
269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          nothing
271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUDRV_API void UPIO_Init(void *p_cfg);
274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         UPIO_Set
279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description
281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      This function sets one or more GPIO devices to the given state.
282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      Multiple GPIOs of the same type can be masked together to set more
283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      than one GPIO. This function can only be used on types UPIO_LED and
284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      UPIO_GENERAL.
285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Parameters:
287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      type    The type of device.
288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      pio     Indicates the particular GPIOs.
289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      state   The desired state.
290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Output Parameter:
292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns:
295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUDRV_API void UPIO_Set(tUPIO_TYPE type, tUPIO pio, tUPIO_STATE state);
299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         UPIO_Read
304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description
306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      Read the state of a GPIO. This function can be used for any type of
307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      device. Parameter pio can only indicate a single GPIO; multiple GPIOs
308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      cannot be masked together.
309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Parameters:
311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      Type:	The type of device.
312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      pio:    Indicates the particular GUPIO.
313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Output Parameter:
315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns:
318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      State of GPIO (UPIO_ON or UPIO_OFF).
319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUDRV_API tUPIO_STATE UPIO_Read(tUPIO_TYPE type, tUPIO pio);
322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         UPIO_Config
327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      - Configure GPIOs of type UPIO_GENERAL as inputs or outputs
329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  - Configure GPIOs to be polled or interrupt driven
330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                  Currently only support polled GPIOs.
332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Parameters:
334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      type    The type of device.
335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      pio     Indicates the particular GPIOs.
336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      config
337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      cback
338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Output Parameter:
340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns:
343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUDRV_API void UPIO_Config(tUPIO_TYPE type, tUPIO pio, tUPIO_CONFIG config, tUPIO_CBACK *cback);
347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function         UPIO_Feature
352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description
354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      Checks whether a feature of the pio API is supported
355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Input Parameter:
357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      feature     The feature to check
358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Output Parameter:
360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      None.
361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns:
363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**      TRUE if feature is supported, FALSE if it is not.
364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectUDRV_API BOOLEAN UPIO_Feature(tUPIO_FEATURE feature);
367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif  /* ifdef UPIO_H */
373