@@ -783,23 +783,17 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
783783 return - EINVAL ;
784784 }
785785
786- i2c_dev -> clk = devm_clk_get (& pdev -> dev , NULL );
786+ i2c_dev -> clk = devm_clk_get_enabled (& pdev -> dev , NULL );
787787 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" );
789789 return PTR_ERR (i2c_dev -> clk );
790790 }
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- }
796791
797792 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+
803797 reset_control_assert (rst );
804798 udelay (2 );
805799 reset_control_deassert (rst );
@@ -816,20 +810,20 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
816810 if (ret ) {
817811 dev_err (& pdev -> dev , "Failed to request irq event %i\n" ,
818812 irq_event );
819- goto clk_free ;
813+ return ret ;
820814 }
821815
822816 ret = devm_request_irq (& pdev -> dev , irq_error , stm32f4_i2c_isr_error , 0 ,
823817 pdev -> name , i2c_dev );
824818 if (ret ) {
825819 dev_err (& pdev -> dev , "Failed to request irq error %i\n" ,
826820 irq_error );
827- goto clk_free ;
821+ return ret ;
828822 }
829823
830824 ret = stm32f4_i2c_hw_config (i2c_dev );
831825 if (ret )
832- goto clk_free ;
826+ return ret ;
833827
834828 adap = & i2c_dev -> adap ;
835829 i2c_set_adapdata (adap , i2c_dev );
@@ -845,7 +839,7 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
845839
846840 ret = i2c_add_adapter (adap );
847841 if (ret )
848- goto clk_free ;
842+ return ret ;
849843
850844 platform_set_drvdata (pdev , i2c_dev );
851845
@@ -854,19 +848,13 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
854848 dev_info (i2c_dev -> dev , "STM32F4 I2C driver registered\n" );
855849
856850 return 0 ;
857-
858- clk_free :
859- clk_disable_unprepare (i2c_dev -> clk );
860- return ret ;
861851}
862852
863853static void stm32f4_i2c_remove (struct platform_device * pdev )
864854{
865855 struct stm32f4_i2c_dev * i2c_dev = platform_get_drvdata (pdev );
866856
867857 i2c_del_adapter (& i2c_dev -> adap );
868-
869- clk_unprepare (i2c_dev -> clk );
870858}
871859
872860static const struct of_device_id stm32f4_i2c_match [] = {
0 commit comments