2008-07-16 22:33:39 +04:00
/*
* PIO blacklist . Some drives incorrectly report their maximal PIO mode ,
* at least in respect to CMD640 . Here we keep info on some known drives .
*
* Changes to the ide_pio_blacklist [ ] should be made with EXTREME CAUTION
* to avoid breaking the fragile cmd640 . c support .
*/
# include <linux/string.h>
2013-12-17 15:11:11 +04:00
# include <linux/ide.h>
2008-07-16 22:33:39 +04:00
static struct ide_pio_info {
const char * name ;
int pio ;
} ide_pio_blacklist [ ] = {
{ " Conner Peripherals 540MB - CFS540A " , 3 } ,
{ " WDC AC2700 " , 3 } ,
{ " WDC AC2540 " , 3 } ,
{ " WDC AC2420 " , 3 } ,
{ " WDC AC2340 " , 3 } ,
{ " WDC AC2250 " , 0 } ,
{ " WDC AC2200 " , 0 } ,
{ " WDC AC21200 " , 4 } ,
{ " WDC AC2120 " , 0 } ,
{ " WDC AC2850 " , 3 } ,
{ " WDC AC1270 " , 3 } ,
{ " WDC AC1170 " , 1 } ,
{ " WDC AC1210 " , 1 } ,
{ " WDC AC280 " , 0 } ,
{ " WDC AC31000 " , 3 } ,
{ " WDC AC31200 " , 3 } ,
{ " Maxtor 7131 AT " , 1 } ,
{ " Maxtor 7171 AT " , 1 } ,
{ " Maxtor 7213 AT " , 1 } ,
{ " Maxtor 7245 AT " , 1 } ,
{ " Maxtor 7345 AT " , 1 } ,
{ " Maxtor 7546 AT " , 3 } ,
{ " Maxtor 7540 AV " , 3 } ,
{ " SAMSUNG SHD-3121A " , 1 } ,
{ " SAMSUNG SHD-3122A " , 1 } ,
{ " SAMSUNG SHD-3172A " , 1 } ,
{ " ST5660A " , 3 } ,
{ " ST3660A " , 3 } ,
{ " ST3630A " , 3 } ,
{ " ST3655A " , 3 } ,
{ " ST3391A " , 3 } ,
{ " ST3390A " , 1 } ,
{ " ST3600A " , 1 } ,
{ " ST3290A " , 0 } ,
{ " ST3144A " , 0 } ,
{ " ST3491A " , 1 } , /* reports 3, should be 1 or 2 (depending on drive)
according to Seagate ' s FIND - ATA program */
{ " QUANTUM ELS127A " , 0 } ,
{ " QUANTUM ELS170A " , 0 } ,
{ " QUANTUM LPS240A " , 0 } ,
{ " QUANTUM LPS210A " , 3 } ,
{ " QUANTUM LPS270A " , 3 } ,
{ " QUANTUM LPS365A " , 3 } ,
{ " QUANTUM LPS540A " , 3 } ,
{ " QUANTUM LIGHTNING 540A " , 3 } ,
{ " QUANTUM LIGHTNING 730A " , 3 } ,
{ " QUANTUM FIREBALL_540 " , 3 } , /* Older Quantum Fireballs don't work */
{ " QUANTUM FIREBALL_640 " , 3 } ,
{ " QUANTUM FIREBALL_1080 " , 3 } ,
{ " QUANTUM FIREBALL_1280 " , 3 } ,
{ NULL , 0 }
} ;
/**
* ide_scan_pio_blacklist - check for a blacklisted drive
* @ model : Drive model string
*
* This routine searches the ide_pio_blacklist for an entry
* matching the start / whole of the supplied model name .
*
* Returns - 1 if no match found .
* Otherwise returns the recommended PIO mode from ide_pio_blacklist [ ] .
*/
int ide_scan_pio_blacklist ( char * model )
{
struct ide_pio_info * p ;
for ( p = ide_pio_blacklist ; p - > name ! = NULL ; p + + ) {
if ( strncmp ( p - > name , model , strlen ( p - > name ) ) = = 0 )
return p - > pio ;
}
return - 1 ;
}