mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-28 02:35:28 +00:00
This is a straightforward conversion of existing tables into X-Macro style definitions for the GPIO alternate functions. This change in itself, is not particularly powerful, but having all GPIO settings in a single file makes a board easier to understand. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=none TEST=make buildall -j Followed by manual testing of interrupt on change and UART functionality on STM32F0 based discovery board. Change-Id: Ib7f1f014f4bd289d7c0ac3100470ba2dc71ca579 Reviewed-on: https://chromium-review.googlesource.com/207987 Reviewed-by: Randall Spangler <rspangler@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
66 lines
2.6 KiB
C
66 lines
2.6 KiB
C
/* -*- 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
|