From 0a11b06d93c7593350d07e944adc00ab0e1d0108 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Thu, 31 Oct 2024 21:50:09 -0400 Subject: ata: Correct parsing of the logical sector size in the IDENTIFY DEVICE ....It's specified in 16-bit words, not bytes. So multiply it by 2. (This hasn't been a problem in practice as everything uses 512B logical sectors so far..) Change-Id: I0b1abd0f6184330f0b7f5c000c5ad547038f7c95 --- firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'firmware/target/arm/s5l8702/ipod6g') diff --git a/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c b/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c index 21c6f3f7c0..3c7935ad89 100644 --- a/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/storage_ata-6g.c @@ -1145,8 +1145,8 @@ void ata_spin(void) void ata_get_info(IF_MD(int drive,) struct storage_info *info) { /* Logical sector size */ - if ((ata_identify_data[106] & 0xd000) == 0x5000) - info->sector_size = ata_identify_data[117] | (ata_identify_data[118] << 16); + if ((ata_identify_data[106] & 0xd000) == 0x5000) /* B14, B12 */ + info->sector_size = (ata_identify_data[117] | (ata_identify_data[118] << 16)) * 2; else info->sector_size = SECTOR_SIZE; -- cgit v1.2.3