soc/aspeed: espi: Fix RX packet length handling

For those eSPI commands without data, the length field of
RX packets should not be further handled as 1-based counting.

Signed-off-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
Change-Id: Iad2d05a074b724dbaed1c4104edd5efbbad002f3
This commit is contained in:
Chia-Wei Wang 2022-05-31 14:00:50 +08:00
parent 8d428079d9
commit fcb139dfb2
2 changed files with 7 additions and 5 deletions

View File

@ -64,12 +64,14 @@ static long aspeed_espi_flash_get_rx(struct file *fp,
* user space.
*/
switch (cyc) {
case ESPI_FLASH_READ:
case ESPI_FLASH_WRITE:
case ESPI_FLASH_ERASE:
pkt_len = ((len) ? len : ESPI_PLD_LEN_MAX) +
sizeof(struct espi_flash_rwe);
break;
case ESPI_FLASH_READ:
case ESPI_FLASH_ERASE:
pkt_len = sizeof(struct espi_flash_rwe);
break;
case ESPI_FLASH_SUC_CMPLT_D_MIDDLE:
case ESPI_FLASH_SUC_CMPLT_D_FIRST:
case ESPI_FLASH_SUC_CMPLT_D_LAST:
@ -79,7 +81,7 @@ static long aspeed_espi_flash_get_rx(struct file *fp,
break;
case ESPI_FLASH_SUC_CMPLT:
case ESPI_FLASH_UNSUC_CMPLT:
pkt_len = len + sizeof(struct espi_flash_cmplt);
pkt_len = sizeof(struct espi_flash_cmplt);
break;
default:
rc = -EFAULT;

View File

@ -67,7 +67,7 @@ static long aspeed_espi_perif_pc_get_rx(struct file *fp,
*/
switch (cyc) {
case ESPI_PERIF_MSG:
pkt_len = len + sizeof(struct espi_perif_msg);
pkt_len = sizeof(struct espi_perif_msg);
break;
case ESPI_PERIF_MSG_D:
pkt_len = ((len) ? len : ESPI_PLD_LEN_MAX) +
@ -82,7 +82,7 @@ static long aspeed_espi_perif_pc_get_rx(struct file *fp,
break;
case ESPI_PERIF_SUC_CMPLT:
case ESPI_PERIF_UNSUC_CMPLT:
pkt_len = len + sizeof(struct espi_perif_cmplt);
pkt_len = sizeof(struct espi_perif_cmplt);
break;
default:
rc = -EFAULT;