@@ -618,15 +618,17 @@ static const struct acpi_gpio_mapping ssam_acpi_gpios[] = {
618
618
619
619
static int ssam_serial_hub_probe (struct serdev_device * serdev )
620
620
{
621
- struct acpi_device * ssh = ACPI_COMPANION (& serdev -> dev );
621
+ struct device * dev = & serdev -> dev ;
622
+ struct acpi_device * ssh = ACPI_COMPANION (dev );
622
623
struct ssam_controller * ctrl ;
623
624
acpi_status astatus ;
624
625
int status ;
625
626
626
- if (gpiod_count (& serdev -> dev , NULL ) < 0 )
627
- return - ENODEV ;
627
+ status = gpiod_count (dev , NULL );
628
+ if (status < 0 )
629
+ return dev_err_probe (dev , status , "no GPIO found\n" );
628
630
629
- status = devm_acpi_dev_add_driver_gpios (& serdev -> dev , ssam_acpi_gpios );
631
+ status = devm_acpi_dev_add_driver_gpios (dev , ssam_acpi_gpios );
630
632
if (status )
631
633
return status ;
632
634
@@ -637,21 +639,25 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
637
639
638
640
/* Initialize controller. */
639
641
status = ssam_controller_init (ctrl , serdev );
640
- if (status )
642
+ if (status ) {
643
+ dev_err_probe (dev , status , "failed to initialize ssam controller\n" );
641
644
goto err_ctrl_init ;
645
+ }
642
646
643
647
ssam_controller_lock (ctrl );
644
648
645
649
/* Set up serdev device. */
646
650
serdev_device_set_drvdata (serdev , ctrl );
647
651
serdev_device_set_client_ops (serdev , & ssam_serdev_ops );
648
652
status = serdev_device_open (serdev );
649
- if (status )
653
+ if (status ) {
654
+ dev_err_probe (dev , status , "failed to open serdev device\n" );
650
655
goto err_devopen ;
656
+ }
651
657
652
658
astatus = ssam_serdev_setup_via_acpi (ssh -> handle , serdev );
653
659
if (ACPI_FAILURE (astatus )) {
654
- status = - ENXIO ;
660
+ status = dev_err_probe ( dev , - ENXIO , "failed to setup serdev\n" ) ;
655
661
goto err_devinit ;
656
662
}
657
663
@@ -667,25 +673,33 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
667
673
* states.
668
674
*/
669
675
status = ssam_log_firmware_version (ctrl );
670
- if (status )
676
+ if (status ) {
677
+ dev_err_probe (dev , status , "failed to get firmware version\n" );
671
678
goto err_initrq ;
679
+ }
672
680
673
681
status = ssam_ctrl_notif_d0_entry (ctrl );
674
- if (status )
682
+ if (status ) {
683
+ dev_err_probe (dev , status , "D0-entry notification failed\n" );
675
684
goto err_initrq ;
685
+ }
676
686
677
687
status = ssam_ctrl_notif_display_on (ctrl );
678
- if (status )
688
+ if (status ) {
689
+ dev_err_probe (dev , status , "display-on notification failed\n" );
679
690
goto err_initrq ;
691
+ }
680
692
681
- status = sysfs_create_group (& serdev -> dev . kobj , & ssam_sam_group );
693
+ status = sysfs_create_group (& dev -> kobj , & ssam_sam_group );
682
694
if (status )
683
695
goto err_initrq ;
684
696
685
697
/* Set up IRQ. */
686
698
status = ssam_irq_setup (ctrl );
687
- if (status )
699
+ if (status ) {
700
+ dev_err_probe (dev , status , "failed to setup IRQ\n" );
688
701
goto err_irq ;
702
+ }
689
703
690
704
/* Finally, set main controller reference. */
691
705
status = ssam_try_set_controller (ctrl );
@@ -702,15 +716,15 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
702
716
* resumed. In short, this causes some spurious unwanted wake-ups.
703
717
* For now let's thus default power/wakeup to false.
704
718
*/
705
- device_set_wakeup_capable (& serdev -> dev , true);
719
+ device_set_wakeup_capable (dev , true);
706
720
acpi_dev_clear_dependencies (ssh );
707
721
708
722
return 0 ;
709
723
710
724
err_mainref :
711
725
ssam_irq_free (ctrl );
712
726
err_irq :
713
- sysfs_remove_group (& serdev -> dev . kobj , & ssam_sam_group );
727
+ sysfs_remove_group (& dev -> kobj , & ssam_sam_group );
714
728
err_initrq :
715
729
ssam_controller_lock (ctrl );
716
730
ssam_controller_shutdown (ctrl );
0 commit comments