mediatek: sync patches and add more ethernet stability fixes
[openwrt/openwrt.git] / target / linux / mediatek / patches-4.4 / 0032-soc-mediatek-PMIC-wrap-don-t-duplicate-the-wrapper-d.patch
1 From 7b7d59b4219c30e1b9601300348f1431fdab7081 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 32/91] soc: mediatek: PMIC wrap: don't duplicate the wrapper
5 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 diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c
17 index 0d9b19a..340c4b5 100644
18 --- a/drivers/soc/mediatek/mtk-pmic-wrap.c
19 +++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
20 @@ -376,9 +376,7 @@ struct pmic_wrapper {
21 struct device *dev;
22 void __iomem *base;
23 struct regmap *regmap;
24 - int *regs;
25 - enum pwrap_type type;
26 - u32 arb_en_all;
27 + const struct pmic_wrapper_type *master;
28 struct clk *clk_spi;
29 struct clk *clk_wrap;
30 struct reset_control *rstc;
31 @@ -389,22 +387,22 @@ struct pmic_wrapper {
32
33 static inline int pwrap_is_mt8135(struct pmic_wrapper *wrp)
34 {
35 - return wrp->type == PWRAP_MT8135;
36 + return wrp->master->type == PWRAP_MT8135;
37 }
38
39 static inline int pwrap_is_mt8173(struct pmic_wrapper *wrp)
40 {
41 - return wrp->type == PWRAP_MT8173;
42 + return wrp->master->type == PWRAP_MT8173;
43 }
44
45 static u32 pwrap_readl(struct pmic_wrapper *wrp, enum pwrap_regs reg)
46 {
47 - return readl(wrp->base + wrp->regs[reg]);
48 + return readl(wrp->base + wrp->master->regs[reg]);
49 }
50
51 static void pwrap_writel(struct pmic_wrapper *wrp, u32 val, enum pwrap_regs reg)
52 {
53 - writel(val, wrp->base + wrp->regs[reg]);
54 + writel(val, wrp->base + wrp->master->regs[reg]);
55 }
56
57 static bool pwrap_is_fsm_idle(struct pmic_wrapper *wrp)
58 @@ -697,7 +695,7 @@ static int pwrap_init(struct pmic_wrapper *wrp)
59
60 pwrap_writel(wrp, 1, PWRAP_WRAP_EN);
61
62 - pwrap_writel(wrp, wrp->arb_en_all, PWRAP_HIPRIO_ARB_EN);
63 + pwrap_writel(wrp, wrp->master->arb_en_all, PWRAP_HIPRIO_ARB_EN);
64
65 pwrap_writel(wrp, 1, PWRAP_WACS2_EN);
66
67 @@ -742,7 +740,7 @@ static int pwrap_init(struct pmic_wrapper *wrp)
68 pwrap_writel(wrp, 0x1, PWRAP_CRC_EN);
69 pwrap_writel(wrp, 0x0, PWRAP_SIG_MODE);
70 pwrap_writel(wrp, PWRAP_DEW_CRC_VAL, PWRAP_SIG_ADR);
71 - pwrap_writel(wrp, wrp->arb_en_all, PWRAP_HIPRIO_ARB_EN);
72 + pwrap_writel(wrp, wrp->master->arb_en_all, PWRAP_HIPRIO_ARB_EN);
73
74 if (pwrap_is_mt8135(wrp))
75 pwrap_writel(wrp, 0x7, PWRAP_RRARB_EN);
76 @@ -836,7 +834,6 @@ static int pwrap_probe(struct platform_device *pdev)
77 struct device_node *np = pdev->dev.of_node;
78 const struct of_device_id *of_id =
79 of_match_device(of_pwrap_match_tbl, &pdev->dev);
80 - const struct pmic_wrapper_type *type;
81 struct resource *res;
82
83 wrp = devm_kzalloc(&pdev->dev, sizeof(*wrp), GFP_KERNEL);
84 @@ -845,10 +842,7 @@ static int pwrap_probe(struct platform_device *pdev)
85
86 platform_set_drvdata(pdev, wrp);
87
88 - type = of_id->data;
89 - wrp->regs = type->regs;
90 - wrp->type = type->type;
91 - wrp->arb_en_all = type->arb_en_all;
92 + wrp->master = of_id->data;
93 wrp->dev = &pdev->dev;
94
95 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pwrap");
96 --
97 1.7.10.4
98