summaryrefslogtreecommitdiff
path: root/os/drivers/pinctrl/stm32f769_pinctrl.h
blob: 85a6cb608221a32fcbc5b57b27084e1d08d84d87 (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
66
67
68
69
#ifndef __DT_BINDINGS_PINCTRL_STM32F769_AF_H__
#define __DT_BINDINGS_PINCTRL_STM32F769_AF_H__

#define STM32F769_AF0 0U
#define STM32F769_AF1 1U
#define STM32F769_AF2 2U
#define STM32F769_AF3 3U
#define STM32F769_AF4 4U
#define STM32F769_AF5 5U
#define STM32F769_AF6 6U
#define STM32F769_AF7 7U
#define STM32F769_AF8 8U
#define STM32F769_AF9 9U
#define STM32F769_AF10 10U
#define STM32F769_AF11 11U
#define STM32F769_AF12 12U
#define STM32F769_AF13 13U
#define STM32F769_AF14 14U
#define STM32F769_AF15 15U
#define STM32F769_ANALOG 16U

#define STM32F769_PIN_MSK 0xFU
#define STM32F769_PIN_POS 0U
#define STM32F769_PORT_MSK 0xFU
#define STM32F769_PORT_POS 4U
#define STM32F769_AF_MSK 0x1FU
#define STM32F769_AF_POS 8U

#define STM32F769_PORTA 0
#define STM32F769_PORTB 1
#define STM32F769_PORTC 2
#define STM32F769_PORTD 3
#define STM32F769_PORTE 4
#define STM32F769_PORTF 5
#define STM32F769_PORTG 6
#define STM32F769_PORTH 7
#define STM32F769_PORTI 8
#define STM32F769_PORTJ 9
#define STM32F769_PORTK 10

#define STM32F769_PORT_GET(pinmux)                        \
  (((pinmux) >> STM32F769_PORT_POS) & STM32F769_PORT_MSK)

#define STM32F769_PIN_GET(pinmux)                       \
  (((pinmux) >> STM32F769_PIN_POS) & STM32F769_PIN_MSK)

#define STM32F769_AF_GET(pinmux)                      \
  (((pinmux) >> STM32F769_AF_POS) & STM32F769_AF_MSK)

/**
 * - 0..3: pin
 * - 4..7: port
 * - 8..13: af
 * 
 * port: Port ('A'..'K')
 * pin: Pin (0..15)
 * af: Alternate function (ANALOG, AFx, x=0..15)
 */

#define STM32F769_PINMUX_AF(port, pin, af)                        \
  ((((port) & STM32F769_PORT_MSK) << STM32F769_PORT_POS) |        \
   (((pin) & STM32F769_PIN_MSK) << STM32F769_PIN_POS) |           \
   (((STM32F769_ ## af) & STM32F769_AF_MSK) << STM32F769_AF_POS))

void stm32f769_pinctrl_configure_pin(uint32_t pin);
GPIO_TypeDef *stm32f769_get_port(unsigned int port_idx);
uint16_t stm32f769_get_port_clkid(unsigned int port_idx);

#endif/*__DT_BINDINGS_PINCTRL_STM32F769_AF_H_ */