@@ -705,130 +705,20 @@ static int rockchip_pcie_setup_irq(struct rockchip_pcie *rockchip)
705
705
}
706
706
707
707
/**
708
- * rockchip_pcie_parse_dt - Parse Device Tree
708
+ * rockchip_pcie_parse_host_dt - Parse Device Tree
709
709
* @rockchip: PCIe port information
710
710
*
711
711
* Return: '0' on success and error value on failure
712
712
*/
713
- static int rockchip_pcie_parse_dt (struct rockchip_pcie * rockchip )
713
+ static int rockchip_pcie_parse_host_dt (struct rockchip_pcie * rockchip )
714
714
{
715
715
struct device * dev = rockchip -> dev ;
716
- struct platform_device * pdev = to_platform_device (dev );
717
- struct device_node * node = dev -> of_node ;
718
- struct resource * regs ;
719
716
int err ;
720
717
721
- regs = platform_get_resource_byname (pdev ,
722
- IORESOURCE_MEM ,
723
- "axi-base" );
724
- rockchip -> reg_base = devm_pci_remap_cfg_resource (dev , regs );
725
- if (IS_ERR (rockchip -> reg_base ))
726
- return PTR_ERR (rockchip -> reg_base );
727
-
728
- regs = platform_get_resource_byname (pdev ,
729
- IORESOURCE_MEM ,
730
- "apb-base" );
731
- rockchip -> apb_base = devm_ioremap_resource (dev , regs );
732
- if (IS_ERR (rockchip -> apb_base ))
733
- return PTR_ERR (rockchip -> apb_base );
734
-
735
- err = rockchip_pcie_get_phys (rockchip );
718
+ err = rockchip_pcie_parse_dt (rockchip );
736
719
if (err )
737
720
return err ;
738
721
739
- rockchip -> lanes = 1 ;
740
- err = of_property_read_u32 (node , "num-lanes" , & rockchip -> lanes );
741
- if (!err && (rockchip -> lanes == 0 ||
742
- rockchip -> lanes == 3 ||
743
- rockchip -> lanes > 4 )) {
744
- dev_warn (dev , "invalid num-lanes, default to use one lane\n" );
745
- rockchip -> lanes = 1 ;
746
- }
747
-
748
- rockchip -> link_gen = of_pci_get_max_link_speed (node );
749
- if (rockchip -> link_gen < 0 || rockchip -> link_gen > 2 )
750
- rockchip -> link_gen = 2 ;
751
-
752
- rockchip -> core_rst = devm_reset_control_get_exclusive (dev , "core" );
753
- if (IS_ERR (rockchip -> core_rst )) {
754
- if (PTR_ERR (rockchip -> core_rst ) != - EPROBE_DEFER )
755
- dev_err (dev , "missing core reset property in node\n" );
756
- return PTR_ERR (rockchip -> core_rst );
757
- }
758
-
759
- rockchip -> mgmt_rst = devm_reset_control_get_exclusive (dev , "mgmt" );
760
- if (IS_ERR (rockchip -> mgmt_rst )) {
761
- if (PTR_ERR (rockchip -> mgmt_rst ) != - EPROBE_DEFER )
762
- dev_err (dev , "missing mgmt reset property in node\n" );
763
- return PTR_ERR (rockchip -> mgmt_rst );
764
- }
765
-
766
- rockchip -> mgmt_sticky_rst = devm_reset_control_get_exclusive (dev ,
767
- "mgmt-sticky" );
768
- if (IS_ERR (rockchip -> mgmt_sticky_rst )) {
769
- if (PTR_ERR (rockchip -> mgmt_sticky_rst ) != - EPROBE_DEFER )
770
- dev_err (dev , "missing mgmt-sticky reset property in node\n" );
771
- return PTR_ERR (rockchip -> mgmt_sticky_rst );
772
- }
773
-
774
- rockchip -> pipe_rst = devm_reset_control_get_exclusive (dev , "pipe" );
775
- if (IS_ERR (rockchip -> pipe_rst )) {
776
- if (PTR_ERR (rockchip -> pipe_rst ) != - EPROBE_DEFER )
777
- dev_err (dev , "missing pipe reset property in node\n" );
778
- return PTR_ERR (rockchip -> pipe_rst );
779
- }
780
-
781
- rockchip -> pm_rst = devm_reset_control_get_exclusive (dev , "pm" );
782
- if (IS_ERR (rockchip -> pm_rst )) {
783
- if (PTR_ERR (rockchip -> pm_rst ) != - EPROBE_DEFER )
784
- dev_err (dev , "missing pm reset property in node\n" );
785
- return PTR_ERR (rockchip -> pm_rst );
786
- }
787
-
788
- rockchip -> pclk_rst = devm_reset_control_get_exclusive (dev , "pclk" );
789
- if (IS_ERR (rockchip -> pclk_rst )) {
790
- if (PTR_ERR (rockchip -> pclk_rst ) != - EPROBE_DEFER )
791
- dev_err (dev , "missing pclk reset property in node\n" );
792
- return PTR_ERR (rockchip -> pclk_rst );
793
- }
794
-
795
- rockchip -> aclk_rst = devm_reset_control_get_exclusive (dev , "aclk" );
796
- if (IS_ERR (rockchip -> aclk_rst )) {
797
- if (PTR_ERR (rockchip -> aclk_rst ) != - EPROBE_DEFER )
798
- dev_err (dev , "missing aclk reset property in node\n" );
799
- return PTR_ERR (rockchip -> aclk_rst );
800
- }
801
-
802
- rockchip -> ep_gpio = devm_gpiod_get (dev , "ep" , GPIOD_OUT_HIGH );
803
- if (IS_ERR (rockchip -> ep_gpio )) {
804
- dev_err (dev , "missing ep-gpios property in node\n" );
805
- return PTR_ERR (rockchip -> ep_gpio );
806
- }
807
-
808
- rockchip -> aclk_pcie = devm_clk_get (dev , "aclk" );
809
- if (IS_ERR (rockchip -> aclk_pcie )) {
810
- dev_err (dev , "aclk clock not found\n" );
811
- return PTR_ERR (rockchip -> aclk_pcie );
812
- }
813
-
814
- rockchip -> aclk_perf_pcie = devm_clk_get (dev , "aclk-perf" );
815
- if (IS_ERR (rockchip -> aclk_perf_pcie )) {
816
- dev_err (dev , "aclk_perf clock not found\n" );
817
- return PTR_ERR (rockchip -> aclk_perf_pcie );
818
- }
819
-
820
- rockchip -> hclk_pcie = devm_clk_get (dev , "hclk" );
821
- if (IS_ERR (rockchip -> hclk_pcie )) {
822
- dev_err (dev , "hclk clock not found\n" );
823
- return PTR_ERR (rockchip -> hclk_pcie );
824
- }
825
-
826
- rockchip -> clk_pcie_pm = devm_clk_get (dev , "pm" );
827
- if (IS_ERR (rockchip -> clk_pcie_pm )) {
828
- dev_err (dev , "pm clock not found\n" );
829
- return PTR_ERR (rockchip -> clk_pcie_pm );
830
- }
831
-
832
722
err = rockchip_pcie_setup_irq (rockchip );
833
723
if (err )
834
724
return err ;
@@ -1195,8 +1085,9 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
1195
1085
1196
1086
platform_set_drvdata (pdev , rockchip );
1197
1087
rockchip -> dev = dev ;
1088
+ rockchip -> is_rc = true;
1198
1089
1199
- err = rockchip_pcie_parse_dt (rockchip );
1090
+ err = rockchip_pcie_parse_host_dt (rockchip );
1200
1091
if (err )
1201
1092
return err ;
1202
1093
0 commit comments