blob: eeef9da5dba6502e82956b16ef3932eac4867222 [file] [log] [blame]
Yann Gautierd0ca7f42018-07-13 21:33:09 +02001/*
Fabien Dessenne83969cf2021-09-21 11:05:06 +02002 * Copyright (c) 2015-2022, STMicroelectronics - All Rights Reserved
Yann Gautierd0ca7f42018-07-13 21:33:09 +02003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +00007#ifndef STM32_GPIO_H
8#define STM32_GPIO_H
Yann Gautierd0ca7f42018-07-13 21:33:09 +02009
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000010#include <lib/utils_def.h>
Yann Gautierd0ca7f42018-07-13 21:33:09 +020011
Yann Gautierd0ca7f42018-07-13 21:33:09 +020012#define GPIO_MODE_OFFSET U(0x00)
13#define GPIO_TYPE_OFFSET U(0x04)
14#define GPIO_SPEED_OFFSET U(0x08)
15#define GPIO_PUPD_OFFSET U(0x0C)
Fabien Dessennefc51b232021-09-21 14:18:34 +020016#define GPIO_OD_OFFSET U(0x14)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020017#define GPIO_BSRR_OFFSET U(0x18)
18#define GPIO_AFRL_OFFSET U(0x20)
19#define GPIO_AFRH_OFFSET U(0x24)
Yann Gautier038bff22019-01-17 19:17:47 +010020#define GPIO_SECR_OFFSET U(0x30)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020021
22#define GPIO_ALT_LOWER_LIMIT U(0x08)
23
Yann Gautier038bff22019-01-17 19:17:47 +010024#define GPIO_PIN_(_x) U(_x)
25#define GPIO_PIN_MAX GPIO_PIN_(15)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020026
Yann Gautier038bff22019-01-17 19:17:47 +010027#define GPIO_ALTERNATE_(_x) U(_x)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020028#define GPIO_ALTERNATE_MASK U(0x0F)
29
Fabien Dessenne83969cf2021-09-21 11:05:06 +020030#define GPIO_MODE_INPUT U(0x00)
31#define GPIO_MODE_OUTPUT U(0x01)
32#define GPIO_MODE_ALTERNATE U(0x02)
33#define GPIO_MODE_ANALOG U(0x03)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020034#define GPIO_MODE_MASK U(0x03)
35
Fabien Dessenne83969cf2021-09-21 11:05:06 +020036#define GPIO_TYPE_PUSH_PULL U(0x00)
37#define GPIO_TYPE_OPEN_DRAIN U(0x01)
38#define GPIO_TYPE_MASK U(0x01)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020039
Fabien Dessenne83969cf2021-09-21 11:05:06 +020040#define GPIO_SPEED_LOW U(0x00)
41#define GPIO_SPEED_MEDIUM U(0x01)
42#define GPIO_SPEED_HIGH U(0x02)
43#define GPIO_SPEED_VERY_HIGH U(0x03)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020044#define GPIO_SPEED_MASK U(0x03)
45
Fabien Dessenne83969cf2021-09-21 11:05:06 +020046#define GPIO_NO_PULL U(0x00)
47#define GPIO_PULL_UP U(0x01)
48#define GPIO_PULL_DOWN U(0x02)
Yann Gautierd0ca7f42018-07-13 21:33:09 +020049#define GPIO_PULL_MASK U(0x03)
50
Fabien Dessennefc51b232021-09-21 14:18:34 +020051#define GPIO_OD_OUTPUT_LOW U(0x00)
52#define GPIO_OD_OUTPUT_HIGH U(0x01)
53#define GPIO_OD_MASK U(0x01)
54
Julius Werner53456fc2019-07-09 13:49:11 -070055#ifndef __ASSEMBLER__
Yann Gautierd0ca7f42018-07-13 21:33:09 +020056#include <stdint.h>
57
Yann Gautier038bff22019-01-17 19:17:47 +010058int dt_set_pinctrl_config(int node);
Yann Gautier038bff22019-01-17 19:17:47 +010059void set_gpio_secure_cfg(uint32_t bank, uint32_t pin, bool secure);
Yann Gautier2b79c372021-06-11 10:54:56 +020060void set_gpio_reset_cfg(uint32_t bank, uint32_t pin);
Julius Werner53456fc2019-07-09 13:49:11 -070061#endif /*__ASSEMBLER__*/
Yann Gautierd0ca7f42018-07-13 21:33:09 +020062
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000063#endif /* STM32_GPIO_H */