summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
diff options
context:
space:
mode:
authorSean Wang <sean.wang@mediatek.com>2018-09-08 19:07:32 +0800
committerLinus Walleij <linus.walleij@linaro.org>2018-09-18 14:53:22 -0700
commitb7d7f9eeca551f9cf1f6418749cd609d371faf55 (patch)
treebd3acab198ae52c6787d3d6d9ecea0cb632d4d39 /drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
parent9d9b171c6897265c5af870affd83fe3c51f1df76 (diff)
downloadlinux-b7d7f9eeca551f9cf1f6418749cd609d371faf55.tar.bz2
pinctrl: mediatek: extend struct mtk_pin_desc which per-pin driver depends on
Because the pincrl-mtk-common.c is an implementation for per-pin binding, its pin descriptor includes more information than pinctrl-mtk-common-v2 so far can support. So, we complement these data before writing a driver using pincrl-mtk-common-v2.c for per-pin binding. By the way, the size of struct mtk_pin_desc would be larger than struct pinctrl_pin_desc can hold, so it's necessary to have a copy before the pins information is being registered into the core. Signed-off-by: Sean Wang <sean.wang@mediatek.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h')
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h36
1 files changed, 32 insertions, 4 deletions
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
index 040c6b79fd71..d5819ca98c3c 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
@@ -134,18 +134,44 @@ struct mtk_pin_reg_calc {
};
/**
+ * struct mtk_func_desc - the structure that providing information
+ * all the funcs for this pin
+ * @name: the name of function
+ * @muxval: the mux to the function
+ */
+struct mtk_func_desc {
+ const char *name;
+ u8 muxval;
+};
+
+/**
+ * struct mtk_eint_desc - the structure that providing information
+ * for eint data per pin
+ * @eint_m: the eint mux for this pin
+ * @eitn_n: the eint number for this pin
+ */
+struct mtk_eint_desc {
+ u8 eint_m;
+ u16 eint_n;
+};
+
+/**
* struct mtk_pin_desc - the structure that providing information
* for each pin of chips
* @number: unique pin number from the global pin number space
* @name: name for this pin
- * @eint_n: the eint number for this pin
+ * @eint: the eint data for this pin
* @drv_n: the index with the driving group
+ * @funcs: all available functions for this pins (only used in
+ * those drivers compatible to pinctrl-mtk-common.c-like
+ * ones)
*/
struct mtk_pin_desc {
unsigned int number;
const char *name;
- u16 eint_n;
+ struct mtk_eint_desc eint;
u8 drv_n;
+ struct mtk_func_desc *funcs;
};
struct mtk_pinctrl;
@@ -153,7 +179,7 @@ struct mtk_pinctrl;
/* struct mtk_pin_soc - the structure that holds SoC-specific data */
struct mtk_pin_soc {
const struct mtk_pin_reg_calc *reg_cal;
- const struct pinctrl_pin_desc *pins;
+ const struct mtk_pin_desc *pins;
unsigned int npins;
const struct group_desc *grps;
unsigned int ngrps;
@@ -164,7 +190,6 @@ struct mtk_pin_soc {
/* Specific parameters per SoC */
u8 gpio_m;
- u8 eint_m;
bool ies_present;
const char * const *base_names;
unsigned int nbase_names;
@@ -190,6 +215,9 @@ struct mtk_pin_soc {
int (*adv_pull_get)(struct mtk_pinctrl *hw,
const struct mtk_pin_desc *desc, bool pullup,
u32 *val);
+
+ /* Specific driver data */
+ void *driver_data;
};
struct mtk_pinctrl {