Re: [PATCH v8 05/26] clocksource: Add driver for the Ingenic JZ47xx OST

From: Stephen Boyd
Date: Thu Jan 24 2019 - 17:46:27 EST


Quoting Paul Cercueil (2019-01-24 12:46:28)
>
>
> Le jeu. 24 janv. 2019 Ã 16:28, Stephen Boyd <sboyd@xxxxxxxxxx> a
> Ãcrit :
> > Quoting Guenter Roeck (2019-01-23 10:01:55)
> >> On Wed, Jan 23, 2019 at 02:25:53PM -0300, Paul Cercueil wrote:
> >> > Hi,
> >> >
> >> > Le mer. 23 janv. 2019 Ã 11:31, Guenter Roeck
> >> <linux@xxxxxxxxxxxx> a ÃÂcrit :
> >> > >On 1/23/19 4:58 AM, Mathieu Malaterre wrote:
> >> > >>On Wed, Dec 12, 2018 at 11:09 PM Paul Cercueil
> >> <paul@xxxxxxxxxxxxxxx>
> >> > >>wrote:
> >> > >>>
> >> > >>>From: Maarten ter Huurne <maarten@xxxxxxxxxxxxxx>
> >> > >>>
> >> > >>>OST is the OS Timer, a 64-bit timer/counter with buffered
> >> reading.
> >> > >>>
> >> > >>>SoCs before the JZ4770 had (if any) a 32-bit OST; the JZ4770
> >> and
> >> > >>>JZ4780 have a 64-bit OST.
> >> > >>>
> >> > >>>This driver will register both a clocksource and a sched_clock
> >> to the
> >> > >>>system.
> >> > >>>
> >> > >>>Signed-off-by: Maarten ter Huurne <maarten@xxxxxxxxxxxxxx>
> >> > >>>Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> >> > >>>---
> >> > >>>
> >> > >>>Notes:
> >> > >>> v5: New patch
> >> > >>>
> >> > >>> v6: - Get rid of SoC IDs; pass pointer to
> >> ingenic_ost_soc_info
> >> > >>>as
> >> > >>> devicetree match data instead.
> >> > >>> - Use device_get_match_data() instead of the of_*
> >> variant
> >> > >>> - Handle error of dev_get_regmap() properly
> >> > >>>
> >> > >>> v7: Fix section mismatch by using
> >> > >>>builtin_platform_driver_probe()
> >> > >>>
> >> > >>> v8: builtin_platform_driver_probe() does not work
> >> anymore in
> >> > >>> 4.20-rc6? The probe function won't be called. Work
> >> around
> >> > >>>this
> >> > >>> for now by using late_initcall.
> >> > >>>
> >> > >
> >> > >Did anyone notice this ? Either something is wrong with the
> >> driver, or
> >> > >with the kernel core. Hacking around it seems like the worst
> >> possible
> >> > >"solution".
> >> >
> >> > I can confirm it still happens on 5.0-rc3.
> >> >
> >> > Just to explain what I'm doing:
> >> >
> >> > My ingenic-timer driver probes with builtin_platform_driver_probe
> >> (this
> >> > works),
> >> > and then calls of_platform_populate to probe its children. This
> >> driver,
> >> > ingenic-ost, is one of them, and will fail to probe with
> >> > builtin_platform_driver_probe.
> >> >
> >>
> >> The big question is _why_ it fails to probe.
> >>
> >
> > Are you sharing the device tree node between a 'normal' platform
> > device
> > driver and something more low level DT that marks the device's backing
> > DT node as OF_POPULATED early on? That's my only guess why it's not
> > working.
>
> I do, but I clear the OF_POPULATED flag so that it is then probed as a
> normal platform device, and it's not on this driver's node but its
> parent.
>

Where do you clear the OF_POPULATED flag?