kernel: update kernel 4.4 to version 4.4.7
[openwrt.git] / target / linux / mediatek / patches-4.4 / 0032-soc-mediatek-PMIC-wrap-don-t-duplicate-the-wrapper-d.patch
1 From 542f2cd3287fb955efcc5ceca14b690ba19f8c57 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/81] 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 --- 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");