Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / pinctrl / berlin / berlin.h
diff --git a/kernel/drivers/pinctrl/berlin/berlin.h b/kernel/drivers/pinctrl/berlin/berlin.h
new file mode 100644 (file)
index 0000000..e1aa841
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Marvell Berlin SoC pinctrl driver.
+ *
+ * Copyright (C) 2014 Marvell Technology Group Ltd.
+ *
+ * Antoine Ténart <antoine.tenart@free-electrons.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#ifndef __PINCTRL_BERLIN_H
+#define __PINCTRL_BERLIN_H
+
+struct berlin_desc_function {
+       const char      *name;
+       u8              muxval;
+};
+
+struct berlin_desc_group {
+       const char                      *name;
+       u8                              offset;
+       u8                              bit_width;
+       u8                              lsb;
+       struct berlin_desc_function     *functions;
+};
+
+struct berlin_pinctrl_desc {
+       const struct berlin_desc_group  *groups;
+       unsigned                        ngroups;
+};
+
+struct berlin_pinctrl_function {
+       const char      *name;
+       const char      **groups;
+       unsigned        ngroups;
+};
+
+#define BERLIN_PINCTRL_GROUP(_name, _offset, _width, _lsb, ...)                \
+       {                                                               \
+               .name = _name,                                          \
+               .offset = _offset,                                      \
+               .bit_width = _width,                                    \
+               .lsb = _lsb,                                            \
+               .functions = (struct berlin_desc_function[]){           \
+                       __VA_ARGS__, { } },                             \
+       }
+
+#define BERLIN_PINCTRL_FUNCTION(_muxval, _name)                \
+       {                                               \
+               .name = _name,                          \
+               .muxval = _muxval,                      \
+       }
+
+#define BERLIN_PINCTRL_FUNCTION_UNKNOWN                {}
+
+int berlin_pinctrl_probe(struct platform_device *pdev,
+                        const struct berlin_pinctrl_desc *desc);
+
+#endif /* __PINCTRL_BERLIN_H */