mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
ide-cd: add ide_cd_drain_data() helper
Add ide_cd_drain_data() and use it in cdrom_{buffer_sectors,read_intr}() (as a nice side-effect this cuts 0.5kB of code from ide-cd.o). There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
c9f56a801a
commit
b4ab726c92
1 changed files with 15 additions and 13 deletions
|
@ -626,6 +626,16 @@ static void ide_cd_pad_transfer(ide_drive_t *drive, xfer_func_t *xf, int len)
|
|||
}
|
||||
}
|
||||
|
||||
static void ide_cd_drain_data(ide_drive_t *drive, int nsects)
|
||||
{
|
||||
while (nsects > 0) {
|
||||
static char dum[SECTOR_SIZE];
|
||||
|
||||
drive->hwif->atapi_input_bytes(drive, dum, sizeof(dum));
|
||||
nsects--;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Buffer up to SECTORS_TO_TRANSFER sectors from the drive in our sector
|
||||
* buffer. Once the first sector is added, any subsequent sectors are
|
||||
|
@ -664,11 +674,7 @@ static void cdrom_buffer_sectors (ide_drive_t *drive, unsigned long sector,
|
|||
}
|
||||
|
||||
/* Throw away any remaining data. */
|
||||
while (sectors_to_transfer > 0) {
|
||||
static char dum[SECTOR_SIZE];
|
||||
HWIF(drive)->atapi_input_bytes(drive, dum, sizeof (dum));
|
||||
--sectors_to_transfer;
|
||||
}
|
||||
ide_cd_drain_data(drive, sectors_to_transfer);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -791,14 +797,10 @@ static ide_startstop_t cdrom_read_intr (ide_drive_t *drive)
|
|||
any of the leading sectors. */
|
||||
nskip = min_t(int, rq->current_nr_sectors - bio_cur_sectors(rq->bio), sectors_to_transfer);
|
||||
|
||||
while (nskip > 0) {
|
||||
/* We need to throw away a sector. */
|
||||
static char dum[SECTOR_SIZE];
|
||||
HWIF(drive)->atapi_input_bytes(drive, dum, sizeof (dum));
|
||||
|
||||
--rq->current_nr_sectors;
|
||||
--nskip;
|
||||
--sectors_to_transfer;
|
||||
if (nskip > 0) {
|
||||
ide_cd_drain_data(drive, nskip);
|
||||
rq->current_nr_sectors -= nskip;
|
||||
sectors_to_transfer -= nskip;
|
||||
}
|
||||
|
||||
/* Now loop while we still have data to read from the drive. */
|
||||
|
|
Loading…
Reference in a new issue