Skip to contentSkip to conversation

mvsata: issue hard reset on initialization

PATCH New Michael Walle 3 participants 6 messages May 1, 2011 – May 11, 2011 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Before the actual initialization do a hard reset of the SATA port and the connected device.

Cc Prafulla Wadaskar <[email protected]>
---
 drivers/block/mvsata_ide.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
drivers/block/mvsata_ide.c +9 -1
index 3d6993a..ff880d5 100644
@@ -33,7 +33,9 @@
 
 /* SATA port registers */
 struct mvsata_port_registers {
-	u32 reserved1[192];
+	u32 reserved0[10];
+	u32 edma_cmd;
+	u32 reserved1[181];
 	/* offset 0x300 : ATA Interface registers */
 	u32 sstatus;
 	u32 serror;
@@ -76,6 +78,7 @@ struct mvsata_port_registers {
  * and for SStatus DETection.
  */
 
+#define MVSATA_EDMA_CMD_ATA_RST		0x00000004
 #define MVSATA_SCONTROL_DET_MASK		0x0000000F
 #define MVSATA_SCONTROL_DET_NONE		0x00000000
 #define MVSATA_SCONTROL_DET_INIT		0x00000001
@@ -115,6 +118,11 @@ static int mvsata_ide_initialize_port(struct mvsata_port_registers *port)
 	u32 status;
 	u32 timeleft = 10000; /* wait at most 10 ms for SATA reset to complete */
 
+	/* Hard reset */
+	writel(MVSATA_EDMA_CMD_ATA_RST, &port->edma_cmd);
+	udelay(25);
+	writel(0, &port->edma_cmd);
+
 	/* Set control IPM to 3 (no low power) and DET to 1 (initialize) */
 	control = readl(&port->scontrol);
 	control = (control & ~MVSATA_SCONTROL_MASK) | MVSATA_PORT_INIT;
Signature · 1 line
1.7.2.3
#1 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Quoted 9 lines

-----Original Message-----
From: Michael Walle [mailto:michael at walle.cc]
Sent: Monday, May 02, 2011 3:35 AM
To: u-boot at lists.denx.de
Cc: Michael Walle; Prafulla Wadaskar
Subject: [PATCH] mvsata: issue hard reset on initialization

Quoted 3 lines

Before the actual initialization do a hard reset of the SATA port and the
connected device.

Copying Albert for his ack

Regards..
Prafulla . .

Quoted 46 lines
Cc Prafulla Wadaskar <[email protected]>
---
 drivers/block/mvsata_ide.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
drivers/block/mvsata_ide.c +4 -1
index 3d6993a..ff880d5 100644
@@ -33,7 +33,9 @@
 
 /* SATA port registers */
 struct mvsata_port_registers {
-	u32 reserved1[192];
+	u32 reserved0[10];
+	u32 edma_cmd;
+	u32 reserved1[181];
 	/* offset 0x300 : ATA Interface registers */
 	u32 sstatus;
 	u32 serror;
@@ -76,6 +78,7 @@ struct mvsata_port_registers {
  * and for SStatus DETection.
  */
 
+#define MVSATA_EDMA_CMD_ATA_RST		0x00000004
 #define MVSATA_SCONTROL_DET_MASK		0x0000000F
 #define MVSATA_SCONTROL_DET_NONE		0x00000000
 #define MVSATA_SCONTROL_DET_INIT		0x00000001
@@ -115,6 +118,11 @@ static int mvsata_ide_initialize_port(struct
 mvsata_port_registers *port)
 	u32 status;
 	u32 timeleft = 10000; /* wait at most 10 ms for SATA reset to

complete */

drivers/block/mvsata_ide.c +5 -1
+	/* Hard reset */
+	writel(MVSATA_EDMA_CMD_ATA_RST, &port->edma_cmd);
+	udelay(25);
+	writel(0, &port->edma_cmd);
+
 	/* Set control IPM to 3 (no low power) and DET to 1 (initialize) */
 	control = readl(&port->scontrol);
 	control = (control & ~MVSATA_SCONTROL_MASK) | MVSATA_PORT_INIT;
--

1.7.2.3

#2 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Am Montag 02 Mai 2011, 10:37:41 schrieb Prafulla Wadaskar:

Quoted 7 lines
Quoted 7 lines

-----Original Message-----
From: Michael Walle [mailto:michael at walle.cc]
Sent: Monday, May 02, 2011 3:35 AM
To: u-boot at lists.denx.de
Cc: Michael Walle; Prafulla Wadaskar
Subject: [PATCH] mvsata: issue hard reset on initialization

Quoted 5 lines
Quoted 3 lines

Before the actual initialization do a hard reset of the SATA port and the
connected device.

Copying Albert for his ack

any news on this?

Signature · 1 line
Michael
#3 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Hi Michael,

Sorry for the delay. Busy period for me I'm afraid.

Le 09/05/2011 19:49, Michael Walle a ?crit :

Quoted 8 lines

Am Montag 02 Mai 2011, 10:37:41 schrieb Prafulla Wadaskar:

Quoted 7 lines
Quoted 7 lines

-----Original Message-----
From: Michael Walle [mailto:michael at walle.cc]
Sent: Monday, May 02, 2011 3:35 AM
To: u-boot at lists.denx.de
Cc: Michael Walle; Prafulla Wadaskar
Subject: [PATCH] mvsata: issue hard reset on initialization

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

Before the actual initialization do a hard reset of the SATA port and the
connected device.

Copying Albert for his ack

any news on this?

What is the reason for issuing the hard reset? Is it in case the board was rebooted and we want the disk drives to return to a safe state?

Also, why 25?

Amicalement,

Signature · 1 line
Albert.
#4 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Hi Albert,

Am Dienstag 10 Mai 2011, 23:47:04 schrieben Sie:

Quoted 3 lines

Hi Michael,

Sorry for the delay. Busy period for me I'm afraid.

no problem ;)

Quoted 13 lines

Le 09/05/2011 19:49, Michael Walle a ?crit :

Quoted 12 lines

Am Montag 02 Mai 2011, 10:37:41 schrieb Prafulla Wadaskar:

Quoted 11 lines
Quoted 10 lines

-----Original Message-----
From: Michael Walle [mailto:michael at walle.cc]
Sent: Monday, May 02, 2011 3:35 AM
To: u-boot at lists.denx.de
Cc: Michael Walle; Prafulla Wadaskar
Subject: [PATCH] mvsata: issue hard reset on initialization

Before the actual initialization do a hard reset of the SATA port and the
connected device.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Copying Albert for his ack

any news on this?

What is the reason for issuing the hard reset? Is it in case the board was rebooted and we want the disk drives to return to a safe state?

Right, if i reboot my linkstation (from linux) the ATA probing times out without the reset.

Also, the user manual states (FS_88F6180_9x_6281_OpenSource.pdf, Ch 7.6.9):
Device hard reset (setting the <eAtaRst> field in the EDMA Command Register (Table 342 p. 506) and device initialization are required before any attempt to access the device.

Quoted 1 line

Also, why 25?

I took that 25us from the original marvell uboot port (uboot 1.1.4 heavily modified by marvell, the gpl sources provided by buffalo) and from the linux sata_mv driver, both are using 25us.

Signature · 1 line
wkr michael
#5 lore raw

PATCH 1/1 mvsata: issue hard reset on initialization

Hi Michael,

Le 11/05/2011 00:13, Michael Walle a ?crit :

Quoted 28 lines

Hi Albert,

Am Dienstag 10 Mai 2011, 23:47:04 schrieben Sie:

Quoted 3 lines

Hi Michael,

Sorry for the delay. Busy period for me I'm afraid.

no problem ;)

Quoted 13 lines

Le 09/05/2011 19:49, Michael Walle a ?crit :

Quoted 12 lines

Am Montag 02 Mai 2011, 10:37:41 schrieb Prafulla Wadaskar:

Quoted 11 lines
Quoted 10 lines

-----Original Message-----
From: Michael Walle [mailto:michael at walle.cc]
Sent: Monday, May 02, 2011 3:35 AM
To: u-boot at lists.denx.de
Cc: Michael Walle; Prafulla Wadaskar
Subject: [PATCH] mvsata: issue hard reset on initialization

Before the actual initialization do a hard reset of the SATA port and the
connected device.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Copying Albert for his ack

any news on this?

What is the reason for issuing the hard reset? Is it in case the board was rebooted and we want the disk drives to return to a safe state?

Quoted 7 lines

Right, if i reboot my linkstation (from linux) the ATA probing times out without the reset.

Also, the user manual states (FS_88F6180_9x_6281_OpenSource.pdf, Ch 7.6.9):
Device hard reset (setting the<eAtaRst> field in the EDMA Command Register (Table 342 p. 506) and device initialization are required before any attempt to access the device.

Ok.

Quoted 4 lines
Quoted 1 line

Also, why 25?

I took that 25us from the original marvell uboot port (uboot 1.1.4 heavily modified by marvell, the gpl sources provided by buffalo) and from the linux sata_mv driver, both are using 25us.

Can you just add a comment stating that the value was inspired by Marvell use rather than taken from the spec?

Amicalement,

Signature · 1 line
Albert.