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.
Tomi
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki