linux/drivers/pinctrl/pinctrl-adi2.h
<<
>>
Prefs
   1/*
   2 * Pinctrl Driver for ADI GPIO2 controller
   3 *
   4 * Copyright 2007-2013 Analog Devices Inc.
   5 *
   6 * Licensed under the GPLv2 or later
   7 */
   8
   9#ifndef PINCTRL_PINCTRL_ADI2_H
  10#define PINCTRL_PINCTRL_ADI2_H
  11
  12#include <linux/pinctrl/pinctrl.h>
  13
  14 /**
  15 * struct adi_pin_group - describes a pin group
  16 * @name: the name of this pin group
  17 * @pins: an array of pins
  18 * @num: the number of pins in this array
  19 */
  20struct adi_pin_group {
  21        const char *name;
  22        const unsigned *pins;
  23        const unsigned num;
  24        const unsigned short *mux;
  25};
  26
  27#define ADI_PIN_GROUP(n, p, m)  \
  28        {                       \
  29                .name = n,      \
  30                .pins = p,      \
  31                .num = ARRAY_SIZE(p),   \
  32                .mux = m,                       \
  33        }
  34
  35 /**
  36 * struct adi_pmx_func - describes function mux setting of pin groups
  37 * @name: the name of this function mux setting
  38 * @groups: an array of pin groups
  39 * @num_groups: the number of pin groups in this array
  40 * @mux: the function mux setting array, end by zero
  41 */
  42struct adi_pmx_func {
  43        const char *name;
  44        const char * const *groups;
  45        const unsigned num_groups;
  46};
  47
  48#define ADI_PMX_FUNCTION(n, g)          \
  49        {                                       \
  50                .name = n,                      \
  51                .groups = g,                    \
  52                .num_groups = ARRAY_SIZE(g),    \
  53        }
  54
  55/**
  56 * struct adi_pinctrl_soc_data - ADI pin controller per-SoC configuration
  57 * @functions:  The functions supported on this SoC.
  58 * @nfunction:  The number of entries in @functions.
  59 * @groups:     An array describing all pin groups the pin SoC supports.
  60 * @ngroups:    The number of entries in @groups.
  61 * @pins:       An array describing all pins the pin controller affects.
  62 * @npins:      The number of entries in @pins.
  63 */
  64struct adi_pinctrl_soc_data {
  65        const struct adi_pmx_func *functions;
  66        int nfunctions;
  67        const struct adi_pin_group *groups;
  68        int ngroups;
  69        const struct pinctrl_pin_desc *pins;
  70        int npins;
  71};
  72
  73void adi_pinctrl_soc_init(const struct adi_pinctrl_soc_data **soc);
  74
  75#endif /* PINCTRL_PINCTRL_ADI2_H */
  76