Message ID | 1627972461-2627-5-git-send-email-hsin-hsiung.wang@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add SPMI support for Mediatek SoC IC | expand |
Quoting Hsin-Hsiung Wang (2021-08-02 23:34:20) > From: Henry Chen <henryc.chen@mediatek.com> > > Add spmi support for MT8195. > > Signed-off-by: Henry Chen <henryc.chen@mediatek.com> Missing Signed-off-by from hsin-hsiung.wang here > --- > changes since v9: > - No change. > --- > drivers/spmi/spmi-mtk-pmif.c | 90 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 90 insertions(+) > > diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c > index 94c45d46ab0c..0c320801c9d5 100644 > --- a/drivers/spmi/spmi-mtk-pmif.c > +++ b/drivers/spmi/spmi-mtk-pmif.c > @@ -348,6 +427,14 @@ static const struct pmif_data mt6873_pmif_arb = { > .soc_chan = 2, > }; > > +static const struct pmif_data mt8195_pmif_arb[] = { This is an array of type pmif_data. > + { > + .regs = mt8195_regs, > + .spmimst_regs = mt8195_spmi_regs, > + .soc_chan = 2, > + }, > +}; > + > static int mtk_spmi_probe(struct platform_device *pdev) > { > struct pmif *arb; > @@ -444,6 +531,9 @@ static const struct of_device_id mtk_spmi_match_table[] = { > { > .compatible = "mediatek,mt6873-spmi", > .data = &mt6873_pmif_arb, mt6873_pmif_arb is not an array, see the context header above. How does this work? Has this been tested? > + }, { > + .compatible = "mediatek,mt8195-spmi", > + .data = &mt8195_pmif_arb, > }, { > /* sentinel */ > }, > -- > 2.18.0 >
Hi, On Fri, 2021-08-06 at 10:49 -0700, Stephen Boyd wrote: > Quoting Hsin-Hsiung Wang (2021-08-02 23:34:20) > > From: Henry Chen <henryc.chen@mediatek.com> > > > > Add spmi support for MT8195. > > > > Signed-off-by: Henry Chen <henryc.chen@mediatek.com> > > Missing Signed-off-by from hsin-hsiung.wang here > Sorry for the missing. I will add it in the next patch. Thanks. > > --- > > changes since v9: > > - No change. > > --- > > drivers/spmi/spmi-mtk-pmif.c | 90 ++++++++++++++++++++++++++++++++++++ > > 1 file changed, 90 insertions(+) > > > > diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c > > index 94c45d46ab0c..0c320801c9d5 100644 > > --- a/drivers/spmi/spmi-mtk-pmif.c > > +++ b/drivers/spmi/spmi-mtk-pmif.c > > @@ -348,6 +427,14 @@ static const struct pmif_data mt6873_pmif_arb = { > > .soc_chan = 2, > > }; > > > > +static const struct pmif_data mt8195_pmif_arb[] = { > > This is an array of type pmif_data. > > > + { > > + .regs = mt8195_regs, > > + .spmimst_regs = mt8195_spmi_regs, > > + .soc_chan = 2, > > + }, > > +}; > > + > > static int mtk_spmi_probe(struct platform_device *pdev) > > { > > struct pmif *arb; > > @@ -444,6 +531,9 @@ static const struct of_device_id mtk_spmi_match_table[] = { > > { > > .compatible = "mediatek,mt6873-spmi", > > .data = &mt6873_pmif_arb, > > mt6873_pmif_arb is not an array, see the context header above. > > How does this work? Has this been tested? > > > + }, { > > + .compatible = "mediatek,mt8195-spmi", > > + .data = &mt8195_pmif_arb, > > }, { > > /* sentinel */ > > }, > > -- > > 2.18.0 > >
Hi, sorry for missing other comments, I will confirm it internally and update it. Thanks a lot. On Fri, 2021-08-06 at 10:49 -0700, Stephen Boyd wrote: > Quoting Hsin-Hsiung Wang (2021-08-02 23:34:20) > > From: Henry Chen <henryc.chen@mediatek.com> > > > > Add spmi support for MT8195. > > > > Signed-off-by: Henry Chen <henryc.chen@mediatek.com> > > Missing Signed-off-by from hsin-hsiung.wang here > > > --- > > changes since v9: > > - No change. > > --- > > drivers/spmi/spmi-mtk-pmif.c | 90 ++++++++++++++++++++++++++++++++++++ > > 1 file changed, 90 insertions(+) > > > > diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c > > index 94c45d46ab0c..0c320801c9d5 100644 > > --- a/drivers/spmi/spmi-mtk-pmif.c > > +++ b/drivers/spmi/spmi-mtk-pmif.c > > @@ -348,6 +427,14 @@ static const struct pmif_data mt6873_pmif_arb = { > > .soc_chan = 2, > > }; > > > > +static const struct pmif_data mt8195_pmif_arb[] = { > > This is an array of type pmif_data. > > > + { > > + .regs = mt8195_regs, > > + .spmimst_regs = mt8195_spmi_regs, > > + .soc_chan = 2, > > + }, > > +}; > > + > > static int mtk_spmi_probe(struct platform_device *pdev) > > { > > struct pmif *arb; > > @@ -444,6 +531,9 @@ static const struct of_device_id mtk_spmi_match_table[] = { > > { > > .compatible = "mediatek,mt6873-spmi", > > .data = &mt6873_pmif_arb, > > mt6873_pmif_arb is not an array, see the context header above. > > How does this work? Has this been tested? > > > + }, { > > + .compatible = "mediatek,mt8195-spmi", > > + .data = &mt8195_pmif_arb, > > }, { > > /* sentinel */ > > }, > > -- > > 2.18.0 > >
diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c index 94c45d46ab0c..0c320801c9d5 100644 --- a/drivers/spmi/spmi-mtk-pmif.c +++ b/drivers/spmi/spmi-mtk-pmif.c @@ -150,6 +150,54 @@ static const u32 mt6873_regs[] = { [PMIF_SWINF_3_STA] = 0x0CE8, }; +static const u32 mt8195_regs[] = { + [PMIF_INIT_DONE] = 0x0000, + [PMIF_INF_EN] = 0x0024, + [PMIF_ARB_EN] = 0x0150, + [PMIF_CMDISSUE_EN] = 0x03B8, + [PMIF_TIMER_CTRL] = 0x03E4, + [PMIF_SPI_MODE_CTRL] = 0x0408, + [PMIF_IRQ_EVENT_EN_0] = 0x0420, + [PMIF_IRQ_FLAG_0] = 0x0428, + [PMIF_IRQ_CLR_0] = 0x042C, + [PMIF_IRQ_EVENT_EN_1] = 0x0430, + [PMIF_IRQ_FLAG_1] = 0x0438, + [PMIF_IRQ_CLR_1] = 0x043C, + [PMIF_IRQ_EVENT_EN_2] = 0x0440, + [PMIF_IRQ_FLAG_2] = 0x0448, + [PMIF_IRQ_CLR_2] = 0x044C, + [PMIF_IRQ_EVENT_EN_3] = 0x0450, + [PMIF_IRQ_FLAG_3] = 0x0458, + [PMIF_IRQ_CLR_3] = 0x045C, + [PMIF_IRQ_EVENT_EN_4] = 0x0460, + [PMIF_IRQ_FLAG_4] = 0x0468, + [PMIF_IRQ_CLR_4] = 0x046C, + [PMIF_WDT_EVENT_EN_0] = 0x0474, + [PMIF_WDT_FLAG_0] = 0x0478, + [PMIF_WDT_EVENT_EN_1] = 0x047C, + [PMIF_WDT_FLAG_1] = 0x0480, + [PMIF_SWINF_0_ACC] = 0x0800, + [PMIF_SWINF_0_WDATA_31_0] = 0x0804, + [PMIF_SWINF_0_RDATA_31_0] = 0x0814, + [PMIF_SWINF_0_VLD_CLR] = 0x0824, + [PMIF_SWINF_0_STA] = 0x0828, + [PMIF_SWINF_1_ACC] = 0x0840, + [PMIF_SWINF_1_WDATA_31_0] = 0x0844, + [PMIF_SWINF_1_RDATA_31_0] = 0x0854, + [PMIF_SWINF_1_VLD_CLR] = 0x0864, + [PMIF_SWINF_1_STA] = 0x0868, + [PMIF_SWINF_2_ACC] = 0x0880, + [PMIF_SWINF_2_WDATA_31_0] = 0x0884, + [PMIF_SWINF_2_RDATA_31_0] = 0x0894, + [PMIF_SWINF_2_VLD_CLR] = 0x08A4, + [PMIF_SWINF_2_STA] = 0x08A8, + [PMIF_SWINF_3_ACC] = 0x08C0, + [PMIF_SWINF_3_WDATA_31_0] = 0x08C4, + [PMIF_SWINF_3_RDATA_31_0] = 0x08D4, + [PMIF_SWINF_3_VLD_CLR] = 0x08E4, + [PMIF_SWINF_3_STA] = 0x08E8, +}; + enum spmi_regs { SPMI_OP_ST_CTRL, SPMI_GRP_ID_EN, @@ -163,6 +211,15 @@ enum spmi_regs { SPMI_REC3, SPMI_REC4, SPMI_MST_DBG, + + /* MT8195 spmi regs */ + SPMI_MST_RCS_CTRL, + SPMI_SLV_3_0_EINT, + SPMI_SLV_7_4_EINT, + SPMI_SLV_B_8_EINT, + SPMI_SLV_F_C_EINT, + SPMI_REC_CMD_DEC, + SPMI_DEC_DBG, }; static const u32 mt6873_spmi_regs[] = { @@ -180,6 +237,28 @@ static const u32 mt6873_spmi_regs[] = { [SPMI_MST_DBG] = 0x00fc, }; +static const u32 mt8195_spmi_regs[] = { + [SPMI_OP_ST_CTRL] = 0x0000, + [SPMI_GRP_ID_EN] = 0x0004, + [SPMI_OP_ST_STA] = 0x0008, + [SPMI_MST_SAMPL] = 0x000C, + [SPMI_MST_REQ_EN] = 0x0010, + [SPMI_MST_RCS_CTRL] = 0x0014, + [SPMI_SLV_3_0_EINT] = 0x0020, + [SPMI_SLV_7_4_EINT] = 0x0024, + [SPMI_SLV_B_8_EINT] = 0x0028, + [SPMI_SLV_F_C_EINT] = 0x002C, + [SPMI_REC_CTRL] = 0x0040, + [SPMI_REC0] = 0x0044, + [SPMI_REC1] = 0x0048, + [SPMI_REC2] = 0x004C, + [SPMI_REC3] = 0x0050, + [SPMI_REC4] = 0x0054, + [SPMI_REC_CMD_DEC] = 0x005C, + [SPMI_DEC_DBG] = 0x00F8, + [SPMI_MST_DBG] = 0x00FC, +}; + static u32 pmif_readl(struct pmif *arb, enum pmif_regs reg) { return readl(arb->base + arb->data->regs[reg]); @@ -348,6 +427,14 @@ static const struct pmif_data mt6873_pmif_arb = { .soc_chan = 2, }; +static const struct pmif_data mt8195_pmif_arb[] = { + { + .regs = mt8195_regs, + .spmimst_regs = mt8195_spmi_regs, + .soc_chan = 2, + }, +}; + static int mtk_spmi_probe(struct platform_device *pdev) { struct pmif *arb; @@ -444,6 +531,9 @@ static const struct of_device_id mtk_spmi_match_table[] = { { .compatible = "mediatek,mt6873-spmi", .data = &mt6873_pmif_arb, + }, { + .compatible = "mediatek,mt8195-spmi", + .data = &mt8195_pmif_arb, }, { /* sentinel */ },