cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinmux.h (4310B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Internal interface between the core pin control system and the
      4 * pinmux portions
      5 *
      6 * Copyright (C) 2011 ST-Ericsson SA
      7 * Written on behalf of Linaro for ST-Ericsson
      8 * Based on bits of regulator core, gpio core and clk core
      9 *
     10 * Author: Linus Walleij <linus.walleij@linaro.org>
     11 */
     12#ifdef CONFIG_PINMUX
     13
     14int pinmux_check_ops(struct pinctrl_dev *pctldev);
     15
     16int pinmux_validate_map(const struct pinctrl_map *map, int i);
     17
     18bool pinmux_can_be_used_for_gpio(struct pinctrl_dev *pctldev, unsigned pin);
     19
     20int pinmux_request_gpio(struct pinctrl_dev *pctldev,
     21			struct pinctrl_gpio_range *range,
     22			unsigned pin, unsigned gpio);
     23void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin,
     24		      struct pinctrl_gpio_range *range);
     25int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
     26			  struct pinctrl_gpio_range *range,
     27			  unsigned pin, bool input);
     28
     29int pinmux_map_to_setting(const struct pinctrl_map *map,
     30			  struct pinctrl_setting *setting);
     31void pinmux_free_setting(const struct pinctrl_setting *setting);
     32int pinmux_enable_setting(const struct pinctrl_setting *setting);
     33void pinmux_disable_setting(const struct pinctrl_setting *setting);
     34
     35#else
     36
     37static inline int pinmux_check_ops(struct pinctrl_dev *pctldev)
     38{
     39	return 0;
     40}
     41
     42static inline int pinmux_validate_map(const struct pinctrl_map *map, int i)
     43{
     44	return 0;
     45}
     46
     47static inline bool pinmux_can_be_used_for_gpio(struct pinctrl_dev *pctldev,
     48					       unsigned pin)
     49{
     50	return true;
     51}
     52
     53static inline int pinmux_request_gpio(struct pinctrl_dev *pctldev,
     54			struct pinctrl_gpio_range *range,
     55			unsigned pin, unsigned gpio)
     56{
     57	return 0;
     58}
     59
     60static inline void pinmux_free_gpio(struct pinctrl_dev *pctldev,
     61				    unsigned pin,
     62				    struct pinctrl_gpio_range *range)
     63{
     64}
     65
     66static inline int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
     67					struct pinctrl_gpio_range *range,
     68					unsigned pin, bool input)
     69{
     70	return 0;
     71}
     72
     73static inline int pinmux_map_to_setting(const struct pinctrl_map *map,
     74			  struct pinctrl_setting *setting)
     75{
     76	return 0;
     77}
     78
     79static inline void pinmux_free_setting(const struct pinctrl_setting *setting)
     80{
     81}
     82
     83static inline int pinmux_enable_setting(const struct pinctrl_setting *setting)
     84{
     85	return 0;
     86}
     87
     88static inline void pinmux_disable_setting(const struct pinctrl_setting *setting)
     89{
     90}
     91
     92#endif
     93
     94#if defined(CONFIG_PINMUX) && defined(CONFIG_DEBUG_FS)
     95
     96void pinmux_show_map(struct seq_file *s, const struct pinctrl_map *map);
     97void pinmux_show_setting(struct seq_file *s,
     98			 const struct pinctrl_setting *setting);
     99void pinmux_init_device_debugfs(struct dentry *devroot,
    100				struct pinctrl_dev *pctldev);
    101
    102#else
    103
    104static inline void pinmux_show_map(struct seq_file *s,
    105				   const struct pinctrl_map *map)
    106{
    107}
    108
    109static inline void pinmux_show_setting(struct seq_file *s,
    110				       const struct pinctrl_setting *setting)
    111{
    112}
    113
    114static inline void pinmux_init_device_debugfs(struct dentry *devroot,
    115					      struct pinctrl_dev *pctldev)
    116{
    117}
    118
    119#endif
    120
    121#ifdef CONFIG_GENERIC_PINMUX_FUNCTIONS
    122
    123/**
    124 * struct function_desc - generic function descriptor
    125 * @name: name of the function
    126 * @group_names: array of pin group names
    127 * @num_group_names: number of pin group names
    128 * @data: pin controller driver specific data
    129 */
    130struct function_desc {
    131	const char *name;
    132	const char * const *group_names;
    133	int num_group_names;
    134	void *data;
    135};
    136
    137int pinmux_generic_get_function_count(struct pinctrl_dev *pctldev);
    138
    139const char *
    140pinmux_generic_get_function_name(struct pinctrl_dev *pctldev,
    141				 unsigned int selector);
    142
    143int pinmux_generic_get_function_groups(struct pinctrl_dev *pctldev,
    144				       unsigned int selector,
    145				       const char * const **groups,
    146				       unsigned * const num_groups);
    147
    148struct function_desc *pinmux_generic_get_function(struct pinctrl_dev *pctldev,
    149						  unsigned int selector);
    150
    151int pinmux_generic_add_function(struct pinctrl_dev *pctldev,
    152				const char *name,
    153				const char * const *groups,
    154				unsigned const num_groups,
    155				void *data);
    156
    157int pinmux_generic_remove_function(struct pinctrl_dev *pctldev,
    158				   unsigned int selector);
    159
    160void pinmux_generic_free_functions(struct pinctrl_dev *pctldev);
    161
    162#else
    163
    164static inline void pinmux_generic_free_functions(struct pinctrl_dev *pctldev)
    165{
    166}
    167
    168#endif /* CONFIG_GENERIC_PINMUX_FUNCTIONS */