diff options
author | 2023-12-20 12:02:25 +0000 | |
---|---|---|
committer | 2023-12-20 12:02:31 +0000 | |
commit | 2096d3ec469f9b7ed1a369da6c4f27cc3ea1aff8 (patch) | |
tree | 178ec6020e77e77bc65eaba56e00c4d80fe6ab42 /drivers | |
parent | Merge tag 'reset-fixes-for-v6.7' of git://git.pengutronix.de/pza/linux into a... (diff) | |
parent | ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_... (diff) | |
download | linux-2096d3ec469f9b7ed1a369da6c4f27cc3ea1aff8.tar.gz linux-2096d3ec469f9b7ed1a369da6c4f27cc3ea1aff8.tar.bz2 linux-2096d3ec469f9b7ed1a369da6c4f27cc3ea1aff8.zip |
Merge tag 'omap-for-v6.7/fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/fixes
Fixes for omaps
A few fixes for omaps:
- A regression fix for ti-sysc interconnect target module driver to not access
registers after reset if srst_udelay quirk is needed
- DRA7 L3 NoC node register size fix
* tag 'omap-for-v6.7/fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
ARM: OMAP2+: Fix null pointer dereference and memory leak in omap_soc_device_init
ARM: dts: dra7: Fix DRA7 L3 NoC node register size
bus: ti-sysc: Flush posted write only after srst_udelay
Link: https://lore.kernel.org/r/pull-1702037799-781982@atomide.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/bus/ti-sysc.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c index d57bc066dce6..9ed9239b1228 100644 --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -2158,13 +2158,23 @@ static int sysc_reset(struct sysc *ddata) sysc_val = sysc_read_sysconfig(ddata); sysc_val |= sysc_mask; sysc_write(ddata, sysc_offset, sysc_val); - /* Flush posted write */ + + /* + * Some devices need a delay before reading registers + * after reset. Presumably a srst_udelay is not needed + * for devices that use a rstctrl register reset. + */ + if (ddata->cfg.srst_udelay) + fsleep(ddata->cfg.srst_udelay); + + /* + * Flush posted write. For devices needing srst_udelay + * this should trigger an interconnect error if the + * srst_udelay value is needed but not configured. + */ sysc_val = sysc_read_sysconfig(ddata); } - if (ddata->cfg.srst_udelay) - fsleep(ddata->cfg.srst_udelay); - if (ddata->post_reset_quirk) ddata->post_reset_quirk(ddata); |