1*dc6ae205SArınç ÜNAL /* SPDX-License-Identifier: GPL-2.0-only */ 2*dc6ae205SArınç ÜNAL /* 3*dc6ae205SArınç ÜNAL * Copyright (C) 2012 John Crispin <john@phrozen.org> 4*dc6ae205SArınç ÜNAL */ 5*dc6ae205SArınç ÜNAL 6*dc6ae205SArınç ÜNAL #ifndef _PINCTRL_MTMIPS_H__ 7*dc6ae205SArınç ÜNAL #define _PINCTRL_MTMIPS_H__ 8*dc6ae205SArınç ÜNAL 9*dc6ae205SArınç ÜNAL #define FUNC(name, value, pin_first, pin_count) \ 10*dc6ae205SArınç ÜNAL { name, value, pin_first, pin_count } 11*dc6ae205SArınç ÜNAL 12*dc6ae205SArınç ÜNAL #define GRP(_name, _func, _mask, _shift) \ 13*dc6ae205SArınç ÜNAL { .name = _name, .mask = _mask, .shift = _shift, \ 14*dc6ae205SArınç ÜNAL .func = _func, .gpio = _mask, \ 15*dc6ae205SArınç ÜNAL .func_count = ARRAY_SIZE(_func) } 16*dc6ae205SArınç ÜNAL 17*dc6ae205SArınç ÜNAL #define GRP_G(_name, _func, _mask, _gpio, _shift) \ 18*dc6ae205SArınç ÜNAL { .name = _name, .mask = _mask, .shift = _shift, \ 19*dc6ae205SArınç ÜNAL .func = _func, .gpio = _gpio, \ 20*dc6ae205SArınç ÜNAL .func_count = ARRAY_SIZE(_func) } 21*dc6ae205SArınç ÜNAL 22*dc6ae205SArınç ÜNAL struct mtmips_pmx_group; 23*dc6ae205SArınç ÜNAL 24*dc6ae205SArınç ÜNAL struct mtmips_pmx_func { 25*dc6ae205SArınç ÜNAL const char *name; 26*dc6ae205SArınç ÜNAL const char value; 27*dc6ae205SArınç ÜNAL 28*dc6ae205SArınç ÜNAL int pin_first; 29*dc6ae205SArınç ÜNAL int pin_count; 30*dc6ae205SArınç ÜNAL int *pins; 31*dc6ae205SArınç ÜNAL 32*dc6ae205SArınç ÜNAL int *groups; 33*dc6ae205SArınç ÜNAL int group_count; 34*dc6ae205SArınç ÜNAL 35*dc6ae205SArınç ÜNAL int enabled; 36*dc6ae205SArınç ÜNAL }; 37*dc6ae205SArınç ÜNAL 38*dc6ae205SArınç ÜNAL struct mtmips_pmx_group { 39*dc6ae205SArınç ÜNAL const char *name; 40*dc6ae205SArınç ÜNAL int enabled; 41*dc6ae205SArınç ÜNAL 42*dc6ae205SArınç ÜNAL const u32 shift; 43*dc6ae205SArınç ÜNAL const char mask; 44*dc6ae205SArınç ÜNAL const char gpio; 45*dc6ae205SArınç ÜNAL 46*dc6ae205SArınç ÜNAL struct mtmips_pmx_func *func; 47*dc6ae205SArınç ÜNAL int func_count; 48*dc6ae205SArınç ÜNAL }; 49*dc6ae205SArınç ÜNAL 50*dc6ae205SArınç ÜNAL int mtmips_pinctrl_init(struct platform_device *pdev, 51*dc6ae205SArınç ÜNAL struct mtmips_pmx_group *data); 52*dc6ae205SArınç ÜNAL 53*dc6ae205SArınç ÜNAL #endif 54