These pinconf/pinctrl definitions will be used by the next patches. The definitions was taken from public headers of linux-7.0. It's used by several linux pinctrl drivers, so it might be helpful for U-Boot as well. Pinconf definitions are placed near the corresponding U-Boot definitions in file include/dm/pinctrl.h. Pin/group/function definitions stored within the same path as in linux (include/linux/pinctrl/pinctrl.h). Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> Reviewed-by: David Lechner <dlechner@baylibre.com>
75 lines
1.8 KiB
C
75 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#ifndef __LINUX_PINCTRL_PINCTRL_H
|
|
#define __LINUX_PINCTRL_PINCTRL_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
/**
|
|
* struct pingroup - provides information on pingroup
|
|
* @name: a name for pingroup
|
|
* @pins: an array of pins in the pingroup
|
|
* @npins: number of pins in the pingroup
|
|
*/
|
|
struct pingroup {
|
|
const char *name;
|
|
const unsigned int *pins;
|
|
size_t npins;
|
|
};
|
|
|
|
/* Convenience macro to define a single named or anonymous pingroup */
|
|
#define PINCTRL_PINGROUP(_name, _pins, _npins) \
|
|
(struct pingroup) { \
|
|
.name = _name, \
|
|
.pins = _pins, \
|
|
.npins = _npins, \
|
|
}
|
|
|
|
/**
|
|
* struct pinctrl_pin_desc - boards/machines provide information on their
|
|
* pins, pads or other muxable units in this struct
|
|
* @number: unique pin number from the global pin number space
|
|
* @name: a name for this pin
|
|
* @drv_data: driver-defined per-pin data. pinctrl core does not touch this
|
|
*/
|
|
struct pinctrl_pin_desc {
|
|
unsigned int number;
|
|
const char *name;
|
|
void *drv_data;
|
|
};
|
|
|
|
/* Convenience macro to define a single named or anonymous pin descriptor */
|
|
#define PINCTRL_PIN(_number, _name) \
|
|
(struct pinctrl_pin_desc) { \
|
|
.number = _number, \
|
|
.name = _name, \
|
|
}
|
|
|
|
#define PINCTRL_PIN_ANON(_number) \
|
|
(struct pinctrl_pin_desc) { \
|
|
.number = _number, \
|
|
}
|
|
|
|
/**
|
|
* struct pinfunction - Description about a function
|
|
* @name: Name of the function
|
|
* @groups: An array of groups for this function
|
|
* @ngroups: Number of groups in @groups
|
|
* @flags: Additional pin function flags
|
|
*/
|
|
struct pinfunction {
|
|
const char *name;
|
|
const char * const *groups;
|
|
size_t ngroups;
|
|
};
|
|
|
|
/* Convenience macro to define a single named pinfunction */
|
|
#define PINCTRL_PINFUNCTION(_name, _groups, _ngroups) \
|
|
(struct pinfunction) { \
|
|
.name = (_name), \
|
|
.groups = (_groups), \
|
|
.ngroups = (_ngroups), \
|
|
}
|
|
|
|
#endif /* __LINUX_PINCTRL_PINCTRL_H */
|