ramips: fix the number of uarts for MT7688
[openwrt/openwrt.git] / target / linux / mediatek / patches-4.4 / 0032-soc-mediatek-PMIC-wrap-don-t-duplicate-the-wrapper-d.patch
1 From 64e8091be39c3f0a7bf4651bd2045b8c86429d55 Mon Sep 17 00:00:00 2001
2 From: John Crispin <blogic@openwrt.org>
3 Date: Wed, 20 Jan 2016 06:42:01 +0100
4 Subject: [PATCH 032/102] soc: mediatek: PMIC wrap: don't duplicate the
5 wrapper data
6
7 As we add support for more devices struct pmic_wrapper_type will grow and
8 we do not really want to start duplicating all the elements in
9 struct pmic_wrapper.
10
11 Signed-off-by: John Crispin <blogic@openwrt.org>
12 ---
13 drivers/soc/mediatek/mtk-pmic-wrap.c | 22 ++++++++--------------
14 1 file changed, 8 insertions(+), 14 deletions(-)
15
16 --- a/drivers/soc/mediatek/mtk-pmic-wrap.c
17 +++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
18 @@ -376,9 +376,7 @@ struct pmic_wrapper {
19 struct device *dev;
20 void __iomem *base;
21 struct regmap *regmap;
22 - int *regs;
23 - enum pwrap_type type;
24 - u32 arb_en_all;
25 + const struct pmic_wrapper_type *master;
26 struct clk *clk_spi;
27 struct clk *clk_wrap;
28 struct reset_control *rstc;
29 @@ -389,22 +387,22 @@ struct pmic_wrapper {
30
31 static inline int pwrap_is_mt8135(struct pmic_wrapper *wrp)
32 {
33 - return wrp->type == PWRAP_MT8135;
34 + return wrp->master->type == PWRAP_MT8135;
35 }
36
37 static inline int pwrap_is_mt8173(struct pmic_wrapper *wrp)
38 {
39 - return wrp->type == PWRAP_MT8173;
40 + return wrp->master->type == PWRAP_MT8173;
41 }
42
43 static u32 pwrap_readl(struct pmic_wrapper *wrp, enum pwrap_regs reg)
44 {
45 - return readl(wrp->base + wrp->regs[reg]);
46 + return readl(wrp->base + wrp->master->regs[reg]);
47 }
48
49 static void pwrap_writel(struct pmic_wrapper *wrp, u32 val, enum pwrap_regs reg)
50 {
51 - writel(val, wrp->base + wrp->regs[reg]);
52 + writel(val, wrp->base + wrp->master->regs[reg]);
53 }
54
55 static bool pwrap_is_fsm_idle(struct pmic_wrapper *wrp)
56 @@ -697,7 +695,7 @@ static int pwrap_init(struct pmic_wrappe
57
58 pwrap_writel(wrp, 1, PWRAP_WRAP_EN);
59
60 - pwrap_writel(wrp, wrp->arb_en_all, PWRAP_HIPRIO_ARB_EN);
61 + pwrap_writel(wrp, wrp->master->arb_en_all, PWRAP_HIPRIO_ARB_EN);
62
63 pwrap_writel(wrp, 1, PWRAP_WACS2_EN);
64
65 @@ -742,7 +740,7 @@ static int pwrap_init(struct pmic_wrappe
66 pwrap_writel(wrp, 0x1, PWRAP_CRC_EN);
67 pwrap_writel(wrp, 0x0, PWRAP_SIG_MODE);
68 pwrap_writel(wrp, PWRAP_DEW_CRC_VAL, PWRAP_SIG_ADR);
69 - pwrap_writel(wrp, wrp->arb_en_all, PWRAP_HIPRIO_ARB_EN);
70 + pwrap_writel(wrp, wrp->master->arb_en_all, PWRAP_HIPRIO_ARB_EN);
71
72 if (pwrap_is_mt8135(wrp))
73 pwrap_writel(wrp, 0x7, PWRAP_RRARB_EN);
74 @@ -836,7 +834,6 @@ static int pwrap_probe(struct platform_d
75 struct device_node *np = pdev->dev.of_node;
76 const struct of_device_id *of_id =
77 of_match_device(of_pwrap_match_tbl, &pdev->dev);
78 - const struct pmic_wrapper_type *type;
79 struct resource *res;
80
81 wrp = devm_kzalloc(&pdev->dev, sizeof(*wrp), GFP_KERNEL);
82 @@ -845,10 +842,7 @@ static int pwrap_probe(struct platform_d
83
84 platform_set_drvdata(pdev, wrp);
85
86 - type = of_id->data;
87 - wrp->regs = type->regs;
88 - wrp->type = type->type;
89 - wrp->arb_en_all = type->arb_en_all;
90 + wrp->master = of_id->data;
91 wrp->dev = &pdev->dev;
92
93 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pwrap");