linux/drivers/pinctrl/berlin/berlin.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Marvell Berlin SoC pinctrl driver.
   4 *
   5 * Copyright (C) 2014 Marvell Technology Group Ltd.
   6 *
   7 * Antoine Ténart <antoine.tenart@free-electrons.com>
   8 */
   9
  10#ifndef __PINCTRL_BERLIN_H
  11#define __PINCTRL_BERLIN_H
  12
  13struct berlin_desc_function {
  14        const char      *name;
  15        u8              muxval;
  16};
  17
  18struct berlin_desc_group {
  19        const char                      *name;
  20        u8                              offset;
  21        u8                              bit_width;
  22        u8                              lsb;
  23        struct berlin_desc_function     *functions;
  24};
  25
  26struct berlin_pinctrl_desc {
  27        const struct berlin_desc_group  *groups;
  28        unsigned                        ngroups;
  29};
  30
  31struct berlin_pinctrl_function {
  32        const char      *name;
  33        const char      **groups;
  34        unsigned        ngroups;
  35};
  36
  37#define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...)         \
  38        {                                                               \
  39                .name = _name,                                          \
  40                .offset = _offset,                                      \
  41                .bit_width = _width,                                    \
  42                .lsb = _lsb,                                            \
  43                .functions = (struct berlin_desc_function[]){           \
  44                        __VA_ARGS__, { } },                             \
  45        }
  46
  47#define BERLIN_PINCTRL_FUNCTION(_muxval, _name)         \
  48        {                                               \
  49                .name = _name,                          \
  50                .muxval = _muxval,                      \
  51        }
  52
  53#define BERLIN_PINCTRL_FUNCTION_UNKNOWN         {}
  54
  55int berlin_pinctrl_probe(struct platform_device *pdev,
  56                         const struct berlin_pinctrl_desc *desc);
  57
  58int berlin_pinctrl_probe_regmap(struct platform_device *pdev,
  59                                const struct berlin_pinctrl_desc *desc,
  60                                struct regmap *regmap);
  61
  62#endif /* __PINCTRL_BERLIN_H */
  63