diff options
author | Sean Wang <sean.wang@mediatek.com> | 2018-09-08 19:07:32 +0800 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2018-09-18 14:53:22 -0700 |
commit | b7d7f9eeca551f9cf1f6418749cd609d371faf55 (patch) | |
tree | bd3acab198ae52c6787d3d6d9ecea0cb632d4d39 /drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h | |
parent | 9d9b171c6897265c5af870affd83fe3c51f1df76 (diff) | |
download | linux-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.h | 36 |
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 { |