c799a86a33a9dc09187a5183aa52e161de35c0a0
[dragonfly.git] / sys / dev / disk / ahci / TODO
1
2 DELAY's might tsleep, so interrupts might run.  fix poll loop to detect
3 completion via other interrupts.
4
5 Locking serialize_enter/exit.  Lots of recursion.   Needs help.  Use
6 lockmgr()?   Needs to be converted to per-port locking, also.
7
8 Port multiplier support (basics are now in)
9
10 Simulate various mode pages (serial number access and so forth).
11
12 NOTE RACE:  When stopping a port explicitly which has not self stopped,
13 i.e. CR is still on, we can race command completion and not have a good
14 idea what bits to reload into CI etc to restart the commands that
15 were running.  This should only be done if we intend to reset the port.
16
17 NOTE RACE:  A transient IFS interrupt (fatal phy/protocol error) can occur
18 when soft-resetting through a port multiplier, between the first and second
19 FISes.  We need to be able to lock access to the port.
20
21 ------ Misc probe info --------
22
23 <AHCI-PCI-SATA> port
24 <S64A,NCQ,SSNTF,SALP,SAL,SCLO,PMD,SSC,PSC,CCCS,EMS>,
25 6 ports, 32 tags/port, gen 1 (1.5Gbps) and 2 (3Gbps)
26
27 ahci0: AHCI 1.2 capabilities 0xe3229f05
28 <S64A,NCQ,SSNTF,SAL,SCLO,SPM,PMD>, 6 ports, 32 tags/port, gen 1 (1.5Gbps) and 2 (3Gbps)
29
30
31 Chipsets supporting FBSS (FIS-Based Switching):
32         SB800
33         S5000 (w/ ESB2)
34         (add more)
35 ---------------------------
36
37 Set device bits FIS:
38
39         EEEEEEEE HHHHLLLL NIRxxxxx FFFFFFFF
40         rrrrrrrr rrrrrrrr rrrrrrrr rrrrrrrr     (reserved)
41
42         F8 FIS TYPE (0xA1)
43         N       Notification bit
44         I       Interrupt bit
45         R       Reset bit
46         H4      Status hi (bit 3 is 'r' bit?)
47         L4      Status Lo (bit 3 is 'r' bit?)
48         E8      Error code
49
50         ATAPI/DISK notification:  Word78 of IDENTIFY,
51         Use SET FEATURES to set.
52
53 IDENTIFY DEVICE Changed in SATA 2:
54
55         Word 75         4:0 Max Queue depth
56
57         Word 76         9       Supports IPM requests
58                         8       supports NCQ
59                         7-4     reservedr
60                         3       reserved
61                         2       supports GEN2
62                         1       supports GEN1
63                         0       reserved (set to 0)
64
65         Word 78         4       supports in-order data delivery
66                         3       supports IPMfrom device
67                         2       supports DMA setup AA opt
68                         1       supports non-zero buffer offssets in DMA setup
69                         0       reserved (set to 0
70
71         Word 79         (sata features enabled)
72
73
74         Device configuration overlay
75         Word 0-7        Defined by ATA
76         Word 8          3       suports async notification
77                         2       supports IPM
78                         1       supports nz buffer offsets in DMA setup FIS
79                         0       supports NCQ
80         Word 9          reserved for SATA
81         10-255          as defined by ATA
82
83 SET FEATURES DEF
84
85         Feature 10h     Enable use of SATA feature
86         feature 90h     Disable use of SATA feature
87
88         sector count register contains specific feature to enable
89
90         01              No zero buffer offset in DMA setup fis
91         02              DMA setup fis AA opt
92         03              device initated power state transitions
93         04              guaranteed in-order data delivery
94         05              Asynchronous notification
95
96
97 SCR REGISTERS
98
99         0               SStatus
100         1               SError
101         2               SControl
102         3               SActive
103         4               SNotification   <----
104         5-15            reserved