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