0001
0002
0003
0004
0005
0006 #ifndef _PINCTRL_RALINK_H__
0007 #define _PINCTRL_RALINK_H__
0008
0009 #define FUNC(name, value, pin_first, pin_count) \
0010 { name, value, pin_first, pin_count }
0011
0012 #define GRP(_name, _func, _mask, _shift) \
0013 { .name = _name, .mask = _mask, .shift = _shift, \
0014 .func = _func, .gpio = _mask, \
0015 .func_count = ARRAY_SIZE(_func) }
0016
0017 #define GRP_G(_name, _func, _mask, _gpio, _shift) \
0018 { .name = _name, .mask = _mask, .shift = _shift, \
0019 .func = _func, .gpio = _gpio, \
0020 .func_count = ARRAY_SIZE(_func) }
0021
0022 struct ralink_pmx_group;
0023
0024 struct ralink_pmx_func {
0025 const char *name;
0026 const char value;
0027
0028 int pin_first;
0029 int pin_count;
0030 int *pins;
0031
0032 int *groups;
0033 int group_count;
0034
0035 int enabled;
0036 };
0037
0038 struct ralink_pmx_group {
0039 const char *name;
0040 int enabled;
0041
0042 const u32 shift;
0043 const char mask;
0044 const char gpio;
0045
0046 struct ralink_pmx_func *func;
0047 int func_count;
0048 };
0049
0050 int ralink_pinctrl_init(struct platform_device *pdev,
0051 struct ralink_pmx_group *data);
0052
0053 #endif