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

From: Stephen Boyd
Date: Thu Jan 24 2019 - 15:09:56 EST


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.