Module Name:    src
Committed By:   jmcneill
Date:           Thu Oct 15 09:04:35 UTC 2015

Modified Files:
        src/sys/arch/arm/nvidia: tegra_ahcisata.c tegra_ahcisatareg.h

Log Message:
disable SATA sleep feature


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_ahcisatareg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/nvidia/tegra_ahcisata.c
diff -u src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.6 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.7
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.6	Sun May 24 22:30:22 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Thu Oct 15 09:04:35 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.6 2015/05/24 22:30:22 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.7 2015/10/15 09:04:35 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -29,7 +29,7 @@
 #include "locators.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.6 2015/05/24 22:30:22 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.7 2015/10/15 09:04:35 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -129,6 +129,20 @@ tegra_ahcisata_init(struct tegra_ahcisat
 	const u_int gen2_tx_amp = 0x18;
 	const u_int gen2_tx_peak = 0x0a;
 
+	/* Set RX idle detection source and disable RX idle detection interrupt */
+	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_AUX_MISC_CNTL_1_REG,
+	    TEGRA_SATA_AUX_MISC_CNTL_1_AUX_OR_CORE_IDLE_STATUS_SEL, 0);
+	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_AUX_RX_STAT_INT_REG,
+	    TEGRA_SATA_AUX_RX_STAT_INT_SATA_RX_STAT_INT_DISABLE, 0);
+
+	/* Prevent automatic OOB sequence when coming out of reset */
+	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_AUX_MISC_CNTL_1_REG,
+	    0, TEGRA_SATA_AUX_MISC_CNTL_1_OOB_ON_POR);
+
+	/* Disable device sleep */
+	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_AUX_MISC_CNTL_1_REG,
+	    0, TEGRA_SATA_AUX_MISC_CNTL_1_SDS_SUPPORT);
+
 	/* Enable IFPS device block */
 	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_CONFIGURATION_REG,
 	    TEGRA_SATA_CONFIGURATION_EN_FPCI, 0);

Index: src/sys/arch/arm/nvidia/tegra_ahcisatareg.h
diff -u src/sys/arch/arm/nvidia/tegra_ahcisatareg.h:1.1 src/sys/arch/arm/nvidia/tegra_ahcisatareg.h:1.2
--- src/sys/arch/arm/nvidia/tegra_ahcisatareg.h:1.1	Fri May 15 17:43:35 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisatareg.h	Thu Oct 15 09:04:35 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisatareg.h,v 1.1 2015/05/15 17:43:35 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisatareg.h,v 1.2 2015/10/15 09:04:35 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca>
@@ -53,6 +53,14 @@
 #define TEGRA_T_SATA0_CFG9_BASE_ADDRESS			__BITS(31,13) 
 #define TEGRA_T_SATA0_CFG9_SPACE_TYPE			__BIT(0)
 
+#define TEGRA_SATA_AUX_MISC_CNTL_1_REG		0x1108
+#define TEGRA_SATA_AUX_MISC_CNTL_1_AUX_OR_CORE_IDLE_STATUS_SEL	__BIT(18)
+#define TEGRA_SATA_AUX_MISC_CNTL_1_SDS_SUPPORT			__BIT(13)
+#define TEGRA_SATA_AUX_MISC_CNTL_1_OOB_ON_POR			__BIT(7)
+
+#define TEGRA_SATA_AUX_RX_STAT_INT_REG		0x110c
+#define TEGRA_SATA_AUX_RX_STAT_INT_SATA_RX_STAT_INT_DISABLE	__BIT(2)
+
 #define TEGRA_T_SATA0_BKDOOR_CC_REG		0x14a4
 #define TEGRA_T_SATA0_BKDOOR_CC_CLASS_CODE		__BITS(31,16)
 #define TEGRA_T_SATA0_BKDOOR_CC_PROG_IF			__BITS(15,8)

Reply via email to