57 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Marvell Berlin SoC pinctrl driver.4 *5 * Copyright (C) 2014 Marvell Technology Group Ltd.6 *7 * Antoine Ténart <antoine.tenart@free-electrons.com>8 */9 10#ifndef __PINCTRL_BERLIN_H11#define __PINCTRL_BERLIN_H12 13struct berlin_desc_function {14 const char *name;15 u8 muxval;16};17 18struct berlin_desc_group {19 const char *name;20 u8 offset;21 u8 bit_width;22 u8 lsb;23 struct berlin_desc_function *functions;24};25 26struct berlin_pinctrl_desc {27 const struct berlin_desc_group *groups;28 unsigned ngroups;29};30 31#define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...) \32 { \33 .name = _name, \34 .offset = _offset, \35 .bit_width = _width, \36 .lsb = _lsb, \37 .functions = (struct berlin_desc_function[]){ \38 __VA_ARGS__, { } }, \39 }40 41#define BERLIN_PINCTRL_FUNCTION(_muxval, _name) \42 { \43 .name = _name, \44 .muxval = _muxval, \45 }46 47#define BERLIN_PINCTRL_FUNCTION_UNKNOWN {}48 49int berlin_pinctrl_probe(struct platform_device *pdev,50 const struct berlin_pinctrl_desc *desc);51 52int berlin_pinctrl_probe_regmap(struct platform_device *pdev,53 const struct berlin_pinctrl_desc *desc,54 struct regmap *regmap);55 56#endif /* __PINCTRL_BERLIN_H */57