madera: Add boot delay for Moon

Moon also requires a delay before reading the boot done bit and clearing
the boot done interrupt. Otherwise the interrupt line gets pulled low
forever.

Change-Id: Ie4fbdd36d13e5ac2c75bf2171fbd44690773c1f4
Signed-off-by: Ravi Vembu <raviv@motorola.com>

Mot-CRs-Fixed: (CR)
Change-Id: Ie4fbdd36d13e5ac2c75bf2171fbd44690773c1f4
Reviewed-on: https://gerrit.mot.com/1209117
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Rav(CR) Vembu <raviv@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
Ravi Vembu 2018-07-12 14:34:04 -05:00 • committed by Ravikumar Vembu
commit 6896ea4fc2

View file

@ -227,21 +227,19 @@ static int madera_wait_for_boot(struct madera *madera)
unsigned int val;
/* ensure chid can read correctly, then check boot done bit */
if (madera->type == CS47L35) {
for (i = 0; i < timeout; i++) {
ret = regmap_read(madera->regmap, MADERA_SOFTWARE_RESET, &val);
if (ret != 0) {
dev_err(madera->dev, "Failed to read chip id, ret %d\n", ret);
continue;
}
if (val == CS47L35_SILICON_ID)
break;
usleep_range(1000, 1010);
for (i = 0; i < timeout; i++) {
ret = regmap_read(madera->regmap, MADERA_SOFTWARE_RESET, &val);
if (ret != 0) {
dev_err(madera->dev, "Failed to read chip id, ret %d\n", ret);
continue;
}
if (i >= timeout)
return -ETIMEDOUT;
if (val == CS47L35_SILICON_ID || val == CS47L90_SILICON_ID)
break;
usleep_range(1000, 1010);
}
if (i >= timeout)
return -ETIMEDOUT;
/*
* We can't use an interrupt as we need to runtime resume to do so,
* we won't race with the interrupt handler as it'll be blocked on