* Tomi Valkeinen <tomi.valkeinen@xxxxxx> [200303 15:36]: > On 03/03/2020 17:13, Tony Lindgren wrote: > > Hi, > > > > * Tomi Valkeinen <tomi.valkeinen@xxxxxx> [200303 06:03]: > > > On 24/02/2020 21:12, Tony Lindgren wrote: > > > > + /* Remap the whole module range to be able to reset dispc outputs */ > > > > + devm_iounmap(ddata->dev, ddata->module_va); > > > > + ddata->module_va = devm_ioremap(ddata->dev, > > > > + ddata->module_pa, > > > > + ddata->module_size); > > > > > > Why is this needed? The range is not mapped when sysc_pre_reset_quirk_dss() > > > is called? This will unmap and remap twice, as this function is called > > > twice. And then left mapped. > > > > That's because by default we only ioremap the module revision, sysconfig > > and sysstatus register are and provide the rest as a range for the child > > nodes. > > > > In the dss quirk case we need to tinker with registers also in the dispc > > range, and at the parent dss probe time dispc has not probed yet. > > > > We may be able to eventually move the reset quirk to dispc, but then > > it won't happen in the current setup until after dss top level driver > > has loaded. > > > > We leave the module range ioremapped as we still need to access > > sysconfig related registers for PM runtime. > > Ok, makes sense. I guess a minor improvement would be to unmap & remap once > in sysc_pre_reset_quirk_dss before calling sysc_quirk_dispc. Yeah well we'd have to sprawl the module specific quirk checks there too then. I thought about using the whole module range for modules with a large IO range, but so far DSS is the only one needing a quirk hadling covering also child modules like this. Regards, Tony