blob: c175fe4201c4d3c6566dae686adb8dee5d86d73f [file] [log] [blame]
Yann Gautier6a339a42018-07-13 21:33:09 +02001/*
Fabien Dessenne417196f2021-09-21 11:05:06 +02002 * Copyright (c) 2015-2022, STMicroelectronics - All Rights Reserved
Yann Gautier6a339a42018-07-13 21:33:09 +02003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diazc3cf06f2018-11-08 10:20:19 +00007#ifndef STM32_GPIO_H
8#define STM32_GPIO_H
Yann Gautier6a339a42018-07-13 21:33:09 +02009
Antonio Nino Diaz09d40e02018-12-14 00:18:21 +000010#include <lib/utils_def.h>
Yann Gautier6a339a42018-07-13 21:33:09 +020011
Yann Gautier6a339a42018-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)
16#define GPIO_BSRR_OFFSET U(0x18)
17#define GPIO_AFRL_OFFSET U(0x20)
18#define GPIO_AFRH_OFFSET U(0x24)
Yann Gautier1fc21302019-01-17 19:17:47 +010019#define GPIO_SECR_OFFSET U(0x30)
Yann Gautier6a339a42018-07-13 21:33:09 +020020
21#define GPIO_ALT_LOWER_LIMIT U(0x08)
22
Yann Gautier1fc21302019-01-17 19:17:47 +010023#define GPIO_PIN_(_x) U(_x)
24#define GPIO_PIN_MAX GPIO_PIN_(15)
Yann Gautier6a339a42018-07-13 21:33:09 +020025
Yann Gautier1fc21302019-01-17 19:17:47 +010026#define GPIO_ALTERNATE_(_x) U(_x)
Yann Gautier6a339a42018-07-13 21:33:09 +020027#define GPIO_ALTERNATE_MASK U(0x0F)
28
Fabien Dessenne417196f2021-09-21 11:05:06 +020029#define GPIO_MODE_INPUT U(0x00)
30#define GPIO_MODE_OUTPUT U(0x01)
31#define GPIO_MODE_ALTERNATE U(0x02)
32#define GPIO_MODE_ANALOG U(0x03)
Yann Gautier6a339a42018-07-13 21:33:09 +020033#define GPIO_MODE_MASK U(0x03)
34
Fabien Dessenne417196f2021-09-21 11:05:06 +020035#define GPIO_TYPE_PUSH_PULL U(0x00)
36#define GPIO_TYPE_OPEN_DRAIN U(0x01)
37#define GPIO_TYPE_MASK U(0x01)
Yann Gautier6a339a42018-07-13 21:33:09 +020038
Fabien Dessenne417196f2021-09-21 11:05:06 +020039#define GPIO_SPEED_LOW U(0x00)
40#define GPIO_SPEED_MEDIUM U(0x01)
41#define GPIO_SPEED_HIGH U(0x02)
42#define GPIO_SPEED_VERY_HIGH U(0x03)
Yann Gautier6a339a42018-07-13 21:33:09 +020043#define GPIO_SPEED_MASK U(0x03)
44
Fabien Dessenne417196f2021-09-21 11:05:06 +020045#define GPIO_NO_PULL U(0x00)
46#define GPIO_PULL_UP U(0x01)
47#define GPIO_PULL_DOWN U(0x02)
Yann Gautier6a339a42018-07-13 21:33:09 +020048#define GPIO_PULL_MASK U(0x03)
49
Julius Wernerd5dfdeb2019-07-09 13:49:11 -070050#ifndef __ASSEMBLER__
Yann Gautier6a339a42018-07-13 21:33:09 +020051#include <stdint.h>
52
Yann Gautier1fc21302019-01-17 19:17:47 +010053int dt_set_pinctrl_config(int node);
Yann Gautier1fc21302019-01-17 19:17:47 +010054void set_gpio_secure_cfg(uint32_t bank, uint32_t pin, bool secure);
Yann Gautier737ad292021-06-11 10:54:56 +020055void set_gpio_reset_cfg(uint32_t bank, uint32_t pin);
Julius Wernerd5dfdeb2019-07-09 13:49:11 -070056#endif /*__ASSEMBLER__*/
Yann Gautier6a339a42018-07-13 21:33:09 +020057
Antonio Nino Diazc3cf06f2018-11-08 10:20:19 +000058#endif /* STM32_GPIO_H */