blob: cf4fbb319a4bd6c2318ce067fb5dacea9bcd6730 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/* -*- mode:c -*-
*
* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* The GPIO macro is used to define a new GPIO pin name and function.
*
* The name is used to populate the gpio_signal enum by first prepending GPIO_
* to the name. It is also used to construct the string name that is presented
* in the shell interface. Similarly, the port parameter has GPIO_ prepended to
* it before it is used to initialize the port base address of a gpio_info
* struct. The pin number is used to create a bitmask. The flags and signal
* parameters are passed on to the gpio_info directly.
*/
#ifndef GPIO
#define GPIO(name, port, pin, flags, signal)
#endif
/*
* The ALTERNATE macro is used associate a GPIO with an alternate function.
*
* Alternate functions allow hardware peripherals access to GPIO pins.
* Modules use gpio_config_module to enable and disable the alternate functions
* of GPIOs assigned to that module. So if the module parameter is MODULE_UART
* then when the uart_init function is called the GPIO will be switched to its
* alternate function mode. The function parameter is chip/variant specific
* and will usually need to be looked up in the datasheet. The flags parameter
* has the same meaning as in the GPIO macro above. This macro can assign
* multiple pins on the same port to a module, the second parameter is the
* bitmask of pins to be assigned.
*/
#ifndef ALTERNATE
#define ALTERNATE(port, mask, function, module, flags)
#endif
/*
* The UNIMPLEMENTED macro is used to define a GPIO that doesn't actually exist.
*
* Some GPIO names are well known and used by generic code, ENTERING_RW and WP_L
* are examples. If a particular board doesn't have a GPIO assigned to such a
* function/name then it should specify that that GPIO is not implemented using
* the UNIMPLEMENTED macro below in the board gpio.inc file. This macro creates
* an entry in the gpio_signal enum and the gpio_list array that is initialized
* to use the DUMMY_GPIO_BANK and a bitmask of zero. The chip GPIO layer is
* implemented such that writes to and reads from DUMMY_GPIO_BANK with a bitmask
* of zero are harmless.
*
* This allows common code that expects these GPIOs to exist to compile and have
* some reduced functionality.
*/
#ifndef UNIMPLEMENTED
#define UNIMPLEMENTED(name)
#endif
#include "gpio.inc"
/*
* Once the gpio.inc file has been included these macros are no longer needed.
*/
#undef GPIO
#undef ALTERNATE
#undef UNIMPLEMENTED
|