123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #ifndef ZEPHYR_INCLUDE_DRIVERS_PINMUX_H_
- #define ZEPHYR_INCLUDE_DRIVERS_PINMUX_H_
- #include <zephyr/types.h>
- #include <device.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define PINMUX_FUNC_A 0
- #define PINMUX_FUNC_B 1
- #define PINMUX_FUNC_C 2
- #define PINMUX_FUNC_D 3
- #define PINMUX_FUNC_E 4
- #define PINMUX_FUNC_F 5
- #define PINMUX_FUNC_G 6
- #define PINMUX_FUNC_H 7
- #define PINMUX_FUNC_I 8
- #define PINMUX_FUNC_J 9
- #define PINMUX_FUNC_K 10
- #define PINMUX_FUNC_L 11
- #define PINMUX_FUNC_M 12
- #define PINMUX_FUNC_N 13
- #define PINMUX_FUNC_O 14
- #define PINMUX_FUNC_P 15
- #define PINMUX_PULLUP_ENABLE (0x1)
- #define PINMUX_PULLUP_DISABLE (0x0)
- #define PINMUX_INPUT_ENABLED (0x1)
- #define PINMUX_OUTPUT_ENABLED (0x0)
- typedef int (*pmux_set)(const struct device *dev, uint32_t pin, uint32_t func);
- typedef int (*pmux_get)(const struct device *dev, uint32_t pin,
- uint32_t *func);
- typedef int (*pmux_pullup)(const struct device *dev, uint32_t pin,
- uint8_t func);
- typedef int (*pmux_input)(const struct device *dev, uint32_t pin,
- uint8_t func);
- __subsystem struct pinmux_driver_api {
- pmux_set set;
- pmux_get get;
- pmux_pullup pullup;
- pmux_input input;
- };
- static inline int pinmux_pin_set(const struct device *dev, uint32_t pin,
- uint32_t func)
- {
- const struct pinmux_driver_api *api =
- (const struct pinmux_driver_api *)dev->api;
- return api->set(dev, pin, func);
- }
- static inline int pinmux_pin_get(const struct device *dev, uint32_t pin,
- uint32_t *func)
- {
- const struct pinmux_driver_api *api =
- (const struct pinmux_driver_api *)dev->api;
- return api->get(dev, pin, func);
- }
- static inline int pinmux_pin_pullup(const struct device *dev, uint32_t pin,
- uint8_t func)
- {
- const struct pinmux_driver_api *api =
- (const struct pinmux_driver_api *)dev->api;
- return api->pullup(dev, pin, func);
- }
- static inline int pinmux_pin_input_enable(const struct device *dev,
- uint32_t pin,
- uint8_t func)
- {
- const struct pinmux_driver_api *api =
- (const struct pinmux_driver_api *)dev->api;
- return api->input(dev, pin, func);
- }
- #ifdef __cplusplus
- }
- #endif
- #endif
|