@@ -2175,23 +2175,16 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
21752175 i2c_dev -> wakeup_src = of_property_read_bool (pdev -> dev .of_node ,
21762176 "wakeup-source" );
21772177
2178- i2c_dev -> clk = devm_clk_get (& pdev -> dev , NULL );
2178+ i2c_dev -> clk = devm_clk_get_enabled (& pdev -> dev , NULL );
21792179 if (IS_ERR (i2c_dev -> clk ))
21802180 return dev_err_probe (& pdev -> dev , PTR_ERR (i2c_dev -> clk ),
2181- "Failed to get controller clock\n" );
2182-
2183- ret = clk_prepare_enable (i2c_dev -> clk );
2184- if (ret ) {
2185- dev_err (& pdev -> dev , "Failed to prepare_enable clock\n" );
2186- return ret ;
2187- }
2181+ "Failed to enable controller clock\n" );
21882182
21892183 rst = devm_reset_control_get (& pdev -> dev , NULL );
2190- if (IS_ERR (rst )) {
2191- ret = dev_err_probe (& pdev -> dev , PTR_ERR (rst ),
2192- "Error: Missing reset ctrl\n" );
2193- goto clk_free ;
2194- }
2184+ if (IS_ERR (rst ))
2185+ return dev_err_probe (& pdev -> dev , PTR_ERR (rst ),
2186+ "Error: Missing reset ctrl\n" );
2187+
21952188 reset_control_assert (rst );
21962189 udelay (2 );
21972190 reset_control_deassert (rst );
@@ -2206,37 +2199,36 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
22062199 if (ret ) {
22072200 dev_err (& pdev -> dev , "Failed to request irq event %i\n" ,
22082201 irq_event );
2209- goto clk_free ;
2202+ return ret ;
22102203 }
22112204
22122205 ret = devm_request_irq (& pdev -> dev , irq_error , stm32f7_i2c_isr_error , 0 ,
22132206 pdev -> name , i2c_dev );
22142207 if (ret ) {
22152208 dev_err (& pdev -> dev , "Failed to request irq error %i\n" ,
22162209 irq_error );
2217- goto clk_free ;
2210+ return ret ;
22182211 }
22192212
22202213 setup = of_device_get_match_data (& pdev -> dev );
22212214 if (!setup ) {
22222215 dev_err (& pdev -> dev , "Can't get device data\n" );
2223- ret = - ENODEV ;
2224- goto clk_free ;
2216+ return - ENODEV ;
22252217 }
22262218 i2c_dev -> setup = * setup ;
22272219
22282220 ret = stm32f7_i2c_setup_timing (i2c_dev , & i2c_dev -> setup );
22292221 if (ret )
2230- goto clk_free ;
2222+ return ret ;
22312223
22322224 /* Setup Fast mode plus if necessary */
22332225 if (i2c_dev -> bus_rate > I2C_MAX_FAST_MODE_FREQ ) {
22342226 ret = stm32f7_i2c_setup_fm_plus_bits (pdev , i2c_dev );
22352227 if (ret )
2236- goto clk_free ;
2228+ return ret ;
22372229 ret = stm32f7_i2c_write_fm_plus_bits (i2c_dev , true);
22382230 if (ret )
2239- goto clk_free ;
2231+ return ret ;
22402232 }
22412233
22422234 adap = & i2c_dev -> adap ;
@@ -2347,9 +2339,6 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
23472339fmp_clear :
23482340 stm32f7_i2c_write_fm_plus_bits (i2c_dev , false);
23492341
2350- clk_free :
2351- clk_disable_unprepare (i2c_dev -> clk );
2352-
23532342 return ret ;
23542343}
23552344
@@ -2383,8 +2372,6 @@ static void stm32f7_i2c_remove(struct platform_device *pdev)
23832372 }
23842373
23852374 stm32f7_i2c_write_fm_plus_bits (i2c_dev , false);
2386-
2387- clk_disable_unprepare (i2c_dev -> clk );
23882375}
23892376
23902377static int __maybe_unused stm32f7_i2c_runtime_suspend (struct device * dev )
0 commit comments