@@ -1302,7 +1302,7 @@ static const struct snd_soc_component_driver mtk_btcvsd_snd_platform = {
13021302
13031303static  int  mtk_btcvsd_snd_probe (struct  platform_device  * pdev )
13041304{
1305- 	int  ret   =   0 ;
1305+ 	int  ret ;
13061306	int  irq_id ;
13071307	u32  offset [5 ] =  {0 , 0 , 0 , 0 , 0 };
13081308	struct  mtk_btcvsd_snd  * btcvsd ;
@@ -1358,15 +1358,17 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
13581358	btcvsd -> bt_sram_bank2_base  =  of_iomap (dev -> of_node , 1 );
13591359	if  (!btcvsd -> bt_sram_bank2_base ) {
13601360		dev_err (dev , "iomap bt_sram_bank2_base fail\n" );
1361- 		return  - EIO ;
1361+ 		ret  =  - EIO ;
1362+ 		goto unmap_pkv_err ;
13621363	}
13631364
13641365	btcvsd -> infra  =  syscon_regmap_lookup_by_phandle (dev -> of_node ,
13651366							"mediatek,infracfg" );
13661367	if  (IS_ERR (btcvsd -> infra )) {
13671368		dev_err (dev , "cannot find infra controller: %ld\n" ,
13681369			PTR_ERR (btcvsd -> infra ));
1369- 		return  PTR_ERR (btcvsd -> infra );
1370+ 		ret  =  PTR_ERR (btcvsd -> infra );
1371+ 		goto unmap_bank2_err ;
13701372	}
13711373
13721374	/* get offset */ 
@@ -1375,7 +1377,7 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
13751377					 ARRAY_SIZE (offset ));
13761378	if  (ret ) {
13771379		dev_warn (dev , "%s(), get offset fail, ret %d\n" , __func__ , ret );
1378- 		return   ret ;
1380+ 		goto  unmap_bank2_err ;
13791381	}
13801382	btcvsd -> infra_misc_offset  =  offset [0 ];
13811383	btcvsd -> conn_bt_cvsd_mask  =  offset [1 ];
@@ -1394,8 +1396,18 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
13941396	mtk_btcvsd_snd_set_state (btcvsd , btcvsd -> tx , BT_SCO_STATE_IDLE );
13951397	mtk_btcvsd_snd_set_state (btcvsd , btcvsd -> rx , BT_SCO_STATE_IDLE );
13961398
1397- 	return  devm_snd_soc_register_component (dev , & mtk_btcvsd_snd_platform ,
1398- 					       NULL , 0 );
1399+ 	ret  =  devm_snd_soc_register_component (dev , & mtk_btcvsd_snd_platform ,
1400+ 					      NULL , 0 );
1401+ 	if  (ret )
1402+ 		goto unmap_bank2_err ;
1403+ 
1404+ 	return  0 ;
1405+ 
1406+ unmap_bank2_err :
1407+ 	iounmap (btcvsd -> bt_sram_bank2_base );
1408+ unmap_pkv_err :
1409+ 	iounmap (btcvsd -> bt_pkv_base );
1410+ 	return  ret ;
13991411}
14001412
14011413static  int  mtk_btcvsd_snd_remove (struct  platform_device  * pdev )
0 commit comments