soc: mediatek: PMIC wrap: add wrapper callbacks for init_reg_clock
authorJohn Crispin <blogic@openwrt.org>
Fri, 19 Feb 2016 08:44:07 +0000 (09:44 +0100)
committerMatthias Brugger <matthias.bgg@gmail.com>
Wed, 20 Apr 2016 11:03:00 +0000 (13:03 +0200)
Split init_reg_clock up into SoC specific callbacks. The patch also
reorders the code to avoid the need for callback function prototypes.

Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
drivers/soc/mediatek/mtk-pmic-wrap.c

index 340c4b520da1bda8f34c52f834f0f12dca4adb1f..b22b664b155bdb3ea360c3874d3ab718f34fd200 100644 (file)
@@ -354,24 +354,6 @@ enum pwrap_type {
        PWRAP_MT8173,
 };
 
-struct pmic_wrapper_type {
-       int *regs;
-       enum pwrap_type type;
-       u32 arb_en_all;
-};
-
-static struct pmic_wrapper_type pwrap_mt8135 = {
-       .regs = mt8135_regs,
-       .type = PWRAP_MT8135,
-       .arb_en_all = 0x1ff,
-};
-
-static struct pmic_wrapper_type pwrap_mt8173 = {
-       .regs = mt8173_regs,
-       .type = PWRAP_MT8173,
-       .arb_en_all = 0x3f,
-};
-
 struct pmic_wrapper {
        struct device *dev;
        void __iomem *base;
@@ -385,6 +367,13 @@ struct pmic_wrapper {
        void __iomem *bridge_base;
 };
 
+struct pmic_wrapper_type {
+       int *regs;
+       enum pwrap_type type;
+       u32 arb_en_all;
+       int (*init_reg_clock)(struct pmic_wrapper *wrp);
+};
+
 static inline int pwrap_is_mt8135(struct pmic_wrapper *wrp)
 {
        return wrp->master->type == PWRAP_MT8135;
@@ -578,20 +567,23 @@ static int pwrap_init_sidly(struct pmic_wrapper *wrp)
        return 0;
 }
 
-static int pwrap_init_reg_clock(struct pmic_wrapper *wrp)
+static int pwrap_mt8135_init_reg_clock(struct pmic_wrapper *wrp)
 {
-       if (pwrap_is_mt8135(wrp)) {
-               pwrap_writel(wrp, 0x4, PWRAP_CSHEXT);
-               pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
-               pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
-               pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_START);
-               pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_END);
-       } else {
-               pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
-               pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
-               pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_START);
-               pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_END);
-       }
+       pwrap_writel(wrp, 0x4, PWRAP_CSHEXT);
+       pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
+       pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
+       pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_START);
+       pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_END);
+
+       return 0;
+}
+
+static int pwrap_mt8173_init_reg_clock(struct pmic_wrapper *wrp)
+{
+       pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
+       pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
+       pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_START);
+       pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_END);
 
        return 0;
 }
@@ -699,7 +691,7 @@ static int pwrap_init(struct pmic_wrapper *wrp)
 
        pwrap_writel(wrp, 1, PWRAP_WACS2_EN);
 
-       ret = pwrap_init_reg_clock(wrp);
+       ret = wrp->master->init_reg_clock(wrp);
        if (ret)
                return ret;
 
@@ -814,6 +806,20 @@ static const struct regmap_config pwrap_regmap_config = {
        .max_register = 0xffff,
 };
 
+static struct pmic_wrapper_type pwrap_mt8135 = {
+       .regs = mt8135_regs,
+       .type = PWRAP_MT8135,
+       .arb_en_all = 0x1ff,
+       .init_reg_clock = pwrap_mt8135_init_reg_clock,
+};
+
+static struct pmic_wrapper_type pwrap_mt8173 = {
+       .regs = mt8173_regs,
+       .type = PWRAP_MT8173,
+       .arb_en_all = 0x3f,
+       .init_reg_clock = pwrap_mt8173_init_reg_clock,
+};
+
 static struct of_device_id of_pwrap_match_tbl[] = {
        {
                .compatible = "mediatek,mt8135-pwrap",