* [PATCHSET] libata: convert ata_piix to use new reset mechanism
@ 2006-02-15 6:01 Tejun Heo
2006-02-15 6:01 ` [PATCH 1/3] libata: fix comment regarding setting cable type Tejun Heo
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Tejun Heo @ 2006-02-15 6:01 UTC (permalink / raw)
To: jgarzik, linux-ide; +Cc: htejun
Hello, Jeff.
This patchset is re-spin of [1]. This patchset performs cable detection
before proceeding with probe reset as pointed out [2]. This patchset
contains three patches. The first one fixes comment above std postreset
which indicated that setting cable type is the responsibility of
postreset. The last two patches are the piix conversion patches.
Thanks. :-)
--
tejun
[1] http://article.gmane.org/gmane.linux.ide/7968
[2] http://article.gmane.org/gmane.linux.ide/7986
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] libata: fix comment regarding setting cable type
2006-02-15 6:01 [PATCHSET] libata: convert ata_piix to use new reset mechanism Tejun Heo
@ 2006-02-15 6:01 ` Tejun Heo
2006-02-20 11:20 ` Jeff Garzik
2006-02-15 6:01 ` [PATCH 2/3] ata_piix: convert pata to new reset mechanism Tejun Heo
2006-02-15 6:01 ` [PATCH 3/3] ata_piix: convert sata " Tejun Heo
2 siblings, 1 reply; 5+ messages in thread
From: Tejun Heo @ 2006-02-15 6:01 UTC (permalink / raw)
To: jgarzik, linux-ide; +Cc: Tejun Heo
The comment above ata_std_postreset() specified that setting cable
type is the responsibility of postreset(), which isn't possible /
optimal depending on controller / driver. This patch kills the
comment. Setting cable type is responsibility of ->probe_reset.
libata doesn't care whether it's done in probeinit, reset or
postreset.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/libata-core.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
823d5f6f8de896e7b6437a4f140d807bbab1e7bd
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 61cba39..51191d1 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2106,7 +2106,6 @@ int sata_std_hardreset(struct ata_port *
* This function is invoked after a successful reset. Note that
* the device might have been reset more than once using
* different reset methods before postreset is invoked.
- * postreset is also reponsible for setting cable type.
*
* This function is to be used as standard callback for
* ata_drive_*_reset().
@@ -2118,7 +2117,7 @@ void ata_std_postreset(struct ata_port *
{
DPRINTK("ENTER\n");
- /* set cable type */
+ /* set cable type if it isn't already set */
if (ap->cbl == ATA_CBL_NONE && ap->flags & ATA_FLAG_SATA)
ap->cbl = ATA_CBL_SATA;
--
1.1.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] ata_piix: convert pata to new reset mechanism
2006-02-15 6:01 [PATCHSET] libata: convert ata_piix to use new reset mechanism Tejun Heo
2006-02-15 6:01 ` [PATCH 1/3] libata: fix comment regarding setting cable type Tejun Heo
@ 2006-02-15 6:01 ` Tejun Heo
2006-02-15 6:01 ` [PATCH 3/3] ata_piix: convert sata " Tejun Heo
2 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2006-02-15 6:01 UTC (permalink / raw)
To: jgarzik, linux-ide; +Cc: Tejun Heo
Convert ata_piix pata ->phy_reset to new reset mechanism.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/ata_piix.c | 43 +++++++++++++++++++++++++++----------------
1 files changed, 27 insertions(+), 16 deletions(-)
79d2bec55755a2941f289a3e0fad5d5922fd00b4
diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c
index 4cc1108..d79c252 100644
--- a/drivers/scsi/ata_piix.c
+++ b/drivers/scsi/ata_piix.c
@@ -131,7 +131,7 @@ enum {
static int piix_init_one (struct pci_dev *pdev,
const struct pci_device_id *ent);
-static void piix_pata_phy_reset(struct ata_port *ap);
+static int piix_pata_probe_reset(struct ata_port *ap, unsigned int *classes);
static void piix_sata_phy_reset(struct ata_port *ap);
static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev);
static void piix_set_dmamode (struct ata_port *ap, struct ata_device *adev);
@@ -207,7 +207,7 @@ static const struct ata_port_operations
.exec_command = ata_exec_command,
.dev_select = ata_std_dev_select,
- .phy_reset = piix_pata_phy_reset,
+ .probe_reset = piix_pata_probe_reset,
.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
@@ -258,8 +258,7 @@ static struct ata_port_info piix_port_in
/* ich5_pata */
{
.sht = &piix_sht,
- .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST |
- PIIX_FLAG_CHECKINTR,
+ .host_flags = ATA_FLAG_SLAVE_POSS | PIIX_FLAG_CHECKINTR,
.pio_mask = 0x1f, /* pio0-4 */
#if 0
.mwdma_mask = 0x06, /* mwdma1-2 */
@@ -284,7 +283,7 @@ static struct ata_port_info piix_port_in
/* piix4_pata */
{
.sht = &piix_sht,
- .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .host_flags = ATA_FLAG_SLAVE_POSS,
.pio_mask = 0x1f, /* pio0-4 */
#if 0
.mwdma_mask = 0x06, /* mwdma1-2 */
@@ -366,30 +365,42 @@ cbl40:
}
/**
- * piix_pata_phy_reset - Probe specified port on PATA host controller
- * @ap: Port to probe
+ * piix_pata_probeinit - probeinit for PATA host controller
+ * @ap: Target port
*
- * Probe PATA phy.
+ * Probeinit including cable detection.
*
* LOCKING:
* None (inherited from caller).
*/
+static void piix_pata_probeinit(struct ata_port *ap)
+{
+ piix_pata_cbl_detect(ap);
+ ata_std_probeinit(ap);
+}
-static void piix_pata_phy_reset(struct ata_port *ap)
+/**
+ * piix_pata_probe_reset - Perform reset on PATA port and classify
+ * @ap: Port to reset
+ * @classes: Resulting classes of attached devices
+ *
+ * Reset PATA phy and classify attached devices.
+ *
+ * LOCKING:
+ * None (inherited from caller).
+ */
+static int piix_pata_probe_reset(struct ata_port *ap, unsigned int *classes)
{
struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->hard_port_no])) {
- ata_port_disable(ap);
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
- return;
+ return 0;
}
- piix_pata_cbl_detect(ap);
-
- ata_port_probe(ap);
-
- ata_bus_reset(ap);
+ return ata_drive_probe_reset(ap, piix_pata_probeinit,
+ ata_std_softreset, NULL,
+ ata_std_postreset, classes);
}
/**
--
1.1.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] ata_piix: convert sata to new reset mechanism
2006-02-15 6:01 [PATCHSET] libata: convert ata_piix to use new reset mechanism Tejun Heo
2006-02-15 6:01 ` [PATCH 1/3] libata: fix comment regarding setting cable type Tejun Heo
2006-02-15 6:01 ` [PATCH 2/3] ata_piix: convert pata to new reset mechanism Tejun Heo
@ 2006-02-15 6:01 ` Tejun Heo
2 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2006-02-15 6:01 UTC (permalink / raw)
To: jgarzik, linux-ide; +Cc: Tejun Heo
Convert ata_piix sata ->phy_reset to new reset mechanism.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/ata_piix.c | 35 +++++++++++++++--------------------
1 files changed, 15 insertions(+), 20 deletions(-)
97913404ed0525f85fd23e20e321fe31a9487267
diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c
index d79c252..c662bf5 100644
--- a/drivers/scsi/ata_piix.c
+++ b/drivers/scsi/ata_piix.c
@@ -132,7 +132,7 @@ static int piix_init_one (struct pci_dev
const struct pci_device_id *ent);
static int piix_pata_probe_reset(struct ata_port *ap, unsigned int *classes);
-static void piix_sata_phy_reset(struct ata_port *ap);
+static int piix_sata_probe_reset(struct ata_port *ap, unsigned int *classes);
static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev);
static void piix_set_dmamode (struct ata_port *ap, struct ata_device *adev);
@@ -235,7 +235,7 @@ static const struct ata_port_operations
.exec_command = ata_exec_command,
.dev_select = ata_std_dev_select,
- .phy_reset = piix_sata_phy_reset,
+ .probe_reset = piix_sata_probe_reset,
.bmdma_setup = ata_bmdma_setup,
.bmdma_start = ata_bmdma_start,
@@ -272,8 +272,8 @@ static struct ata_port_info piix_port_in
/* ich5_sata */
{
.sht = &piix_sht,
- .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
- PIIX_FLAG_COMBINED | PIIX_FLAG_CHECKINTR,
+ .host_flags = ATA_FLAG_SATA | PIIX_FLAG_COMBINED |
+ PIIX_FLAG_CHECKINTR,
.pio_mask = 0x1f, /* pio0-4 */
.mwdma_mask = 0x07, /* mwdma0-2 */
.udma_mask = 0x7f, /* udma0-6 */
@@ -297,8 +297,7 @@ static struct ata_port_info piix_port_in
/* ich6_sata */
{
.sht = &piix_sht,
- .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
- PIIX_FLAG_COMBINED_ICH6 |
+ .host_flags = ATA_FLAG_SATA | PIIX_FLAG_COMBINED_ICH6 |
PIIX_FLAG_CHECKINTR | ATA_FLAG_SLAVE_POSS,
.pio_mask = 0x1f, /* pio0-4 */
.mwdma_mask = 0x07, /* mwdma0-2 */
@@ -309,8 +308,7 @@ static struct ata_port_info piix_port_in
/* ich6_sata_ahci */
{
.sht = &piix_sht,
- .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
- PIIX_FLAG_COMBINED_ICH6 |
+ .host_flags = ATA_FLAG_SATA | PIIX_FLAG_COMBINED_ICH6 |
PIIX_FLAG_CHECKINTR | ATA_FLAG_SLAVE_POSS |
PIIX_FLAG_AHCI,
.pio_mask = 0x1f, /* pio0-4 */
@@ -448,28 +446,25 @@ static int piix_sata_probe (struct ata_p
}
/**
- * piix_sata_phy_reset - Probe specified port on SATA host controller
- * @ap: Port to probe
+ * piix_sata_probe_reset - Perform reset on SATA port and classify
+ * @ap: Port to reset
+ * @classes: Resulting classes of attached devices
*
- * Probe SATA phy.
+ * Reset SATA phy and classify attached devices.
*
* LOCKING:
* None (inherited from caller).
*/
-
-static void piix_sata_phy_reset(struct ata_port *ap)
+static int piix_sata_probe_reset(struct ata_port *ap, unsigned int *classes)
{
if (!piix_sata_probe(ap)) {
- ata_port_disable(ap);
printk(KERN_INFO "ata%u: SATA port has no device.\n", ap->id);
- return;
+ return 0;
}
- ap->cbl = ATA_CBL_SATA;
-
- ata_port_probe(ap);
-
- ata_bus_reset(ap);
+ return ata_drive_probe_reset(ap, ata_std_probeinit,
+ ata_std_softreset, NULL,
+ ata_std_postreset, classes);
}
/**
--
1.1.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] libata: fix comment regarding setting cable type
2006-02-15 6:01 ` [PATCH 1/3] libata: fix comment regarding setting cable type Tejun Heo
@ 2006-02-20 11:20 ` Jeff Garzik
0 siblings, 0 replies; 5+ messages in thread
From: Jeff Garzik @ 2006-02-20 11:20 UTC (permalink / raw)
To: Tejun Heo; +Cc: linux-ide
Tejun Heo wrote:
> The comment above ata_std_postreset() specified that setting cable
> type is the responsibility of postreset(), which isn't possible /
> optimal depending on controller / driver. This patch kills the
> comment. Setting cable type is responsibility of ->probe_reset.
> libata doesn't care whether it's done in probeinit, reset or
> postreset.
>
> Signed-off-by: Tejun Heo <htejun@gmail.com>
applied 1-3
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-02-20 11:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-15 6:01 [PATCHSET] libata: convert ata_piix to use new reset mechanism Tejun Heo
2006-02-15 6:01 ` [PATCH 1/3] libata: fix comment regarding setting cable type Tejun Heo
2006-02-20 11:20 ` Jeff Garzik
2006-02-15 6:01 ` [PATCH 2/3] ata_piix: convert pata to new reset mechanism Tejun Heo
2006-02-15 6:01 ` [PATCH 3/3] ata_piix: convert sata " Tejun Heo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).