soc: mediatek: PMIC wrap: SPI_WRITE needs a different bitmask for MT2701/7623
authorJohn Crispin <blogic@openwrt.org>
Fri, 19 Feb 2016 08:44:10 +0000 (09:44 +0100)
committerMatthias Brugger <matthias.bgg@gmail.com>
Wed, 20 Apr 2016 11:03:02 +0000 (13:03 +0200)
Different SoCs will use different bitmask for the SPI_WRITE command. This
patch defines the bitmask in the pmic_wrapper_type struct. This allows us
to support new SoCs with a different bitmask to the one currently used.

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 9df11354616084f61301f319f2592337663ed18e..8ce1bad3b6051d05b437d91207ff0880fb7b976b 100644 (file)
@@ -372,6 +372,7 @@ struct pmic_wrapper_type {
        enum pwrap_type type;
        u32 arb_en_all;
        u32 int_en_all;
+       u32 spi_w;
        int (*init_reg_clock)(struct pmic_wrapper *wrp);
        int (*init_soc_specific)(struct pmic_wrapper *wrp);
 };
@@ -511,15 +512,15 @@ static int pwrap_reset_spislave(struct pmic_wrapper *wrp)
        pwrap_writel(wrp, 1, PWRAP_MAN_EN);
        pwrap_writel(wrp, 0, PWRAP_DIO_EN);
 
-       pwrap_writel(wrp, PWRAP_MAN_CMD_SPI_WRITE | PWRAP_MAN_CMD_OP_CSL,
+       pwrap_writel(wrp, wrp->master->spi_w | PWRAP_MAN_CMD_OP_CSL,
                        PWRAP_MAN_CMD);
-       pwrap_writel(wrp, PWRAP_MAN_CMD_SPI_WRITE | PWRAP_MAN_CMD_OP_OUTS,
+       pwrap_writel(wrp, wrp->master->spi_w | PWRAP_MAN_CMD_OP_OUTS,
                        PWRAP_MAN_CMD);
-       pwrap_writel(wrp, PWRAP_MAN_CMD_SPI_WRITE | PWRAP_MAN_CMD_OP_CSH,
+       pwrap_writel(wrp, wrp->master->spi_w | PWRAP_MAN_CMD_OP_CSH,
                        PWRAP_MAN_CMD);
 
        for (i = 0; i < 4; i++)
-               pwrap_writel(wrp, PWRAP_MAN_CMD_SPI_WRITE | PWRAP_MAN_CMD_OP_OUTS,
+               pwrap_writel(wrp, wrp->master->spi_w | PWRAP_MAN_CMD_OP_OUTS,
                                PWRAP_MAN_CMD);
 
        ret = pwrap_wait_for_state(wrp, pwrap_is_sync_idle);
@@ -827,6 +828,7 @@ static struct pmic_wrapper_type pwrap_mt8135 = {
        .type = PWRAP_MT8135,
        .arb_en_all = 0x1ff,
        .int_en_all = ~(BIT(31) | BIT(1)),
+       .spi_w = PWRAP_MAN_CMD_SPI_WRITE,
        .init_reg_clock = pwrap_mt8135_init_reg_clock,
        .init_soc_specific = pwrap_mt8135_init_soc_specific,
 };
@@ -836,6 +838,7 @@ static struct pmic_wrapper_type pwrap_mt8173 = {
        .type = PWRAP_MT8173,
        .arb_en_all = 0x3f,
        .int_en_all = ~(BIT(31) | BIT(1)),
+       .spi_w = PWRAP_MAN_CMD_SPI_WRITE,
        .init_reg_clock = pwrap_mt8173_init_reg_clock,
        .init_soc_specific = pwrap_mt8173_init_soc_specific,
 };