ATAPI now updates the request length if the remaining block to be transferred is smaller, fixes BeOS 5.0 on ATAPI.
This commit is contained in:
@@ -9,13 +9,13 @@
|
|||||||
* Implementation of the IDE emulation for hard disks and ATAPI
|
* Implementation of the IDE emulation for hard disks and ATAPI
|
||||||
* CD-ROM devices.
|
* CD-ROM devices.
|
||||||
*
|
*
|
||||||
* Version: @(#)hdc_ide.c 1.0.60 2019/02/10
|
* Version: @(#)hdc_ide.c 1.0.61 2019/10/20
|
||||||
*
|
*
|
||||||
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
*
|
*
|
||||||
* Copyright 2008-2018 Sarah Walker.
|
* Copyright 2008-2019 Sarah Walker.
|
||||||
* Copyright 2016-2018 Miran Grca.
|
* Copyright 2016-2019 Miran Grca.
|
||||||
*/
|
*/
|
||||||
#define __USE_LARGEFILE64
|
#define __USE_LARGEFILE64
|
||||||
#define _LARGEFILE_SOURCE
|
#define _LARGEFILE_SOURCE
|
||||||
@@ -949,8 +949,11 @@ ide_atapi_pio_request(ide_t *ide, uint8_t out)
|
|||||||
|
|
||||||
/* If less than (packet length) bytes are remaining, update packet length
|
/* If less than (packet length) bytes are remaining, update packet length
|
||||||
accordingly. */
|
accordingly. */
|
||||||
if ((dev->packet_len - dev->pos) < (dev->max_transfer_len))
|
if ((dev->packet_len - dev->pos) < (dev->max_transfer_len)) {
|
||||||
dev->max_transfer_len = dev->packet_len - dev->pos;
|
dev->max_transfer_len = dev->packet_len - dev->pos;
|
||||||
|
/* Also update the request length so the host knows how many bytes to transfer. */
|
||||||
|
dev->request_length = dev->max_transfer_len;
|
||||||
|
}
|
||||||
ide_log("CD-ROM %i: Packet length %i, request length %i\n", dev->id, dev->packet_len,
|
ide_log("CD-ROM %i: Packet length %i, request length %i\n", dev->id, dev->packet_len,
|
||||||
dev->max_transfer_len);
|
dev->max_transfer_len);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user