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.