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