Skip to content

Commit db9f132

Browse files
AngeloGioacchino Del Regnombgg
authored andcommitted
soc: mediatek: pwrap: Move PMIC read test sequence in function
The PMIC read test is performed in two places: pwrap_init_dual_io() and pwrap_init_sidly(). In preparation for adding support for PMICs requiring a companion part, move this sequence to a new function pwrap_pmic_read_test(). Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com> Link: https://lore.kernel.org/r/20230412131216.198313-3-angelogioacchino.delregno@collabora.com Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
1 parent e829f1f commit db9f132

1 file changed

Lines changed: 20 additions & 12 deletions

File tree

drivers/soc/mediatek/mtk-pmic-wrap.c

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,6 +1455,18 @@ static int pwrap_regmap_write(void *context, u32 adr, u32 wdata)
14551455
return pwrap_write(context, adr, wdata);
14561456
}
14571457

1458+
static bool pwrap_pmic_read_test(struct pmic_wrapper *wrp, const u32 *dew_regs,
1459+
u16 read_test_val)
1460+
{
1461+
bool is_success;
1462+
u32 rdata;
1463+
1464+
pwrap_read(wrp, dew_regs[PWRAP_DEW_READ_TEST], &rdata);
1465+
is_success = ((rdata & U16_MAX) == read_test_val);
1466+
1467+
return is_success;
1468+
}
1469+
14581470
static int pwrap_reset_spislave(struct pmic_wrapper *wrp)
14591471
{
14601472
bool tmp;
@@ -1498,18 +1510,18 @@ static int pwrap_reset_spislave(struct pmic_wrapper *wrp)
14981510
*/
14991511
static int pwrap_init_sidly(struct pmic_wrapper *wrp)
15001512
{
1501-
u32 rdata;
15021513
u32 i;
15031514
u32 pass = 0;
1515+
bool read_ok;
15041516
signed char dly[16] = {
15051517
-1, 0, 1, 0, 2, -1, 1, 1, 3, -1, -1, -1, 3, -1, 2, 1
15061518
};
15071519

15081520
for (i = 0; i < 4; i++) {
15091521
pwrap_writel(wrp, i, PWRAP_SIDLY);
1510-
pwrap_read(wrp, wrp->slave->dew_regs[PWRAP_DEW_READ_TEST],
1511-
&rdata);
1512-
if (rdata == PWRAP_DEW_READ_TEST_VAL) {
1522+
read_ok = pwrap_pmic_read_test(wrp, wrp->slave->dew_regs,
1523+
PWRAP_DEW_READ_TEST_VAL);
1524+
if (read_ok) {
15131525
dev_dbg(wrp->dev, "[Read Test] pass, SIDLY=%x\n", i);
15141526
pass |= 1 << i;
15151527
}
@@ -1529,8 +1541,7 @@ static int pwrap_init_sidly(struct pmic_wrapper *wrp)
15291541
static int pwrap_init_dual_io(struct pmic_wrapper *wrp)
15301542
{
15311543
int ret;
1532-
bool tmp;
1533-
u32 rdata;
1544+
bool read_ok, tmp;
15341545

15351546
/* Enable dual IO mode */
15361547
pwrap_write(wrp, wrp->slave->dew_regs[PWRAP_DEW_DIO_EN], 1);
@@ -1546,12 +1557,9 @@ static int pwrap_init_dual_io(struct pmic_wrapper *wrp)
15461557
pwrap_writel(wrp, 1, PWRAP_DIO_EN);
15471558

15481559
/* Read Test */
1549-
pwrap_read(wrp,
1550-
wrp->slave->dew_regs[PWRAP_DEW_READ_TEST], &rdata);
1551-
if (rdata != PWRAP_DEW_READ_TEST_VAL) {
1552-
dev_err(wrp->dev,
1553-
"Read failed on DIO mode: 0x%04x!=0x%04x\n",
1554-
PWRAP_DEW_READ_TEST_VAL, rdata);
1560+
read_ok = pwrap_pmic_read_test(wrp, wrp->slave->dew_regs, PWRAP_DEW_READ_TEST_VAL);
1561+
if (!read_ok) {
1562+
dev_err(wrp->dev, "Read failed on DIO mode.\n");
15551563
return -EFAULT;
15561564
}
15571565

0 commit comments

Comments
 (0)