mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
platform/surface: aggregator: Log critical errors during SAM probing
Emits messages upon errors during probing of SAM. Hopefully this could provide useful context to user for the purpose of diagnosis when something miserable happen. Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Weifeng Liu <weifeng.liu.z@gmail.com> Link: https://lore.kernel.org/r/20240505130800.2546640-3-weifeng.liu.z@gmail.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
76f09e2202
commit
7c4cd2afee
@ -618,15 +618,17 @@ static const struct acpi_gpio_mapping ssam_acpi_gpios[] = {
|
||||
|
||||
static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
{
|
||||
struct acpi_device *ssh = ACPI_COMPANION(&serdev->dev);
|
||||
struct device *dev = &serdev->dev;
|
||||
struct acpi_device *ssh = ACPI_COMPANION(dev);
|
||||
struct ssam_controller *ctrl;
|
||||
acpi_status astatus;
|
||||
int status;
|
||||
|
||||
if (gpiod_count(&serdev->dev, NULL) < 0)
|
||||
return -ENODEV;
|
||||
status = gpiod_count(dev, NULL);
|
||||
if (status < 0)
|
||||
return dev_err_probe(dev, status, "no GPIO found\n");
|
||||
|
||||
status = devm_acpi_dev_add_driver_gpios(&serdev->dev, ssam_acpi_gpios);
|
||||
status = devm_acpi_dev_add_driver_gpios(dev, ssam_acpi_gpios);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
@ -637,8 +639,10 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
|
||||
/* Initialize controller. */
|
||||
status = ssam_controller_init(ctrl, serdev);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "failed to initialize ssam controller\n");
|
||||
goto err_ctrl_init;
|
||||
}
|
||||
|
||||
ssam_controller_lock(ctrl);
|
||||
|
||||
@ -646,12 +650,14 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
serdev_device_set_drvdata(serdev, ctrl);
|
||||
serdev_device_set_client_ops(serdev, &ssam_serdev_ops);
|
||||
status = serdev_device_open(serdev);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "failed to open serdev device\n");
|
||||
goto err_devopen;
|
||||
}
|
||||
|
||||
astatus = ssam_serdev_setup_via_acpi(ssh->handle, serdev);
|
||||
if (ACPI_FAILURE(astatus)) {
|
||||
status = -ENXIO;
|
||||
status = dev_err_probe(dev, -ENXIO, "failed to setup serdev\n");
|
||||
goto err_devinit;
|
||||
}
|
||||
|
||||
@ -667,25 +673,33 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
* states.
|
||||
*/
|
||||
status = ssam_log_firmware_version(ctrl);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "failed to get firmware version\n");
|
||||
goto err_initrq;
|
||||
}
|
||||
|
||||
status = ssam_ctrl_notif_d0_entry(ctrl);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "D0-entry notification failed\n");
|
||||
goto err_initrq;
|
||||
}
|
||||
|
||||
status = ssam_ctrl_notif_display_on(ctrl);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "display-on notification failed\n");
|
||||
goto err_initrq;
|
||||
}
|
||||
|
||||
status = sysfs_create_group(&serdev->dev.kobj, &ssam_sam_group);
|
||||
status = sysfs_create_group(&dev->kobj, &ssam_sam_group);
|
||||
if (status)
|
||||
goto err_initrq;
|
||||
|
||||
/* Set up IRQ. */
|
||||
status = ssam_irq_setup(ctrl);
|
||||
if (status)
|
||||
if (status) {
|
||||
dev_err_probe(dev, status, "failed to setup IRQ\n");
|
||||
goto err_irq;
|
||||
}
|
||||
|
||||
/* Finally, set main controller reference. */
|
||||
status = ssam_try_set_controller(ctrl);
|
||||
@ -702,7 +716,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
* resumed. In short, this causes some spurious unwanted wake-ups.
|
||||
* For now let's thus default power/wakeup to false.
|
||||
*/
|
||||
device_set_wakeup_capable(&serdev->dev, true);
|
||||
device_set_wakeup_capable(dev, true);
|
||||
acpi_dev_clear_dependencies(ssh);
|
||||
|
||||
return 0;
|
||||
@ -710,7 +724,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
|
||||
err_mainref:
|
||||
ssam_irq_free(ctrl);
|
||||
err_irq:
|
||||
sysfs_remove_group(&serdev->dev.kobj, &ssam_sam_group);
|
||||
sysfs_remove_group(&dev->kobj, &ssam_sam_group);
|
||||
err_initrq:
|
||||
ssam_controller_lock(ctrl);
|
||||
ssam_controller_shutdown(ctrl);
|
||||
|
Loading…
Reference in New Issue
Block a user