linux/drivers/pinctrl/meson/pinctrl-meson8-pmx.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * First generation of pinmux driver for Amlogic Meson SoCs
   4 *
   5 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
   6 * Copyright (C) 2017 Jerome Brunet  <jbrunet@baylibre.com>
   7 */
   8
   9struct meson8_pmx_data {
  10        bool is_gpio;
  11        unsigned int reg;
  12        unsigned int bit;
  13};
  14
  15#define PMX_DATA(r, b, g)                                               \
  16        {                                                               \
  17                .reg = r,                                               \
  18                .bit = b,                                               \
  19                .is_gpio = g,                                           \
  20        }
  21
  22#define GROUP(grp, r, b)                                                \
  23        {                                                               \
  24                .name = #grp,                                           \
  25                .pins = grp ## _pins,                                   \
  26                .num_pins = ARRAY_SIZE(grp ## _pins),                   \
  27                .data = (const struct meson8_pmx_data[]){               \
  28                        PMX_DATA(r, b, false),                          \
  29                },                                                      \
  30         }
  31
  32#define GPIO_GROUP(gpio)                                                \
  33        {                                                               \
  34                .name = #gpio,                                          \
  35                .pins = (const unsigned int[]){ gpio },                 \
  36                .num_pins = 1,                                          \
  37                .data = (const struct meson8_pmx_data[]){               \
  38                        PMX_DATA(0, 0, true),                           \
  39                },                                                      \
  40        }
  41
  42extern const struct pinmux_ops meson8_pmx_ops;
  43