bus: ti-sysc: Handle mstandby quirk and use it for musb
We need swsup quirks for sidle and mstandby for musb to work properly. Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
Родитель
96b4597f0e
Коммит
03856e928b
|
@ -917,6 +917,9 @@ set_midle:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_MSTANDBY)
|
||||||
|
best_mode = SYSC_IDLE_NO;
|
||||||
|
|
||||||
reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift);
|
reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift);
|
||||||
reg |= best_mode << regbits->midle_shift;
|
reg |= best_mode << regbits->midle_shift;
|
||||||
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
|
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
|
||||||
|
@ -978,6 +981,9 @@ static int sysc_disable_module(struct device *dev)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_MSTANDBY)
|
||||||
|
best_mode = SYSC_IDLE_FORCE;
|
||||||
|
|
||||||
reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift);
|
reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift);
|
||||||
reg |= best_mode << regbits->midle_shift;
|
reg |= best_mode << regbits->midle_shift;
|
||||||
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
|
sysc_write(ddata, ddata->offsets[SYSC_SYSCONFIG], reg);
|
||||||
|
@ -1251,6 +1257,8 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
|
||||||
SYSC_QUIRK("gpu", 0x50000000, 0x14, -1, -1, 0x00010201, 0xffffffff, 0),
|
SYSC_QUIRK("gpu", 0x50000000, 0x14, -1, -1, 0x00010201, 0xffffffff, 0),
|
||||||
SYSC_QUIRK("gpu", 0x50000000, 0xfe00, 0xfe10, -1, 0x40000000 , 0xffffffff,
|
SYSC_QUIRK("gpu", 0x50000000, 0xfe00, 0xfe10, -1, 0x40000000 , 0xffffffff,
|
||||||
SYSC_MODULE_QUIRK_SGX),
|
SYSC_MODULE_QUIRK_SGX),
|
||||||
|
SYSC_QUIRK("usb_otg_hs", 0, 0x400, 0x404, 0x408, 0x00000050,
|
||||||
|
0xffffffff, SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
|
||||||
SYSC_QUIRK("wdt", 0, 0, 0x10, 0x14, 0x502a0500, 0xfffff0f0,
|
SYSC_QUIRK("wdt", 0, 0, 0x10, 0x14, 0x502a0500, 0xfffff0f0,
|
||||||
SYSC_MODULE_QUIRK_WDT),
|
SYSC_MODULE_QUIRK_WDT),
|
||||||
/* Watchdog on am3 and am4 */
|
/* Watchdog on am3 and am4 */
|
||||||
|
@ -1309,8 +1317,6 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
|
||||||
SYSC_QUIRK("usbhstll", 0, 0, 0x10, 0x14, 0x00000008, 0xffffffff, 0),
|
SYSC_QUIRK("usbhstll", 0, 0, 0x10, 0x14, 0x00000008, 0xffffffff, 0),
|
||||||
SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, 0x14, 0x50700100, 0xffffffff, 0),
|
SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, 0x14, 0x50700100, 0xffffffff, 0),
|
||||||
SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -1, 0x50700101, 0xffffffff, 0),
|
SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -1, 0x50700101, 0xffffffff, 0),
|
||||||
SYSC_QUIRK("usb_otg_hs", 0, 0x400, 0x404, 0x408, 0x00000050,
|
|
||||||
0xffffffff, 0),
|
|
||||||
SYSC_QUIRK("vfpe", 0, 0, 0x104, -1, 0x4d001200, 0xffffffff, 0),
|
SYSC_QUIRK("vfpe", 0, 0, 0x104, -1, 0x4d001200, 0xffffffff, 0),
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче