@@ -725,47 +725,32 @@ static int msm_iommu_probe(struct platform_device *pdev)
725
725
iommu -> dev = & pdev -> dev ;
726
726
INIT_LIST_HEAD (& iommu -> ctx_list );
727
727
728
- iommu -> pclk = devm_clk_get (iommu -> dev , "smmu_pclk" );
728
+ iommu -> pclk = devm_clk_get_prepared (iommu -> dev , "smmu_pclk" );
729
729
if (IS_ERR (iommu -> pclk ))
730
730
return dev_err_probe (iommu -> dev , PTR_ERR (iommu -> pclk ),
731
731
"could not get smmu_pclk\n" );
732
732
733
- ret = clk_prepare (iommu -> pclk );
734
- if (ret )
735
- return dev_err_probe (iommu -> dev , ret ,
736
- "could not prepare smmu_pclk\n" );
737
-
738
- iommu -> clk = devm_clk_get (iommu -> dev , "iommu_clk" );
739
- if (IS_ERR (iommu -> clk )) {
740
- clk_unprepare (iommu -> pclk );
733
+ iommu -> clk = devm_clk_get_prepared (iommu -> dev , "iommu_clk" );
734
+ if (IS_ERR (iommu -> clk ))
741
735
return dev_err_probe (iommu -> dev , PTR_ERR (iommu -> clk ),
742
736
"could not get iommu_clk\n" );
743
- }
744
-
745
- ret = clk_prepare (iommu -> clk );
746
- if (ret ) {
747
- clk_unprepare (iommu -> pclk );
748
- return dev_err_probe (iommu -> dev , ret , "could not prepare iommu_clk\n" );
749
- }
750
737
751
738
r = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
752
739
iommu -> base = devm_ioremap_resource (iommu -> dev , r );
753
740
if (IS_ERR (iommu -> base )) {
754
741
ret = dev_err_probe (iommu -> dev , PTR_ERR (iommu -> base ), "could not get iommu base\n" );
755
- goto fail ;
742
+ return ret ;
756
743
}
757
744
ioaddr = r -> start ;
758
745
759
746
iommu -> irq = platform_get_irq (pdev , 0 );
760
- if (iommu -> irq < 0 ) {
761
- ret = - ENODEV ;
762
- goto fail ;
763
- }
747
+ if (iommu -> irq < 0 )
748
+ return - ENODEV ;
764
749
765
750
ret = of_property_read_u32 (iommu -> dev -> of_node , "qcom,ncb" , & val );
766
751
if (ret ) {
767
752
dev_err (iommu -> dev , "could not get ncb\n" );
768
- goto fail ;
753
+ return ret ;
769
754
}
770
755
iommu -> ncb = val ;
771
756
@@ -780,8 +765,7 @@ static int msm_iommu_probe(struct platform_device *pdev)
780
765
781
766
if (!par ) {
782
767
pr_err ("Invalid PAR value detected\n" );
783
- ret = - ENODEV ;
784
- goto fail ;
768
+ return - ENODEV ;
785
769
}
786
770
787
771
ret = devm_request_threaded_irq (iommu -> dev , iommu -> irq , NULL ,
@@ -791,7 +775,7 @@ static int msm_iommu_probe(struct platform_device *pdev)
791
775
iommu );
792
776
if (ret ) {
793
777
pr_err ("Request IRQ %d failed with ret=%d\n" , iommu -> irq , ret );
794
- goto fail ;
778
+ return ret ;
795
779
}
796
780
797
781
list_add (& iommu -> dev_node , & qcom_iommu_devices );
@@ -800,44 +784,31 @@ static int msm_iommu_probe(struct platform_device *pdev)
800
784
"msm-smmu.%pa" , & ioaddr );
801
785
if (ret ) {
802
786
pr_err ("Could not add msm-smmu at %pa to sysfs\n" , & ioaddr );
803
- goto fail ;
787
+ return ret ;
804
788
}
805
789
806
790
ret = iommu_device_register (& iommu -> iommu , & msm_iommu_ops , & pdev -> dev );
807
791
if (ret ) {
808
792
pr_err ("Could not register msm-smmu at %pa\n" , & ioaddr );
809
- goto fail ;
793
+ return ret ;
810
794
}
811
795
812
796
pr_info ("device mapped at %p, irq %d with %d ctx banks\n" ,
813
797
iommu -> base , iommu -> irq , iommu -> ncb );
814
798
815
799
return ret ;
816
- fail :
817
- clk_unprepare (iommu -> clk );
818
- clk_unprepare (iommu -> pclk );
819
- return ret ;
820
800
}
821
801
822
802
static const struct of_device_id msm_iommu_dt_match [] = {
823
803
{ .compatible = "qcom,apq8064-iommu" },
824
804
{}
825
805
};
826
806
827
- static void msm_iommu_remove (struct platform_device * pdev )
828
- {
829
- struct msm_iommu_dev * iommu = platform_get_drvdata (pdev );
830
-
831
- clk_unprepare (iommu -> clk );
832
- clk_unprepare (iommu -> pclk );
833
- }
834
-
835
807
static struct platform_driver msm_iommu_driver = {
836
808
.driver = {
837
809
.name = "msm_iommu" ,
838
810
.of_match_table = msm_iommu_dt_match ,
839
811
},
840
812
.probe = msm_iommu_probe ,
841
- .remove = msm_iommu_remove ,
842
813
};
843
814
builtin_platform_driver (msm_iommu_driver );
0 commit comments