summaryrefslogtreecommitdiff
path: root/firmware/drivers/ata.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-05-24 11:25:24 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-05-24 11:25:24 +0000
commita97c4419edc8c93bb6839bc6c31d8e45dbd241c4 (patch)
tree13ef19f006c50c00f43fa733e9c8613ad531157f /firmware/drivers/ata.c
parent44d76bc1ae086a89dedcf5e6ed430c713f2b9cf6 (diff)
downloadrockbox-a97c4419edc8c93bb6839bc6c31d8e45dbd241c4.tar.gz
rockbox-a97c4419edc8c93bb6839bc6c31d8e45dbd241c4.zip
Fixed wrong reset pin. Removed unnecessary reset from init.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@691 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/ata.c')
-rw-r--r--firmware/drivers/ata.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 95711c60ea..c632402483 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -197,15 +197,8 @@ int ata_write_sectors(unsigned long start,
197 197
198static int check_registers(void) 198static int check_registers(void)
199{ 199{
200 int ret = 0;
201
202 mutex_lock(&ata_mtx);
203
204 if ( ATA_STATUS & STATUS_BSY ) 200 if ( ATA_STATUS & STATUS_BSY )
205 { 201 return -1;
206 mutex_unlock(&ata_mtx);
207 return 0;
208 }
209 202
210 ATA_NSECTOR = 0xa5; 203 ATA_NSECTOR = 0xa5;
211 ATA_SECTOR = 0x5a; 204 ATA_SECTOR = 0x5a;
@@ -216,10 +209,9 @@ static int check_registers(void)
216 (ATA_SECTOR == 0x5a) && 209 (ATA_SECTOR == 0x5a) &&
217 (ATA_LCYL == 0xaa) && 210 (ATA_LCYL == 0xaa) &&
218 (ATA_HCYL == 0x55)) 211 (ATA_HCYL == 0x55))
219 ret = 1; 212 return 0;
220 213
221 mutex_unlock(&ata_mtx); 214 return -2;
222 return ret;
223} 215}
224 216
225static int freeze_lock(void) 217static int freeze_lock(void)
@@ -273,11 +265,11 @@ int ata_hard_reset(void)
273 265
274 mutex_lock(&ata_mtx); 266 mutex_lock(&ata_mtx);
275 267
276 PADR &= ~0x0002; 268 PADR &= ~0x0200;
277 269
278 sleep(2); 270 sleep(2);
279 271
280 PADR |= 0x0002; 272 PADR |= 0x0200;
281 273
282 ret = wait_for_rdy(); 274 ret = wait_for_rdy();
283 275
@@ -337,16 +329,13 @@ int ata_init(void)
337 if (master_slave()) 329 if (master_slave())
338 return -1; 330 return -1;
339 331
340 if (!ata_hard_reset()) 332 if (check_registers())
341 return -2;
342
343 if (!check_registers())
344 return -3; 333 return -3;
345 334
346 if (freeze_lock() < 0) 335 if (freeze_lock())
347 return -4; 336 return -4;
348 337
349 if (ata_spindown(1) < 0) 338 if (ata_spindown(1))
350 return -5; 339 return -5;
351 340
352 ATA_SELECT = SELECT_LBA; 341 ATA_SELECT = SELECT_LBA;