@@ -2471,11 +2471,9 @@ static int phy_dp_clks_register(struct qmp_combo *qmp, struct device_node *np)
24712471 return devm_add_action_or_reset (qmp -> dev , phy_clk_release_provider , np );
24722472}
24732473
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 )
24752475{
24762476 struct device * dev = qmp -> dev ;
2477- struct phy * generic_phy ;
2478- int ret ;
24792477
24802478 /*
24812479 * 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)
24962494 if (IS_ERR (qmp -> dp_tx2 ))
24972495 return PTR_ERR (qmp -> dp_tx2 );
24982496
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-
25092497 return 0 ;
25102498}
25112499
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 )
25132501{
25142502 const struct qmp_phy_cfg * cfg = qmp -> cfg ;
25152503 struct device * dev = qmp -> dev ;
2516- struct phy * generic_phy ;
2517- int ret ;
25182504
25192505 /*
25202506 * 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)
25562542 "failed to get pipe clock\n" );
25572543 }
25582544
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 )
25632568 return ret ;
2564- }
25652569
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 ;
25682573
25692574 return 0 ;
25702575}
@@ -2587,18 +2592,6 @@ static int qmp_combo_probe(struct platform_device *pdev)
25872592 if (!qmp -> cfg )
25882593 return - EINVAL ;
25892594
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-
26022595 mutex_init (& qmp -> phy_mutex );
26032596
26042597 ret = qmp_combo_clk_init (qmp );
@@ -2623,6 +2616,10 @@ static int qmp_combo_probe(struct platform_device *pdev)
26232616 return - EINVAL ;
26242617 }
26252618
2619+ ret = qmp_combo_parse_dt_legacy (qmp , usb_np , dp_np );
2620+ if (ret )
2621+ goto err_node_put ;
2622+
26262623 pm_runtime_set_active (dev );
26272624 ret = devm_pm_runtime_enable (dev );
26282625 if (ret )
@@ -2633,21 +2630,31 @@ static int qmp_combo_probe(struct platform_device *pdev)
26332630 */
26342631 pm_runtime_forbid (dev );
26352632
2636- ret = qmp_combo_create_usb (qmp , usb_np );
2633+ ret = phy_pipe_clk_register (qmp , usb_np );
26372634 if (ret )
26382635 goto err_node_put ;
26392636
2640- ret = phy_pipe_clk_register (qmp , usb_np );
2637+ ret = phy_dp_clks_register (qmp , dp_np );
26412638 if (ret )
26422639 goto err_node_put ;
26432640
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 );
26462645 goto err_node_put ;
2646+ }
26472647
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 );
26502654 goto err_node_put ;
2655+ }
2656+
2657+ phy_set_drvdata (qmp -> dp_phy , qmp );
26512658
26522659 phy_provider = devm_of_phy_provider_register (dev , of_phy_simple_xlate );
26532660
0 commit comments