mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
libata: add ATA_CBL_PATA_IGN
ATA_CBL_PATA_UNK indicates that the cable type can't be determined from the host side and might be either 80c or 40c. libata applies drive or other generic limit in this case. However, there are controllers where both host and drive side detections are misimplemented and the driver has to rely solely on private method - peeking BIOS or ACPI configuration or using some other private mechanism. This patch adds ATA_CBL_PATA_IGN which tells libata to ignore the cable type completely and just let the LLD determine the transfer mode via host transfer mode masks and ->mode_filter(). Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
7dc951aefd
commit
c88f90c377
3 changed files with 18 additions and 3 deletions
|
@ -2353,6 +2353,18 @@ int ata_cable_unknown(struct ata_port *ap)
|
|||
return ATA_CBL_PATA_UNK;
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_cable_ignore - return ignored PATA cable.
|
||||
* @ap: port
|
||||
*
|
||||
* Helper method for drivers which don't use cable type to limit
|
||||
* transfer mode.
|
||||
*/
|
||||
int ata_cable_ignore(struct ata_port *ap)
|
||||
{
|
||||
return ATA_CBL_PATA_IGN;
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_cable_sata - return SATA cable type
|
||||
* @ap: port
|
||||
|
@ -7665,4 +7677,5 @@ EXPORT_SYMBOL_GPL(ata_dev_try_classify);
|
|||
EXPORT_SYMBOL_GPL(ata_cable_40wire);
|
||||
EXPORT_SYMBOL_GPL(ata_cable_80wire);
|
||||
EXPORT_SYMBOL_GPL(ata_cable_unknown);
|
||||
EXPORT_SYMBOL_GPL(ata_cable_ignore);
|
||||
EXPORT_SYMBOL_GPL(ata_cable_sata);
|
||||
|
|
|
@ -286,9 +286,10 @@ enum {
|
|||
ATA_CBL_NONE = 0,
|
||||
ATA_CBL_PATA40 = 1,
|
||||
ATA_CBL_PATA80 = 2,
|
||||
ATA_CBL_PATA40_SHORT = 3, /* 40 wire cable to high UDMA spec */
|
||||
ATA_CBL_PATA_UNK = 4,
|
||||
ATA_CBL_SATA = 5,
|
||||
ATA_CBL_PATA40_SHORT = 3, /* 40 wire cable to high UDMA spec */
|
||||
ATA_CBL_PATA_UNK = 4, /* don't know, maybe 80c? */
|
||||
ATA_CBL_PATA_IGN = 5, /* don't know, ignore cable handling */
|
||||
ATA_CBL_SATA = 6,
|
||||
|
||||
/* SATA Status and Control Registers */
|
||||
SCR_STATUS = 0,
|
||||
|
|
|
@ -927,6 +927,7 @@ extern u8 ata_irq_on(struct ata_port *ap);
|
|||
extern int ata_cable_40wire(struct ata_port *ap);
|
||||
extern int ata_cable_80wire(struct ata_port *ap);
|
||||
extern int ata_cable_sata(struct ata_port *ap);
|
||||
extern int ata_cable_ignore(struct ata_port *ap);
|
||||
extern int ata_cable_unknown(struct ata_port *ap);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue