@@ -2512,7 +2512,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2512
2512
if (ret ) {
2513
2513
dev_err (& client -> dev , "%s failed to set image mode\n" ,
2514
2514
__func__ );
2515
- return ret ;
2515
+ goto err_runtime_put ;
2516
2516
}
2517
2517
2518
2518
/* Acquire loader and main firmware if needed */
@@ -2524,7 +2524,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2524
2524
if (ret ) {
2525
2525
dev_err (& client -> dev ,
2526
2526
"Unable to acquire firmware loader\n" );
2527
- return ret ;
2527
+ goto err_runtime_put ;
2528
2528
}
2529
2529
}
2530
2530
if (!imx500 -> fw_main ) {
@@ -2534,7 +2534,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2534
2534
if (ret ) {
2535
2535
dev_err (& client -> dev ,
2536
2536
"Unable to acquire main firmware\n" );
2537
- return ret ;
2537
+ goto err_runtime_put ;
2538
2538
}
2539
2539
}
2540
2540
}
@@ -2546,7 +2546,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2546
2546
if (ret ) {
2547
2547
dev_err (& client -> dev ,
2548
2548
"%s failed to set common settings\n" , __func__ );
2549
- return ret ;
2549
+ goto err_runtime_put ;
2550
2550
}
2551
2551
2552
2552
imx500 -> common_regs_written = true;
@@ -2558,7 +2558,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2558
2558
dev_err (& client -> dev ,
2559
2559
"%s failed to transition from program empty state\n" ,
2560
2560
__func__ );
2561
- return ret ;
2561
+ goto err_runtime_put ;
2562
2562
}
2563
2563
imx500 -> loader_and_main_written = true;
2564
2564
}
@@ -2569,7 +2569,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2569
2569
dev_err (& client -> dev ,
2570
2570
"%s failed to transition to network loaded\n" ,
2571
2571
__func__ );
2572
- return ret ;
2572
+ goto err_runtime_put ;
2573
2573
}
2574
2574
imx500 -> network_written = true;
2575
2575
}
@@ -2580,7 +2580,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2580
2580
if (ret ) {
2581
2581
dev_err (& client -> dev , "%s failed to enable DNN\n" ,
2582
2582
__func__ );
2583
- return ret ;
2583
+ goto err_runtime_put ;
2584
2584
}
2585
2585
}
2586
2586
@@ -2590,7 +2590,7 @@ static int imx500_start_streaming(struct imx500 *imx500)
2590
2590
reg_list -> num_of_regs , NULL );
2591
2591
if (ret ) {
2592
2592
dev_err (& client -> dev , "%s failed to set mode\n" , __func__ );
2593
- return ret ;
2593
+ goto err_runtime_put ;
2594
2594
}
2595
2595
2596
2596
/* Apply customized values from user */
@@ -2603,6 +2603,14 @@ static int imx500_start_streaming(struct imx500 *imx500)
2603
2603
cci_write (imx500 -> regmap , IMX500_REG_MODE_SELECT , IMX500_MODE_STREAMING ,
2604
2604
& ret );
2605
2605
2606
+ if (ret )
2607
+ goto err_runtime_put ;
2608
+
2609
+ return 0 ;
2610
+
2611
+ err_runtime_put :
2612
+ pm_runtime_mark_last_busy (& client -> dev );
2613
+ pm_runtime_put_autosuspend (& client -> dev );
2606
2614
return ret ;
2607
2615
}
2608
2616
0 commit comments