mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 00:51:35 +00:00
pinctrl: pinconf-generic: Allow driver to specify DT params
Additionally to the generic DT parameters, allow drivers to provide driver-specific DT parameters to be used with the generic parser infrastructure. To achieve this 'struct pinctrl_desc' is extended to pass custom pinconf option to the core. In order to pass this kind of information, the related data structures - 'struct pinconf_generic_dt_params', 'pin_config_item' - are moved from pinconf internals to the pinconf-generic header. Additionally pinconfg-generic is refactored to not only iterate over the generic pinconf parameters but also take the parameters into account that are provided through the driver's 'struct pinctrl_desc'. In particular 'pinconf_generic_parse_dt_config()' and 'pinconf_generic_dump' helpers are split into two parts each. In order to have a more generic helper that can be used to process the generic parameters as well as the driver-specific ones. v2: - fix typo - add missing documentation for @conf_items member in struct - rebase to pinctrl/devel: conflict in abx500 - rename _pinconf_generic_dump() to pinconf_generic_dump_one() - removed '_' from _parse_dt_cfg() - removed BUG_ONs, error condition is handled in if statements - removed pinconf_generic_dump_group() & pinconf_generic_dump_pin helpers - fixed up corresponding call sites - renamed pinconf_generic_dump() to pinconf_generic_dump_pins() - added kernel-doc to pinconf_generic_dump_pins() - add kernel-doc - more verbose commit message Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Tested-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
31c89c9596
commit
dd4d01f7ba
10 changed files with 144 additions and 107 deletions
|
@ -115,6 +115,18 @@ enum pin_config_param {
|
|||
PIN_CONFIG_END = 0x7FFF,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
#define PCONFDUMP(a, b, c, d) { .param = a, .display = b, .format = c, \
|
||||
.has_arg = d }
|
||||
|
||||
struct pin_config_item {
|
||||
const enum pin_config_param param;
|
||||
const char * const display;
|
||||
const char * const format;
|
||||
bool has_arg;
|
||||
};
|
||||
#endif /* CONFIG_DEBUG_FS */
|
||||
|
||||
/*
|
||||
* Helpful configuration macro to be used in tables etc.
|
||||
*/
|
||||
|
@ -150,6 +162,12 @@ static inline unsigned long pinconf_to_config_packed(enum pin_config_param param
|
|||
struct pinctrl_dev;
|
||||
struct pinctrl_map;
|
||||
|
||||
struct pinconf_generic_dt_params {
|
||||
const char * const property;
|
||||
enum pin_config_param param;
|
||||
u32 default_value;
|
||||
};
|
||||
|
||||
int pinconf_generic_dt_subnode_to_map(struct pinctrl_dev *pctldev,
|
||||
struct device_node *np, struct pinctrl_map **map,
|
||||
unsigned *reserved_maps, unsigned *num_maps,
|
||||
|
|
|
@ -24,6 +24,7 @@ struct pinctrl_dev;
|
|||
struct pinctrl_map;
|
||||
struct pinmux_ops;
|
||||
struct pinconf_ops;
|
||||
struct pin_config_item;
|
||||
struct gpio_chip;
|
||||
struct device_node;
|
||||
|
||||
|
@ -117,6 +118,9 @@ struct pinctrl_ops {
|
|||
* @confops: pin config operations vtable, if you support pin configuration in
|
||||
* your driver
|
||||
* @owner: module providing the pin controller, used for refcounting
|
||||
* @num_dt_params: Number of driver-specific DT parameters
|
||||
* @params: List of DT parameters
|
||||
* @conf_items: Information how to print @params in debugfs
|
||||
*/
|
||||
struct pinctrl_desc {
|
||||
const char *name;
|
||||
|
@ -126,6 +130,11 @@ struct pinctrl_desc {
|
|||
const struct pinmux_ops *pmxops;
|
||||
const struct pinconf_ops *confops;
|
||||
struct module *owner;
|
||||
#if defined(CONFIG_GENERIC_PINCONF) && defined(CONFIG_OF)
|
||||
unsigned int num_dt_params;
|
||||
const struct pinconf_generic_dt_params *params;
|
||||
const struct pin_config_item *conf_items;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* External interface to pin controller */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue