@@ -2471,11 +2471,9 @@ static int phy_dp_clks_register(struct qmp_combo *qmp, struct device_node *np)
2471
2471
return devm_add_action_or_reset (qmp -> dev , phy_clk_release_provider , np );
2472
2472
}
2473
2473
2474
- static int qmp_combo_create_dp (struct qmp_combo * qmp , struct device_node * np )
2474
+ static int qmp_combo_parse_dt_lecacy_dp (struct qmp_combo * qmp , struct device_node * np )
2475
2475
{
2476
2476
struct device * dev = qmp -> dev ;
2477
- struct phy * generic_phy ;
2478
- int ret ;
2479
2477
2480
2478
/*
2481
2479
* Get memory resources from the DP child node:
@@ -2496,25 +2494,13 @@ static int qmp_combo_create_dp(struct qmp_combo *qmp, struct device_node *np)
2496
2494
if (IS_ERR (qmp -> dp_tx2 ))
2497
2495
return PTR_ERR (qmp -> dp_tx2 );
2498
2496
2499
- generic_phy = devm_phy_create (dev , np , & qmp_combo_dp_phy_ops );
2500
- if (IS_ERR (generic_phy )) {
2501
- ret = PTR_ERR (generic_phy );
2502
- dev_err (dev , "failed to create DP PHY: %d\n" , ret );
2503
- return ret ;
2504
- }
2505
-
2506
- qmp -> dp_phy = generic_phy ;
2507
- phy_set_drvdata (generic_phy , qmp );
2508
-
2509
2497
return 0 ;
2510
2498
}
2511
2499
2512
- static int qmp_combo_create_usb (struct qmp_combo * qmp , struct device_node * np )
2500
+ static int qmp_combo_parse_dt_lecacy_usb (struct qmp_combo * qmp , struct device_node * np )
2513
2501
{
2514
2502
const struct qmp_phy_cfg * cfg = qmp -> cfg ;
2515
2503
struct device * dev = qmp -> dev ;
2516
- struct phy * generic_phy ;
2517
- int ret ;
2518
2504
2519
2505
/*
2520
2506
* Get memory resources from the USB child node:
@@ -2556,15 +2542,34 @@ static int qmp_combo_create_usb(struct qmp_combo *qmp, struct device_node *np)
2556
2542
"failed to get pipe clock\n" );
2557
2543
}
2558
2544
2559
- generic_phy = devm_phy_create (dev , np , & qmp_combo_usb_phy_ops );
2560
- if (IS_ERR (generic_phy )) {
2561
- ret = PTR_ERR (generic_phy );
2562
- dev_err (dev , "failed to create USB PHY: %d\n" , ret );
2545
+ return 0 ;
2546
+ }
2547
+
2548
+ static int qmp_combo_parse_dt_legacy (struct qmp_combo * qmp , struct device_node * usb_np ,
2549
+ struct device_node * dp_np )
2550
+ {
2551
+ struct platform_device * pdev = to_platform_device (qmp -> dev );
2552
+ int ret ;
2553
+
2554
+ qmp -> serdes = devm_platform_ioremap_resource (pdev , 0 );
2555
+ if (IS_ERR (qmp -> serdes ))
2556
+ return PTR_ERR (qmp -> serdes );
2557
+
2558
+ qmp -> dp_com = devm_platform_ioremap_resource (pdev , 1 );
2559
+ if (IS_ERR (qmp -> dp_com ))
2560
+ return PTR_ERR (qmp -> dp_com );
2561
+
2562
+ qmp -> dp_serdes = devm_platform_ioremap_resource (pdev , 2 );
2563
+ if (IS_ERR (qmp -> dp_serdes ))
2564
+ return PTR_ERR (qmp -> dp_serdes );
2565
+
2566
+ ret = qmp_combo_parse_dt_lecacy_usb (qmp , usb_np );
2567
+ if (ret )
2563
2568
return ret ;
2564
- }
2565
2569
2566
- qmp -> usb_phy = generic_phy ;
2567
- phy_set_drvdata (generic_phy , qmp );
2570
+ ret = qmp_combo_parse_dt_lecacy_dp (qmp , dp_np );
2571
+ if (ret )
2572
+ return ret ;
2568
2573
2569
2574
return 0 ;
2570
2575
}
@@ -2587,18 +2592,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
2587
2592
if (!qmp -> cfg )
2588
2593
return - EINVAL ;
2589
2594
2590
- qmp -> serdes = devm_platform_ioremap_resource (pdev , 0 );
2591
- if (IS_ERR (qmp -> serdes ))
2592
- return PTR_ERR (qmp -> serdes );
2593
-
2594
- qmp -> dp_com = devm_platform_ioremap_resource (pdev , 1 );
2595
- if (IS_ERR (qmp -> dp_com ))
2596
- return PTR_ERR (qmp -> dp_com );
2597
-
2598
- qmp -> dp_serdes = devm_platform_ioremap_resource (pdev , 2 );
2599
- if (IS_ERR (qmp -> dp_serdes ))
2600
- return PTR_ERR (qmp -> dp_serdes );
2601
-
2602
2595
mutex_init (& qmp -> phy_mutex );
2603
2596
2604
2597
ret = qmp_combo_clk_init (qmp );
@@ -2623,6 +2616,10 @@ static int qmp_combo_probe(struct platform_device *pdev)
2623
2616
return - EINVAL ;
2624
2617
}
2625
2618
2619
+ ret = qmp_combo_parse_dt_legacy (qmp , usb_np , dp_np );
2620
+ if (ret )
2621
+ goto err_node_put ;
2622
+
2626
2623
pm_runtime_set_active (dev );
2627
2624
ret = devm_pm_runtime_enable (dev );
2628
2625
if (ret )
@@ -2633,21 +2630,31 @@ static int qmp_combo_probe(struct platform_device *pdev)
2633
2630
*/
2634
2631
pm_runtime_forbid (dev );
2635
2632
2636
- ret = qmp_combo_create_usb (qmp , usb_np );
2633
+ ret = phy_pipe_clk_register (qmp , usb_np );
2637
2634
if (ret )
2638
2635
goto err_node_put ;
2639
2636
2640
- ret = phy_pipe_clk_register (qmp , usb_np );
2637
+ ret = phy_dp_clks_register (qmp , dp_np );
2641
2638
if (ret )
2642
2639
goto err_node_put ;
2643
2640
2644
- ret = qmp_combo_create_dp (qmp , dp_np );
2645
- if (ret )
2641
+ qmp -> usb_phy = devm_phy_create (dev , usb_np , & qmp_combo_usb_phy_ops );
2642
+ if (IS_ERR (qmp -> usb_phy )) {
2643
+ ret = PTR_ERR (qmp -> usb_phy );
2644
+ dev_err (dev , "failed to create USB PHY: %d\n" , ret );
2646
2645
goto err_node_put ;
2646
+ }
2647
2647
2648
- ret = phy_dp_clks_register (qmp , dp_np );
2649
- if (ret )
2648
+ phy_set_drvdata (qmp -> usb_phy , qmp );
2649
+
2650
+ qmp -> dp_phy = devm_phy_create (dev , dp_np , & qmp_combo_dp_phy_ops );
2651
+ if (IS_ERR (qmp -> dp_phy )) {
2652
+ ret = PTR_ERR (qmp -> dp_phy );
2653
+ dev_err (dev , "failed to create DP PHY: %d\n" , ret );
2650
2654
goto err_node_put ;
2655
+ }
2656
+
2657
+ phy_set_drvdata (qmp -> dp_phy , qmp );
2651
2658
2652
2659
phy_provider = devm_of_phy_provider_register (dev , of_phy_simple_xlate );
2653
2660
0 commit comments