18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  Copyright (C) 2012 John Crispin <john@phrozen.org>
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#ifndef _RT288X_PINMUX_H__
78c2ecf20Sopenharmony_ci#define _RT288X_PINMUX_H__
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#define FUNC(name, value, pin_first, pin_count) \
108c2ecf20Sopenharmony_ci	{ name, value, pin_first, pin_count }
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#define GRP(_name, _func, _mask, _shift) \
138c2ecf20Sopenharmony_ci	{ .name = _name, .mask = _mask, .shift = _shift, \
148c2ecf20Sopenharmony_ci	  .func = _func, .gpio = _mask, \
158c2ecf20Sopenharmony_ci	  .func_count = ARRAY_SIZE(_func) }
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define GRP_G(_name, _func, _mask, _gpio, _shift) \
188c2ecf20Sopenharmony_ci	{ .name = _name, .mask = _mask, .shift = _shift, \
198c2ecf20Sopenharmony_ci	  .func = _func, .gpio = _gpio, \
208c2ecf20Sopenharmony_ci	  .func_count = ARRAY_SIZE(_func) }
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cistruct rt2880_pmx_group;
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistruct rt2880_pmx_func {
258c2ecf20Sopenharmony_ci	const char *name;
268c2ecf20Sopenharmony_ci	const char value;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	int pin_first;
298c2ecf20Sopenharmony_ci	int pin_count;
308c2ecf20Sopenharmony_ci	int *pins;
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci	int *groups;
338c2ecf20Sopenharmony_ci	int group_count;
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci	int enabled;
368c2ecf20Sopenharmony_ci};
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_cistruct rt2880_pmx_group {
398c2ecf20Sopenharmony_ci	const char *name;
408c2ecf20Sopenharmony_ci	int enabled;
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci	const u32 shift;
438c2ecf20Sopenharmony_ci	const char mask;
448c2ecf20Sopenharmony_ci	const char gpio;
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	struct rt2880_pmx_func *func;
478c2ecf20Sopenharmony_ci	int func_count;
488c2ecf20Sopenharmony_ci};
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciextern struct rt2880_pmx_group *rt2880_pinmux_data;
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci#endif
53