@@ -621,7 +621,8 @@ static int lt8912_parse_dt(struct lt8912 *lt)
621
621
{
622
622
struct gpio_desc * gp_reset ;
623
623
struct device * dev = lt -> dev ;
624
- int ret = 0 ;
624
+ int ret ;
625
+ int data_lanes ;
625
626
struct device_node * port_node ;
626
627
struct device_node * endpoint ;
627
628
@@ -635,19 +636,21 @@ static int lt8912_parse_dt(struct lt8912 *lt)
635
636
lt -> gp_reset = gp_reset ;
636
637
637
638
endpoint = of_graph_get_endpoint_by_regs (dev -> of_node , 0 , -1 );
638
- if (IS_ERR (endpoint )) {
639
- ret = PTR_ERR (endpoint );
640
- goto end ;
641
- }
639
+ if (!endpoint )
640
+ return - ENODEV ;
642
641
643
- lt -> data_lanes = of_property_count_u32_elems (endpoint , "data-lanes" );
642
+ data_lanes = of_property_count_u32_elems (endpoint , "data-lanes" );
644
643
of_node_put (endpoint );
644
+ if (data_lanes < 0 ) {
645
+ dev_err (lt -> dev , "%s: Bad data-lanes property\n" , __func__ );
646
+ return data_lanes ;
647
+ }
648
+ lt -> data_lanes = data_lanes ;
645
649
646
650
lt -> host_node = of_graph_get_remote_node (dev -> of_node , 0 , -1 );
647
651
if (!lt -> host_node ) {
648
652
dev_err (lt -> dev , "%s: Failed to get remote port\n" , __func__ );
649
- ret = - ENODEV ;
650
- goto end ;
653
+ return - ENODEV ;
651
654
}
652
655
653
656
port_node = of_graph_get_remote_node (dev -> of_node , 1 , -1 );
@@ -658,24 +661,23 @@ static int lt8912_parse_dt(struct lt8912 *lt)
658
661
}
659
662
660
663
lt -> hdmi_port = of_drm_find_bridge (port_node );
661
- if (IS_ERR ( lt -> hdmi_port ) ) {
664
+ if (! lt -> hdmi_port ) {
662
665
dev_err (lt -> dev , "%s: Failed to get hdmi port\n" , __func__ );
663
- ret = PTR_ERR (lt -> hdmi_port );
664
- of_node_put (lt -> host_node );
665
- goto end ;
666
+ ret = - ENODEV ;
667
+ goto err_free_host_node ;
666
668
}
667
669
668
670
if (!of_device_is_compatible (port_node , "hdmi-connector" )) {
669
671
dev_err (lt -> dev , "%s: Failed to get hdmi port\n" , __func__ );
670
672
ret = - EINVAL ;
673
+ goto err_free_host_node ;
671
674
}
672
675
673
676
of_node_put (port_node );
674
-
675
- end :
676
- return ret ;
677
+ return 0 ;
677
678
678
679
err_free_host_node :
680
+ of_node_put (port_node );
679
681
of_node_put (lt -> host_node );
680
682
return ret ;
681
683
}
0 commit comments