tangled
alpha
login
or
join now
jcs.org
/
pce
0
fork
atom
fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
0
fork
atom
overview
issues
pulls
pipelines
ata: Add more debugging output
Hampa Hug
7 years ago
bfc7f449
aadd439c
+70
-7
1 changed file
expand all
collapse all
unified
split
src
devices
ata.c
+70
-7
src/devices/ata.c
reviewed
···
5
5
/*****************************************************************************
6
6
* File name: src/devices/ata.c *
7
7
* Created: 2004-12-03 by Hampa Hug <hampa@hampa.ch> *
8
8
-
* Copyright: (C) 2004-2009 Hampa Hug <hampa@hampa.ch> *
8
8
+
* Copyright: (C) 2004-2018 Hampa Hug <hampa@hampa.ch> *
9
9
*****************************************************************************/
10
10
11
11
/*****************************************************************************
···
27
27
#include "ata.h"
28
28
29
29
30
30
-
/* #define DEBUG_ATA 1 */
30
30
+
#ifndef DEBUG_ATA
31
31
+
#define DEBUG_ATA 0
32
32
+
#endif
33
33
+
31
34
32
35
#define ATA_REG_COMMAND 0x07
33
36
#define ATA_REG_STATUS 0x07
···
264
267
val = (val != 0);
265
268
266
269
if (val != ata->irq_val) {
270
270
+
#if DEBUG_ATA >= 3
271
271
+
fprintf (stderr, "ata: irq = %d\n", val);
272
272
+
#endif
273
273
+
267
274
ata->irq_val = val;
268
275
269
276
if (ata->irq != NULL) {
···
363
370
static
364
371
void ata_cmd_recalibrate (ata_dev_t *dev)
365
372
{
373
373
+
#if DEBUG_ATA >= 1
374
374
+
fprintf (stderr, "ata: RECALIBRATE\n");
375
375
+
#endif
376
376
+
366
377
dev->reg_cyl_lo = 0;
367
378
dev->reg_cyl_hi = 0;
368
379
dev->reg_head &= 0xf0;
···
448
459
return;
449
460
}
450
461
462
462
+
#if DEBUG_ATA >= 2
463
463
+
fprintf (stderr, "ata: READ (%lu, %u)\n",
464
464
+
(unsigned long) idx, dev->reg_sec_cnt
465
465
+
);
466
466
+
#endif
467
467
+
451
468
ata_buf_reset (dev);
452
469
453
470
dev->buf_blk_i = idx;
···
471
488
ata_cmd_abort (dev);
472
489
return;
473
490
}
491
491
+
492
492
+
#if DEBUG_ATA >= 2
493
493
+
fprintf (stderr, "ata: READ MULTIPLE (%lu, %u)\n",
494
494
+
(unsigned long) idx, dev->reg_sec_cnt
495
495
+
);
496
496
+
#endif
474
497
475
498
ata_buf_reset (dev);
476
499
···
541
564
return;
542
565
}
543
566
567
567
+
#if DEBUG_ATA >= 2
568
568
+
fprintf (stderr, "ata: WRITE (%lu, %u)\n",
569
569
+
(unsigned long) idx, dev->reg_sec_cnt
570
570
+
);
571
571
+
#endif
572
572
+
544
573
ata_buf_reset (dev);
545
574
546
575
dev->buf_i = 0;
···
573
602
ata_cmd_abort (dev);
574
603
return;
575
604
}
605
605
+
606
606
+
#if DEBUG_ATA >= 2
607
607
+
fprintf (stderr, "ata: WRITE MULTIPLE (%lu, %u)\n",
608
608
+
(unsigned long) idx, dev->reg_sec_cnt
609
609
+
);
610
610
+
#endif
576
611
577
612
ata_buf_reset (dev);
578
613
···
603
638
{
604
639
unsigned cnt;
605
640
641
641
+
#if DEBUG_ATA >= 1
642
642
+
fprintf (stderr, "ata: SET MULTIPLE MODE (%u)\n",
643
643
+
dev->reg_sec_cnt
644
644
+
);
645
645
+
#endif
646
646
+
606
647
cnt = dev->reg_sec_cnt;
607
648
608
649
if (cnt > dev->multi_block_max) {
···
619
660
void ata_cmd_device_diagnostic (ata_chn_t *ata)
620
661
{
621
662
unsigned i;
663
663
+
664
664
+
#if DEBUG_ATA >= 1
665
665
+
fprintf (stderr, "ata: DEVICE DIAGNOSTIC\n");
666
666
+
#endif
622
667
623
668
for (i = 0; i < 2; i++) {
624
669
ata->dev[i].reg_cyl_lo = 0;
···
640
685
dev->h = (dev->reg_head & 0x0f) + 1;
641
686
dev->c = dsk_get_block_cnt (dev->blk) / ((uint32_t) dev->s * dev->h);
642
687
688
688
+
#if DEBUG_ATA >= 1
689
689
+
fprintf (stderr, "ata: SET GEOMETRY (%u / %u / %u)\n",
690
690
+
dev->c, dev->h, dev->s
691
691
+
);
692
692
+
#endif
693
693
+
643
694
ata_cmd_ok (dev);
644
695
}
645
696
646
697
static
647
698
void ata_cmd_standby_immediate (ata_dev_t *dev)
648
699
{
700
700
+
#if DEBUG_ATA >= 1
701
701
+
fprintf (stderr, "ata: STANDBY IMMEDIATE\n");
702
702
+
#endif
703
703
+
649
704
ata_cmd_ok (dev);
650
705
}
651
706
652
707
static
653
708
void ata_cmd_flush_cache (ata_dev_t *dev)
654
709
{
710
710
+
#if DEBUG_ATA >= 1
711
711
+
fprintf (stderr, "ata: FLUSH CACHE\n");
712
712
+
#endif
713
713
+
655
714
ata_cmd_ok (dev);
656
715
}
657
716
···
659
718
void ata_cmd_identify (ata_dev_t *dev)
660
719
{
661
720
uint32_t cnt1, cnt2;
721
721
+
722
722
+
#if DEBUG_ATA >= 1
723
723
+
fprintf (stderr, "ata: IDENTIFY\n");
724
724
+
#endif
662
725
663
726
memset (dev->buf, 0, 512);
664
727
···
689
752
dev->buf_mode = ATA_BUF_MODE_READ;
690
753
dev->callback = NULL;
691
754
692
692
-
dev->reg_status = ATA_STATUS_DRQ;
755
755
+
dev->reg_status = ATA_STATUS_DRQ | 0x50;
693
756
694
757
ata_set_irq (dev->chn, 1);
695
758
}
···
839
902
break;
840
903
}
841
904
842
842
-
#ifdef DEBUG_ATA
905
905
+
#if DEBUG_ATA >= 2
843
906
fprintf (stderr, "ata: get8 %08lX -> %02X\n", addr, val);
844
907
fflush (stderr);
845
908
#endif
···
888
951
889
952
void ata_cmd_set_uint8 (ata_chn_t *ata, unsigned long addr, unsigned char val)
890
953
{
891
891
-
#ifdef DEBUG_ATA
954
954
+
#if DEBUG_ATA >= 2
892
955
fprintf (stderr, "ata: set8 %08lX <- %02X\n", addr, val);
893
956
fflush (stderr);
894
957
#endif
···
960
1023
break;
961
1024
}
962
1025
963
963
-
#ifdef DEBUG_ATA
1026
1026
+
#if DEBUG_ATA >= 2
964
1027
fprintf (stderr, "ata: get ctl8 %08lX -> %02X\n", addr, val);
965
1028
fflush (stderr);
966
1029
#endif
···
980
1043
981
1044
void ata_ctl_set_uint8 (ata_chn_t *ata, unsigned long addr, unsigned char val)
982
1045
{
983
983
-
#ifdef DEBUG_ATA
1046
1046
+
#if DEBUG_ATA >= 2
984
1047
fprintf (stderr, "ata: set ctl8 %08lX <- %02X\n", addr, val);
985
1048
fflush (stderr);
986
1049
#endif