mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 22:11:38 +08:00
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>
This commit is contained in:
parent
e829f1fc94
commit
db9f132122
@ -1455,6 +1455,18 @@ static int pwrap_regmap_write(void *context, u32 adr, u32 wdata)
|
||||
return pwrap_write(context, adr, wdata);
|
||||
}
|
||||
|
||||
static bool pwrap_pmic_read_test(struct pmic_wrapper *wrp, const u32 *dew_regs,
|
||||
u16 read_test_val)
|
||||
{
|
||||
bool is_success;
|
||||
u32 rdata;
|
||||
|
||||
pwrap_read(wrp, dew_regs[PWRAP_DEW_READ_TEST], &rdata);
|
||||
is_success = ((rdata & U16_MAX) == read_test_val);
|
||||
|
||||
return is_success;
|
||||
}
|
||||
|
||||
static int pwrap_reset_spislave(struct pmic_wrapper *wrp)
|
||||
{
|
||||
bool tmp;
|
||||
@ -1498,18 +1510,18 @@ static int pwrap_reset_spislave(struct pmic_wrapper *wrp)
|
||||
*/
|
||||
static int pwrap_init_sidly(struct pmic_wrapper *wrp)
|
||||
{
|
||||
u32 rdata;
|
||||
u32 i;
|
||||
u32 pass = 0;
|
||||
bool read_ok;
|
||||
signed char dly[16] = {
|
||||
-1, 0, 1, 0, 2, -1, 1, 1, 3, -1, -1, -1, 3, -1, 2, 1
|
||||
};
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
pwrap_writel(wrp, i, PWRAP_SIDLY);
|
||||
pwrap_read(wrp, wrp->slave->dew_regs[PWRAP_DEW_READ_TEST],
|
||||
&rdata);
|
||||
if (rdata == PWRAP_DEW_READ_TEST_VAL) {
|
||||
read_ok = pwrap_pmic_read_test(wrp, wrp->slave->dew_regs,
|
||||
PWRAP_DEW_READ_TEST_VAL);
|
||||
if (read_ok) {
|
||||
dev_dbg(wrp->dev, "[Read Test] pass, SIDLY=%x\n", i);
|
||||
pass |= 1 << i;
|
||||
}
|
||||
@ -1529,8 +1541,7 @@ static int pwrap_init_sidly(struct pmic_wrapper *wrp)
|
||||
static int pwrap_init_dual_io(struct pmic_wrapper *wrp)
|
||||
{
|
||||
int ret;
|
||||
bool tmp;
|
||||
u32 rdata;
|
||||
bool read_ok, tmp;
|
||||
|
||||
/* Enable dual IO mode */
|
||||
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)
|
||||
pwrap_writel(wrp, 1, PWRAP_DIO_EN);
|
||||
|
||||
/* Read Test */
|
||||
pwrap_read(wrp,
|
||||
wrp->slave->dew_regs[PWRAP_DEW_READ_TEST], &rdata);
|
||||
if (rdata != PWRAP_DEW_READ_TEST_VAL) {
|
||||
dev_err(wrp->dev,
|
||||
"Read failed on DIO mode: 0x%04x!=0x%04x\n",
|
||||
PWRAP_DEW_READ_TEST_VAL, rdata);
|
||||
read_ok = pwrap_pmic_read_test(wrp, wrp->slave->dew_regs, PWRAP_DEW_READ_TEST_VAL);
|
||||
if (!read_ok) {
|
||||
dev_err(wrp->dev, "Read failed on DIO mode.\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user