File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -138,6 +138,7 @@ struct svc_i3c_cmd {
138
138
const void * out ;
139
139
unsigned int len ;
140
140
unsigned int actual_len ;
141
+ struct i3c_priv_xfer * xfer ;
141
142
bool continued ;
142
143
};
143
144
@@ -1062,6 +1063,7 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master,
1062
1063
1063
1064
if (readl (master -> regs + SVC_I3C_MERRWARN ) & SVC_I3C_MERRWARN_NACK ) {
1064
1065
ret = - ENXIO ;
1066
+ * actual_len = 0 ;
1065
1067
goto emit_stop ;
1066
1068
}
1067
1069
@@ -1079,6 +1081,7 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master,
1079
1081
*/
1080
1082
if (SVC_I3C_MSTATUS_IBIWON (reg )) {
1081
1083
ret = - ENXIO ;
1084
+ * actual_len = 0 ;
1082
1085
goto emit_stop ;
1083
1086
}
1084
1087
@@ -1174,6 +1177,10 @@ static void svc_i3c_master_start_xfer_locked(struct svc_i3c_master *master)
1174
1177
cmd -> addr , cmd -> in , cmd -> out ,
1175
1178
cmd -> len , & cmd -> actual_len ,
1176
1179
cmd -> continued );
1180
+ /* cmd->xfer is NULL if I2C or CCC transfer */
1181
+ if (cmd -> xfer )
1182
+ cmd -> xfer -> actual_len = cmd -> actual_len ;
1183
+
1177
1184
if (ret )
1178
1185
break ;
1179
1186
}
@@ -1361,6 +1368,7 @@ static int svc_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
1361
1368
for (i = 0 ; i < nxfers ; i ++ ) {
1362
1369
struct svc_i3c_cmd * cmd = & xfer -> cmds [i ];
1363
1370
1371
+ cmd -> xfer = & xfers [i ];
1364
1372
cmd -> addr = master -> addrs [data -> index ];
1365
1373
cmd -> rnw = xfers [i ].rnw ;
1366
1374
cmd -> in = xfers [i ].rnw ? xfers [i ].data .in : NULL ;
You can’t perform that action at this time.
0 commit comments