diff options
author | Cástor Muñoz <cmvidal@gmail.com> | 2015-07-16 23:10:38 +0200 |
---|---|---|
committer | Cástor Muñoz <cmvidal@gmail.com> | 2015-07-17 01:03:51 +0200 |
commit | 983c8084c9a64e48b29fb1e826cc84c35d2c9849 (patch) | |
tree | 27a535d53a84254c8682dd5017a529b22e8f1d1c | |
parent | d68ecccd8880cbcf98e186d81bcbedbcd0fbedbc (diff) |
iPod Classic: do not use HDD features on CE-ATA drives
Fix an 'ATA error' issue that affects CE-ATA devices.
Change-Id: I246348bb0506155b096ed8559dcf1b0b0fab3596
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/storage_ata-ipod6g.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/firmware/target/arm/s5l8702/ipod6g/storage_ata-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/storage_ata-ipod6g.c index 58060403d5..c629fd583a 100644 --- a/firmware/target/arm/s5l8702/ipod6g/storage_ata-ipod6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/storage_ata-ipod6g.c @@ -688,14 +688,14 @@ static int ata_power_up(void) ata_dma = param ? true : false; dma_mode = param; PASS_RC(ata_set_feature(0x03, param), 3, 4); + if (ata_identify_data[82] & BIT(5)) + PASS_RC(ata_set_feature(ata_bbt ? 0x82 : 0x02, 0), 3, 5); + if (ata_identify_data[82] & BIT(6)) PASS_RC(ata_set_feature(0xaa, 0), 3, 6); ATA_PIO_TIME = piotime; ATA_MDMA_TIME = mdmatime; ATA_UDMA_TIME = udmatime; } spinup_time = current_tick - spinup_start; - if (ata_identify_data[82] & BIT(5)) - PASS_RC(ata_set_feature(ata_bbt ? 0x82 : 0x02, 0), 3, 5); - if (ata_identify_data[82] & BIT(6)) PASS_RC(ata_set_feature(0xaa, 0), 3, 6); if (ata_lba48) ata_total_sectors = ata_identify_data[100] | (((uint64_t)ata_identify_data[101]) << 16) @@ -1139,7 +1139,8 @@ int ata_bbt_reload(void) ata_virtual_sectors = ata_total_sectors; else if (!memcmp(buf, "emBIbbth", 8)) { - if (ata_identify_data[82] & BIT(5)) PASS_RC(ata_set_feature(0x02, 0), 1, 1); + if (!ceata) + if (ata_identify_data[82] & BIT(5)) PASS_RC(ata_set_feature(0x02, 0), 1, 1); ata_virtual_sectors = (((uint64_t)buf[0x1fd]) << 32) | buf[0x1fc]; uint32_t count = buf[0x1ff]; if (count > ATA_BBT_PAGES / 64) |