[PATCH 2/2] ARM: DRA7xx: hwmod: set DSS submodule parent hwmods
Paul Walmsley
paul at pwsan.com
Thu Jan 8 02:15:12 PST 2015
Hi Tomi,
your detailed description of the problem is really great; thanks for the
summary.
On Mon, 5 Jan 2015, Tomi Valkeinen wrote:
> On 03/01/15 00:50, Paul Walmsley wrote:
> > On Fri, 19 Dec 2014, Tomi Valkeinen wrote:
> >
> >> Set DSS core hwmod as the parent for all the DSS submodules. This fixes
> >> the boot time DSS reset, removing the following warnings:
> >>
> >> omap_hwmod: dss_dispc: cannot be enabled for reset (3)
> >> omap_hwmod: dss_hdmi: cannot be enabled for reset (3)
> >>
> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
> >
> > Thanks, queued for v3.19-rc.
> >
> > Note that I cannot test this patch due to lack of a DRA7xx board here.
>
> Thanks. Unfortunately, I made a mistake with the DRA7xx patch. Well, the
> patch itself is correct, but we have some insanity in the HW that I missed:
>
> DRA7xx has a CTRL_CORE_CONTROL_IO_2 register in the control module,
> which contains bits for various subsystems, including DCAN, PCIe, QSPI
> and DSS. At the moment only DCAN driver uses the register via syscon +
> regmap.
>
> For DSS, the bit 0, DSS_DESHDCP_CLKEN is critical. While the bit is
> rather undocumented, it presumably enables a clock for DSS's HDCP. Now,
> we don't support HDPC in the display driver, but unfortunately the clock
> is required for the DSS hardware to initialize.
Do you know where this DSS_DESHDCP clock appears in the clock tree? Is it
downstream of the main DSS functional clock, or does it come from
somewhere else?
> Without this patch, we see only the few warnings about dss hwmods
> "cannot be enabled", but with the patch, we see those and some WARN()s
> from hwmod as the DSS HW module does not start. So it's a bit worse.
>
> Why I didn't notice this is that I had an u-boot version that enables
> the DSS_DESHDCP_CLKEN bit and leaves it enabled.
>
> So what to do about the issue? You could drop/revert this patch if we
> don't see a quick solution for the DSS_DESHDCP_CLKEN. It won't fix
> anything as such, but lessens the boot-up spam.
Sounds like the thing to do in the short term is to drop that patch from
the fixes series. Then we can add it back when DSS_DESHDCP_CLKEN is
sorted. Are you OK with that for the time being?
> I don't have a good idea how to manage the bit properly. As far as I
> see, the bit has to be managed via syscon, using remap_update_bits, so
> that we get proper locking. With a quick glance, I didn't see anything
> for that in the current clock code. And can we presume that syscon is
> probed before hwmods? I guess not.
Based on the description so far, it sounds like there should be a system
control module driver that registers this clock, along with all of the
other clocks in the CTRL_CORE_CONTROL_IO_2 register. Just shooting from
the hip here, I guess we'd probably list that DSS_DESHDCP_CLKEN clock as
an optional clock for DSS in the hwmod data, and add some code to indicate
that it should be enabled and disabled with the main_clk.
> For the time being, I think the easiest solution would be to just set
> the bit and leave it enabled. My understanding (based on commits in TI's
> product kernel) is that leaving the DSS_DESHDCP_CLKEN enabled doesn't
> really affect much, and any increased power consumption would be too
> small to measure.
>
> If that's the route, the question is still where to enable it. As I
> said, I have an u-boot which enables it, but I'd rather do the enabling
> in the kernel. If in the kernel, where there? It has to happen before
> the hwmod init is ran.
Yeah, that's a tricky question to answer. If DSS_DESHDCP_CLKEN is modeled
as a clock, then it could be marked as ENABLE_ON_INIT, but that seems like
kind of a hack.
- Paul
More information about the linux-arm-kernel
mailing list