Skip to content

Commit

Permalink
[libata] Update several PATA drivers for new ->cable_detect hook
Browse files Browse the repository at this point in the history
All patches authored and signed-off-by Alan Cox, sent on Mar 7, 2007.
I merely combined them all into a single patch.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jeff Garzik committed Apr 28, 2007
1 parent 6a3d586 commit a0fcdc0
Show file tree
Hide file tree
Showing 13 changed files with 68 additions and 133 deletions.
29 changes: 20 additions & 9 deletions drivers/ata/pata_hpt3x2n.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include <linux/libata.h>

#define DRV_NAME "pata_hpt3x2n"
#define DRV_VERSION "0.3.2"
#define DRV_VERSION "0.3.3"

enum {
HPT_PCI_FAST = (1 << 31),
Expand Down Expand Up @@ -115,14 +115,13 @@ static u32 hpt3x2n_find_mode(struct ata_port *ap, int speed)
}

/**
* hpt3x2n_pre_reset - reset the hpt3x2n bus
* @ap: ATA port to reset
* hpt3x2n_cable_detect - Detect the cable type
* @ap: ATA port to detect on
*
* Perform the initial reset handling for the 3x2n series controllers.
* Reset the hardware and state machine, obtain the cable type.
* Return the cable type attached to this port
*/

static int hpt3xn_pre_reset(struct ata_port *ap)
static int hpt3x2n_cable_detect(struct ata_port *ap)
{
u8 scr2, ata66;
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
Expand All @@ -135,15 +134,26 @@ static int hpt3xn_pre_reset(struct ata_port *ap)
pci_write_config_byte(pdev, 0x5B, scr2);

if (ata66 & (1 << ap->port_no))
ap->cbl = ATA_CBL_PATA40;
return ATA_CBL_PATA40;
else
ap->cbl = ATA_CBL_PATA80;
return ATA_CBL_PATA80;
}

/**
* hpt3x2n_pre_reset - reset the hpt3x2n bus
* @ap: ATA port to reset
*
* Perform the initial reset handling for the 3x2n series controllers.
* Reset the hardware and state machine,
*/

static int hpt3xn_pre_reset(struct ata_port *ap)
{
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
/* Reset the state machine */
pci_write_config_byte(pdev, 0x50, 0x37);
pci_write_config_byte(pdev, 0x54, 0x37);
udelay(100);

return ata_std_prereset(ap);
}

Expand Down Expand Up @@ -364,6 +374,7 @@ static struct ata_port_operations hpt3x2n_port_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = hpt3x2n_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = hpt3x2n_cable_detect,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
Expand Down
33 changes: 5 additions & 28 deletions drivers/ata/pata_it821x.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@


#define DRV_NAME "pata_it821x"
#define DRV_VERSION "0.3.4"
#define DRV_VERSION "0.3.6"

struct it821x_dev
{
Expand Down Expand Up @@ -112,31 +112,6 @@ struct it821x_dev

static int it8212_noraid;

/**
* it821x_pre_reset - probe
* @ap: ATA port
*
* Set the cable type
*/

static int it821x_pre_reset(struct ata_port *ap)
{
ap->cbl = ATA_CBL_PATA80;
return ata_std_prereset(ap);
}

/**
* it821x_error_handler - probe/reset
* @ap: ATA port
*
* Set the cable type and trigger a probe
*/

static void it821x_error_handler(struct ata_port *ap)
{
return ata_bmdma_drive_eh(ap, it821x_pre_reset, ata_std_softreset, NULL, ata_std_postreset);
}

/**
* it821x_program - program the PIO/MWDMA registers
* @ap: ATA port
Expand Down Expand Up @@ -666,8 +641,9 @@ static struct ata_port_operations it821x_smart_port_ops = {

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = it821x_error_handler,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
Expand Down Expand Up @@ -702,8 +678,9 @@ static struct ata_port_operations it821x_passthru_port_ops = {

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = it821x_error_handler,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_unknown,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = it821x_passthru_bmdma_start,
Expand Down
3 changes: 2 additions & 1 deletion drivers/ata/pata_mpc52xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@


#define DRV_NAME "mpc52xx_ata"
#define DRV_VERSION "0.1.0"
#define DRV_VERSION "0.1.0ac2"


/* Private structures used by the driver */
Expand Down Expand Up @@ -297,6 +297,7 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = mpc52xx_ata_error_handler,
.cable_detect = ata_cable_40wire,
.qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot,
.data_xfer = ata_data_xfer,
Expand Down
4 changes: 2 additions & 2 deletions drivers/ata/pata_mpiix.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include <linux/libata.h>

#define DRV_NAME "pata_mpiix"
#define DRV_VERSION "0.7.5"
#define DRV_VERSION "0.7.6"

enum {
IDETIM = 0x6C, /* IDE control register */
Expand All @@ -53,7 +53,6 @@ static int mpiix_pre_reset(struct ata_port *ap)

if (!pci_test_config_bits(pdev, &mpiix_enable_bits))
return -ENOENT;
ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap);
}

