@@ -783,23 +783,17 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
783
783
return - EINVAL ;
784
784
}
785
785
786
- i2c_dev -> clk = devm_clk_get (& pdev -> dev , NULL );
786
+ i2c_dev -> clk = devm_clk_get_enabled (& pdev -> dev , NULL );
787
787
if (IS_ERR (i2c_dev -> clk )) {
788
- dev_err (& pdev -> dev , "Error: Missing controller clock\n" );
788
+ dev_err (& pdev -> dev , "Failed to enable clock\n" );
789
789
return PTR_ERR (i2c_dev -> clk );
790
790
}
791
- ret = clk_prepare_enable (i2c_dev -> clk );
792
- if (ret ) {
793
- dev_err (i2c_dev -> dev , "Failed to prepare_enable clock\n" );
794
- return ret ;
795
- }
796
791
797
792
rst = devm_reset_control_get_exclusive (& pdev -> dev , NULL );
798
- if (IS_ERR (rst )) {
799
- ret = dev_err_probe (& pdev -> dev , PTR_ERR (rst ),
800
- "Error: Missing reset ctrl\n" );
801
- goto clk_free ;
802
- }
793
+ if (IS_ERR (rst ))
794
+ return dev_err_probe (& pdev -> dev , PTR_ERR (rst ),
795
+ "Error: Missing reset ctrl\n" );
796
+
803
797
reset_control_assert (rst );
804
798
udelay (2 );
805
799
reset_control_deassert (rst );
@@ -816,20 +810,20 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
816
810
if (ret ) {
817
811
dev_err (& pdev -> dev , "Failed to request irq event %i\n" ,
818
812
irq_event );
819
- goto clk_free ;
813
+ return ret ;
820
814
}
821
815
822
816
ret = devm_request_irq (& pdev -> dev , irq_error , stm32f4_i2c_isr_error , 0 ,
823
817
pdev -> name , i2c_dev );
824
818
if (ret ) {
825
819
dev_err (& pdev -> dev , "Failed to request irq error %i\n" ,
826
820
irq_error );
827
- goto clk_free ;
821
+ return ret ;
828
822
}
829
823
830
824
ret = stm32f4_i2c_hw_config (i2c_dev );
831
825
if (ret )
832
- goto clk_free ;
826
+ return ret ;
833
827
834
828
adap = & i2c_dev -> adap ;
835
829
i2c_set_adapdata (adap , i2c_dev );
@@ -845,7 +839,7 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
845
839
846
840
ret = i2c_add_adapter (adap );
847
841
if (ret )
848
- goto clk_free ;
842
+ return ret ;
849
843
850
844
platform_set_drvdata (pdev , i2c_dev );
851
845
@@ -854,19 +848,13 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
854
848
dev_info (i2c_dev -> dev , "STM32F4 I2C driver registered\n" );
855
849
856
850
return 0 ;
857
-
858
- clk_free :
859
- clk_disable_unprepare (i2c_dev -> clk );
860
- return ret ;
861
851
}
862
852
863
853
static void stm32f4_i2c_remove (struct platform_device * pdev )
864
854
{
865
855
struct stm32f4_i2c_dev * i2c_dev = platform_get_drvdata (pdev );
866
856
867
857
i2c_del_adapter (& i2c_dev -> adap );
868
-
869
- clk_unprepare (i2c_dev -> clk );
870
858
}
871
859
872
860
static const struct of_device_id stm32f4_i2c_match [] = {
0 commit comments