Loading...
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | /*
* Copyright (c) 2015 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* Public APIs for Pinmux drivers
*/
#ifndef ZEPHYR_INCLUDE_DRIVERS_PINMUX_H_
#define ZEPHYR_INCLUDE_DRIVERS_PINMUX_H_
/**
* @brief Pinmux Interface
* @defgroup pinmux_interface Pinmux Interface
* @ingroup io_interfaces
* @{
*/
#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 pmux_set
* @brief Callback API upon setting a PIN's function
* See pinmux_pin_set() for argument description
*/
typedef int (*pmux_set)(const struct device *dev, uint32_t pin, uint32_t func);
/**
* @typedef pmux_get
* @brief Callback API upon getting a PIN's function
* See pinmux_pin_get() for argument description
*/
typedef int (*pmux_get)(const struct device *dev, uint32_t pin,
uint32_t *func);
/**
* @typedef pmux_pullup
* @brief Callback API upon setting a PIN's pullup
* See pinmix_pin_pullup() for argument description
*/
typedef int (*pmux_pullup)(const struct device *dev, uint32_t pin,
uint8_t func);
/**
* @typedef pmux_input
* @brief Callback API upon setting a PIN's input function
* See pinmux_input() for argument description
*/
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 /* ZEPHYR_INCLUDE_DRIVERS_PINMUX_H_ */
|