Expand Down Expand Up @@ -185,6 +184,7 @@ static struct ata_port_operations mpiix_port_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = mpiix_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.qc_prep = ata_qc_prep,
.qc_issue = mpiix_qc_issue_prot,
Expand Down
6 changes: 3 additions & 3 deletions drivers/ata/pata_ns87410.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@
#include <linux/libata.h>

#define DRV_NAME "pata_ns87410"
#define DRV_VERSION "0.4.3"
#define DRV_VERSION "0.4.6"

/**
* ns87410_pre_reset - probe begin
* @ap: ATA port
*
* Set up cable type and use generic probe init
* Check enabled ports
*/

static int ns87410_pre_reset(struct ata_port *ap)
Expand All @@ -47,7 +47,6 @@ static int ns87410_pre_reset(struct ata_port *ap)

if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->port_no]))
return -ENOENT;
ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap);
}

Expand Down Expand Up @@ -177,6 +176,7 @@ static struct ata_port_operations ns87410_port_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = ns87410_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.qc_prep = ata_qc_prep,
.qc_issue = ns87410_qc_issue_prot,
Expand Down
6 changes: 3 additions & 3 deletions drivers/ata/pata_oldpiix.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include <linux/ata.h>

#define DRV_NAME "pata_oldpiix"
#define DRV_VERSION "0.5.4"
#define DRV_VERSION "0.5.5"

/**
* oldpiix_pre_reset - probe begin
Expand All @@ -44,7 +44,6 @@ static int oldpiix_pre_reset(struct ata_port *ap)

if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->port_no]))
return -ENOENT;
ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap);
}

Expand All @@ -65,7 +64,7 @@ static void oldpiix_pata_error_handler(struct ata_port *ap)
/**
* oldpiix_set_piomode - Initialize host controller PATA PIO timings
* @ap: Port whose timings we are configuring
* @adev: um
* @adev: Device whose timings we are configuring
*
* Set PIO mode for device, in host controller PCI config space.
*
Expand Down Expand Up @@ -255,6 +254,7 @@ static const struct ata_port_operations oldpiix_pata_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = oldpiix_pata_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
Expand Down
5 changes: 2 additions & 3 deletions drivers/ata/pata_opti.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#include <linux/libata.h>

#define DRV_NAME "pata_opti"
#define DRV_VERSION "0.2.8"
#define DRV_VERSION "0.2.9"

enum {
READ_REG = 0, /* index of Read cycle timing register */
Expand All @@ -61,8 +61,6 @@ static int opti_pre_reset(struct ata_port *ap)

if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->port_no]))
return -ENOENT;

ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap);
}

Expand Down Expand Up @@ -198,6 +196,7 @@ static struct ata_port_operations opti_port_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = opti_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
Expand Down
3 changes: 2 additions & 1 deletion drivers/ata/pata_pcmcia.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@


#define DRV_NAME "pata_pcmcia"
#define DRV_VERSION "0.3.0"
#define DRV_VERSION "0.3.1"

/*
* Private data structure to glue stuff together
Expand Down Expand Up @@ -84,6 +84,7 @@ static struct ata_port_operations pcmcia_port_ops = {
.thaw = ata_bmdma_thaw,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot,
Expand Down
42 changes: 8 additions & 34 deletions drivers/ata/pata_pdc202xx_old.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,45 +22,17 @@
#include <linux/libata.h>

#define DRV_NAME "pata_pdc202xx_old"
#define DRV_VERSION "0.4.0"
#define DRV_VERSION "0.4.2"

/**
* pdc2024x_pre_reset - probe begin
* @ap: ATA port
*
* Set up cable type and use generic probe init
*/

static int pdc2024x_pre_reset(struct ata_port *ap)
{
ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap);
}


static void pdc2024x_error_handler(struct ata_port *ap)
{
ata_bmdma_drive_eh(ap, pdc2024x_pre_reset, ata_std_softreset, NULL, ata_std_postreset);
}


static int pdc2026x_pre_reset(struct ata_port *ap)
static int pdc2026x_cable_detect(struct ata_port *ap)
{
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
u16 cis;

pci_read_config_word(pdev, 0x50, &cis);
if (cis & (1 << (10 + ap->port_no)))
ap->cbl = ATA_CBL_PATA80;
else
ap->cbl = ATA_CBL_PATA40;

return ata_std_prereset(ap);
}

static void pdc2026x_error_handler(struct ata_port *ap)
{
ata_bmdma_drive_eh(ap, pdc2026x_pre_reset, ata_std_softreset, NULL, ata_std_postreset);
return ATA_CBL_PATA80;
return ATA_CBL_PATA40;
}

/**
Expand Down Expand Up @@ -291,8 +263,9 @@ static struct ata_port_operations pdc2024x_port_ops = {

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = pdc2024x_error_handler,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = ata_cable_40wire,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
Expand Down Expand Up @@ -325,8 +298,9 @@ static struct ata_port_operations pdc2026x_port_ops = {

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = pdc2026x_error_handler,
.error_handler = ata_bmdma_error_handler,
.post_internal_cmd = ata_bmdma_post_internal_cmd,
.cable_detect = pdc2026x_cable_detect,

.bmdma_setup = ata_bmdma_setup,
.bmdma_start = pdc2026x_bmdma_start,
Expand Down
Loading

0 comments on commit a0fcdc0

Please sign in to comment.