aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-disk.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-disk.c')
-rw-r--r--drivers/ide/ide-disk.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 3d7127ba67a0..d8fdd865dea9 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -326,18 +326,9 @@ static u64 idedisk_read_native_max_address(ide_drive_t *drive, int lba48)
326 ide_no_data_taskfile(drive, &args); 326 ide_no_data_taskfile(drive, &args);
327 327
328 /* if OK, compute maximum address value */ 328 /* if OK, compute maximum address value */
329 if ((tf->status & 0x01) == 0) { 329 if ((tf->status & 0x01) == 0)
330 u32 high, low; 330 addr = ide_get_lba_addr(tf, lba48) + 1;
331 331
332 if (lba48)
333 high = (tf->hob_lbah << 16) | (tf->hob_lbam << 8) |
334 tf->hob_lbal;
335 else
336 high = tf->device & 0xf;
337 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
338 addr = ((__u64)high << 24) | low;
339 addr++; /* since the return value is (maxlba - 1), we add 1 */
340 }
341 return addr; 332 return addr;
342} 333}
343 334
@@ -373,18 +364,9 @@ static u64 idedisk_set_max_address(ide_drive_t *drive, u64 addr_req, int lba48)
373 /* submit command request */ 364 /* submit command request */
374 ide_no_data_taskfile(drive, &args); 365 ide_no_data_taskfile(drive, &args);
375 /* if OK, compute maximum address value */ 366 /* if OK, compute maximum address value */
376 if ((tf->status & 0x01) == 0) { 367 if ((tf->status & 0x01) == 0)
377 u32 high, low; 368 addr_set = ide_get_lba_addr(tf, lba48) + 1;
378 369
379 if (lba48)
380 high = (tf->hob_lbah << 16) | (tf->hob_lbam << 8) |
381 tf->hob_lbal;
382 else
383 high = tf->device & 0xf;
384 low = (tf->lbah << 16) | (tf->lbam << 8) | tf->lbal;
385 addr_set = ((__u64)high << 24) | low;
386 addr_set++;
387 }
388 return addr_set; 370 return addr_set;
389} 371}
390 372