Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

spmi: mediatek: Add support for MT8195

Add spmi support for MT8195.
Refine indent in spmi-mtk-pmif.c.

Link: https://lore.kernel.org/r/20211119034613.32489-5-james.lo@mediatek.com
Acked-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: James Lo <james.lo@mediatek.com>
Signed-off-by: Henry Chen <henryc.chen@mediatek.com>
Signed-off-by: Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20211216190812.1574801-6-sboyd@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

James Lo and committed by
Greg Kroah-Hartman
504eb71e b45b3cce

+88
+88
drivers/spmi/spmi-mtk-pmif.c
··· 152 152 [PMIF_SWINF_3_STA] = 0x0CE8, 153 153 }; 154 154 155 + static const u32 mt8195_regs[] = { 156 + [PMIF_INIT_DONE] = 0x0000, 157 + [PMIF_INF_EN] = 0x0024, 158 + [PMIF_ARB_EN] = 0x0150, 159 + [PMIF_CMDISSUE_EN] = 0x03B8, 160 + [PMIF_TIMER_CTRL] = 0x03E4, 161 + [PMIF_SPI_MODE_CTRL] = 0x0408, 162 + [PMIF_IRQ_EVENT_EN_0] = 0x0420, 163 + [PMIF_IRQ_FLAG_0] = 0x0428, 164 + [PMIF_IRQ_CLR_0] = 0x042C, 165 + [PMIF_IRQ_EVENT_EN_1] = 0x0430, 166 + [PMIF_IRQ_FLAG_1] = 0x0438, 167 + [PMIF_IRQ_CLR_1] = 0x043C, 168 + [PMIF_IRQ_EVENT_EN_2] = 0x0440, 169 + [PMIF_IRQ_FLAG_2] = 0x0448, 170 + [PMIF_IRQ_CLR_2] = 0x044C, 171 + [PMIF_IRQ_EVENT_EN_3] = 0x0450, 172 + [PMIF_IRQ_FLAG_3] = 0x0458, 173 + [PMIF_IRQ_CLR_3] = 0x045C, 174 + [PMIF_IRQ_EVENT_EN_4] = 0x0460, 175 + [PMIF_IRQ_FLAG_4] = 0x0468, 176 + [PMIF_IRQ_CLR_4] = 0x046C, 177 + [PMIF_WDT_EVENT_EN_0] = 0x0474, 178 + [PMIF_WDT_FLAG_0] = 0x0478, 179 + [PMIF_WDT_EVENT_EN_1] = 0x047C, 180 + [PMIF_WDT_FLAG_1] = 0x0480, 181 + [PMIF_SWINF_0_ACC] = 0x0800, 182 + [PMIF_SWINF_0_WDATA_31_0] = 0x0804, 183 + [PMIF_SWINF_0_RDATA_31_0] = 0x0814, 184 + [PMIF_SWINF_0_VLD_CLR] = 0x0824, 185 + [PMIF_SWINF_0_STA] = 0x0828, 186 + [PMIF_SWINF_1_ACC] = 0x0840, 187 + [PMIF_SWINF_1_WDATA_31_0] = 0x0844, 188 + [PMIF_SWINF_1_RDATA_31_0] = 0x0854, 189 + [PMIF_SWINF_1_VLD_CLR] = 0x0864, 190 + [PMIF_SWINF_1_STA] = 0x0868, 191 + [PMIF_SWINF_2_ACC] = 0x0880, 192 + [PMIF_SWINF_2_WDATA_31_0] = 0x0884, 193 + [PMIF_SWINF_2_RDATA_31_0] = 0x0894, 194 + [PMIF_SWINF_2_VLD_CLR] = 0x08A4, 195 + [PMIF_SWINF_2_STA] = 0x08A8, 196 + [PMIF_SWINF_3_ACC] = 0x08C0, 197 + [PMIF_SWINF_3_WDATA_31_0] = 0x08C4, 198 + [PMIF_SWINF_3_RDATA_31_0] = 0x08D4, 199 + [PMIF_SWINF_3_VLD_CLR] = 0x08E4, 200 + [PMIF_SWINF_3_STA] = 0x08E8, 201 + }; 202 + 155 203 enum spmi_regs { 156 204 SPMI_OP_ST_CTRL, 157 205 SPMI_GRP_ID_EN, ··· 213 165 SPMI_REC3, 214 166 SPMI_REC4, 215 167 SPMI_MST_DBG, 168 + 169 + /* MT8195 spmi regs */ 170 + SPMI_MST_RCS_CTRL, 171 + SPMI_SLV_3_0_EINT, 172 + SPMI_SLV_7_4_EINT, 173 + SPMI_SLV_B_8_EINT, 174 + SPMI_SLV_F_C_EINT, 175 + SPMI_REC_CMD_DEC, 176 + SPMI_DEC_DBG, 216 177 }; 217 178 218 179 static const u32 mt6873_spmi_regs[] = { ··· 237 180 [SPMI_REC3] = 0x0050, 238 181 [SPMI_REC4] = 0x0054, 239 182 [SPMI_MST_DBG] = 0x00fc, 183 + }; 184 + 185 + static const u32 mt8195_spmi_regs[] = { 186 + [SPMI_OP_ST_CTRL] = 0x0000, 187 + [SPMI_GRP_ID_EN] = 0x0004, 188 + [SPMI_OP_ST_STA] = 0x0008, 189 + [SPMI_MST_SAMPL] = 0x000C, 190 + [SPMI_MST_REQ_EN] = 0x0010, 191 + [SPMI_MST_RCS_CTRL] = 0x0014, 192 + [SPMI_SLV_3_0_EINT] = 0x0020, 193 + [SPMI_SLV_7_4_EINT] = 0x0024, 194 + [SPMI_SLV_B_8_EINT] = 0x0028, 195 + [SPMI_SLV_F_C_EINT] = 0x002C, 196 + [SPMI_REC_CTRL] = 0x0040, 197 + [SPMI_REC0] = 0x0044, 198 + [SPMI_REC1] = 0x0048, 199 + [SPMI_REC2] = 0x004C, 200 + [SPMI_REC3] = 0x0050, 201 + [SPMI_REC4] = 0x0054, 202 + [SPMI_REC_CMD_DEC] = 0x005C, 203 + [SPMI_DEC_DBG] = 0x00F8, 204 + [SPMI_MST_DBG] = 0x00FC, 240 205 }; 241 206 242 207 static u32 pmif_readl(struct pmif *arb, enum pmif_regs reg) ··· 424 345 .soc_chan = 2, 425 346 }; 426 347 348 + static const struct pmif_data mt8195_pmif_arb = { 349 + .regs = mt8195_regs, 350 + .spmimst_regs = mt8195_spmi_regs, 351 + .soc_chan = 2, 352 + }; 353 + 427 354 static int mtk_spmi_probe(struct platform_device *pdev) 428 355 { 429 356 struct pmif *arb; ··· 518 433 { 519 434 .compatible = "mediatek,mt6873-spmi", 520 435 .data = &mt6873_pmif_arb, 436 + }, { 437 + .compatible = "mediatek,mt8195-spmi", 438 + .data = &mt8195_pmif_arb, 521 439 }, { 522 440 /* sentinel */ 523 441 },