bus: ti-sysc: Improve reset to work with modules with no sysconfig

At least display susbsystem (DSS) has modules with no sysconfig registers
and rely on custom function for module reset handling. Let's make reset
work with that too.

Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
Tony Lindgren 2020-02-24 12:58:03 -08:00
parent e64c021fd9
commit ab4d309d87
1 changed files with 6 additions and 4 deletions

View File

@ -1571,7 +1571,7 @@ static int sysc_reset(struct sysc *ddata)
sysc_offset = ddata->offsets[SYSC_SYSCONFIG]; sysc_offset = ddata->offsets[SYSC_SYSCONFIG];
syss_offset = ddata->offsets[SYSC_SYSSTATUS]; syss_offset = ddata->offsets[SYSC_SYSSTATUS];
if (ddata->legacy_mode || sysc_offset < 0 || if (ddata->legacy_mode ||
ddata->cap->regbits->srst_shift < 0 || ddata->cap->regbits->srst_shift < 0 ||
ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT) ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)
return 0; return 0;
@ -1586,9 +1586,11 @@ static int sysc_reset(struct sysc *ddata)
if (ddata->pre_reset_quirk) if (ddata->pre_reset_quirk)
ddata->pre_reset_quirk(ddata); ddata->pre_reset_quirk(ddata);
sysc_val = sysc_read_sysconfig(ddata); if (sysc_offset >= 0) {
sysc_val |= sysc_mask; sysc_val = sysc_read_sysconfig(ddata);
sysc_write(ddata, sysc_offset, sysc_val); sysc_val |= sysc_mask;
sysc_write(ddata, sysc_offset, sysc_val);
}
if (ddata->cfg.srst_udelay) if (ddata->cfg.srst_udelay)
usleep_range(ddata->cfg.srst_udelay, usleep_range(ddata->cfg.srst_udelay,