Re: [PATCH] platform/chrome: cros_ec_typec: Check for EC driver

From: Akihiko Odaki
Date: Thu Apr 07 2022 - 13:28:20 EST


On 2022/04/08 2:09, Benson Leung wrote:
Hi Akihiko,

On Fri, Apr 08, 2022 at 02:03:52AM +0900, Akihiko Odaki wrote:
If I read the code correctly, the registration itself happens synchronously
and platform_device_register_data() always returns a non-NULL value unless
it returns -ENOMEM. The driver, however, can be asynchronously bound and
dev_get_drvdata(&typec->ec->ec->dev) can return NULL as the consequence. It
would have a call trace like the following when scheduling asynchronous
driver binding:
platform_device_register_data()
platform_device_register_resndata()
platform_device_register_full()
- This always creates and returns platform_device.
platform_device_add()
- This adds the created platform_device.
device_add()
bus_probe_device()
device_initial_probe()
__device_attach()
- This schedules asynchronous probing.

typec->ec->ec should be pointing to the correct platform_device as the
patched driver works without Oops on my computer. It is not NULL at least.

Can you provide more information about your test computer in this case?

Is it a Chromebook running stock firmware (if so, please let us know which
model, and which firmware version it is running).
In the past, we've also gotten some reports from people running MrChromebox
custom firmware on older Chromebooks which have exposed other bugs in
this driver.

Let us know if that's the case here, and where we can get that firmware.

My computer is Lenovo ThinkPad C13 Yoga Chromebook. It is running the stock firmware. The firmware was updated by running the following command on Google Chrome OS Version 99.0.4844.86 (Official Build) (64-Bit):
chromeos-firmwareupdate --mode=recovery

Regards,
Akihiko Odaki


Thanks,
Benson