linux/drivers/platform/surface
Maximilian Luz 8145476fc7 platform/surface: aggregator_registry: Give devices time to set up when connecting
Sometimes, the "base connected" event that we rely on to (re-)attach the
device connected to the base is sent a bit too early. When this happens,
some devices may not be completely ready yet.

Specifically, the battery has been observed to report zero-values for
things like full charge capacity, which, however, is only loaded once
when the driver for that device probes. This can thus result in battery
readings being unavailable.

As we cannot easily and reliably discern between devices that are not
ready yet and devices that are not connected (i.e. will never be ready),
delay adding these devices. This should give them enough time to set up.

The delay is set to 2.5 seconds, which should give us a good safety
margin based on testing and still be fairly responsive for users.

To achieve that delay switch to updating via a delayed work struct,
which means that we can also get rid of some locking.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Link: https://lore.kernel.org/r/20210405231222.358113-1-luzmaximilian@gmail.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-04-07 19:47:23 +02:00
..
aggregator platform/surface: aggregator: Make SSAM_DEFINE_SYNC_REQUEST_x define static functions 2021-03-08 11:33:28 +01:00
Kconfig platform/surface: dtx: Add support for native SSAM devices 2021-03-17 18:39:38 +01:00
Makefile platform/surface: Add DTX driver 2021-03-17 18:39:38 +01:00
surface3_button.c platform/surface: Move Surface 3 Button driver to platform/surface 2020-10-27 12:51:24 +01:00
surface3_power.c platform/surface: Move Surface 3 Power OpRegion driver to platform/surface 2020-10-27 12:51:24 +01:00
surface3-wmi.c platform/surface: surface3-wmi: Fix variable 'status' set but not used compiler warning 2021-02-04 13:23:55 +01:00
surface_acpi_notify.c platform/surface: fix potential integer overflow on shift of a int 2021-01-13 10:25:10 +01:00
surface_aggregator_cdev.c platform/surface: aggregator_cdev: Add comments regarding unchecked allocation size 2021-01-13 10:30:21 +01:00
surface_aggregator_registry.c platform/surface: aggregator_registry: Give devices time to set up when connecting 2021-04-07 19:47:23 +02:00
surface_dtx.c platform/surface: clean up a variable in surface_dtx_read() 2021-04-07 19:47:22 +02:00
surface_gpe.c platform/surface: surface_gpe: Fix non-PM_SLEEP build warnings 2021-01-04 15:54:27 +01:00
surface_hotplug.c platform/surface: Add Surface Hot-Plug driver 2021-02-08 16:59:21 +01:00
surface_platform_profile.c platform/surface: aggregator: Make SSAM_DEFINE_SYNC_REQUEST_x define static functions 2021-03-08 11:33:28 +01:00
surfacepro3_button.c platform: x86: ACPI: Get rid of ACPICA message printing 2021-03-08 11:33:39 +01:00