Line data Source code
1 0 : /* 2 : * Copyright (c) 2023-2024 Analog Devices, Inc. 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_ 8 : #define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_ 9 : 10 : /** 11 : * @brief Pin modes 12 : */ 13 1 : #define MAX32_MODE_GPIO 0x00 14 0 : #define MAX32_MODE_AF1 0x01 15 0 : #define MAX32_MODE_AF2 0x02 16 0 : #define MAX32_MODE_AF3 0x03 17 0 : #define MAX32_MODE_AF4 0x04 18 0 : #define MAX32_MODE_AF5 0x05 19 : 20 : /** 21 : * @brief Mode, port, pin shift number 22 : */ 23 1 : #define MAX32_MODE_SHIFT 0U 24 0 : #define MAX32_MODE_MASK 0x0FU 25 0 : #define MAX32_PORT_SHIFT 4U 26 0 : #define MAX32_PORT_MASK 0x0FU 27 0 : #define MAX32_PIN_SHIFT 8U 28 0 : #define MAX32_PIN_MASK 0xFFU 29 : 30 : /** 31 : * @brief Pin configuration bit field. 32 : * 33 : * Fields: 34 : * 35 : * - mode [ 0 : 3 ] 36 : * - port [ 4 : 7 ] 37 : * - pin [ 8 : 15 ] 38 : * 39 : * @param port Port (0 .. 15) 40 : * @param pin Pin (0..31) 41 : * @param mode Mode (GPIO, AF1, AF2...). 42 : */ 43 1 : #define MAX32_PINMUX(port, pin, mode) \ 44 : ((((port)&MAX32_PORT_MASK) << MAX32_PORT_SHIFT) | \ 45 : (((pin)&MAX32_PIN_MASK) << MAX32_PIN_SHIFT) | \ 46 : (((MAX32_MODE_##mode) & MAX32_MODE_MASK) << MAX32_MODE_SHIFT)) 47 : 48 0 : #define MAX32_PINMUX_PORT(pinmux) (((pinmux) >> MAX32_PORT_SHIFT) & MAX32_PORT_MASK) 49 0 : #define MAX32_PINMUX_PIN(pinmux) (((pinmux) >> MAX32_PIN_SHIFT) & MAX32_PIN_MASK) 50 0 : #define MAX32_PINMUX_MODE(pinmux) (((pinmux) >> MAX32_MODE_SHIFT) & MAX32_MODE_MASK) 51 : 52 : /* Selects the voltage rail used for the pin */ 53 0 : #define MAX32_VSEL_VDDIO 0 54 0 : #define MAX32_VSEL_VDDIOH 1 55 : 56 : /** 57 : * @brief Pin configuration 58 : */ 59 1 : #define MAX32_INPUT_ENABLE_SHIFT 0x00 60 0 : #define MAX32_BIAS_PULL_UP_SHIFT 0x01 61 0 : #define MAX32_BIAS_PULL_DOWN_SHIFT 0x02 62 0 : #define MAX32_OUTPUT_ENABLE_SHIFT 0x03 63 0 : #define MAX32_POWER_SOURCE_SHIFT 0x04 64 0 : #define MAX32_OUTPUT_HIGH_SHIFT 0x05 65 0 : #define MAX32_DRV_STRENGTH_SHIFT 0x06 /* 2 bits */ 66 0 : #define MAX32_DRV_STRENGTH_MASK 0x03 67 : 68 : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_ */