@@ -151,6 +151,7 @@ pub fn init_driver(dev: &PCIDevice) {
151
151
let vaddr = phys_to_virt ( addr as usize ) ;
152
152
let index = NET_DRIVERS . read ( ) . len ( ) ;
153
153
e1000:: init ( name, irq, vaddr, len as usize , index) ;
154
+ return ;
154
155
}
155
156
}
156
157
( 0x8086 , 0x10fb ) => {
@@ -163,23 +164,23 @@ pub fn init_driver(dev: &PCIDevice) {
163
164
dev. loc ,
164
165
ixgbe:: ixgbe_init ( name, irq, vaddr, len as usize , index) ,
165
166
) ;
167
+ return ;
166
168
}
167
169
}
168
- ( 0x8086 , 0x2922 ) | ( 0x8086 , 0xa282 ) | ( 0x8086 , 0x8d02 ) => {
169
- // 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
170
- // 200 Series PCH SATA controller [AHCI mode]
171
- // C610/X99 series chipset 6-Port SATA Controller [AHCI mode]
172
- if let Some ( BAR :: Memory ( addr , len , _ , _ ) ) = dev . bars [ 5 ] {
173
- info ! ( "Found AHCI dev {:?} BAR5 {:x?}" , dev , addr ) ;
174
- let irq = unsafe { enable ( dev. loc ) } ;
175
- assert ! ( len as usize <= PAGE_SIZE ) ;
176
- let vaddr = phys_to_virt ( addr as usize ) ;
177
- if let Some ( driver ) = ahci :: init ( irq , vaddr , len as usize ) {
178
- PCI_DRIVERS . lock ( ) . insert ( dev . loc , driver ) ;
179
- }
170
+ _ => { }
171
+ }
172
+ if dev . id . class == 0x01 && dev . id . subclass == 0x06 {
173
+ // Mass storage class
174
+ // SATA subclass
175
+ if let Some ( BAR :: Memory ( addr , len , _ , _ ) ) = dev . bars [ 5 ] {
176
+ info ! ( "Found AHCI dev {:?} BAR5 {:x?}" , dev, addr ) ;
177
+ let irq = unsafe { enable ( dev . loc ) } ;
178
+ assert ! ( len as usize <= PAGE_SIZE ) ;
179
+ let vaddr = phys_to_virt ( addr as usize ) ;
180
+ if let Some ( driver ) = ahci :: init ( irq , vaddr , len as usize ) {
181
+ PCI_DRIVERS . lock ( ) . insert ( dev . loc , driver ) ;
180
182
}
181
183
}
182
- _ => { }
183
184
}
184
185
}
185
186
0 commit comments