diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 6f30d00d49..62750a716a 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -1442,8 +1442,8 @@ static int disk_callback(int btn, struct gui_synclist *lists) uint32_t sector_size; /* Logical sector size > 512B ? */ - if ((identify_info[106] & 0xd000) == 0x5000) - sector_size = identify_info[117] | (identify_info[118] << 16); + if ((identify_info[106] & 0xd000) == 0x5000) /* B14, B12 */ + sector_size = (identify_info[117] | (identify_info[118] << 16)) * 2; else sector_size = SECTOR_SIZE; @@ -1456,7 +1456,7 @@ static int disk_callback(int btn, struct gui_synclist *lists) simplelist_addline("Sector multiplier: %u", disk_get_sector_multiplier()); #endif - if((identify_info[106] & 0xe000) == 0x6000) + if((identify_info[106] & 0xe000) == 0x6000) /* B14, B13 */ sector_size *= BIT_N(identify_info[106] & 0x000f); simplelist_addline( "Physical sector size: %lu B", sector_size); diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index 8df9acb9da..7bb492c39d 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -1310,7 +1310,7 @@ int STORAGE_INIT_ATTR ata_init(void) #ifdef MAX_PHYS_SECTOR_SIZE /* Find out the physical sector size */ - if((identify_info[106] & 0xe000) == 0x6000) + if((identify_info[106] & 0xe000) == 0x6000) /* B14, B13 */ phys_sector_mult = BIT_N(identify_info[106] & 0x000f); else phys_sector_mult = 1; @@ -1386,8 +1386,8 @@ void ata_get_info(IF_MD(int drive,)struct storage_info *info) int i; /* Logical sector size > 512B ? */ - if ((identify_info[106] & 0xd000) == 0x5000) - info->sector_size = identify_info[117] | (identify_info[118] << 16); + if ((identify_info[106] & 0xd000) == 0x5000) /* B14, B12 */ + info->sector_size = (identify_info[117] | (identify_info[118] << 16)) * 2; else info->sector_size = SECTOR_SIZE; 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;