ata-all.c (53719) | ata-all.c (54270) |
---|---|
1/*- 2 * Copyright (c) 1998,1999 S�ren Schmidt 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * | 1/*- 2 * Copyright (c) 1998,1999 S�ren Schmidt 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * |
28 * $FreeBSD: head/sys/dev/ata/ata-all.c 53719 1999-11-26 19:24:26Z sos $ | 28 * $FreeBSD: head/sys/dev/ata/ata-all.c 54270 1999-12-07 22:07:18Z sos $ |
29 */ 30 31#include "ata.h" 32#include "apm.h" 33#include "isa.h" 34#include "pci.h" 35#include "atadisk.h" 36#include "atapicd.h" --- 146 unchanged lines hidden (view full) --- 183ata_pcimatch(device_t dev) 184{ 185 if (pci_get_class(dev) != PCIC_STORAGE) 186 return NULL; 187 188 switch (pci_get_devid(dev)) { 189 /* supported chipsets */ 190 case 0x12308086: | 29 */ 30 31#include "ata.h" 32#include "apm.h" 33#include "isa.h" 34#include "pci.h" 35#include "atadisk.h" 36#include "atapicd.h" --- 146 unchanged lines hidden (view full) --- 183ata_pcimatch(device_t dev) 184{ 185 if (pci_get_class(dev) != PCIC_STORAGE) 186 return NULL; 187 188 switch (pci_get_devid(dev)) { 189 /* supported chipsets */ 190 case 0x12308086: |
191 return "Intel PIIX IDE controller"; | 191 return "Intel PIIX ATA controller"; |
192 case 0x70108086: | 192 case 0x70108086: |
193 return "Intel PIIX3 IDE controller"; | 193 return "Intel PIIX3 ATA controller"; |
194 case 0x71118086: | 194 case 0x71118086: |
195 return "Intel PIIX4 IDE controller"; | 195 return "Intel PIIX4 ATA controller"; |
196 case 0x522910b9: | 196 case 0x522910b9: |
197 return "AcerLabs Aladdin IDE controller"; | 197 return "AcerLabs Aladdin ATA controller"; |
198 case 0x4d33105a: | 198 case 0x4d33105a: |
199 return "Promise Ultra/33 IDE controller"; | 199 return "Promise Ultra/33 ATA controller"; |
200 case 0x4d38105a: | 200 case 0x4d38105a: |
201 return "Promise Ultra/66 IDE controller"; | 201 return "Promise Ultra/66 ATA controller"; |
202 case 0x00041103: | 202 case 0x00041103: |
203 return "HighPoint HPT366 IDE controller"; | 203 return "HighPoint HPT366 ATA controller"; |
204 case 0x05711106: /* 82c586 & 82c686 */ | 204 case 0x05711106: /* 82c586 & 82c686 */ |
205 return "VIA Apollo IDE controller"; | 205 switch (pci_read_config(dev, 0x08, 1)) { 206 case 1: 207 return "VIA 82C586 ATA controller"; 208 case 6: 209 return "VIA 82C686 ATA controller"; 210 } 211 return "VIA Apollo ATA controller"; |
206 207 /* unsupported but known chipsets, generic DMA only */ | 212 213 /* unsupported but known chipsets, generic DMA only */ |
208 case 0x05961106: /* 82c596 */ 209 return "VIA Apollo IDE controller (generic mode)"; | 214 case 0x05961106: 215 return "VIA 82C596 ATA controller (generic mode)"; |
210 case 0x06401095: | 216 case 0x06401095: |
211 return "CMD 640 IDE controller (generic mode)"; | 217 return "CMD 640 ATA controller (generic mode)"; |
212 case 0x06461095: | 218 case 0x06461095: |
213 return "CMD 646 IDE controller (generic mode)"; | 219 return "CMD 646 ATA controller (generic mode)"; |
214 case 0xc6931080: | 220 case 0xc6931080: |
215 return "Cypress 82C693 IDE controller (generic mode)"; | 221 return "Cypress 82C693 ATA controller (generic mode)"; |
216 case 0x01021078: | 222 case 0x01021078: |
217 return "Cyrix 5530 IDE controller (generic mode)"; | 223 return "Cyrix 5530 ATA controller (generic mode)"; |
218 default: 219 if (pci_get_class(dev) == PCIC_STORAGE && 220 (pci_get_subclass(dev) == PCIS_STORAGE_IDE)) | 224 default: 225 if (pci_get_class(dev) == PCIC_STORAGE && 226 (pci_get_subclass(dev) == PCIS_STORAGE_IDE)) |
221 return "Unknown PCI IDE controller (generic mode)"; | 227 return "Unknown PCI ATA controller (generic mode)"; |
222 } 223 return NULL; 224} 225 226static int 227ata_pciprobe(device_t dev) 228{ 229 const char *desc = ata_pcimatch(dev); | 228 } 229 return NULL; 230} 231 232static int 233ata_pciprobe(device_t dev) 234{ 235 const char *desc = ata_pcimatch(dev); |
236 |
|
230 if (desc) { 231 device_set_desc(dev, desc); 232 return 0; 233 } 234 else 235 return ENXIO; 236} 237 --- 596 unchanged lines hidden (view full) --- 834 if (scp->active != ATA_IDLE && scp->active != ATA_REINITING) 835 printf("WARNING: WAIT_READY active=%s\n", active2str(scp->active)); 836 scp->active = ATA_WAIT_READY; 837 outb(scp->ioaddr + ATA_CMD, command); 838 if (ata_wait(scp, device, ATA_S_READY) < 0) { 839 printf("ata%d-%s: timeout waiting for command=%02x s=%02x e=%02x\n", 840 scp->lun, device ? "slave" : "master", command, 841 scp->status, scp->error); | 237 if (desc) { 238 device_set_desc(dev, desc); 239 return 0; 240 } 241 else 242 return ENXIO; 243} 244 --- 596 unchanged lines hidden (view full) --- 841 if (scp->active != ATA_IDLE && scp->active != ATA_REINITING) 842 printf("WARNING: WAIT_READY active=%s\n", active2str(scp->active)); 843 scp->active = ATA_WAIT_READY; 844 outb(scp->ioaddr + ATA_CMD, command); 845 if (ata_wait(scp, device, ATA_S_READY) < 0) { 846 printf("ata%d-%s: timeout waiting for command=%02x s=%02x e=%02x\n", 847 scp->lun, device ? "slave" : "master", command, 848 scp->status, scp->error); |
849 scp->active = ATA_IDLE; |
|
842 return -1; 843 } | 850 return -1; 851 } |
852 scp->active = ATA_IDLE; |
|
844 break; 845 846 case ATA_IMMEDIATE: 847 outb(scp->ioaddr + ATA_CMD, command); 848 break; 849 850 default: 851 printf("DANGER: illegal interrupt flag=%s\n", active2str(flags)); --- 87 unchanged lines hidden --- | 853 break; 854 855 case ATA_IMMEDIATE: 856 outb(scp->ioaddr + ATA_CMD, command); 857 break; 858 859 default: 860 printf("DANGER: illegal interrupt flag=%s\n", active2str(flags)); --- 87 unchanged lines hidden --- |