@ -440,11 +440,9 @@ static int sata_dwc_softreset(struct ata_port *ap)
{
{
u8 nsect , lbal = 0 ;
u8 nsect , lbal = 0 ;
u8 tmp = 0 ;
u8 tmp = 0 ;
u32 serror = 0 ;
u8 status = 0 ;
struct ata_ioports * ioaddr = & ap - > ioaddr ;
struct ata_ioports * ioaddr = & ap - > ioaddr ;
serror = in_le32 ( ( void * ) ap - > ioaddr . scr_addr + ( SCR_ERROR * 4 ) ) ;
in_le32 ( ( void * ) ap - > ioaddr . scr_addr + ( SCR_ERROR * 4 ) ) ;
writeb ( 0x55 , ioaddr - > nsect_addr ) ;
writeb ( 0x55 , ioaddr - > nsect_addr ) ;
writeb ( 0xaa , ioaddr - > lbal_addr ) ;
writeb ( 0xaa , ioaddr - > lbal_addr ) ;
@ -476,7 +474,7 @@ static int sata_dwc_softreset(struct ata_port *ap)
writeb ( ap - > ctl , ioaddr - > ctl_addr ) ;
writeb ( ap - > ctl , ioaddr - > ctl_addr ) ;
msleep ( 150 ) ;
msleep ( 150 ) ;
status = ata_check_status ( ap ) ;
ata_check_status ( ap ) ;
msleep ( 50 ) ;
msleep ( 50 ) ;
ata_check_status ( ap ) ;
ata_check_status ( ap ) ;
@ -535,7 +533,6 @@ int scan_sata(int dev)
const u16 * id ;
const u16 * id ;
struct ata_device * ata_dev = & ata_device ;
struct ata_device * ata_dev = & ata_device ;
unsigned long pio_mask , mwdma_mask , udma_mask ;
unsigned long pio_mask , mwdma_mask , udma_mask ;
unsigned long xfer_mask ;
char revbuf [ 7 ] ;
char revbuf [ 7 ] ;
u16 iobuf [ ATA_SECTOR_WORDS ] ;
u16 iobuf [ ATA_SECTOR_WORDS ] ;
@ -629,10 +626,6 @@ int scan_sata(int dev)
if ( id [ ATA_ID_FIELD_VALID ] & ( 1 < < 2 ) )
if ( id [ ATA_ID_FIELD_VALID ] & ( 1 < < 2 ) )
udma_mask = id [ ATA_ID_UDMA_MODES ] & 0xff ;
udma_mask = id [ ATA_ID_UDMA_MODES ] & 0xff ;
xfer_mask = ( ( pio_mask < < ATA_SHIFT_PIO ) & ATA_MASK_PIO ) |
( ( mwdma_mask < < ATA_SHIFT_MWDMA ) & ATA_MASK_MWDMA ) |
( ( udma_mask < < ATA_SHIFT_UDMA ) & ATA_MASK_UDMA ) ;
if ( ata_dev - > class = = ATA_DEV_ATA ) {
if ( ata_dev - > class = = ATA_DEV_ATA ) {
if ( ata_id_is_cfa ( id ) ) {
if ( ata_id_is_cfa ( id ) ) {
if ( id [ 162 ] & 1 )
if ( id [ 162 ] & 1 )
@ -651,14 +644,11 @@ int scan_sata(int dev)
ata_dev - > multi_count = ata_dev - > id [ 59 ] & 0xff ;
ata_dev - > multi_count = ata_dev - > id [ 59 ] & 0xff ;
if ( ata_id_has_lba ( id ) ) {
if ( ata_id_has_lba ( id ) ) {
const char * lba_desc ;
char ncq_desc [ 20 ] ;
char ncq_desc [ 20 ] ;
lba_desc = " LBA " ;
ata_dev - > flags | = ATA_DFLAG_LBA ;
ata_dev - > flags | = ATA_DFLAG_LBA ;
if ( ata_id_has_lba48 ( id ) ) {
if ( ata_id_has_lba48 ( id ) ) {
ata_dev - > flags | = ATA_DFLAG_LBA48 ;
ata_dev - > flags | = ATA_DFLAG_LBA48 ;
lba_desc = " LBA48 " ;
if ( ata_dev - > n_sectors > = ( 1UL < < 28 ) & &
if ( ata_dev - > n_sectors > = ( 1UL < < 28 ) & &
ata_id_has_flush_ext ( id ) )
ata_id_has_flush_ext ( id ) )
@ -890,6 +880,7 @@ retry:
return 0 ;
return 0 ;
err_out :
err_out :
printf ( " failed to READ ID (%s, err_mask=0x%x) \n " , reason , err_mask ) ;
return rc ;
return rc ;
}
}
@ -1807,7 +1798,6 @@ static int ata_dev_read_sectors(unsigned char *pdata, unsigned long datalen,
unsigned int err_mask = 0 ;
unsigned int err_mask = 0 ;
const char * reason ;
const char * reason ;
int may_fallback = 1 ;
int may_fallback = 1 ;
int rc ;
if ( dev_state = = SATA_ERROR )
if ( dev_state = = SATA_ERROR )
return FALSE ;
return FALSE ;
@ -1904,19 +1894,10 @@ retry:
return - ENOENT ;
return - ENOENT ;
}
}
rc = - EIO ;
reason = " I/O error " ;
reason = " I/O error " ;
goto err_out ;
goto err_out ;
}
}
/* Falling back doesn't make sense if ID data was read
* successfully at least once .
*/
may_fallback = 0 ;
rc = - EINVAL ;
reason = " device reports invalid type " ;
return TRUE ;
return TRUE ;
err_out :
err_out :
@ -1991,7 +1972,6 @@ static int ata_dev_write_sectors(unsigned char* pdata, unsigned long datalen,
unsigned int err_mask = 0 ;
unsigned int err_mask = 0 ;
const char * reason ;
const char * reason ;
int may_fallback = 1 ;
int may_fallback = 1 ;
int rc ;
if ( dev_state = = SATA_ERROR )
if ( dev_state = = SATA_ERROR )
return FALSE ;
return FALSE ;
@ -2089,19 +2069,10 @@ retry:
return - ENOENT ;
return - ENOENT ;
}
}
rc = - EIO ;
reason = " I/O error " ;
reason = " I/O error " ;
goto err_out ;
goto err_out ;
}
}
/* Falling back doesn't make sense if ID data was read
* successfully at least once .
*/
may_fallback = 0 ;
rc = - EINVAL ;
reason = " device reports invalid type " ;
return TRUE ;
return TRUE ;
err_out :
err_out :