bus: ti-sysc: Improve reset to work with modules with no sysconfig
authorTony Lindgren <tony@atomide.com>
Mon, 24 Feb 2020 20:58:03 +0000 (12:58 -0800)
committerTony Lindgren <tony@atomide.com>
Wed, 26 Feb 2020 18:03:35 +0000 (10:03 -0800)
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>
drivers/bus/ti-sysc.c

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