@@ -753,6 +753,8 @@ static int dw_i3c_xfers(const struct device *dev, struct i3c_device_desc *target
753
753
return ret ;
754
754
}
755
755
756
+ pm_device_busy_set (dev );
757
+
756
758
memset (xfer , 0 , sizeof (struct dw_i3c_xfer ));
757
759
758
760
xfer -> ncmds = num_msgs ;
@@ -883,6 +885,7 @@ static int dw_i3c_xfers(const struct device *dev, struct i3c_device_desc *target
883
885
ret = xfer -> ret ;
884
886
885
887
error :
888
+ pm_device_busy_clear (dev );
886
889
k_mutex_unlock (& data -> mt );
887
890
888
891
return ret ;
@@ -942,6 +945,8 @@ static int dw_i3c_i2c_transfer(const struct device *dev, struct i3c_i2c_device_d
942
945
return ret ;
943
946
}
944
947
948
+ pm_device_busy_set (dev );
949
+
945
950
memset (xfer , 0 , sizeof (struct dw_i3c_xfer ));
946
951
947
952
xfer -> ncmds = num_msgs ;
@@ -997,6 +1002,7 @@ static int dw_i3c_i2c_transfer(const struct device *dev, struct i3c_i2c_device_d
997
1002
ret = xfer -> ret ;
998
1003
999
1004
error :
1005
+ pm_device_busy_clear (dev );
1000
1006
k_mutex_unlock (& data -> mt );
1001
1007
1002
1008
return ret ;
@@ -1694,6 +1700,8 @@ static int dw_i3c_do_ccc(const struct device *dev, struct i3c_ccc_payload *paylo
1694
1700
return ret ;
1695
1701
}
1696
1702
1703
+ pm_device_busy_set (dev );
1704
+
1697
1705
memset (xfer , 0 , sizeof (struct dw_i3c_xfer ));
1698
1706
xfer -> ret = -1 ;
1699
1707
@@ -1787,6 +1795,7 @@ static int dw_i3c_do_ccc(const struct device *dev, struct i3c_ccc_payload *paylo
1787
1795
1788
1796
ret = xfer -> ret ;
1789
1797
error :
1798
+ pm_device_busy_clear (dev );
1790
1799
k_mutex_unlock (& data -> mt );
1791
1800
1792
1801
return ret ;
@@ -1903,6 +1912,9 @@ static int dw_i3c_do_daa(const struct device *dev)
1903
1912
LOG_ERR ("%s: Mutex err (%d)" , dev -> name , ret );
1904
1913
return ret ;
1905
1914
}
1915
+
1916
+ pm_device_busy_set (dev );
1917
+
1906
1918
memset (xfer , 0 , sizeof (struct dw_i3c_xfer ));
1907
1919
1908
1920
xfer -> ncmds = 1 ;
@@ -1916,14 +1928,15 @@ static int dw_i3c_do_daa(const struct device *dev)
1916
1928
1917
1929
start_xfer (dev );
1918
1930
ret = k_sem_take (& data -> sem_xfer , K_MSEC (1000 ));
1931
+
1932
+ pm_device_busy_clear (dev );
1933
+ k_mutex_unlock (& data -> mt );
1934
+
1919
1935
if (ret ) {
1920
1936
LOG_ERR ("%s: Semaphore err (%d)" , dev -> name , ret );
1921
- k_mutex_unlock (& data -> mt );
1922
1937
return ret ;
1923
1938
}
1924
1939
1925
- k_mutex_unlock (& data -> mt );
1926
-
1927
1940
if (data -> maxdevs == cmd -> rx_len ) {
1928
1941
newdevs = 0 ;
1929
1942
} else {
0 commit comments