|
@@ -8488,7 +8488,10 @@ static int do_8051_command(
|
|
|
*/
|
|
|
if (type == HCMD_WRITE_LCB_CSR) {
|
|
|
in_data |= ((*out_data) & 0xffffffffffull) << 8;
|
|
|
- reg = ((((*out_data) >> 40) & 0xff) <<
|
|
|
+ /* must preserve COMPLETED - it is tied to hardware */
|
|
|
+ reg = read_csr(dd, DC_DC8051_CFG_EXT_DEV_0);
|
|
|
+ reg &= DC_DC8051_CFG_EXT_DEV_0_COMPLETED_SMASK;
|
|
|
+ reg |= ((((*out_data) >> 40) & 0xff) <<
|
|
|
DC_DC8051_CFG_EXT_DEV_0_RETURN_CODE_SHIFT)
|
|
|
| ((((*out_data) >> 48) & 0xffff) <<
|
|
|
DC_DC8051_CFG_EXT_DEV_0_RSP_DATA_SHIFT);
|