162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2012 John Crispin <john@phrozen.org> 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _PINCTRL_MTMIPS_H__ 762306a36Sopenharmony_ci#define _PINCTRL_MTMIPS_H__ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define FUNC(name, value, pin_first, pin_count) \ 1062306a36Sopenharmony_ci { name, value, pin_first, pin_count } 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define GRP(_name, _func, _mask, _shift) \ 1362306a36Sopenharmony_ci { .name = _name, .mask = _mask, .shift = _shift, \ 1462306a36Sopenharmony_ci .func = _func, .gpio = _mask, \ 1562306a36Sopenharmony_ci .func_count = ARRAY_SIZE(_func) } 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define GRP_G(_name, _func, _mask, _gpio, _shift) \ 1862306a36Sopenharmony_ci { .name = _name, .mask = _mask, .shift = _shift, \ 1962306a36Sopenharmony_ci .func = _func, .gpio = _gpio, \ 2062306a36Sopenharmony_ci .func_count = ARRAY_SIZE(_func) } 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct mtmips_pmx_group; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct mtmips_pmx_func { 2562306a36Sopenharmony_ci const char *name; 2662306a36Sopenharmony_ci const char value; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci int pin_first; 2962306a36Sopenharmony_ci int pin_count; 3062306a36Sopenharmony_ci int *pins; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci int *groups; 3362306a36Sopenharmony_ci int group_count; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci int enabled; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct mtmips_pmx_group { 3962306a36Sopenharmony_ci const char *name; 4062306a36Sopenharmony_ci int enabled; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci const u32 shift; 4362306a36Sopenharmony_ci const char mask; 4462306a36Sopenharmony_ci const char gpio; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci struct mtmips_pmx_func *func; 4762306a36Sopenharmony_ci int func_count; 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciint mtmips_pinctrl_init(struct platform_device *pdev, 5162306a36Sopenharmony_ci struct mtmips_pmx_group *data); 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#endif 54