CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:16:27 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_intr.h

Log Message:
add SOR and GPU interrupt numbers


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_intr.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_intr.h
diff -u src/sys/arch/arm/nvidia/tegra_intr.h:1.7 src/sys/arch/arm/nvidia/tegra_intr.h:1.8
--- src/sys/arch/arm/nvidia/tegra_intr.h:1.7	Sat Aug  1 21:20:11 2015
+++ src/sys/arch/arm/nvidia/tegra_intr.h	Sat Oct 17 21:16:27 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_intr.h,v 1.7 2015/08/01 21:20:11 jmcneill Exp $ */
+/* $NetBSD: tegra_intr.h,v 1.8 2015/10/17 21:16:27 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -58,6 +58,7 @@
 #define TEGRA_INTR_DISPLAYA	TEGRA_INTR(73)
 #define TEGRA_INTR_DISPLAYB	TEGRA_INTR(74)
 #define TEGRA_INTR_HDMI		TEGRA_INTR(75)
+#define TEGRA_INTR_SOR		TEGRA_INTR(76)
 #define TEGRA_INTR_HDA		TEGRA_INTR(81)
 #define TEGRA_INTR_I2C2		TEGRA_INTR(84)
 #define TEGRA_INTR_UARTD	TEGRA_INTR(90)
@@ -75,4 +76,6 @@
 #define TEGRA_INTR_TMR8		TEGRA_INTR(154)
 #define TEGRA_INTR_TMR9		TEGRA_INTR(155)
 #define TEGRA_INTR_TMR0		TEGRA_INTR(156)
+#define TEGRA_INTR_GPU		TEGRA_INTR(157)
+#define TEGRA_INTR_GPU_NONSTALL	TEGRA_INTR(158)
 #endif /* _ARM_TEGRA_INTR_H */



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:16:27 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_intr.h

Log Message:
add SOR and GPU interrupt numbers


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_intr.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:17:15 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_reg.h

Log Message:
add GPU, SOR, and DPAUX offsets


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_reg.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_reg.h
diff -u src/sys/arch/arm/nvidia/tegra_reg.h:1.13 src/sys/arch/arm/nvidia/tegra_reg.h:1.14
--- src/sys/arch/arm/nvidia/tegra_reg.h:1.13	Sat Aug  1 21:20:11 2015
+++ src/sys/arch/arm/nvidia/tegra_reg.h	Sat Oct 17 21:17:15 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_reg.h,v 1.13 2015/08/01 21:20:11 jmcneill Exp $ */
+/* $NetBSD: tegra_reg.h,v 1.14 2015/10/17 21:17:15 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -55,6 +55,8 @@
 #define TEGRA_HOST1X_SIZE	0x00034000
 #define TEGRA_GHOST_BASE	0x5400
 #define TEGRA_GHOST_SIZE	0x0100
+#define TEGRA_GPU_BASE		0x5700
+#define TEGRA_GPU_SIZE		0x0200
 #define TEGRA_PPSB_BASE		0x6000
 #define TEGRA_PPSB_SIZE		0x0100
 #define TEGRA_APB_BASE		0x7000
@@ -146,5 +148,9 @@
 #define TEGRA_DISPLAYB_SIZE	0x0004
 #define TEGRA_HDMI_OFFSET	0x0028
 #define TEGRA_HDMI_SIZE		0x0004
+#define TEGRA_SOR_OFFSET	0x0054
+#define TEGRA_SOR_SIZE		0x0004
+#define TEGRA_DPAUX_OFFSET	0x005c
+#define TEGRA_DPAUX_SIZE	0x0004
 
 #endif /* _ARM_TEGRA_REG_H */



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:17:15 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_reg.h

Log Message:
add GPU, SOR, and DPAUX offsets


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_reg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:16:10 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h tegra_var.h

Log Message:
add support for enabling the GPU


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:16:10 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h tegra_var.h

Log Message:
add support for enabling the GPU


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_var.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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.26 src/sys/arch/arm/nvidia/tegra_car.c:1.27
--- src/sys/arch/arm/nvidia/tegra_car.c:1.26	Sat Aug  1 21:20:11 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sat Oct 17 21:16:09 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.26 2015/08/01 21:20:11 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.27 2015/10/17 21:16:09 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -29,7 +29,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_car.c,v 1.26 2015/08/01 21:20:11 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_car.c,v 1.27 2015/10/17 21:16:09 jmcneill Exp $");
 
 #include 
 #include 
@@ -831,3 +831,32 @@ tegra_car_wdt_enable(u_int timer, bool e
 	CAR_RST_SOURCE_WDT_SEL |
 	CAR_RST_SOURCE_WDT_EN);
 }
+
+void
+tegra_car_gpu_enable(void)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	tegra_car_get_bs(, );
+
+	/* Enter reset, enable clock */
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_X_SET_REG, CAR_DEV_X_GPU);
+	bus_space_write_4(bst, bsh, CAR_CLK_ENB_X_SET_REG, CAR_DEV_X_GPU);
+
+	/* Set PLLP_OUT5 to 204MHz */
+	const u_int rate = 20400;
+	const u_int div = howmany(tegra_car_pllp0_rate() * 2, rate) - 2;
+	tegra_reg_set_clear(bst, bsh, CAR_PLLP_OUTC_REG,
+	__SHIFTIN(div, CAR_PLLP_OUTC_OUT5_RATIO) |
+	CAR_PLLP_OUTC_OUT5_CLKEN,
+	CAR_PLLP_OUTC_OUT5_RATIO);
+	delay(20);
+
+	/* Remove clamping from 3D partition in the PMC */
+	tegra_pmc_remove_clamping(PMC_PARTID_TD);
+	delay(20);
+
+	/* Leave reset */
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_X_CLR_REG, CAR_DEV_X_GPU);
+}

Index: src/sys/arch/arm/nvidia/tegra_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.20 src/sys/arch/arm/nvidia/tegra_carreg.h:1.21
--- src/sys/arch/arm/nvidia/tegra_carreg.h:1.20	Sat Jul 25 15:50:42 2015
+++ src/sys/arch/arm/nvidia/tegra_carreg.h	Sat Oct 17 21:16:09 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_carreg.h,v 1.20 2015/07/25 15:50:42 jmcneill Exp $ */
+/* $NetBSD: tegra_carreg.h,v 1.21 2015/10/17 21:16:09 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -63,6 +63,11 @@
 #define CAR_PLLP_OUTB_OUT3_OVRRIDE	__BIT(2)
 #define CAR_PLLP_OUTB_OUT3_CLKEN	__BIT(1)
 #define CAR_PLLP_OUTB_OUT3_RSTN		__BIT(0)
+#define CAR_PLLP_OUTC_REG	0x67c
+#define CAR_PLLP_OUTC_OUT5_RATIO	__BITS(31,24)
+#define CAR_PLLP_OUTC_OUT5_OVERRIDE	__BIT(18)
+#define CAR_PLLP_OUTC_OUT5_CLKEN	__BIT(17)
+#define CAR_PLLP_OUTC_OUT5_RSTN		__BIT(16)
 #define CAR_PLLP_MISC_REG	0xac
 
 #define CAR_PLLC_BASE_REG	0x80

Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.24 src/sys/arch/arm/nvidia/tegra_var.h:1.25
--- src/sys/arch/arm/nvidia/tegra_var.h:1.24	Sat Aug  1 21:20:11 2015
+++ src/sys/arch/arm/nvidia/tegra_var.h	Sat Oct 17 21:16:09 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.24 2015/08/01 21:20:11 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.25 2015/10/17 21:16:09 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -108,6 +108,7 @@ void	tegra_car_hdmi_enable(u_int);
 int	tegra_car_dc_enable(u_int);
 void	tegra_car_host1x_enable(void);
 void	tegra_car_wdt_enable(u_int, bool);
+void	tegra_car_gpu_enable(void);
 
 struct tegra_gpio_pin;
 struct tegra_gpio_pin *tegra_gpio_acquire(const char *, u_int);



CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:18:16 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_io.c
Added Files:
src/sys/arch/arm/nvidia: tegra_nouveau.c

Log Message:
Add bus glue for attaching nouveau DRM


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_io.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_nouveau.c

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/files.tegra
diff -u src/sys/arch/arm/nvidia/files.tegra:1.16 src/sys/arch/arm/nvidia/files.tegra:1.17
--- src/sys/arch/arm/nvidia/files.tegra:1.16	Sat Aug 22 15:10:04 2015
+++ src/sys/arch/arm/nvidia/files.tegra	Sat Oct 17 21:18:16 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.16 2015/08/22 15:10:04 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.17 2015/10/17 21:18:16 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -116,6 +116,10 @@ device	tegracec: hdmicecbus
 attach	tegracec at tegraio with tegra_cec
 file	arch/arm/nvidia/tegra_cec.c		tegra_cec
 
+# GPU
+attach	nouveau at tegraio with tegra_nouveau
+file	arch/arm/nvidia/tegra_nouveau.c		tegra_nouveau
+
 # Console parameters
 defparam opt_tegra.h			CONADDR
 defparam opt_tegra.h			CONSPEED

Index: src/sys/arch/arm/nvidia/tegra_io.c
diff -u src/sys/arch/arm/nvidia/tegra_io.c:1.13 src/sys/arch/arm/nvidia/tegra_io.c:1.14
--- src/sys/arch/arm/nvidia/tegra_io.c:1.13	Sat Aug  1 21:20:11 2015
+++ src/sys/arch/arm/nvidia/tegra_io.c	Sat Oct 17 21:18:16 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_io.c,v 1.13 2015/08/01 21:20:11 jmcneill Exp $ */
+/* $NetBSD: tegra_io.c,v 1.14 2015/10/17 21:18:16 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -29,7 +29,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_io.c,v 1.13 2015/08/01 21:20:11 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_io.c,v 1.14 2015/10/17 21:18:16 jmcneill Exp $");
 
 #include 
 #include 
@@ -144,6 +144,10 @@ static const struct tegra_locators tegra
 TEGRA_HDMI_OFFSET, TEGRA_HDMI_SIZE, NOPORT, TEGRA_INTR_HDMI },
 };
 
+static const struct tegra_locators tegra_gpu_locators[] = {
+  { "nouveau", 0, TEGRA_GPU_SIZE, NOPORT, NOINTR }
+};
+
 int
 tegraio_match(device_t parent, cfdata_t cf, void *aux)
 {
@@ -171,6 +175,8 @@ tegraio_attach(device_t parent, device_t
 	tegraio_scan(self, (bus_space_handle_t)NULL,
 	tegra_ghost_locators, __arraycount(tegra_ghost_locators));
 	tegraio_scan(self, (bus_space_handle_t)NULL,
+	tegra_gpu_locators, __arraycount(tegra_gpu_locators));
+	tegraio_scan(self, (bus_space_handle_t)NULL,
 	tegra_pcie_locators, __arraycount(tegra_pcie_locators));
 }
 

Added files:

Index: src/sys/arch/arm/nvidia/tegra_nouveau.c
diff -u /dev/null src/sys/arch/arm/nvidia/tegra_nouveau.c:1.1
--- /dev/null	Sat Oct 17 21:18:16 2015
+++ src/sys/arch/arm/nvidia/tegra_nouveau.c	Sat Oct 17 21:18:16 2015
@@ -0,0 +1,225 @@
+/* $NetBSD: tegra_nouveau.c,v 1.1 2015/10/17 21:18:16 jmcneill Exp $ */
+
+/*-
+ * Copyright (c) 2015 Jared D. McNeill 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "locators.h"
+
+#include 
+__KERNEL_RCSID(0, "$NetBSD: tegra_nouveau.c,v 1.1 2015/10/17 21:18:16 jmcneill Exp $");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+#include 
+#include 
+
+extern char *nouveau_config;
+extern char *nouveau_debug;
+extern struct drm_driver *const nouveau_drm_driver;
+
+static int	

CVS commit: src/sys/arch/arm/nvidia

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:18:16 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_io.c
Added Files:
src/sys/arch/arm/nvidia: tegra_nouveau.c

Log Message:
Add bus glue for attaching nouveau DRM


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_io.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_nouveau.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-10-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Oct 15 09:06:04 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_pcie.c tegra_pciereg.h

Log Message:
explicitly disable PCIe MSI as we dont support it yet


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pcie.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_pciereg.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.3 src/sys/arch/arm/nvidia/tegra_pcie.c:1.4
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.3	Fri Oct  2 05:22:50 2015
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Thu Oct 15 09:06:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.3 2015/10/02 05:22:50 msaitoh Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.4 2015/10/15 09:06:04 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -29,7 +29,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.3 2015/10/02 05:22:50 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.4 2015/10/15 09:06:04 jmcneill Exp $");
 
 #include 
 #include 
@@ -193,34 +193,51 @@ tegra_pcie_attach(device_t parent, devic
 }
 
 static int
-tegra_pcie_intr(void *priv)
+tegra_pcie_legacy_intr(struct tegra_pcie_softc *sc)
 {
-	struct tegra_pcie_softc *sc = priv;
+	const uint32_t msg = bus_space_read_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_MSG_REG);
 	struct tegra_pcie_ih *pcie_ih;
+	int rv = 0;
 
-	const uint32_t code = bus_space_read_4(sc->sc_bst, sc->sc_bsh_afi,
-	AFI_INTR_CODE_REG);
-	const uint32_t sig = bus_space_read_4(sc->sc_bst, sc->sc_bsh_afi,
-	AFI_INTR_SIGNATURE_REG);
-	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_INTR_CODE_REG, 0);
-
-	switch (__SHIFTOUT(code, AFI_INTR_CODE_INT_CODE)) {
-	case AFI_INTR_CODE_SM_MSG:
+	if (msg & (AFI_MSG_INT0|AFI_MSG_INT1)) {
 		mutex_enter(>sc_lock);
 		const u_int lastgen = sc->sc_intrgen;
 		TAILQ_FOREACH(pcie_ih, >sc_intrs, ih_entry) {
 			int (*callback)(void *) = pcie_ih->ih_callback;
 			void *arg = pcie_ih->ih_arg;
 			mutex_exit(>sc_lock);
-			const int rv = callback(arg);
-			if (rv)
-return rv;
+			rv += callback(arg);
 			mutex_enter(>sc_lock);
 			if (lastgen != sc->sc_intrgen)
 break;
 		}
 		mutex_exit(>sc_lock);
-		return 0;
+	} else if (msg & (AFI_MSG_PM_PME0|AFI_MSG_PM_PME1)) {
+		device_printf(sc->sc_dev, "PM PME message; AFI_MSG=%08x\n",
+		msg);
+	} else {
+		bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_MSG_REG, msg);
+		rv = 1;
+	}
+
+	return rv;
+}
+
+static int
+tegra_pcie_intr(void *priv)
+{
+	struct tegra_pcie_softc *sc = priv;
+
+	const uint32_t code = bus_space_read_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_INTR_CODE_REG);
+	const uint32_t sig = bus_space_read_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_INTR_SIGNATURE_REG);
+	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_INTR_CODE_REG, 0);
+
+	switch (__SHIFTOUT(code, AFI_INTR_CODE_INT_CODE)) {
+	case AFI_INTR_CODE_SM_MSG:
+		return tegra_pcie_legacy_intr(sc);
 	default:
 		device_printf(sc->sc_dev, "intr: code %#x sig %#x\n",
 		code, sig);
@@ -231,6 +248,14 @@ tegra_pcie_intr(void *priv)
 static void
 tegra_pcie_enable(struct tegra_pcie_softc *sc)
 {
+	/* disable MSI */
+	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_MSI_BAR_SZ_REG, 0);
+	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_MSI_FPCI_BAR_ST_REG, 0);
+	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi,
+	AFI_MSI_AXI_BAR_ST_REG, 0);
+
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi,
 	AFI_SM_INTR_ENABLE_REG, 0x);
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi,

Index: src/sys/arch/arm/nvidia/tegra_pciereg.h
diff -u src/sys/arch/arm/nvidia/tegra_pciereg.h:1.1 src/sys/arch/arm/nvidia/tegra_pciereg.h:1.2
--- src/sys/arch/arm/nvidia/tegra_pciereg.h:1.1	Sun May  3 01:07:44 2015
+++ src/sys/arch/arm/nvidia/tegra_pciereg.h	Thu Oct 15 09:06:04 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pciereg.h,v 1.1 2015/05/03 01:07:44 jmcneill Exp $ */
+/* $NetBSD: tegra_pciereg.h,v 1.2 2015/10/15 09:06:04 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,11 +30,15 @@
 #define _ARM_TEGRA_PCIEREG_H
 
 /* AFI */
+#define AFI_MSI_BAR_SZ_REG	0x60
+#define AFI_MSI_FPCI_BAR_ST_REG	0x64
+#define AFI_MSI_AXI_BAR_ST_REG	0x68
 #define AFI_INTR_MASK_REG	0xb4
 #define AFI_INTR_CODE_REG	0xb8
 #define AFI_INTR_SIGNATURE_REG	0xbc
 #define AFI_SM_INTR_ENABLE_REG	0xc4
 #define AFI_AFI_INTR_ENABLE_REG	0xc8
+#define AFI_MSG_REG		0x190
 
 #define AFI_INTR_MASK_MSI	__BIT(8)
 #define AFI_INTR_MASK_INT	__BIT(0)
@@ -42,4 +46,9 @@
 #define AFI_INTR_CODE_INT_CODE	__BITS(4,0)
 #define AFI_INTR_CODE_SM_MSG	6
 
+#define AFI_MSG_INT1		__BITS(27,24)
+#define AFI_MSG_PM_PME1		__BIT(20)
+#define AFI_MSG_INT0		__BITS(11,8)
+#define AFI_MSG_PM_PME0		__BIT(4)
+
 #endif /* 

CVS commit: src/sys/arch/arm/nvidia

2015-10-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Oct 15 09:06:04 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_pcie.c tegra_pciereg.h

Log Message:
explicitly disable PCIe MSI as we dont support it yet


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pcie.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_pciereg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-10-15 Thread Jared D. McNeill
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 
@@ -29,7 +29,7 @@
 #include "locators.h"
 
 #include 
-__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 
 #include 
@@ -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 
@@ -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)



CVS commit: src/sys/arch/arm/nvidia

2015-10-15 Thread Jared D. McNeill
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.



CVS commit: src/sys/arch/arm/nvidia

2015-08-03 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Aug  3 12:11:52 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
set SDHC_FLAG_POLL_CARD_DET when we have a card detect pin


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.10 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.11
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.10	Sun Aug  2 21:45:52 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Mon Aug  3 12:11:52 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.10 2015/08/02 21:45:52 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.11 2015/08/03 12:11:52 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_sdhc.c,v 1.10 2015/08/02 21:45:52 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.11 2015/08/03 12:11:52 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -119,8 +119,10 @@ tegra_sdhc_attach(device_t parent, devic
 	if (prop_dictionary_get_cstring_nocopy(prop, wp-gpio, pin))
 		sc-sc_pin_wp = tegra_gpio_acquire(pin, GPIO_PIN_INPUT);
 
-	if (sc-sc_pin_cd)
+	if (sc-sc_pin_cd) {
 		sc-sc.sc_vendor_card_detect = tegra_sdhc_card_detect;
+		sc-sc.sc_flags |= SDHC_FLAG_POLL_CARD_DET;
+	}
 	if (sc-sc_pin_wp)
 		sc-sc.sc_vendor_write_protect = tegra_sdhc_write_protect;
 



CVS commit: src/sys/arch/arm/nvidia

2015-08-03 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Aug  3 12:11:52 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
set SDHC_FLAG_POLL_CARD_DET when we have a card detect pin


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-08-02 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  2 21:45:52 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
set ref clk to 204MHz so we can take advantage of UHS-I modes


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.9 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.10
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.9	Wed Jul 29 12:11:32 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sun Aug  2 21:45:52 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.9 2015/07/29 12:11:32 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.10 2015/08/02 21:45:52 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_sdhc.c,v 1.9 2015/07/29 12:11:32 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.10 2015/08/02 21:45:52 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -124,7 +124,7 @@ tegra_sdhc_attach(device_t parent, devic
 	if (sc-sc_pin_wp)
 		sc-sc.sc_vendor_write_protect = tegra_sdhc_write_protect;
 
-	tegra_car_periph_sdmmc_set_rate(sc-sc_port, 5000);
+	tegra_car_periph_sdmmc_set_rate(sc-sc_port, 20400);
 	sc-sc.sc_clkbase = tegra_car_periph_sdmmc_rate(sc-sc_port) / 1000;
 
 	aprint_naive(\n);



CVS commit: src/sys/arch/arm/nvidia

2015-08-02 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  2 21:45:52 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
set ref clk to 204MHz so we can take advantage of UHS-I modes


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-08-01 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Aug  1 21:20:11 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_car.c tegra_intr.h
tegra_io.c tegra_reg.h tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: tegra_cec.c tegra_cecreg.h

Log Message:
Add driver for Tegra HDMI CEC controller.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_cec.c \
src/sys/arch/arm/nvidia/tegra_cecreg.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_intr.h
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_io.c \
src/sys/arch/arm/nvidia/tegra_reg.h
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/arm/nvidia/tegra_var.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/files.tegra
diff -u src/sys/arch/arm/nvidia/files.tegra:1.14 src/sys/arch/arm/nvidia/files.tegra:1.15
--- src/sys/arch/arm/nvidia/files.tegra:1.14	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/files.tegra	Sat Aug  1 21:20:11 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.14 2015/05/30 13:25:55 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.15 2015/08/01 21:20:11 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -111,6 +111,11 @@ device	tegrahdmi: edid, ddc_read_edid, v
 attach	tegrahdmi at tegraio with tegra_hdmi
 file	arch/arm/nvidia/tegra_hdmi.c		tegra_hdmi
 
+# HDMI CEC
+device	tegracec: hdmicecbus
+attach	tegracec at tegraio with tegra_cec
+file	arch/arm/nvidia/tegra_cec.c		tegra_cec
+
 # Console parameters
 defparam opt_tegra.h			CONADDR
 defparam opt_tegra.h			CONSPEED

Index: src/sys/arch/arm/nvidia/tegra_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.25 src/sys/arch/arm/nvidia/tegra_car.c:1.26
--- src/sys/arch/arm/nvidia/tegra_car.c:1.25	Wed Jul 29 14:30:18 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sat Aug  1 21:20:11 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.25 2015/07/29 14:30:18 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.26 2015/08/01 21:20:11 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_car.c,v 1.25 2015/07/29 14:30:18 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.26 2015/08/01 21:20:11 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -685,6 +685,18 @@ tegra_car_periph_i2c_enable(u_int port, 
 }
 
 void
+tegra_car_periph_cec_enable(void)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	tegra_car_get_bs(bst, bsh);
+
+	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG, CAR_DEV_W_CEC);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_CEC);
+}
+
+void
 tegra_car_hdmi_enable(u_int rate)
 {
 	bus_space_tag_t bst;

Index: src/sys/arch/arm/nvidia/tegra_intr.h
diff -u src/sys/arch/arm/nvidia/tegra_intr.h:1.6 src/sys/arch/arm/nvidia/tegra_intr.h:1.7
--- src/sys/arch/arm/nvidia/tegra_intr.h:1.6	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/tegra_intr.h	Sat Aug  1 21:20:11 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_intr.h,v 1.6 2015/05/30 13:25:55 jmcneill Exp $ */
+/* $NetBSD: tegra_intr.h,v 1.7 2015/08/01 21:20:11 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -39,6 +39,7 @@
 
 #define TEGRA_INTR_TMR1		TEGRA_INTR(0)
 #define TEGRA_INTR_TMR2		TEGRA_INTR(1)
+#define TEGRA_INTR_CEC		TEGRA_INTR(3)
 #define TEGRA_INTR_SDMMC1	TEGRA_INTR(14)
 #define TEGRA_INTR_SDMMC2	TEGRA_INTR(15)
 #define TEGRA_INTR_SDMMC3	TEGRA_INTR(19)

Index: src/sys/arch/arm/nvidia/tegra_io.c
diff -u src/sys/arch/arm/nvidia/tegra_io.c:1.12 src/sys/arch/arm/nvidia/tegra_io.c:1.13
--- src/sys/arch/arm/nvidia/tegra_io.c:1.12	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/tegra_io.c	Sat Aug  1 21:20:11 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_io.c,v 1.12 2015/05/30 13:25:55 jmcneill Exp $ */
+/* $NetBSD: tegra_io.c,v 1.13 2015/08/01 21:20:11 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -29,7 +29,7 @@
 #include opt_tegra.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: tegra_io.c,v 1.12 2015/05/30 13:25:55 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_io.c,v 1.13 2015/08/01 21:20:11 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -113,6 +113,8 @@ static const struct tegra_locators tegra
 TEGRA_SATA_OFFSET, TEGRA_SATA_SIZE, NOPORT, TEGRA_INTR_SATA },
   { hdaudio,
 TEGRA_HDA_OFFSET, TEGRA_HDA_SIZE, NOPORT, TEGRA_INTR_HDA },
+  { tegracec,
+TEGRA_CEC_OFFSET, TEGRA_CEC_SIZE, NOPORT, TEGRA_INTR_CEC },
 };
 
 static const struct tegra_locators tegra_ahb_a2_locators[] = {
Index: src/sys/arch/arm/nvidia/tegra_reg.h
diff -u src/sys/arch/arm/nvidia/tegra_reg.h:1.12 

CVS commit: src/sys/arch/arm/nvidia

2015-08-01 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Aug  1 21:20:11 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_car.c tegra_intr.h
tegra_io.c tegra_reg.h tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: tegra_cec.c tegra_cecreg.h

Log Message:
Add driver for Tegra HDMI CEC controller.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_cec.c \
src/sys/arch/arm/nvidia/tegra_cecreg.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_intr.h
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_io.c \
src/sys/arch/arm/nvidia/tegra_reg.h
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Jul 31 23:07:14 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
extract physical address from HDMI VDSB and make it available as the 
physical-address device property


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_hdmi.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Jul 31 23:07:14 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
extract physical address from HDMI VDSB and make it available as the 
physical-address device property


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_hdmi.c

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_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.8 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.9
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.8	Sun Jul 26 15:12:03 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Fri Jul 31 23:07:14 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.8 2015/07/26 15:12:03 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.9 2015/07/31 23:07:14 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_hdmi.c,v 1.8 2015/07/26 15:12:03 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.9 2015/07/31 23:07:14 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -47,6 +47,8 @@ __KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c
 #include arm/nvidia/tegra_hdmireg.h
 #include arm/nvidia/tegra_var.h
 
+#define PROP_PHYSICAL_ADDRESS	physical-address
+
 static int	tegra_hdmi_match(device_t, cfdata_t, void *);
 static void	tegra_hdmi_attach(device_t, device_t, void *);
 
@@ -243,6 +245,9 @@ tegra_hdmi_connect(struct tegra_hdmi_sof
 static void
 tegra_hdmi_disconnect(struct tegra_hdmi_softc *sc)
 {
+	prop_dictionary_t cfg = device_properties(sc-sc_dev);
+
+	prop_dictionary_remove(cfg, PROP_PHYSICAL_ADDRESS);
 }
 
 static void
@@ -441,9 +446,11 @@ tegra_hdmi_sor_start(struct tegra_hdmi_s
 static bool
 tegra_hdmi_is_hdmi(struct tegra_hdmi_softc *sc, const struct edid_info *ei)
 {
+	prop_dictionary_t cfg = device_properties(sc-sc_dev);
 	char edid[128];
 	bool found_hdmi = false;
 	unsigned int n, p;
+	uint16_t phys_addr;
 
 	/*
 	 * Scan through extension blocks, looking for a CEA-861-D v3
@@ -486,9 +493,15 @@ tegra_hdmi_is_hdmi(struct tegra_hdmi_sof
 goto next_block;
 
 			/* HDMI 24-bit IEEE registration ID is 0x000C03 */
-			if (memcmp(edid[p + 1], \x03\x0c\x00, 3) == 0)
+			if (memcmp(edid[p + 1], \x03\x0c\x00, 3) == 0) {
 found_hdmi = true;
 
+phys_addr = (edid[p + 4]  8) | edid[p + 5];
+
+prop_dictionary_set_uint16(cfg,
+PROP_PHYSICAL_ADDRESS, phys_addr);
+			}
+
 next_block:
 			p += (1 + blen);
 		}



CVS commit: src/sys/arch/arm/nvidia

2015-07-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul 29 12:11:32 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
enable ADMA2 data transfer mode


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.8 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.9
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.8	Thu Jul 23 23:53:14 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Wed Jul 29 12:11:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.8 2015/07/23 23:53:14 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.9 2015/07/29 12:11:32 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_sdhc.c,v 1.8 2015/07/23 23:53:14 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.9 2015/07/29 12:11:32 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -95,7 +95,8 @@ tegra_sdhc_attach(device_t parent, devic
 			  SDHC_FLAG_NO_CLKBASE |
 			  SDHC_FLAG_NO_TIMEOUT |
 			  SDHC_FLAG_SINGLE_POWER_WRITE |
-			  SDHC_FLAG_USE_DMA;
+			  SDHC_FLAG_USE_DMA |
+			  SDHC_FLAG_USE_ADMA2;
 	if (SDMMC_8BIT_P(loc-loc_port)) {
 		sc-sc.sc_flags |= SDHC_FLAG_8BIT_MODE;
 	}



CVS commit: src/sys/arch/arm/nvidia

2015-07-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul 29 12:11:32 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
enable ADMA2 data transfer mode


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul 29 14:30:18 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
use utmip settings for 12MHz ref clk, not 13MHz


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_car.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul 29 14:30:18 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
use utmip settings for 12MHz ref clk, not 13MHz


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_car.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.24 src/sys/arch/arm/nvidia/tegra_car.c:1.25
--- src/sys/arch/arm/nvidia/tegra_car.c:1.24	Sat Jul 25 15:50:42 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Wed Jul 29 14:30:18 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.24 2015/07/25 15:50:42 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.25 2015/07/29 14:30:18 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_car.c,v 1.24 2015/07/25 15:50:42 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.25 2015/07/29 14:30:18 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -483,9 +483,9 @@ void
 tegra_car_utmip_init(void)
 {
 	const u_int enable_dly_count = 0x02;
-	const u_int stable_count = 0x33;
-	const u_int active_dly_count = 0x09;
-	const u_int xtal_freq_count = 0x7f;
+	const u_int stable_count = 0x2f;
+	const u_int active_dly_count = 0x04;
+	const u_int xtal_freq_count = 0x76;
 	bus_space_tag_t bst;
 	bus_space_handle_t bsh;
 



CVS commit: src/sys/arch/arm/nvidia

2015-07-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul 26 15:12:03 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
fix a few typos in the audio infoframe we build


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_hdmi.c

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_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.7 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.8
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.7	Sat Jul 25 15:55:31 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Sun Jul 26 15:12:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.7 2015/07/25 15:55:31 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.8 2015/07/26 15:12:03 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_hdmi.c,v 1.7 2015/07/25 15:55:31 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.8 2015/07/26 15:12:03 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -501,13 +501,14 @@ static void
 tegra_hdmi_setup_audio_infoframe(struct tegra_hdmi_softc *sc)
 {
 	uint8_t data[10] = {
-		0x84, 0x01, 0x10,
+		0x84, 0x01, 0x0a,
 		0x00,	/* PB0 (checksum) */
 		0x01,	/* CT=0, CC=2ch */
-		0xc0,	/* SS=0, SF=48kHz */
+		0x00,	/* SS=0, SF=0 */
+		0x00,
 		0x00,	/* CA=FR/FL */
 		0x00,	/* LSV=0dB, DM_INH=permitted */
-		0x00, 0x00
+		0x00
 	};
 
 	data[3] = tegra_hdmi_infoframe_csum(data, sizeof(data));



CVS commit: src/sys/arch/arm/nvidia

2015-07-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul 26 15:12:03 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
fix a few typos in the audio infoframe we build


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_hdmi.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul 26 17:54:46 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdaudio.c

Log Message:
set HDAUDIO_FLAG_NO_STREAM_RESET quirk


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdaudio.c

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_hdaudio.c
diff -u src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.3 src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.4
--- src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.3	Sun May 10 11:04:59 2015
+++ src/sys/arch/arm/nvidia/tegra_hdaudio.c	Sun Jul 26 17:54:46 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdaudio.c,v 1.3 2015/05/10 11:04:59 jmcneill Exp $ */
+/* $NetBSD: tegra_hdaudio.c,v 1.4 2015/07/26 17:54:46 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_hdaudio.c,v 1.3 2015/05/10 11:04:59 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdaudio.c,v 1.4 2015/07/26 17:54:46 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -97,6 +97,7 @@ tegra_hdaudio_attach(device_t parent, de
 	loc-loc_size - TEGRA_HDAUDIO_OFFSET, sc-sc.sc_memh);
 	sc-sc.sc_memvalid = true;
 	sc-sc.sc_dmat = tio-tio_dmat;
+	sc-sc.sc_flags = HDAUDIO_FLAG_NO_STREAM_RESET;
 
 	aprint_naive(\n);
 	aprint_normal(: HDA\n);



CVS commit: src/sys/arch/arm/nvidia

2015-07-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul 26 17:54:46 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdaudio.c

Log Message:
set HDAUDIO_FLAG_NO_STREAM_RESET quirk


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdaudio.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jul 25 15:50:42 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h tegra_hdmi.c
tegra_hdmireg.h

Log Message:
Add HDMI audio support


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdmireg.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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.23 src/sys/arch/arm/nvidia/tegra_car.c:1.24
--- src/sys/arch/arm/nvidia/tegra_car.c:1.23	Thu Jul 23 18:22:05 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sat Jul 25 15:50:42 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.23 2015/07/23 18:22:05 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.24 2015/07/25 15:50:42 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_car.c,v 1.23 2015/07/23 18:22:05 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.24 2015/07/25 15:50:42 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -535,24 +535,27 @@ tegra_car_periph_hda_enable(void)
 
 	tegra_car_get_bs(bst, bsh);
 
-	/* HDA */
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_SET_REG, CAR_DEV_V_HDA);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_V_SET_REG, CAR_DEV_V_HDA);
-	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG, CAR_DEV_V_HDA);
-
-	/* HDA2CODEC_2X */
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_SET_REG,
 	CAR_DEV_V_HDA2CODEC_2X);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_V_SET_REG,
 	CAR_DEV_V_HDA2CODEC_2X);
-	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG,
-	CAR_DEV_V_HDA2CODEC_2X);
-
-	/* HDA2HDMICODEC */
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_SET_REG,
 	CAR_DEV_W_HDA2HDMICODEC);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG,
 	CAR_DEV_W_HDA2HDMICODEC);
+
+	/* configure HDA2CODEC_2X for 48 MHz */
+	const u_int div = howmany(tegra_car_pllp0_rate() * 2, 4800) - 2;
+	bus_space_write_4(bst, bsh, CAR_CLKSRC_HDA2CODEC_2X_REG,
+	__SHIFTIN(CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLP_OUT0,
+		  CAR_CLKSRC_HDA2CODEC_2X_SRC) |
+	__SHIFTIN(div, CAR_CLKSRC_HDA2CODEC_2X_DIV));
+
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG, CAR_DEV_V_HDA);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG,
+	CAR_DEV_V_HDA2CODEC_2X);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG,
 	CAR_DEV_W_HDA2HDMICODEC);
 }

Index: src/sys/arch/arm/nvidia/tegra_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.19 src/sys/arch/arm/nvidia/tegra_carreg.h:1.20
--- src/sys/arch/arm/nvidia/tegra_carreg.h:1.19	Thu Jul 23 15:07:31 2015
+++ src/sys/arch/arm/nvidia/tegra_carreg.h	Sat Jul 25 15:50:42 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_carreg.h,v 1.19 2015/07/23 15:07:31 skrll Exp $ */
+/* $NetBSD: tegra_carreg.h,v 1.20 2015/07/25 15:50:42 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -390,6 +390,16 @@
 #define CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_CLKM		0
 #define CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_PLLX_OUT0_LJ	8
 
+#define CAR_CLKSRC_HDA2CODEC_2X_REG	0x3e4
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC	__BITS(31,29)
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLP_OUT0	0
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLC2_OUT0	1
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLC_OUT0	2
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLC3_OUT0	3
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_PLLM_OUT0	4
+#define CAR_CLKSRC_HDA2CODEC_2X_SRC_CLKM	6
+#define CAR_CLKSRC_HDA2CODEC_2X_DIV	__BITS(7,0)
+
 #define CAR_CLKSRC_SATA_OOB_REG		0x420
 #define CAR_CLKSRC_SATA_OOB_SRC		__BITS(31,29)
 #define CAR_CLKSRC_SATA_OOB_SRC_PLLP_OUT0	0
@@ -462,4 +472,12 @@
 #define CAR_SATA_PLL_CFG1_PADPLL_PU_POST_DLY	__BITS(15,8)
 #define CAR_SATA_PLL_CFG1_LANE_IDDQ2_PADPLL_IDDQ_DLY __BITS(7,0)
 
+#define CAR_CLKSRC_HDMI_AUDIO_REG	0x668
+#define CAR_CLKSRC_HDMI_AUDIO_SRC	__BITS(31,29)
+#define CAR_CLKSRC_HDMI_AUDIO_SRC_PLLP_OUT0	0
+#define CAR_CLKSRC_HDMI_AUDIO_SRC_PLLC_OUT0	1
+#define CAR_CLKSRC_HDMI_AUDIO_SRC_PLLC2_OUT0	2
+#define CAR_CLKSRC_HDMI_AUDIO_SRC_CLKM		3
+#define CAR_CLKSRC_HDMI_AUDIO_DIV	__BITS(7,0)
+
 #endif /* _ARM_TEGRA_CARREG_H */

Index: src/sys/arch/arm/nvidia/tegra_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.5 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.6
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.5	Thu Jul 23 15:43:06 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Sat Jul 25 15:50:42 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.5 2015/07/23 15:43:06 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.6 2015/07/25 15:50:42 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 

CVS commit: src/sys/arch/arm/nvidia

2015-07-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jul 25 15:50:42 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h tegra_hdmi.c
tegra_hdmireg.h

Log Message:
Add HDMI audio support


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdmireg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jul 25 15:55:31 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
remove debug printfs, dont force hdmi mode


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_hdmi.c

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_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.6 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.7
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.6	Sat Jul 25 15:50:42 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Sat Jul 25 15:55:31 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.6 2015/07/25 15:50:42 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.7 2015/07/25 15:55:31 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_hdmi.c,v 1.6 2015/07/25 15:50:42 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.7 2015/07/25 15:55:31 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -236,11 +236,6 @@ tegra_hdmi_connect(struct tegra_hdmi_sof
 
 	sc-sc_curmode = mode;
 	sc-sc_hdmimode = tegra_hdmi_is_hdmi(sc, ei);
-device_printf(sc-sc_dev, connected to %s display\n, sc-sc_hdmimode ? HDMI : DVI);
-	if (sc-sc_hdmimode == false) {
-		device_printf(sc-sc_dev, forcing HDMI mode\n);
-		sc-sc_hdmimode = true;
-	}
 
 	tegra_hdmi_enable(sc, pedid);
 }



CVS commit: src/sys/arch/arm/nvidia

2015-07-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jul 25 15:55:31 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
remove debug printfs, dont force hdmi mode


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_hdmi.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 23:53:14 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
use SDHC_FLAG_NO_TIMEOUT


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 23:53:14 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
use SDHC_FLAG_NO_TIMEOUT


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.7 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.8
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.7	Thu Jul 23 18:22:05 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Thu Jul 23 23:53:14 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.7 2015/07/23 18:22:05 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.8 2015/07/23 23:53:14 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_sdhc.c,v 1.7 2015/07/23 18:22:05 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.8 2015/07/23 23:53:14 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -93,6 +93,7 @@ tegra_sdhc_attach(device_t parent, devic
 	sc-sc.sc_flags = SDHC_FLAG_32BIT_ACCESS |
 			  SDHC_FLAG_NO_PWR0 |
 			  SDHC_FLAG_NO_CLKBASE |
+			  SDHC_FLAG_NO_TIMEOUT |
 			  SDHC_FLAG_SINGLE_POWER_WRITE |
 			  SDHC_FLAG_USE_DMA;
 	if (SDMMC_8BIT_P(loc-loc_port)) {



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 23 15:08:19 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dcreg.h tegra_hdmireg.h

Log Message:
More defines


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_dcreg.h \
src/sys/arch/arm/nvidia/tegra_hdmireg.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_dcreg.h
diff -u src/sys/arch/arm/nvidia/tegra_dcreg.h:1.2 src/sys/arch/arm/nvidia/tegra_dcreg.h:1.3
--- src/sys/arch/arm/nvidia/tegra_dcreg.h:1.2	Thu Jul 23 14:31:05 2015
+++ src/sys/arch/arm/nvidia/tegra_dcreg.h	Thu Jul 23 15:08:19 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_dcreg.h,v 1.2 2015/07/23 14:31:05 jmcneill Exp $ */
+/* $NetBSD: tegra_dcreg.h,v 1.3 2015/07/23 15:08:19 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -139,12 +139,20 @@
  * Display DISP registers
  */
 #define DC_DISP_DISP_SIGNAL_OPTIONS0_REG		0x1000
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_M1_ENABLE		__BIT(26)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_M0_ENABLE		__BIT(24)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_V_PULSE3_ENABLE	__BIT(20)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_V_PULSE2_ENABLE	__BIT(19)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_V_PULSE1_ENABLE	__BIT(18)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_V_PULSE0_ENABLE	__BIT(16)
 #define DC_DISP_DISP_SIGNAL_OPTIONS0_H_PULSE2_ENABLE	__BIT(12)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_H_PULSE1_ENABLE	__BIT(10)
+#define DC_DISP_DISP_SIGNAL_OPTIONS0_H_PULSE0_ENABLE	__BIT(8)
 
 #define DC_DISP_DISP_WIN_OPTIONS_REG			0x1008
 #define DC_DISP_DISP_WIN_OPTIONS_HDMI_ENABLE		__BIT(30)
 #define DC_DISP_DISP_WIN_OPTIONS_DSI_ENABLE		__BIT(29)
-#define DC_DISP_DISP_WIN_OPTIONS_SOR_ENABLE		__BIT(28)
+#define DC_DISP_DISP_WIN_OPTIONS_SOR_ENABLE		__BIT(25)
 #define DC_DISP_DISP_WIN_OPTIONS_CURSOR_ENABLE		__BIT(16)
 
 #define DC_DISP_DISP_TIMING_OPTIONS_REG			0x1014
Index: src/sys/arch/arm/nvidia/tegra_hdmireg.h
diff -u src/sys/arch/arm/nvidia/tegra_hdmireg.h:1.2 src/sys/arch/arm/nvidia/tegra_hdmireg.h:1.3
--- src/sys/arch/arm/nvidia/tegra_hdmireg.h:1.2	Thu Jul 23 14:31:05 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmireg.h	Thu Jul 23 15:08:19 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmireg.h,v 1.2 2015/07/23 14:31:05 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmireg.h,v 1.3 2015/07/23 15:08:19 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -216,7 +216,15 @@
 #define HDMI_NV_PDISP_SOR_CRCA_REG0x170
 #define HDMI_NV_PDISP_SOR_CRCB_REG0x174
 #define HDMI_NV_PDISP_SOR_BLANK_REG0x178
+
 #define HDMI_NV_PDISP_SOR_SEQ_CTL_REG0x17c
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_SWITCH			__BIT(30)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_STATUS			__BIT(28)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_PC__BITS(19,16)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_PD_PC_ALT			__BITS(15,12)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_PD_PC__BITS(11,8)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_PU_PC_ALT			__BITS(7,4)
+#define HDMI_NV_PDISP_SOR_SEQ_CTL_PU_PC__BITS(3,0)
 
 #define HDMI_NV_PDISP_SOR_SEQ_INST0_REG0x180
 #define HDMI_NV_PDISP_SOR_SEQ_INST1_REG0x184



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 23 15:07:31 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_carreg.h

Log Message:
CAR_PLLD_BASE_REG defines


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_carreg.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_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.18 src/sys/arch/arm/nvidia/tegra_carreg.h:1.19
--- src/sys/arch/arm/nvidia/tegra_carreg.h:1.18	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/tegra_carreg.h	Thu Jul 23 15:07:31 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_carreg.h,v 1.18 2015/05/30 13:25:55 jmcneill Exp $ */
+/* $NetBSD: tegra_carreg.h,v 1.19 2015/07/23 15:07:31 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -88,6 +88,20 @@
 #define CAR_PLLU_BASE_DIVN		__BITS(17,8)
 #define CAR_PLLU_BASE_DIVM		__BITS(4,0)
 
+#define CAR_PLLD_BASE_REG	0xd0
+#define CAR_PLLD_BASE_BYPASS		__BIT(31)
+#define CAR_PLLD_BASE_ENABLE		__BIT(30)
+#define CAR_PLLD_BASE_REF_DIS		__BIT(29)
+#define CAR_PLLD_BASE_LOCK		__BIT(27)
+#define CAR_PLLD_BASE_CLKENABLE_CSI	__BIT(26)
+#define CAR_PLLD_BASE_DSIA_CLK_SRC	__BIT(25)
+#define CAR_PLLD_BASE_CSI_CLK_SRC	__BIT(23)
+#define CAR_PLLD_BASE_DIVP		__BITS(22,20)
+#define CAR_PLLD_BASE_DIVN		__BITS(18,8)
+#define CAR_PLLD_BASE_DIVM		__BITS(4,0)
+
+#define CAR_PLLD_MISC_REG	0xdc
+
 #define CAR_PLLX_BASE_REG	0xe0
 #define CAR_PLLX_BASE_BYPASS		__BIT(31)
 #define CAR_PLLX_BASE_ENABLE		__BIT(30)



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 14:31:05 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dc.c tegra_dcreg.h tegra_genfb.c
tegra_hdmi.c tegra_hdmireg.h

Log Message:
add Tegra124 HDMI support


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_dc.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_dcreg.h \
src/sys/arch/arm/nvidia/tegra_genfb.c \
src/sys/arch/arm/nvidia/tegra_hdmireg.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdmi.c

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_dc.c
diff -u src/sys/arch/arm/nvidia/tegra_dc.c:1.2 src/sys/arch/arm/nvidia/tegra_dc.c:1.3
--- src/sys/arch/arm/nvidia/tegra_dc.c:1.2	Wed Jul  8 01:23:28 2015
+++ src/sys/arch/arm/nvidia/tegra_dc.c	Thu Jul 23 14:31:05 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_dc.c,v 1.2 2015/07/08 01:23:28 jmcneill Exp $ */
+/* $NetBSD: tegra_dc.c,v 1.3 2015/07/23 14:31:05 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_dc.c,v 1.2 2015/07/08 01:23:28 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_dc.c,v 1.3 2015/07/23 14:31:05 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -46,7 +46,7 @@ __KERNEL_RCSID(0, $NetBSD: tegra_dc.c,v
 
 #define TEGRA_DC_NPORTS		2
 #define TEGRA_DC_DEPTH		32
-#define TEGRA_DC_FBALIGN	16
+#define TEGRA_DC_FBALIGN	PAGE_SIZE
 
 static int	tegra_dc_match(device_t, cfdata_t, void *);
 static void	tegra_dc_attach(device_t, device_t, void *);
@@ -145,6 +145,8 @@ tegra_dc_allocmem(struct tegra_dc_softc 
 
 	sc-sc_dmasize = size;
 
+	memset(sc-sc_dmap, 0, size);
+
 	return 0;
 
 destroy:
@@ -185,6 +187,10 @@ tegra_dc_init(struct tegra_dc_softc *sc,
 static void
 tegra_dc_init_win(struct tegra_dc_softc *sc, const struct videomode *mode)
 {
+	/* Write access control */
+	DC_WRITE(sc, DC_CMD_STATE_ACCESS_REG,
+	DC_CMD_STATE_ACCESS_WRITE_MUX | DC_CMD_STATE_ACCESS_READ_MUX);
+
 	/* Enable window A programming */
 	DC_WRITE(sc, DC_CMD_DISPLAY_WINDOW_HEADER_REG,
 	DC_CMD_DISPLAY_WINDOW_HEADER_WINDOW_A_SELECT);
@@ -199,6 +205,11 @@ tegra_dc_init_win(struct tegra_dc_softc 
 	__SHIFTIN(DC_WINC_A_BYTE_SWAP_SWAP_NOSWAP,
 		  DC_WINC_A_BYTE_SWAP_SWAP));
 
+	/* Initial DDA */
+	DC_WRITE(sc, DC_WINC_A_H_INITIAL_DDA_REG, 0);
+	DC_WRITE(sc, DC_WINC_A_V_INITIAL_DDA_REG, 0);
+	DC_WRITE(sc, DC_WINC_A_DDA_INCREMENT_REG, 0x10001000);
+
 	/* Window position, size, stride */
 	DC_WRITE(sc, DC_WINC_A_POSITION_REG,
 	__SHIFTIN(0, DC_WINC_A_POSITION_V) |
@@ -218,6 +229,10 @@ tegra_dc_init_win(struct tegra_dc_softc 
 	DC_WRITE(sc, DC_WINBUF_A_START_ADDR_REG,
 	(uint32_t)sc-sc_dmamap-dm_segs[0].ds_addr);
 
+	/* Offsets */
+	DC_WRITE(sc, DC_WINBUF_A_ADDR_H_OFFSET_REG, 0);
+	DC_WRITE(sc, DC_WINBUF_A_ADDR_V_OFFSET_REG, 0);
+
 	/* Surface kind */
 	DC_WRITE(sc, DC_WINBUF_A_SURFACE_KIND_REG,
 	__SHIFTIN(DC_WINBUF_A_SURFACE_KIND_SURFACE_KIND_PITCH,
@@ -232,14 +247,35 @@ static void
 tegra_dc_init_disp(struct tegra_dc_softc *sc, const struct videomode *mode)
 {
 	const u_int hspw = mode-hsync_end - mode-hsync_start;
-	const u_int hbp = mode-htotal - mode-hsync_start;
+	const u_int hbp = mode-htotal - mode-hsync_end;
 	const u_int hfp = mode-hsync_start - mode-hdisplay;
 	const u_int vspw = mode-vsync_end - mode-vsync_start;
-	const u_int vbp = mode-vtotal - mode-vsync_start;
+	const u_int vbp = mode-vtotal - mode-vsync_end;
 	const u_int vfp = mode-vsync_start - mode-vdisplay;
 
+	DC_WRITE(sc, DC_DISP_DISP_TIMING_OPTIONS_REG,
+	__SHIFTIN(1, DC_DISP_DISP_TIMING_OPTIONS_VSYNC_POS));
+	DC_WRITE(sc, DC_DISP_DISP_COLOR_CONTROL_REG,
+	__SHIFTIN(DC_DISP_DISP_COLOR_CONTROL_BASE_COLOR_SIZE_888,
+		  DC_DISP_DISP_COLOR_CONTROL_BASE_COLOR_SIZE));
+	DC_WRITE(sc, DC_DISP_DISP_SIGNAL_OPTIONS0_REG,
+	DC_DISP_DISP_SIGNAL_OPTIONS0_H_PULSE2_ENABLE);
+	DC_WRITE(sc, DC_DISP_H_PULSE2_CONTROL_REG,
+	__SHIFTIN(DC_DISP_H_PULSE2_CONTROL_V_QUAL_VACTIVE,
+		  DC_DISP_H_PULSE2_CONTROL_V_QUAL) |
+	__SHIFTIN(DC_DISP_H_PULSE2_CONTROL_LAST_END_A,
+		  DC_DISP_H_PULSE2_CONTROL_LAST));
+
+	u_int pulse_start = 1 + hspw + hbp - 10;
+	DC_WRITE(sc, DC_DISP_H_PULSE2_POSITION_A_REG,
+	__SHIFTIN(pulse_start, DC_DISP_H_PULSE2_POSITION_A_START) |
+	__SHIFTIN(pulse_start + 8, DC_DISP_H_PULSE2_POSITION_A_END));
+
 	/* Pixel clock */
-	DC_WRITE(sc, DC_DISP_DISP_CLOCK_CONTROL_REG, 0);
+	const u_int div = (tegra_car_plld2_rate() * 2) / (mode-dot_clock * 1000) - 2;
+	DC_WRITE(sc, DC_DISP_DISP_CLOCK_CONTROL_REG,
+	__SHIFTIN(0, DC_DISP_DISP_CLOCK_CONTROL_PIXEL_CLK_DIVIDER) |
+	__SHIFTIN(div, DC_DISP_DISP_CLOCK_CONTROL_SHIFT_CLK_DIVIDER));
 
 	/* Mode timings */
 	DC_WRITE(sc, DC_DISP_REF_TO_SYNC_REG,
@@ -259,10 +295,9 @@ 

CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 14:31:05 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dc.c tegra_dcreg.h tegra_genfb.c
tegra_hdmi.c tegra_hdmireg.h

Log Message:
add Tegra124 HDMI support


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_dc.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_dcreg.h \
src/sys/arch/arm/nvidia/tegra_genfb.c \
src/sys/arch/arm/nvidia/tegra_hdmireg.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_hdmi.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 14:30:07 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
fix some clocks; many periph dividers are in units of 0.5x not 1x, use PLLD2 
for DC, use correct pldiv value for PLLD2


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_car.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 23 15:07:31 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_carreg.h

Log Message:
CAR_PLLD_BASE_REG defines


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_carreg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 14:30:07 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
fix some clocks; many periph dividers are in units of 0.5x not 1x, use PLLD2 
for DC, use correct pldiv value for PLLD2


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_car.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.21 src/sys/arch/arm/nvidia/tegra_car.c:1.22
--- src/sys/arch/arm/nvidia/tegra_car.c:1.21	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Thu Jul 23 14:30:06 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.21 2015/05/30 13:25:55 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.22 2015/07/23 14:30:06 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_car.c,v 1.21 2015/05/30 13:25:55 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.22 2015/07/23 14:30:06 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -115,7 +115,7 @@ tegra_car_init(struct tegra_car_softc *s
 	tegra_reg_set_clear(bst, bsh, CAR_PLLD2_BASE_REG,
 	__SHIFTIN(1, CAR_PLLD2_BASE_MDIV) |
 	__SHIFTIN(99, CAR_PLLD2_BASE_NDIV) |
-	__SHIFTIN(2, CAR_PLLD2_BASE_PLDIV),
+	__SHIFTIN(1, CAR_PLLD2_BASE_PLDIV),
 	CAR_PLLD2_BASE_REF_SRC_SEL |
 	CAR_PLLD2_BASE_PLDIV | CAR_PLLD2_BASE_NDIV | CAR_PLLD2_BASE_MDIV);
 }
@@ -348,7 +348,7 @@ tegra_car_uart_rate(u_int port)
 	}
 
 	if (__SHIFTOUT(src, CAR_CLKSRC_UART_DIV_ENB)) {
-		const u_int div = __SHIFTOUT(src, CAR_CLKSRC_UART_DIV) + 1;
+		const u_int div = (__SHIFTOUT(src, CAR_CLKSRC_UART_DIV) / 2) + 1;
 		return src_rate / div;
 	} else {
 		return src_rate;
@@ -374,7 +374,7 @@ tegra_car_periph_sdmmc_rate(u_int port)
 
 	const uint32_t src = bus_space_read_4(bst, bsh, src_reg);
 
-	const u_int div = __SHIFTOUT(src, CAR_CLKSRC_SDMMC_DIV) + 1;
+	const u_int div = (__SHIFTOUT(src, CAR_CLKSRC_SDMMC_DIV) / 2) + 1;
 
 	return tegra_car_pllp0_rate() / div;
 }
@@ -428,7 +428,7 @@ tegra_car_periph_sdmmc_set_div(u_int por
 	/* update clk div */
 	src = __SHIFTIN(CAR_CLKSRC_SDMMC_SRC_PLLP_OUT0,
 			CAR_CLKSRC_SDMMC_SRC);
-	src |= __SHIFTIN(div - 1, CAR_CLKSRC_SDMMC_DIV);
+	src |= __SHIFTIN((div - 1) * 2, CAR_CLKSRC_SDMMC_DIV);
 	bus_space_write_4(bst, bsh, src_reg, src);
 
 	/* leave reset */
@@ -576,7 +576,7 @@ tegra_car_periph_sata_enable(void)
 	bus_space_write_4(bst, bsh, CAR_CLKSRC_SATA_OOB_REG,
 	__SHIFTIN(CAR_CLKSRC_SATA_OOB_SRC_PLLP_OUT0,
 		  CAR_CLKSRC_SATA_OOB_SRC) |
-	__SHIFTIN(sataoob_div - 1, CAR_CLKSRC_SATA_OOB_DIV));
+	__SHIFTIN((sataoob_div - 1) * 2, CAR_CLKSRC_SATA_OOB_DIV));
 
 	/* Set SATA clock source to PLLP, 102MHz */
 	const u_int sata_div = 4;
@@ -584,7 +584,7 @@ tegra_car_periph_sata_enable(void)
 	CAR_CLKSRC_SATA_AUX_CLK_ENB |
 	__SHIFTIN(CAR_CLKSRC_SATA_SRC_PLLP_OUT0,
 		  CAR_CLKSRC_SATA_SRC) |
-	__SHIFTIN(sata_div - 1, CAR_CLKSRC_SATA_DIV));
+	__SHIFTIN((sata_div - 1) * 2, CAR_CLKSRC_SATA_DIV));
 
 	/* Ungate SAX partition in the PMC */
 	tegra_pmc_power(PMC_PARTID_SAX, true);
@@ -715,10 +715,10 @@ tegra_car_hdmi_enable(u_int rate)
 	}
 
 	/* Set clock source to PLLD2 */
-	const u_int div = howmany(tegra_car_plld2_rate(), rate);
+	const u_int div = (tegra_car_plld2_rate() * 2) / rate - 2;
 	bus_space_write_4(bst, bsh, CAR_CLKSRC_HDMI_REG,
 	__SHIFTIN(CAR_CLKSRC_HDMI_SRC_PLLD2_OUT0, CAR_CLKSRC_HDMI_SRC) |
-	__SHIFTIN(div - 1, CAR_CLKSRC_HDMI_DIV));
+	__SHIFTIN(div, CAR_CLKSRC_HDMI_DIV));
 
 	/* Leave reset */
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_H_CLR_REG, CAR_DEV_H_HDMI);
@@ -758,9 +758,9 @@ tegra_car_dc_enable(u_int port)
 	tegra_pmc_power(partid, true);
 	tegra_pmc_remove_clamping(partid);
 
-	/* Select PLLP for clock source */
+	/* Select PLLD2 for clock source */
 	bus_space_write_4(bst, bsh, src_reg,
-	__SHIFTIN(CAR_CLKSRC_DISP_SRC_PLLP_OUT0,
+	__SHIFTIN(CAR_CLKSRC_DISP_SRC_PLLD2_OUT0,
 		  CAR_CLKSRC_DISP_SRC));
 
 	/* Leave reset */



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 15:43:06 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
no need for exact match on tmds mode, just use the closest match


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_hdmi.c

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_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.4 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.5
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.4	Thu Jul 23 14:31:05 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Thu Jul 23 15:43:06 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.4 2015/07/23 14:31:05 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.5 2015/07/23 15:43:06 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_hdmi.c,v 1.4 2015/07/23 14:31:05 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.5 2015/07/23 15:43:06 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -252,11 +252,15 @@ tegra_hdmi_enable(struct tegra_hdmi_soft
 	tegra_car_hdmi_enable(mode-dot_clock * 1000);
 
 	for (n = 0; n  __arraycount(tegra_hdmi_tmds_config); n++) {
-		if (tegra_hdmi_tmds_config[n].dot_clock == mode-dot_clock) {
-			tmds = tegra_hdmi_tmds_config[n];
+		if (tegra_hdmi_tmds_config[n].dot_clock = mode-dot_clock) {
 			break;
 		}
 	}
+	if (n  __arraycount(tegra_hdmi_tmds_config)) {
+		tmds = tegra_hdmi_tmds_config[n];
+	} else {
+		tmds = tegra_hdmi_tmds_config[__arraycount(tegra_hdmi_tmds_config) - 1];
+	}
 	if (tmds != NULL) {
 		HDMI_WRITE(sc, HDMI_NV_PDISP_SOR_PLL0_REG, tmds-sor_pll0);
 		HDMI_WRITE(sc, HDMI_NV_PDISP_SOR_PLL1_REG, tmds-sor_pll1);



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jul 23 15:08:19 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dcreg.h tegra_hdmireg.h

Log Message:
More defines


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_dcreg.h \
src/sys/arch/arm/nvidia/tegra_hdmireg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 15:43:06 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c

Log Message:
no need for exact match on tmds mode, just use the closest match


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_hdmi.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 18:22:05 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_sdhc.c tegra_var.h

Log Message:
Support fractional dividers. This lets us use 48MHz for SDMMC HS mode
instead of 45.333MHz.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/nvidia/tegra_car.c \
src/sys/arch/arm/nvidia/tegra_var.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-07-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 23 18:22:05 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_sdhc.c tegra_var.h

Log Message:
Support fractional dividers. This lets us use 48MHz for SDMMC HS mode
instead of 45.333MHz.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/nvidia/tegra_car.c \
src/sys/arch/arm/nvidia/tegra_var.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.22 src/sys/arch/arm/nvidia/tegra_car.c:1.23
--- src/sys/arch/arm/nvidia/tegra_car.c:1.22	Thu Jul 23 14:30:06 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Thu Jul 23 18:22:05 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.22 2015/07/23 14:30:06 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.23 2015/07/23 18:22:05 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_car.c,v 1.22 2015/07/23 14:30:06 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.23 2015/07/23 18:22:05 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -374,13 +374,13 @@ tegra_car_periph_sdmmc_rate(u_int port)
 
 	const uint32_t src = bus_space_read_4(bst, bsh, src_reg);
 
-	const u_int div = (__SHIFTOUT(src, CAR_CLKSRC_SDMMC_DIV) / 2) + 1;
+	const u_int div = __SHIFTOUT(src, CAR_CLKSRC_SDMMC_DIV) + 2;
 
-	return tegra_car_pllp0_rate() / div;
+	return (tegra_car_pllp0_rate() * 2) / div;
 }
 
 int
-tegra_car_periph_sdmmc_set_div(u_int port, u_int div)
+tegra_car_periph_sdmmc_set_rate(u_int port, u_int rate)
 {
 	bus_space_tag_t bst;
 	bus_space_handle_t bsh;
@@ -388,7 +388,7 @@ tegra_car_periph_sdmmc_set_div(u_int por
 	u_int dev_bit;
 	uint32_t src;
 
-	KASSERT(div  0);
+	KASSERT(rate  0);
 
 	tegra_car_get_bs(bst, bsh);
 
@@ -425,10 +425,12 @@ tegra_car_periph_sdmmc_set_div(u_int por
 	/* enable clk */
 	bus_space_write_4(bst, bsh, enb_reg, dev_bit);
 
+	const u_int div = howmany(tegra_car_pllp0_rate() * 2, rate) - 2;
+
 	/* update clk div */
 	src = __SHIFTIN(CAR_CLKSRC_SDMMC_SRC_PLLP_OUT0,
 			CAR_CLKSRC_SDMMC_SRC);
-	src |= __SHIFTIN((div - 1) * 2, CAR_CLKSRC_SDMMC_DIV);
+	src |= __SHIFTIN(div, CAR_CLKSRC_SDMMC_DIV);
 	bus_space_write_4(bst, bsh, src_reg, src);
 
 	/* leave reset */
Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.22 src/sys/arch/arm/nvidia/tegra_var.h:1.23
--- src/sys/arch/arm/nvidia/tegra_var.h:1.22	Wed Jul  8 01:23:28 2015
+++ src/sys/arch/arm/nvidia/tegra_var.h	Thu Jul 23 18:22:05 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.22 2015/07/08 01:23:28 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.23 2015/07/23 18:22:05 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -96,7 +96,7 @@ u_int	tegra_car_pllp0_rate(void);
 u_int	tegra_car_plld2_rate(void);
 u_int	tegra_car_uart_rate(u_int);
 u_int	tegra_car_periph_sdmmc_rate(u_int);
-int	tegra_car_periph_sdmmc_set_div(u_int, u_int);
+int	tegra_car_periph_sdmmc_set_rate(u_int, u_int);
 int	tegra_car_periph_usb_enable(u_int);
 void	tegra_car_periph_hda_enable(void);
 void	tegra_car_periph_sata_enable(void);

Index: src/sys/arch/arm/nvidia/tegra_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.6 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.7
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.6	Sat May 30 18:53:39 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Thu Jul 23 18:22:05 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.6 2015/05/30 18:53:39 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.7 2015/07/23 18:22:05 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_sdhc.c,v 1.6 2015/05/30 18:53:39 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.7 2015/07/23 18:22:05 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -122,12 +122,7 @@ tegra_sdhc_attach(device_t parent, devic
 	if (sc-sc_pin_wp)
 		sc-sc.sc_vendor_write_protect = tegra_sdhc_write_protect;
 
-#if notyet
-	tegra_car_periph_sdmmc_set_div(sc-sc_port, 1);
-#else
-	const u_int div = howmany(tegra_car_pllp0_rate() / 1000, 5);
-	tegra_car_periph_sdmmc_set_div(sc-sc_port, div);
-#endif
+	tegra_car_periph_sdmmc_set_rate(sc-sc_port, 5000);
 	sc-sc.sc_clkbase = tegra_car_periph_sdmmc_rate(sc-sc_port) / 1000;
 
 	aprint_naive(\n);



CVS commit: src/sys/arch/arm/nvidia

2015-07-07 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul  8 01:23:28 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dc.c tegra_hdmi.c tegra_var.h

Log Message:
expose EDID to userland


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_dc.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_var.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_dc.c
diff -u src/sys/arch/arm/nvidia/tegra_dc.c:1.1 src/sys/arch/arm/nvidia/tegra_dc.c:1.2
--- src/sys/arch/arm/nvidia/tegra_dc.c:1.1	Mon May 18 19:32:48 2015
+++ src/sys/arch/arm/nvidia/tegra_dc.c	Wed Jul  8 01:23:28 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_dc.c,v 1.1 2015/05/18 19:32:48 jmcneill Exp $ */
+/* $NetBSD: tegra_dc.c,v 1.2 2015/07/08 01:23:28 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_dc.c,v 1.1 2015/05/18 19:32:48 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_dc.c,v 1.2 2015/07/08 01:23:28 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -296,7 +296,7 @@ tegra_dc_port(device_t dev)
 
 int
 tegra_dc_enable(device_t dev, device_t outputdev,
-const struct videomode *mode)
+const struct videomode *mode, const uint8_t *edid)
 {
 	struct tegra_dc_softc * const sc = device_private(dev);
 	prop_dictionary_t prop = device_properties(dev);
@@ -339,6 +339,13 @@ tegra_dc_enable(device_t dev, device_t o
 
 	sc-sc_fbdev = config_found(sc-sc_dev, tfb, tegra_dc_print);
 
+	if (sc-sc_fbdev != NULL  edid != NULL) {
+		prop_data_t data = prop_data_create_data(edid, 128);
+		prop_dictionary_set(device_properties(sc-sc_fbdev),
+		EDID, data);
+		prop_object_release(data);
+	}
+
 	return 0;
 }
 

Index: src/sys/arch/arm/nvidia/tegra_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.2 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.3
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.2	Mon May 18 21:03:36 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Wed Jul  8 01:23:28 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.2 2015/05/18 21:03:36 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.3 2015/07/08 01:23:28 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_hdmi.c,v 1.2 2015/05/18 21:03:36 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.3 2015/07/08 01:23:28 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -92,7 +92,7 @@ struct tegra_hdmi_softc {
 static void	tegra_hdmi_hpd(struct tegra_hdmi_softc *);
 static void	tegra_hdmi_connect(struct tegra_hdmi_softc *);
 static void	tegra_hdmi_disconnect(struct tegra_hdmi_softc *);
-static void	tegra_hdmi_enable(struct tegra_hdmi_softc *);
+static void	tegra_hdmi_enable(struct tegra_hdmi_softc *, const uint8_t *);
 static int	tegra_hdmi_sor_start(struct tegra_hdmi_softc *);
 
 CFATTACH_DECL_NEW(tegra_hdmi, sizeof(struct tegra_hdmi_softc),
@@ -190,13 +190,14 @@ static void
 tegra_hdmi_connect(struct tegra_hdmi_softc *sc)
 {
 	const struct videomode *mode;
-	char edid[128];
+	char edid[128], *pedid = NULL;
 	struct edid_info ei;
 	int retry = 4, error;
 
+	memset(ei, 0, sizeof(ei));
+
 	if (sc-sc_ddcdev) {
 		memset(edid, 0, sizeof(edid));
-		memset(ei, 0, sizeof(ei));
 
 		while (--retry  0) {
 			error = ddc_dev_read_edid(sc-sc_ddcdev, edid,
@@ -212,10 +213,11 @@ tegra_hdmi_connect(struct tegra_hdmi_sof
 			if (edid_parse(edid, ei) != 0) {
 device_printf(sc-sc_dev,
 failed to parse EDID\n);
-#ifdef TEGRA_HDMI_DEBUG
 			} else {
+#ifdef TEGRA_HDMI_DEBUG
 edid_print(ei);
 #endif
+pedid = edid;
 			}
 		}
 	}
@@ -226,7 +228,7 @@ tegra_hdmi_connect(struct tegra_hdmi_sof
 	}
 
 	sc-sc_curmode = mode;
-	tegra_hdmi_enable(sc);
+	tegra_hdmi_enable(sc, pedid);
 }
 
 static void
@@ -235,7 +237,7 @@ tegra_hdmi_disconnect(struct tegra_hdmi_
 }
 
 static void
-tegra_hdmi_enable(struct tegra_hdmi_softc *sc)
+tegra_hdmi_enable(struct tegra_hdmi_softc *sc, const uint8_t *edid)
 {
 	const struct tegra_hdmi_tmds_config *tmds = NULL;
 	const struct videomode *mode = sc-sc_curmode;
@@ -266,7 +268,7 @@ tegra_hdmi_enable(struct tegra_hdmi_soft
 		tmds-sor_pad_ctls0);
 	}
 
-	tegra_dc_enable(sc-sc_displaydev, sc-sc_dev, mode);
+	tegra_dc_enable(sc-sc_displaydev, sc-sc_dev, mode, edid);
 
 	const u_int div = (mode-dot_clock / 1000) * 4;
 	HDMI_WRITE(sc, HDMI_NV_PDISP_SOR_REFCLK_REG,

Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.21 src/sys/arch/arm/nvidia/tegra_var.h:1.22
--- src/sys/arch/arm/nvidia/tegra_var.h:1.21	Sun May 31 14:41:59 2015
+++ src/sys/arch/arm/nvidia/tegra_var.h	Wed Jul  8 01:23:28 2015
@@ -1,4 +1,4 @@

CVS commit: src/sys/arch/arm/nvidia

2015-07-07 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jul  8 01:23:28 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_dc.c tegra_hdmi.c tegra_var.h

Log Message:
expose EDID to userland


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_dc.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-06-03 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jun  3 11:43:18 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
Use arm_dmb.  No functional change


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/soc_tegra124.c

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/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.5 src/sys/arch/arm/nvidia/soc_tegra124.c:1.6
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.5	Sun May 31 14:42:56 2015
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Wed Jun  3 11:43:18 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.5 2015/05/31 14:42:56 jmcneill Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.6 2015/06/03 11:43:18 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -30,7 +30,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.5 2015/05/31 14:42:56 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.6 2015/06/03 11:43:18 skrll Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -150,7 +150,7 @@ tegra124_mpinit(void)
 	tegra_pmc_power(PMC_PARTID_CPU3, true); started |= __BIT(3);
 
 	for (u_int i = 0x1000; i  0; i--) {
-		__asm __volatile(dmb ::: memory);
+		arm_dmb();
 		if (arm_cpu_hatched == started)
 			break;
 	}



CVS commit: src/sys/arch/arm/nvidia

2015-06-03 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jun  3 11:43:18 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
Use arm_dmb.  No functional change


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/soc_tegra124.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 31 14:41:59 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c tegra_var.h

Log Message:
add external function for writing to dvc (I2C5) devices


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_i2c.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_var.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_i2c.c
diff -u src/sys/arch/arm/nvidia/tegra_i2c.c:1.4 src/sys/arch/arm/nvidia/tegra_i2c.c:1.5
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.4	Sun May 17 01:26:22 2015
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sun May 31 14:41:59 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.4 2015/05/17 01:26:22 jmcneill Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.5 2015/05/31 14:41:59 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_i2c.c,v 1.4 2015/05/17 01:26:22 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_i2c.c,v 1.5 2015/05/31 14:41:59 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -418,3 +418,20 @@ tegra_i2c_read(struct tegra_i2c_softc *s
 
 	return tegra_i2c_wait(sc, flags);
 }
+
+void
+tegra_i2c_dvc_write(uint8_t addr, uint32_t data, size_t datalen)
+{
+	bus_space_tag_t bst = armv7_generic_bs_tag;
+	bus_space_handle_t bsh;
+
+	bus_space_subregion(bst, tegra_apb_bsh, TEGRA_I2C5_OFFSET,
+	TEGRA_I2C5_SIZE, bsh);
+
+	bus_space_write_4(bst, bsh, I2C_CMD_ADDR0_REG, addr  1);
+	bus_space_write_4(bst, bsh, I2C_CMD_DATA1_REG, data);
+	bus_space_write_4(bst, bsh, I2C_CNFG_REG,
+	__SHIFTIN(datalen - 1, I2C_CNFG_LENGTH) |
+	I2C_CNFG_NEW_MASTER_FSM |
+	I2C_CNFG_SEND);
+}

Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.20 src/sys/arch/arm/nvidia/tegra_var.h:1.21
--- src/sys/arch/arm/nvidia/tegra_var.h:1.20	Sat May 30 13:25:55 2015
+++ src/sys/arch/arm/nvidia/tegra_var.h	Sun May 31 14:41:59 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.20 2015/05/30 13:25:55 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.21 2015/05/31 14:41:59 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -140,6 +140,8 @@ void	tegra_pmc_power(u_int, bool);
 void	tegra_pmc_remove_clamping(u_int);
 void	tegra_pmc_hdmi_enable(void);
 
+void	tegra_i2c_dvc_write(uint8_t, uint32_t, size_t);
+
 psize_t	tegra_mc_memsize(void);
 
 void	tegra_xusbpad_sata_enable(void);



CVS commit: src/sys/arch/arm/nvidia

2015-05-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 31 14:41:59 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c tegra_var.h

Log Message:
add external function for writing to dvc (I2C5) devices


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_i2c.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 31 14:42:56 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
set VDD_CPU to 1.4V


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/soc_tegra124.c

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/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.4 src/sys/arch/arm/nvidia/soc_tegra124.c:1.5
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.4	Sun May 17 06:15:50 2015
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Sun May 31 14:42:56 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.4 2015/05/17 06:15:50 matt Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.5 2015/05/31 14:42:56 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -30,7 +30,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.4 2015/05/17 06:15:50 matt Exp $);
+__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.5 2015/05/31 14:42:56 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -77,6 +77,11 @@ static struct tegra124_cpufreq_rate {
 void
 tegra124_cpuinit(void)
 {
+	/* Set VDD_CPU voltage to 1.4V */
+	tegra_car_periph_i2c_enable(4, 20400);
+	tegra_i2c_dvc_write(0x40, 0x4f00, 2);
+	delay(1);
+
 	tegra_cpufreq_register(tegra124_cpufreq_func);
 }
 



CVS commit: src/sys/arch/arm/nvidia

2015-05-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 31 14:42:56 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
set VDD_CPU to 1.4V


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/soc_tegra124.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 30 18:53:39 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
dont set SDHC_FLAG_NO_HS_BIT flag


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_sdhc.c

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_sdhc.c
diff -u src/sys/arch/arm/nvidia/tegra_sdhc.c:1.5 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.6
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.5	Sun May  3 22:40:02 2015
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sat May 30 18:53:39 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.5 2015/05/03 22:40:02 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.6 2015/05/30 18:53:39 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_sdhc.c,v 1.5 2015/05/03 22:40:02 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_sdhc.c,v 1.6 2015/05/30 18:53:39 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -92,7 +92,6 @@ tegra_sdhc_attach(device_t parent, devic
 	sc-sc.sc_dmat = tio-tio_dmat;
 	sc-sc.sc_flags = SDHC_FLAG_32BIT_ACCESS |
 			  SDHC_FLAG_NO_PWR0 |
-			  SDHC_FLAG_NO_HS_BIT |
 			  SDHC_FLAG_NO_CLKBASE |
 			  SDHC_FLAG_SINGLE_POWER_WRITE |
 			  SDHC_FLAG_USE_DMA;



CVS commit: src/sys/arch/arm/nvidia

2015-05-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 30 18:53:39 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_sdhc.c

Log Message:
dont set SDHC_FLAG_NO_HS_BIT flag


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_sdhc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 30 11:10:24 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h

Log Message:
Use PLL LFSR as rnd source.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_carreg.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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.19 src/sys/arch/arm/nvidia/tegra_car.c:1.20
--- src/sys/arch/arm/nvidia/tegra_car.c:1.19	Wed May 20 00:05:53 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sat May 30 11:10:24 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.19 2015/05/20 00:05:53 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.20 2015/05/30 11:10:24 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_car.c,v 1.19 2015/05/20 00:05:53 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.20 2015/05/30 11:10:24 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -37,6 +37,8 @@ __KERNEL_RCSID(0, $NetBSD: tegra_car.c,
 #include sys/intr.h
 #include sys/systm.h
 #include sys/kernel.h
+#include sys/rndpool.h
+#include sys/rndsource.h
 
 #include arm/nvidia/tegra_reg.h
 #include arm/nvidia/tegra_carreg.h
@@ -50,9 +52,18 @@ struct tegra_car_softc {
 	device_t		sc_dev;
 	bus_space_tag_t		sc_bst;
 	bus_space_handle_t	sc_bsh;
+
+	kmutex_t		sc_intr_lock;
+	kmutex_t		sc_rnd_lock;
+	u_int			sc_bytes_wanted;
+	void			*sc_sih;
+	krndsource_t		sc_rndsource;
 };
 
 static void	tegra_car_init(struct tegra_car_softc *);
+static void	tegra_car_rnd_attach(device_t);
+static void	tegra_car_rnd_intr(void *);
+static void	tegra_car_rnd_callback(size_t, void *);
 
 static struct tegra_car_softc *pmc_softc = NULL;
 
@@ -91,6 +102,8 @@ tegra_car_attach(device_t parent, device
 	aprint_verbose_dev(self, PLLU = %u Hz\n, tegra_car_pllu_rate());
 	aprint_verbose_dev(self, PLLP0 = %u Hz\n, tegra_car_pllp0_rate());
 	aprint_verbose_dev(self, PLLD2 = %u Hz\n, tegra_car_plld2_rate());
+
+	config_interrupts(self, tegra_car_rnd_attach);
 }
 
 static void
@@ -108,6 +121,68 @@ tegra_car_init(struct tegra_car_softc *s
 }
 
 static void
+tegra_car_rnd_attach(device_t self)
+{
+	struct tegra_car_softc * const sc = device_private(self);
+
+	mutex_init(sc-sc_intr_lock, MUTEX_DEFAULT, IPL_SERIAL);
+	mutex_init(sc-sc_rnd_lock, MUTEX_DEFAULT, IPL_SERIAL);
+	sc-sc_bytes_wanted = 0;
+	sc-sc_sih = softint_establish(SOFTINT_SERIAL|SOFTINT_MPSAFE,
+	tegra_car_rnd_intr, sc);
+	if (sc-sc_sih == NULL) {
+		aprint_error_dev(sc-sc_dev, couldn't establish softint\n);
+		return;
+	}
+
+	rndsource_setcb(sc-sc_rndsource, tegra_car_rnd_callback, sc);
+	rnd_attach_source(sc-sc_rndsource, device_xname(sc-sc_dev),
+	RND_TYPE_RNG, RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
+}
+
+static void
+tegra_car_rnd_intr(void *priv)
+{
+	struct tegra_car_softc * const sc = priv;
+	uint16_t buf[512];
+	uint32_t cnt;
+
+	mutex_enter(sc-sc_intr_lock);
+	while (sc-sc_bytes_wanted) {
+		const u_int nbytes = MIN(sc-sc_bytes_wanted, 1024);
+		for (cnt = 0; cnt  sc-sc_bytes_wanted / 2; cnt++) {
+			buf[cnt] = bus_space_read_4(sc-sc_bst, sc-sc_bsh,
+			CAR_PLL_LFSR_REG)  0x;
+		}
+		mutex_exit(sc-sc_intr_lock);
+		mutex_enter(sc-sc_rnd_lock);
+		rnd_add_data(sc-sc_rndsource, buf, nbytes, nbytes * NBBY);
+		mutex_exit(sc-sc_rnd_lock);
+		mutex_enter(sc-sc_intr_lock);
+		sc-sc_bytes_wanted -= MIN(sc-sc_bytes_wanted, nbytes);
+	}
+	explicit_memset(buf, 0, sizeof(buf));
+	mutex_exit(sc-sc_intr_lock);
+}
+
+static void
+tegra_car_rnd_callback(size_t bytes_wanted, void *priv)
+{
+	struct tegra_car_softc * const sc = priv;
+
+	mutex_enter(sc-sc_intr_lock);
+	if (sc-sc_bytes_wanted == 0) {
+		softint_schedule(sc-sc_sih);
+	}
+	if (bytes_wanted  (UINT_MAX - sc-sc_bytes_wanted)) {
+		sc-sc_bytes_wanted = UINT_MAX;
+	} else {
+		sc-sc_bytes_wanted += bytes_wanted;
+	}
+	mutex_exit(sc-sc_intr_lock);
+}
+
+static void
 tegra_car_get_bs(bus_space_tag_t *pbst, bus_space_handle_t *pbsh)
 {
 	if (pmc_softc) {

Index: src/sys/arch/arm/nvidia/tegra_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.16 src/sys/arch/arm/nvidia/tegra_carreg.h:1.17
--- src/sys/arch/arm/nvidia/tegra_carreg.h:1.16	Mon May 18 20:36:42 2015
+++ src/sys/arch/arm/nvidia/tegra_carreg.h	Sat May 30 11:10:24 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_carreg.h,v 1.16 2015/05/18 20:36:42 jmcneill Exp $ */
+/* $NetBSD: tegra_carreg.h,v 1.17 2015/05/30 11:10:24 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -33,6 +33,9 @@
 #define CAR_CLK_OUT_ENB_H_REG	0x14
 #define CAR_CLK_OUT_ENB_U_REG	0x18
 
+#define CAR_PLL_LFSR_REG	0x54
+#define CAR_PLL_LFSR_RND		__BITS(15,0)
+
 #define 

CVS commit: src/sys/arch/arm/nvidia

2015-05-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 30 11:10:24 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h

Log Message:
Use PLL LFSR as rnd source.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_carreg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 25 10:40:23 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_pmc.c

Log Message:
wait for PWRGATE_TOGGLE.START to clear before submitting a new request


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_pmc.c

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_pmc.c
diff -u src/sys/arch/arm/nvidia/tegra_pmc.c:1.5 src/sys/arch/arm/nvidia/tegra_pmc.c:1.6
--- src/sys/arch/arm/nvidia/tegra_pmc.c:1.5	Mon May 18 21:03:36 2015
+++ src/sys/arch/arm/nvidia/tegra_pmc.c	Mon May 25 10:40:23 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmc.c,v 1.5 2015/05/18 21:03:36 jmcneill Exp $ */
+/* $NetBSD: tegra_pmc.c,v 1.6 2015/05/25 10:40:23 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_pmc.c,v 1.5 2015/05/18 21:03:36 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_pmc.c,v 1.6 2015/05/25 10:40:23 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -117,8 +117,9 @@ tegra_pmc_power(u_int partid, bool enabl
 {
 	bus_space_tag_t bst;
 	bus_space_handle_t bsh;
-	uint32_t status;
+	uint32_t status, toggle;
 	bool state;
+	int retry = 1;
 
 	tegra_pmc_get_bs(bst, bsh);
 
@@ -127,6 +128,17 @@ tegra_pmc_power(u_int partid, bool enabl
 	if (state == enable)
 		return;
 
+	while (--retry  0) {
+		toggle = bus_space_read_4(bst, bsh, PMC_PWRGATE_TOGGLE_0_REG);
+		if ((toggle  PMC_PWRGATE_TOGGLE_0_START) == 0)
+			break;
+		delay(1);
+	}
+	if (retry == 0) {
+		printf(ERROR: Couldn't enable PMC partition %#x\n, partid);
+		return;
+	}
+
 	bus_space_write_4(bst, bsh, PMC_PWRGATE_TOGGLE_0_REG,
 	__SHIFTIN(partid, PMC_PWRGATE_TOGGLE_0_PARTID) |
 	PMC_PWRGATE_TOGGLE_0_START);



CVS commit: src/sys/arch/arm/nvidia

2015-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 25 10:40:23 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_pmc.c

Log Message:
wait for PWRGATE_TOGGLE.START to clear before submitting a new request


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_pmc.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 24 22:30:22 UTC 2015

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

Log Message:
set AHCI_QUIRK_SKIP_RESET quirk


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_ahcisata.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 24 22:30:22 UTC 2015

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

Log Message:
set AHCI_QUIRK_SKIP_RESET quirk


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_ahcisata.c

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.5 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.6
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.5	Fri May 15 11:50:30 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Sun May 24 22:30:22 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.5 2015/05/15 11:50:30 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.6 2015/05/24 22:30:22 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.5 2015/05/15 11:50:30 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_ahcisata.c,v 1.6 2015/05/24 22:30:22 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -89,7 +89,7 @@ tegra_ahcisata_attach(device_t parent, d
 	bus_space_subregion(tio-tio_bst, tio-tio_bsh,
 	loc-loc_offset + TEGRA_AHCISATA_OFFSET,
 	loc-loc_size - TEGRA_AHCISATA_OFFSET, sc-sc.sc_ahcih);
-	sc-sc.sc_ahci_quirks = AHCI_QUIRK_BADPMP;
+	sc-sc.sc_ahci_quirks = AHCI_QUIRK_SKIP_RESET;
 
 	aprint_naive(\n);
 	aprint_normal(: SATA\n);



CVS commit: src/sys/arch/arm/nvidia

2015-05-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 22 06:27:17 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ehci.c

Log Message:
Whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_ehci.c

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_ehci.c
diff -u src/sys/arch/arm/nvidia/tegra_ehci.c:1.6 src/sys/arch/arm/nvidia/tegra_ehci.c:1.7
--- src/sys/arch/arm/nvidia/tegra_ehci.c:1.6	Mon May 18 11:07:34 2015
+++ src/sys/arch/arm/nvidia/tegra_ehci.c	Fri May 22 06:27:17 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ehci.c,v 1.6 2015/05/18 11:07:34 skrll Exp $ */
+/* $NetBSD: tegra_ehci.c,v 1.7 2015/05/22 06:27:17 skrll 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_ehci.c,v 1.6 2015/05/18 11:07:34 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_ehci.c,v 1.7 2015/05/22 06:27:17 skrll Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -318,11 +318,11 @@ tegra_ehci_utmip_init(struct tegra_ehci_
 
 static int
 tegra_ehci_port_status(struct ehci_softc *ehci_sc, uint32_t v, int i)
- {
+{
 	struct tegra_ehci_softc * const sc = device_private(ehci_sc-sc_dev);
 	bus_space_tag_t iot = sc-sc_bst;
 	bus_space_handle_t ioh = sc-sc_bsh;
- 
+
 	i = ~(UPS_HIGH_SPEED|UPS_LOW_SPEED);
 
 	uint32_t val = bus_space_read_4(iot, ioh,



CVS commit: src/sys/arch/arm/nvidia

2015-05-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 22 06:27:17 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ehci.c

Log Message:
Whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_ehci.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed May 20 00:05:53 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
wait for PLLD2 lock


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_car.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed May 20 00:05:53 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
wait for PLLD2 lock


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_car.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.18 src/sys/arch/arm/nvidia/tegra_car.c:1.19
--- src/sys/arch/arm/nvidia/tegra_car.c:1.18	Mon May 18 21:32:05 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Wed May 20 00:05:53 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.18 2015/05/18 21:32:05 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.19 2015/05/20 00:05:53 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_car.c,v 1.18 2015/05/18 21:32:05 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.19 2015/05/20 00:05:53 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -609,6 +609,8 @@ tegra_car_hdmi_enable(u_int rate)
 {
 	bus_space_tag_t bst;
 	bus_space_handle_t bsh;
+	uint32_t base;
+	int retry = 1;
 
 	tegra_car_get_bs(bst, bsh);
 
@@ -620,12 +622,25 @@ tegra_car_hdmi_enable(u_int rate)
 	tegra_reg_set_clear(bst, bsh, CAR_PLLD2_BASE_REG,
 	0, CAR_PLLD2_BASE_IDDQ);
 	delay(2);
+	/* Enable lock */
+	tegra_reg_set_clear(bst, bsh, CAR_PLLD2_MISC_REG,
+	CAR_PLLD2_MISC_LOCK_ENABLE, 0);
 	/* Enable PLLD2 */
 	tegra_reg_set_clear(bst, bsh, CAR_PLLD2_BASE_REG,
 	CAR_PLLD2_BASE_ENABLE, 0);
 
+	/* Wait for lock */
+	do {
+		delay(2);
+		base = bus_space_read_4(bst, bsh, CAR_PLLD2_BASE_REG);
+	} while ((base  CAR_PLLD2_BASE_LOCK) == 0  --retry  0);
+	delay(100);
+	if (retry == 0) {
+		printf(WARNING: timeout waiting for PLLD2 lock\n);
+	}
+
 	/* Set clock source to PLLD2 */
-	const u_int div = howmany(tegra_car_plld2_rate(), rate);;
+	const u_int div = howmany(tegra_car_plld2_rate(), rate);
 	bus_space_write_4(bst, bsh, CAR_CLKSRC_HDMI_REG,
 	__SHIFTIN(CAR_CLKSRC_HDMI_SRC_PLLD2_OUT0, CAR_CLKSRC_HDMI_SRC) |
 	__SHIFTIN(div - 1, CAR_CLKSRC_HDMI_DIV));



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 18 21:32:06 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
make sure the display controllar partition is powered on


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/nvidia/tegra_car.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.17 src/sys/arch/arm/nvidia/tegra_car.c:1.18
--- src/sys/arch/arm/nvidia/tegra_car.c:1.17	Mon May 18 20:36:42 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Mon May 18 21:32:05 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.17 2015/05/18 20:36:42 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.18 2015/05/18 21:32:05 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_car.c,v 1.17 2015/05/18 20:36:42 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.18 2015/05/18 21:32:05 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -641,6 +641,7 @@ tegra_car_dc_enable(u_int port)
 	bus_space_handle_t bsh;
 	bus_size_t src_reg;
 	uint32_t dev_bit;
+	u_int partid;
 
 	tegra_car_get_bs(bst, bsh);
 
@@ -648,10 +649,12 @@ tegra_car_dc_enable(u_int port)
 	case 0:
 		dev_bit = CAR_DEV_L_DISP1;
 		src_reg = CAR_CLKSRC_DISP1_REG;
+		partid = PMC_PARTID_DIS;
 		break;
 	case 1:
 		dev_bit = CAR_DEV_L_DISP2;
 		src_reg = CAR_CLKSRC_DISP2_REG;
+		partid = PMC_PARTID_DISB;
 		break;
 	default:
 		return EINVAL;
@@ -661,6 +664,10 @@ tegra_car_dc_enable(u_int port)
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_L_SET_REG, dev_bit);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_L_SET_REG, dev_bit);
 
+	/* Turn on power to display partition */
+	tegra_pmc_power(partid, true);
+	tegra_pmc_remove_clamping(partid);
+
 	/* Select PLLP for clock source */
 	bus_space_write_4(bst, bsh, src_reg,
 	__SHIFTIN(CAR_CLKSRC_DISP_SRC_PLLP_OUT0,



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 18 21:03:36 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c tegra_pmc.c tegra_pmcreg.h
tegra_var.h

Log Message:
Make sure HDMI I/O is not in deep power down mode


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_pmc.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pmcreg.h
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 18 21:03:36 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_hdmi.c tegra_pmc.c tegra_pmcreg.h
tegra_var.h

Log Message:
Make sure HDMI I/O is not in deep power down mode


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_hdmi.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_pmc.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pmcreg.h
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_var.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_hdmi.c
diff -u src/sys/arch/arm/nvidia/tegra_hdmi.c:1.1 src/sys/arch/arm/nvidia/tegra_hdmi.c:1.2
--- src/sys/arch/arm/nvidia/tegra_hdmi.c:1.1	Mon May 18 19:32:48 2015
+++ src/sys/arch/arm/nvidia/tegra_hdmi.c	Mon May 18 21:03:36 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdmi.c,v 1.1 2015/05/18 19:32:48 jmcneill Exp $ */
+/* $NetBSD: tegra_hdmi.c,v 1.2 2015/05/18 21:03:36 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_hdmi.c,v 1.1 2015/05/18 19:32:48 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_hdmi.c,v 1.2 2015/05/18 21:03:36 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -244,6 +244,8 @@ tegra_hdmi_enable(struct tegra_hdmi_soft
 
 	KASSERT(sc-sc_curmode != NULL);
 
+	tegra_pmc_hdmi_enable();
+
 	tegra_car_hdmi_enable(mode-dot_clock * 1000);
 
 	for (n = 0; n  __arraycount(tegra_hdmi_tmds_config); n++) {

Index: src/sys/arch/arm/nvidia/tegra_pmc.c
diff -u src/sys/arch/arm/nvidia/tegra_pmc.c:1.4 src/sys/arch/arm/nvidia/tegra_pmc.c:1.5
--- src/sys/arch/arm/nvidia/tegra_pmc.c:1.4	Fri May 15 11:50:30 2015
+++ src/sys/arch/arm/nvidia/tegra_pmc.c	Mon May 18 21:03:36 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmc.c,v 1.4 2015/05/15 11:50:30 jmcneill Exp $ */
+/* $NetBSD: tegra_pmc.c,v 1.5 2015/05/18 21:03:36 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_pmc.c,v 1.4 2015/05/15 11:50:30 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_pmc.c,v 1.5 2015/05/18 21:03:36 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -143,3 +143,17 @@ tegra_pmc_remove_clamping(u_int partid)
 	bus_space_write_4(bst, bsh, PMC_REMOVE_CLAMPING_CMD_0_REG,
 	__BIT(partid));
 }
+
+void
+tegra_pmc_hdmi_enable(void)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	tegra_pmc_get_bs(bst, bsh);
+
+	tegra_reg_set_clear(bst, bsh, PMC_IO_DPD_STATUS_REG,
+	0, PMC_IO_DPD_STATUS_HDMI);
+	tegra_reg_set_clear(bst, bsh, PMC_IO_DPD2_STATUS_REG,
+	0, PMC_IO_DPD2_STATUS_HV);
+}

Index: src/sys/arch/arm/nvidia/tegra_pmcreg.h
diff -u src/sys/arch/arm/nvidia/tegra_pmcreg.h:1.3 src/sys/arch/arm/nvidia/tegra_pmcreg.h:1.4
--- src/sys/arch/arm/nvidia/tegra_pmcreg.h:1.3	Fri May 15 11:50:30 2015
+++ src/sys/arch/arm/nvidia/tegra_pmcreg.h	Mon May 18 21:03:36 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmcreg.h,v 1.3 2015/05/15 11:50:30 jmcneill Exp $ */
+/* $NetBSD: tegra_pmcreg.h,v 1.4 2015/05/18 21:03:36 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -87,4 +87,10 @@
 #define PMC_PARTID_TD			1
 #define PMC_PARTID_CPU0			0
 
+#define PMC_IO_DPD_STATUS_REG		0x1bc
+#define PMC_IO_DPD_STATUS_HDMI		__BIT(28)
+
+#define PMC_IO_DPD2_STATUS_REG		0x1c4
+#define PMC_IO_DPD2_STATUS_HV		__BIT(6)
+
 #endif /* _ARM_TEGRA_PMCREG_H */

Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.18 src/sys/arch/arm/nvidia/tegra_var.h:1.19
--- src/sys/arch/arm/nvidia/tegra_var.h:1.18	Mon May 18 20:36:42 2015
+++ src/sys/arch/arm/nvidia/tegra_var.h	Mon May 18 21:03:36 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.18 2015/05/18 20:36:42 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.19 2015/05/18 21:03:36 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -137,6 +137,7 @@ bool	tegra_mpio_pinmux_get_rcv_sel(u_int
 void	tegra_pmc_reset(void);
 void	tegra_pmc_power(u_int, bool);
 void	tegra_pmc_remove_clamping(u_int);
+void	tegra_pmc_hdmi_enable(void);
 
 psize_t	tegra_mc_memsize(void);
 



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon May 18 21:32:06 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
make sure the display controllar partition is powered on


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/nvidia/tegra_car.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon May 18 09:56:43 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ehci.c tegra_ehcireg.h

Log Message:
Re-enable EHCIF_ETTF and provide a sc_vendor_port_status to get port
speed from HOSTSC1

My FS usb stick works with this change.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_ehci.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_ehcireg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon May 18 11:07:34 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ehci.c

Log Message:
Use the right IO handle to get HOSTPC. Also, mask out LS and HS from
reported status just-in-case and misc tidyup.

HS, FS and LS now all probe correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_ehci.c

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_ehci.c
diff -u src/sys/arch/arm/nvidia/tegra_ehci.c:1.5 src/sys/arch/arm/nvidia/tegra_ehci.c:1.6
--- src/sys/arch/arm/nvidia/tegra_ehci.c:1.5	Mon May 18 09:56:43 2015
+++ src/sys/arch/arm/nvidia/tegra_ehci.c	Mon May 18 11:07:34 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ehci.c,v 1.5 2015/05/18 09:56:43 skrll Exp $ */
+/* $NetBSD: tegra_ehci.c,v 1.6 2015/05/18 11:07:34 skrll 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_ehci.c,v 1.5 2015/05/18 09:56:43 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_ehci.c,v 1.6 2015/05/18 11:07:34 skrll Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -98,7 +98,6 @@ tegra_ehci_attach(device_t parent, devic
 	sc-sc.sc_bus.hci_private = sc-sc;
 	sc-sc.sc_bus.dmatag = tio-tio_dmat;
 	sc-sc.sc_bus.usbrev = USBREV_2_0;
-	sc-sc.sc_vendor_port_status = tegra_ehci_port_status;
 	sc-sc.sc_ncomp = 0;
 	sc-sc.sc_flags = EHCIF_ETTF;
 	sc-sc.sc_id_vendor = 0x10de;
@@ -109,6 +108,7 @@ tegra_ehci_attach(device_t parent, devic
 	loc-loc_offset + TEGRA_EHCI_REG_OFFSET,
 	loc-loc_size - TEGRA_EHCI_REG_OFFSET, sc-sc.ioh);
 	sc-sc.sc_vendor_init = tegra_ehci_init;
+	sc-sc.sc_vendor_port_status = tegra_ehci_port_status;
 
 	aprint_naive(\n);
 	aprint_normal(: USB%d\n, loc-loc_port + 1);
@@ -316,14 +316,14 @@ tegra_ehci_utmip_init(struct tegra_ehci_
 	}
 }
 
-
 static int
-tegra_ehci_port_status(struct ehci_softc *sc, uint32_t v, int i)
-{
-	bus_space_tag_t iot = sc-iot;
-	bus_space_handle_t ioh = sc-ioh;
-
-	i = ~UPS_HIGH_SPEED;
+tegra_ehci_port_status(struct ehci_softc *ehci_sc, uint32_t v, int i)
+ {
+	struct tegra_ehci_softc * const sc = device_private(ehci_sc-sc_dev);
+	bus_space_tag_t iot = sc-sc_bst;
+	bus_space_handle_t ioh = sc-sc_bsh;
+ 
+	i = ~(UPS_HIGH_SPEED|UPS_LOW_SPEED);
 
 	uint32_t val = bus_space_read_4(iot, ioh,
 	TEGRA_EHCI_HOSTPC1_DEVLC_REG);



CVS commit: src/sys/arch/arm/nvidia

2015-05-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon May 18 11:07:34 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ehci.c

Log Message:
Use the right IO handle to get HOSTPC. Also, mask out LS and HS from
reported status just-in-case and misc tidyup.

HS, FS and LS now all probe correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_ehci.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-17 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun May 17 06:15:50 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
Restructure a bit to make spinning a subset of cores easier.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/soc_tegra124.c

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/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.3 src/sys/arch/arm/nvidia/soc_tegra124.c:1.4
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.3	Wed May 13 11:06:13 2015
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Sun May 17 06:15:50 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.3 2015/05/13 11:06:13 jmcneill Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.4 2015/05/17 06:15:50 matt Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -30,7 +30,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.3 2015/05/13 11:06:13 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.4 2015/05/17 06:15:50 matt Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -128,7 +128,6 @@ tegra124_mpinit(void)
 	extern void cortex_mpstart(void);
 	bus_space_tag_t bst = armv7_generic_bs_tag;
 	bus_space_handle_t bsh;
-	u_int i;
 
 	bus_space_subregion(bst, tegra_ppsb_bsh,
 	TEGRA_EVP_OFFSET, TEGRA_EVP_SIZE, bsh);
@@ -139,14 +138,15 @@ tegra124_mpinit(void)
 	bus_space_write_4(bst, bsh, EVP_RESET_VECTOR_0_REG, (uint32_t)cortex_mpstart);
 	bus_space_barrier(bst, bsh, EVP_RESET_VECTOR_0_REG, 4,
 	BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE);
+	uint32_t started = 0;
 
-	tegra_pmc_power(PMC_PARTID_CPU1, true);
-	tegra_pmc_power(PMC_PARTID_CPU2, true);
-	tegra_pmc_power(PMC_PARTID_CPU3, true);
+	tegra_pmc_power(PMC_PARTID_CPU1, true); started |= __BIT(1);
+	tegra_pmc_power(PMC_PARTID_CPU2, true); started |= __BIT(2);
+	tegra_pmc_power(PMC_PARTID_CPU3, true); started |= __BIT(3);
 
-	for (i = 0x1000; i  0; i--) {
+	for (u_int i = 0x1000; i  0; i--) {
 		__asm __volatile(dmb ::: memory);
-		if (arm_cpu_hatched == 0xe)
+		if (arm_cpu_hatched == started)
 			break;
 	}
 #endif



CVS commit: src/sys/arch/arm/nvidia

2015-05-17 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun May 17 06:15:50 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c

Log Message:
Restructure a bit to make spinning a subset of cores easier.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/soc_tegra124.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 21:31:39 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c tegra_i2creg.h

Log Message:
Support transfers  4-bytes long by reading and writing using the
controller's packet-based interface instead of non-packet (normal) mode.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_i2c.c \
src/sys/arch/arm/nvidia/tegra_i2creg.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_i2c.c
diff -u src/sys/arch/arm/nvidia/tegra_i2c.c:1.1 src/sys/arch/arm/nvidia/tegra_i2c.c:1.2
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.1	Sun May 10 23:50:21 2015
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sat May 16 21:31:39 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.1 2015/05/10 23:50:21 jmcneill Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.2 2015/05/16 21:31:39 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_i2c.c,v 1.1 2015/05/10 23:50:21 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_i2c.c,v 1.2 2015/05/16 21:31:39 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -52,6 +52,7 @@ struct tegra_i2c_softc {
 	bus_space_tag_t		sc_bst;
 	bus_space_handle_t	sc_bsh;
 	void *			sc_ih;
+	u_int			sc_port;
 
 	struct i2c_controller	sc_ic;
 	kmutex_t		sc_lock;
@@ -107,6 +108,7 @@ tegra_i2c_attach(device_t parent, device
 	sc-sc_bst = tio-tio_bst;
 	bus_space_subregion(tio-tio_bst, tio-tio_bsh,
 	loc-loc_offset, loc-loc_size, sc-sc_bsh);
+	sc-sc_port = loc-loc_port;
 	mutex_init(sc-sc_lock, MUTEX_DEFAULT, IPL_VM);
 	cv_init(sc-sc_cv, device_xname(self));
 
@@ -144,7 +146,8 @@ tegra_i2c_init(struct tegra_i2c_softc *s
 	__SHIFTIN(0x1, I2C_CLK_DIVISOR_HSMODE));
 
 	I2C_WRITE(sc, I2C_INTERRUPT_MASK_REG, 0);
-	I2C_WRITE(sc, I2C_CNFG_REG, I2C_CNFG_NEW_MASTER_FSM);
+	I2C_WRITE(sc, I2C_CNFG_REG,
+	I2C_CNFG_NEW_MASTER_FSM | I2C_CNFG_PACKET_MODE_EN);
 	I2C_SET_CLEAR(sc, I2C_SL_CNFG_REG, I2C_SL_CNFG_NEWSL, 0);
 }
 
@@ -242,43 +245,42 @@ done:
 static int
 tegra_i2c_wait(struct tegra_i2c_softc *sc, int flags)
 {
-	const struct timeval timeout = { .tv_sec = 1, .tv_usec = 0 };
-	struct timeval tnow, tend;
-	uint32_t stat;
-	int error;
-
-	getmicrotime(tnow);
-	timeradd(tnow, timeout, tend);
-
-	for (;;) {
-		getmicrotime(tnow);
-		if (timercmp(tnow, tend, =)) {
-			return ETIMEDOUT;
-		}
+	int error, retry;
+	uint32_t stat = 0;
+
+	retry = (flags  I2C_F_POLL) ? 10 : 100;
+
+	while (--retry  0) {
 		if ((flags  I2C_F_POLL) == 0) {
-			struct timeval trem;
-			timersub(tend, tnow, trem);
-			const u_int ms = (trem.tv_sec * 1000) +
-			(trem.tv_usec / 1000);
-			KASSERT(ms  0);
 			error = cv_timedwait_sig(sc-sc_cv, sc-sc_lock,
-			max(mstohz(ms), 1));
+			max(mstohz(10), 1));
 			if (error) {
 return error;
 			}
 		}
-		stat = I2C_READ(sc, I2C_STATUS_REG);
-		if ((stat  I2C_STATUS_BUSY) == 0) {
+		stat = I2C_READ(sc, I2C_INTERRUPT_STATUS_REG);
+		if (stat  I2C_INTERRUPT_STATUS_PACKET_XFER_COMPLETE) {
 			break;
 		}
 		if (flags  I2C_F_POLL) {
-			delay(1);
+			delay(10);
 		}
 	}
+	if (retry == 0) {
+		stat = I2C_READ(sc, I2C_INTERRUPT_STATUS_REG);
+		device_printf(sc-sc_dev, timed out, status = %#x\n, stat);
+		return ETIMEDOUT;
+	}
 
+	const uint32_t err_mask =
+	I2C_INTERRUPT_STATUS_NOACK |
+	I2C_INTERRUPT_STATUS_ARB_LOST |
+	I2C_INTERRUPT_MASK_TIMEOUT;
 
-	if (__SHIFTOUT(stat, I2C_STATUS_CMD1_STAT) != 0)
+	if (stat  err_mask) {
+		device_printf(sc-sc_dev, error, status = %#x\n, stat);
 		return EIO;
+	}
 
 	return 0;
 }
@@ -287,33 +289,55 @@ static int
 tegra_i2c_write(struct tegra_i2c_softc *sc, i2c_addr_t addr, const uint8_t *buf,
 size_t buflen, int flags)
 {
-	uint32_t data, cnfg;
-	size_t n;
-
-	if (buflen  4)
-		return EINVAL;
+	const uint8_t *p = buf;
+	size_t n, resid = buflen;
+	uint32_t data;
+	int retry;
 
-	I2C_WRITE(sc, I2C_CMD_ADDR0_REG, addr  1);
-	for (n = 0, data = 0; n  buflen; n++) {
-		data |= (uint32_t)buf[n]  (n * 8);
-	}
-	I2C_WRITE(sc, I2C_CMD_DATA1_REG, data);
-
-	cnfg = I2C_READ(sc, I2C_CNFG_REG);
-	cnfg = ~I2C_CNFG_DEBOUNCE_CNT;
-	cnfg |= __SHIFTIN(2, I2C_CNFG_DEBOUNCE_CNT);
-	cnfg = ~I2C_CNFG_LENGTH;
-	cnfg |= __SHIFTIN(buflen - 1, I2C_CNFG_LENGTH);
-	cnfg = ~I2C_CNFG_SLV2;
-	cnfg = ~I2C_CNFG_CMD1;
-	cnfg = ~I2C_CNFG_NOACK;
-	cnfg = ~I2C_CNFG_A_MOD;
-	I2C_WRITE(sc, I2C_CNFG_REG, cnfg);
+	const uint32_t istatus = I2C_READ(sc, I2C_INTERRUPT_STATUS_REG);
+	I2C_WRITE(sc, I2C_INTERRUPT_STATUS_REG, istatus);
 
-	I2C_SET_CLEAR(sc, I2C_BUS_CONFIG_LOAD_REG,
-	I2C_BUS_CONFIG_LOAD_MSTR_CONFIG_LOAD, 0);
+	/* Generic Header 0 */
+	I2C_WRITE(sc, I2C_TX_PACKET_FIFO_REG,
+	__SHIFTIN(I2C_IOPACKET_WORD0_PROTHDRSZ_REQ,
+		  I2C_IOPACKET_WORD0_PROTHDRSZ) |
+	__SHIFTIN(sc-sc_port, 

CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 21:31:39 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c tegra_i2creg.h

Log Message:
Support transfers  4-bytes long by reading and writing using the
controller's packet-based interface instead of non-packet (normal) mode.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_i2c.c \
src/sys/arch/arm/nvidia/tegra_i2creg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:26:22 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c

Log Message:
initialize FIFO TX/RX trigger levels, wait for MSTR_CONFIG_LOAD to clear after 
setting it


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_i2c.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:26:22 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c

Log Message:
initialize FIFO TX/RX trigger levels, wait for MSTR_CONFIG_LOAD to clear after 
setting it


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_i2c.c

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_i2c.c
diff -u src/sys/arch/arm/nvidia/tegra_i2c.c:1.3 src/sys/arch/arm/nvidia/tegra_i2c.c:1.4
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.3	Sat May 16 23:09:08 2015
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sun May 17 01:26:22 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.3 2015/05/16 23:09:08 jmcneill Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.4 2015/05/17 01:26:22 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_i2c.c,v 1.3 2015/05/16 23:09:08 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_i2c.c,v 1.4 2015/05/17 01:26:22 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -141,6 +141,8 @@ tegra_i2c_attach(device_t parent, device
 static void
 tegra_i2c_init(struct tegra_i2c_softc *sc)
 {
+	int retry = 1;
+
 	I2C_WRITE(sc, I2C_CLK_DIVISOR_REG,
 	__SHIFTIN(0x19, I2C_CLK_DIVISOR_STD_FAST_MODE) |
 	__SHIFTIN(0x1, I2C_CLK_DIVISOR_HSMODE));
@@ -149,8 +151,20 @@ tegra_i2c_init(struct tegra_i2c_softc *s
 	I2C_WRITE(sc, I2C_CNFG_REG,
 	I2C_CNFG_NEW_MASTER_FSM | I2C_CNFG_PACKET_MODE_EN);
 	I2C_SET_CLEAR(sc, I2C_SL_CNFG_REG, I2C_SL_CNFG_NEWSL, 0);
+	I2C_WRITE(sc, I2C_FIFO_CONTROL_REG,
+	__SHIFTIN(7, I2C_FIFO_CONTROL_TX_FIFO_TRIG) |
+	__SHIFTIN(0, I2C_FIFO_CONTROL_RX_FIFO_TRIG));
+
 	I2C_WRITE(sc, I2C_BUS_CONFIG_LOAD_REG,
 	I2C_BUS_CONFIG_LOAD_MSTR_CONFIG_LOAD);
+	while (--retry  0) {
+		if (I2C_READ(sc, I2C_BUS_CONFIG_LOAD_REG) == 0)
+			break;
+		delay(10);
+	}
+	if (retry == 0) {
+		device_printf(sc-sc_dev, config load timeout\n);
+	}
 }
 
 static int



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:28:32 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_intr.h

Log Message:
add HDMI, DISPLAYA, DISPLAYB irqs


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_intr.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_intr.h
diff -u src/sys/arch/arm/nvidia/tegra_intr.h:1.4 src/sys/arch/arm/nvidia/tegra_intr.h:1.5
--- src/sys/arch/arm/nvidia/tegra_intr.h:1.4	Sun May 10 23:50:21 2015
+++ src/sys/arch/arm/nvidia/tegra_intr.h	Sun May 17 01:28:32 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_intr.h,v 1.4 2015/05/10 23:50:21 jmcneill Exp $ */
+/* $NetBSD: tegra_intr.h,v 1.5 2015/05/17 01:28:32 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -50,6 +50,9 @@
 #define TEGRA_INTR_UARTC	TEGRA_INTR(46)
 #define TEGRA_INTR_I2C5		TEGRA_INTR(53)
 #define TEGRA_INTR_I2C6		TEGRA_INTR(63)
+#define TEGRA_INTR_DISPLAYA	TEGRA_INTR(73)
+#define TEGRA_INTR_DISPLAYB	TEGRA_INTR(74)
+#define TEGRA_INTR_HDMI		TEGRA_INTR(75)
 #define TEGRA_INTR_HDA		TEGRA_INTR(81)
 #define TEGRA_INTR_I2C2		TEGRA_INTR(84)
 #define TEGRA_INTR_UARTD	TEGRA_INTR(90)



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:28:17 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_reg.h

Log Message:
add graphics host offsets


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_reg.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_reg.h
diff -u src/sys/arch/arm/nvidia/tegra_reg.h:1.9 src/sys/arch/arm/nvidia/tegra_reg.h:1.10
--- src/sys/arch/arm/nvidia/tegra_reg.h:1.9	Sun May 10 23:50:21 2015
+++ src/sys/arch/arm/nvidia/tegra_reg.h	Sun May 17 01:28:17 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_reg.h,v 1.9 2015/05/10 23:50:21 jmcneill Exp $ */
+/* $NetBSD: tegra_reg.h,v 1.10 2015/05/17 01:28:17 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -53,6 +53,8 @@
 
 #define TEGRA_HOST1X_BASE	0x5000
 #define TEGRA_HOST1X_SIZE	0x0010
+#define TEGRA_GHOST_BASE	0x5400
+#define TEGRA_GHOST_SIZE	0x0100
 #define TEGRA_PPSB_BASE		0x6000
 #define TEGRA_PPSB_SIZE		0x0100
 #define TEGRA_APB_BASE		0x7000
@@ -133,4 +135,12 @@
 #define TEGRA_USB3_OFFSET	0x01008000
 #define TEGRA_USB3_SIZE		0x1800
 
+/* Graphics Host (GHOST) */
+#define TEGRA_DISPLAYA_OFFSET	0x0020
+#define TEGRA_DISPLAYA_SIZE	0x0004
+#define TEGRA_DISPLAYB_OFFSET	0x0024
+#define TEGRA_DISPLAYB_SIZE	0x0004
+#define TEGRA_HDMI_OFFSET	0x0028
+#define TEGRA_HDMI_SIZE		0x0004
+
 #endif /* _ARM_TEGRA_REG_H */



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:28:32 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_intr.h

Log Message:
add HDMI, DISPLAYA, DISPLAYB irqs


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_intr.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 17 01:28:17 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_reg.h

Log Message:
add graphics host offsets


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_reg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 23:09:08 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c

Log Message:
fix source clock divisor, set MSTR_CONFIG_LOAD after updating config, reset 
controller on errors, read from rx fifo before waiting for xfer to complete


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_i2c.c

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_i2c.c
diff -u src/sys/arch/arm/nvidia/tegra_i2c.c:1.2 src/sys/arch/arm/nvidia/tegra_i2c.c:1.3
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.2	Sat May 16 21:31:39 2015
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sat May 16 23:09:08 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.2 2015/05/16 21:31:39 jmcneill Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.3 2015/05/16 23:09:08 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_i2c.c,v 1.2 2015/05/16 21:31:39 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_i2c.c,v 1.3 2015/05/16 23:09:08 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -125,7 +125,7 @@ tegra_i2c_attach(device_t parent, device
 	aprint_normal_dev(self, interrupting on irq %d\n, loc-loc_intr);
 
 	/* Recommended setting for standard mode */
-	tegra_car_periph_i2c_enable(loc-loc_port, 20400);
+	tegra_car_periph_i2c_enable(loc-loc_port, 2040);
 
 	tegra_i2c_init(sc);
 
@@ -149,6 +149,8 @@ tegra_i2c_init(struct tegra_i2c_softc *s
 	I2C_WRITE(sc, I2C_CNFG_REG,
 	I2C_CNFG_NEW_MASTER_FSM | I2C_CNFG_PACKET_MODE_EN);
 	I2C_SET_CLEAR(sc, I2C_SL_CNFG_REG, I2C_SL_CNFG_NEWSL, 0);
+	I2C_WRITE(sc, I2C_BUS_CONFIG_LOAD_REG,
+	I2C_BUS_CONFIG_LOAD_MSTR_CONFIG_LOAD);
 }
 
 static int
@@ -239,6 +241,11 @@ done:
 	if ((flags  I2C_F_POLL) == 0) {
 		I2C_WRITE(sc, I2C_INTERRUPT_MASK_REG, 0);
 	}
+
+	if (error) {
+		tegra_i2c_init(sc);
+	}
+
 	return error;
 }
 
@@ -349,7 +356,7 @@ tegra_i2c_read(struct tegra_i2c_softc *s
 	uint8_t *p = buf;
 	size_t n, resid = buflen;
 	uint32_t data;
-	int error, retry;
+	int retry;
 
 	const uint32_t istatus = I2C_READ(sc, I2C_INTERRUPT_STATUS_REG);
 	I2C_WRITE(sc, I2C_INTERRUPT_STATUS_REG, istatus);
@@ -372,10 +379,6 @@ tegra_i2c_read(struct tegra_i2c_softc *s
 	I2C_IOPACKET_XMITHDR_IE | I2C_IOPACKET_XMITHDR_READ |
 	__SHIFTIN((addr  1) | 1, I2C_IOPACKET_XMITHDR_SLAVE_ADDR));
 
-	if ((error = tegra_i2c_wait(sc, flags)) != 0) {
-		return error;
-	}
-
 	while (resid  0) {
 		retry = 1;
 		while (--retry  0) {
@@ -399,5 +402,5 @@ tegra_i2c_read(struct tegra_i2c_softc *s
 		p += min(resid, 4);
 	}
 
-	return 0;
+	return tegra_i2c_wait(sc, flags);
 }



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 23:09:08 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_i2c.c

Log Message:
fix source clock divisor, set MSTR_CONFIG_LOAD after updating config, reset 
controller on errors, read from rx fifo before waiting for xfer to complete


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_i2c.c

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




CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 23:07:51 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
use correct enable reg for I2C5


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/tegra_car.c

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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.14 src/sys/arch/arm/nvidia/tegra_car.c:1.15
--- src/sys/arch/arm/nvidia/tegra_car.c:1.14	Fri May 15 11:50:30 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sat May 16 23:07:51 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.14 2015/05/15 11:50:30 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.15 2015/05/16 23:07:51 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_car.c,v 1.14 2015/05/15 11:50:30 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.15 2015/05/16 23:07:51 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -548,7 +548,7 @@ tegra_car_periph_i2c_enable(u_int port, 
 		break;
 	case 4:
 		rst_reg = CAR_RST_DEV_H_SET_REG;
-		enb_reg = CAR_CLK_ENB_V_SET_REG;
+		enb_reg = CAR_CLK_ENB_H_SET_REG;
 		dev_bit = CAR_DEV_H_I2C5;
 		clksrc_reg = CAR_CLKSRC_I2C5_REG;
 		break;



CVS commit: src/sys/arch/arm/nvidia

2015-05-16 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 16 23:07:51 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c

Log Message:
use correct enable reg for I2C5


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/tegra_car.c

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 11:50:30 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ahcisata.c tegra_car.c tegra_pmc.c
tegra_pmcreg.h tegra_var.h

Log Message:
more Tegra SATA init


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pmc.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_pmcreg.h
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra_var.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.4 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.5
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.4	Thu May 14 00:00:44 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Fri May 15 11:50:30 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.4 2015/05/14 00:00:44 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.5 2015/05/15 11:50:30 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.4 2015/05/14 00:00:44 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_ahcisata.c,v 1.5 2015/05/15 11:50:30 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -89,7 +89,7 @@ tegra_ahcisata_attach(device_t parent, d
 	bus_space_subregion(tio-tio_bst, tio-tio_bsh,
 	loc-loc_offset + TEGRA_AHCISATA_OFFSET,
 	loc-loc_size - TEGRA_AHCISATA_OFFSET, sc-sc.sc_ahcih);
-	sc-sc.sc_ahci_ports = 1;
+	sc-sc.sc_ahci_quirks = AHCI_QUIRK_BADPMP;
 
 	aprint_naive(\n);
 	aprint_normal(: SATA\n);
@@ -102,6 +102,8 @@ tegra_ahcisata_attach(device_t parent, d
 
 	tegra_car_periph_sata_enable();
 
+	tegra_xusbpad_sata_enable();
+
 	tegra_ahcisata_init(sc);
 
 	sc-sc_ih = intr_establish(loc-loc_intr, IPL_BIO, IST_LEVEL,
@@ -122,10 +124,34 @@ tegra_ahcisata_init(struct tegra_ahcisat
 	bus_space_tag_t bst = sc-sc_bst;
 	bus_space_handle_t bsh = sc-sc_bsh;
 
+	const u_int gen1_tx_amp = 0x18;
+	const u_int gen1_tx_peak = 0x04;
+	const u_int gen2_tx_amp = 0x18;
+	const u_int gen2_tx_peak = 0x0a;
+
 	/* Enable IFPS device block */
 	tegra_reg_set_clear(bst, bsh, TEGRA_SATA_CONFIGURATION_REG,
 	TEGRA_SATA_CONFIGURATION_EN_FPCI, 0);
 
+	/* PHY config */
+	bus_space_write_4(bst, bsh, TEGRA_T_SATA0_INDEX_REG,
+	TEGRA_T_SATA0_INDEX_CH1);
+	tegra_reg_set_clear(bst, bsh, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_REG,
+	__SHIFTIN(gen1_tx_amp, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_AMP) |
+	__SHIFTIN(gen1_tx_peak, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_PEAK),
+	TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_AMP |
+	TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_PEAK);
+	tegra_reg_set_clear(bst, bsh, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_REG,
+	__SHIFTIN(gen2_tx_amp, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_AMP) |
+	__SHIFTIN(gen2_tx_peak, TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_PEAK),
+	TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_AMP |
+	TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_PEAK);
+	bus_space_write_4(bst, bsh, TEGRA_T_SATA0_CHX_PHY_CTRL11_REG,
+	__SHIFTIN(0x2800, TEGRA_T_SATA0_CHX_PHY_CTRL11_GEN2_RX_EQ));
+	bus_space_write_4(bst, bsh, TEGRA_T_SATA0_CHX_PHY_CTRL2_REG,
+	__SHIFTIN(0x23, TEGRA_T_SATA0_CHX_PHY_CTRL2_CDR_CNTL_GEN1));
+	bus_space_write_4(bst, bsh, TEGRA_T_SATA0_INDEX_REG, 0);
+
 	/* Backdoor update the programming interface field and class code */
 	tegra_reg_set_clear(bst, bsh, TEGRA_T_SATA0_CFG_SATA_REG,
 	TEGRA_T_SATA0_CFG_SATA_BACKDOOR_PROG_IF_EN, 0);

Index: src/sys/arch/arm/nvidia/tegra_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.13 src/sys/arch/arm/nvidia/tegra_car.c:1.14
--- src/sys/arch/arm/nvidia/tegra_car.c:1.13	Thu May 14 10:23:03 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Fri May 15 11:50:30 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.13 2015/05/14 10:23:03 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.14 2015/05/15 11:50:30 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_car.c,v 1.13 2015/05/14 10:23:03 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.14 2015/05/15 11:50:30 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -462,39 +462,51 @@ tegra_car_periph_sata_enable(void)
 
 	tegra_car_get_bs(bst, bsh);
 
-	const u_int pllp_rate = tegra_car_pllp0_rate();
+	/* Assert resets */
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_SET_REG, CAR_DEV_V_SATA);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_SET_REG, CAR_DEV_W_SATACOLD);
+
+	/* Disable software control of SATA PLL */
+	tegra_reg_set_clear(bst, bsh, CAR_SATA_PLL_CFG0_REG,
+	0, CAR_SATA_PLL_CFG0_PADPLL_RESET_SWCTL);
 
 	/* Set 

CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 11:50:30 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_ahcisata.c tegra_car.c tegra_pmc.c
tegra_pmcreg.h tegra_var.h

Log Message:
more Tegra SATA init


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_pmc.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_pmcreg.h
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 11:49:11 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_io.c
Added Files:
src/sys/arch/arm/nvidia: tegra_xusbpad.c tegra_xusbpadreg.h

Log Message:
Tegra XUSB PADCTL driver


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_io.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_xusbpad.c \
src/sys/arch/arm/nvidia/tegra_xusbpadreg.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/files.tegra
diff -u src/sys/arch/arm/nvidia/files.tegra:1.10 src/sys/arch/arm/nvidia/files.tegra:1.11
--- src/sys/arch/arm/nvidia/files.tegra:1.10	Wed May 13 11:06:13 2015
+++ src/sys/arch/arm/nvidia/files.tegra	Fri May 15 11:49:10 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.10 2015/05/13 11:06:13 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.11 2015/05/15 11:49:10 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -47,6 +47,11 @@ device	tegrampio
 attach	tegrampio at tegraio with tegra_mpio
 file	arch/arm/nvidia/tegra_mpio.c		tegra_mpio
 
+# XUSB PADCTL
+device	tegraxusbpad
+attach	tegraxusbpad at tegraio with tegra_xusbpad
+file	arch/arm/nvidia/tegra_xusbpad.c		tegra_xusbpad
+
 # UART
 attach	com at tegraio with tegra_com
 file	arch/arm/nvidia/tegra_com.c		tegra_com needs-flag

Index: src/sys/arch/arm/nvidia/tegra_io.c
diff -u src/sys/arch/arm/nvidia/tegra_io.c:1.8 src/sys/arch/arm/nvidia/tegra_io.c:1.9
--- src/sys/arch/arm/nvidia/tegra_io.c:1.8	Sun May 10 23:50:21 2015
+++ src/sys/arch/arm/nvidia/tegra_io.c	Fri May 15 11:49:10 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_io.c,v 1.8 2015/05/10 23:50:21 jmcneill Exp $ */
+/* $NetBSD: tegra_io.c,v 1.9 2015/05/15 11:49:10 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -29,7 +29,7 @@
 #include opt_tegra.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: tegra_io.c,v 1.8 2015/05/10 23:50:21 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_io.c,v 1.9 2015/05/15 11:49:10 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -73,6 +73,8 @@ static const struct tegra_locators tegra
 TEGRA_MC_OFFSET, TEGRA_MC_SIZE, NOPORT, NOINTR },
   { tegrapmc,
 TEGRA_PMC_OFFSET, TEGRA_PMC_SIZE, NOPORT, NOINTR },
+  { tegraxusbpad,
+TEGRA_XUSB_PADCTL_OFFSET, TEGRA_XUSB_PADCTL_SIZE, NOPORT, NOINTR },
   { tegrampio,
 TEGRA_MPIO_OFFSET, TEGRA_MPIO_SIZE, NOPORT, NOINTR },
   { tegrai2c,

Added files:

Index: src/sys/arch/arm/nvidia/tegra_xusbpad.c
diff -u /dev/null src/sys/arch/arm/nvidia/tegra_xusbpad.c:1.1
--- /dev/null	Fri May 15 11:49:11 2015
+++ src/sys/arch/arm/nvidia/tegra_xusbpad.c	Fri May 15 11:49:10 2015
@@ -0,0 +1,136 @@
+/* $NetBSD: tegra_xusbpad.c,v 1.1 2015/05/15 11:49:10 jmcneill Exp $ */
+
+/*-
+ * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include locators.h
+
+#include sys/cdefs.h
+__KERNEL_RCSID(0, $NetBSD: tegra_xusbpad.c,v 1.1 2015/05/15 11:49:10 jmcneill Exp $);
+
+#include sys/param.h
+#include sys/bus.h
+#include sys/device.h
+#include sys/intr.h
+#include sys/systm.h
+#include sys/kernel.h
+
+#include arm/nvidia/tegra_reg.h
+#include arm/nvidia/tegra_xusbpadreg.h
+#include arm/nvidia/tegra_var.h
+
+static int	tegra_xusbpad_match(device_t, cfdata_t, void *);
+static void	tegra_xusbpad_attach(device_t, device_t, void *);
+
+struct tegra_xusbpad_softc {
+	device_t		sc_dev;
+	bus_space_tag_t		sc_bst;
+	bus_space_handle_t	sc_bsh;
+};
+
+static struct 

CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 11:49:11 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_io.c
Added Files:
src/sys/arch/arm/nvidia: tegra_xusbpad.c tegra_xusbpadreg.h

Log Message:
Tegra XUSB PADCTL driver


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_io.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_xusbpad.c \
src/sys/arch/arm/nvidia/tegra_xusbpadreg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 17:43:36 UTC 2015

Added Files:
src/sys/arch/arm/nvidia: tegra_ahcisatareg.h

Log Message:
Tegra SATA registers


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 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.

Added files:

Index: src/sys/arch/arm/nvidia/tegra_ahcisatareg.h
diff -u /dev/null src/sys/arch/arm/nvidia/tegra_ahcisatareg.h:1.1
--- /dev/null	Fri May 15 17:43:36 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisatareg.h	Fri May 15 17:43:35 2015
@@ -0,0 +1,95 @@
+/* $NetBSD: tegra_ahcisatareg.h,v 1.1 2015/05/15 17:43:35 jmcneill Exp $ */
+
+/*-
+ * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _ARM_TEGRA_AHCISATAREG_H
+#define _ARM_TEGRA_AHCISATAREG_H
+
+#define TEGRA_SATA_FPCI_BAR5_REG		0x94
+
+#define TEGRA_SATA_FPCI_BAR_START			__BITS(31,4)
+#define TEGRA_SATA_FPCI_BAR_ACCESS_TYPE			__BIT(0)
+
+#define TEGRA_SATA_CONFIGURATION_REG		0x180
+#define TEGRA_SATA_CONFIGURATION_EN_FPCI		__BIT(0)
+
+#define TEGRA_SATA_INTR_MASK_REG		0x188
+#define TEGRA_SATA_INTR_MASK_IP_INT			__BIT(16)
+#define TEGRA_SATA_INTR_MASK_MSI			__BIT(8)
+#define TEGRA_SATA_INTR_MASK_INT			__BIT(0)
+
+#define TEGRA_T_SATA0_CFG1_REG			0x1004
+#define TEGRA_T_SATA0_CFG1_INTR_DISABLE			__BIT(10)
+#define TEGRA_T_SATA0_CFG1_SERR__BIT(8)
+#define TEGRA_T_SATA0_CFG1_BUS_MASTER			__BIT(2)
+#define TEGRA_T_SATA0_CFG1_MEM_SPACE			__BIT(1)
+#define TEGRA_T_SATA0_CFG1_IO_SPACE			__BIT(0)
+
+#define TEGRA_T_SATA0_CFG9_REG			0x1024
+#define TEGRA_T_SATA0_CFG9_BASE_ADDRESS			__BITS(31,13) 
+#define TEGRA_T_SATA0_CFG9_SPACE_TYPE			__BIT(0)
+
+#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)
+
+#define TEGRA_T_SATA0_CFG_POWER_GATE_REG	0x14ac
+#define TEGRA_T_SATA0_CFG_POWER_GATE_SSTS_RESTORED	__BIT(23)
+
+#define TEGRA_T_SATA0_CFG_SATA_REG		0x154c
+#define TEGRA_T_SATA0_CFG_SATA_BACKDOOR_PROG_IF_EN	__BIT(12)
+
+#define TEGRA_T_SATA0_INDEX_REG			0x1680
+#define TEGRA_T_SATA0_INDEX_CH4__BIT(3)
+#define TEGRA_T_SATA0_INDEX_CH3__BIT(2)
+#define TEGRA_T_SATA0_INDEX_CH2__BIT(1)
+#define TEGRA_T_SATA0_INDEX_CH1__BIT(0)
+
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_REG	0x1690
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_DRV_CNTL	__BITS(27,24)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_PEAK_PRE	__BITS(23,20)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_CMADJ	__BITS(19,16)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_PEAK	__BITS(15,8)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN1_TX_AMP		__BITS(7,0)
+
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_REG	0x1694
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_DRV_CNTL	__BITS(27,24)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_PEAK_PRE	__BITS(23,20)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_PEAK	__BITS(19,12)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_CMADJ	__BITS(11,8)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL1_GEN2_TX_AMP		__BITS(7,0)
+
+#define TEGRA_T_SATA0_CHX_PHY_CTRL2_REG		0x169c
+#define TEGRA_T_SATA0_CHX_PHY_CTRL2_CDR_CNTL_GEN3	__BITS(23,16)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL2_CDR_CNTL_GEN2	__BITS(15,8)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL2_CDR_CNTL_GEN1	__BITS(7,0)
+
+#define TEGRA_T_SATA0_CHX_PHY_CTRL11_REG	0x16d0
+#define TEGRA_T_SATA0_CHX_PHY_CTRL11_GEN2_RX_EQ		__BITS(31,16)
+#define TEGRA_T_SATA0_CHX_PHY_CTRL11_GEN1_RX_EQ		__BITS(15,0)
+
+#endif /* _ARM_TEGRA_AHCISATAREG_H */



CVS commit: src/sys/arch/arm/nvidia

2015-05-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 15 17:43:36 UTC 2015

Added Files:
src/sys/arch/arm/nvidia: tegra_ahcisatareg.h

Log Message:
Tegra SATA registers


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 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.



CVS commit: src/sys/arch/arm/nvidia

2015-05-14 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 14 10:23:03 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h

Log Message:
enable SATA OOB clock


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_carreg.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_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.12 src/sys/arch/arm/nvidia/tegra_car.c:1.13
--- src/sys/arch/arm/nvidia/tegra_car.c:1.12	Thu May 14 00:00:44 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Thu May 14 10:23:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.12 2015/05/14 00:00:44 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.13 2015/05/14 10:23:03 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_car.c,v 1.12 2015/05/14 00:00:44 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.13 2015/05/14 10:23:03 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -494,6 +494,7 @@ tegra_car_periph_sata_enable(void)
 	/* Turn on the clocks to SATA and de-assert resets */
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG, CAR_DEV_W_SATACOLD);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_V_SET_REG, CAR_DEV_V_SATA);
+	bus_space_write_4(bst, bsh, CAR_CLK_ENB_V_SET_REG, CAR_DEV_V_SATA_OOB);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_SATACOLD);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG, CAR_DEV_V_SATA);
 }

Index: src/sys/arch/arm/nvidia/tegra_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.13 src/sys/arch/arm/nvidia/tegra_carreg.h:1.14
--- src/sys/arch/arm/nvidia/tegra_carreg.h:1.13	Thu May 14 00:00:44 2015
+++ src/sys/arch/arm/nvidia/tegra_carreg.h	Thu May 14 10:23:03 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_carreg.h,v 1.13 2015/05/14 00:00:44 jmcneill Exp $ */
+/* $NetBSD: tegra_carreg.h,v 1.14 2015/05/14 10:23:03 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -258,6 +258,7 @@
 
 #define CAR_DEV_V_HDA			__BIT(29)
 #define CAR_DEV_V_SATA			__BIT(28)
+#define CAR_DEV_V_SATA_OOB		__BIT(27)
 #define CAR_DEV_V_ACTMON		__BIT(23)
 #define CAR_DEV_V_ATOMICS		__BIT(16)
 #define CAR_DEV_V_HDA2CODEC_2X		__BIT(15)



CVS commit: src/sys/arch/arm/nvidia

2015-05-14 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 14 10:23:03 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: tegra_car.c tegra_carreg.h

Log Message:
enable SATA OOB clock


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_carreg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-13 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed May 13 11:06:13 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra soc_tegra124.c tegra_car.c
tegra_carreg.h tegra_soc.c tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: tegra_cpufreq.c

Log Message:
Tegra K1 CPU frequency scaling support.

jetsontk1# sysctl machdep.cpu
machdep.cpu.frequency.target = 2292
machdep.cpu.frequency.current = 2292
machdep.cpu.frequency.available = 2292 2100 1896 1692 1500 1296 1092 900 696


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/soc_tegra124.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_cpufreq.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_soc.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/tegra_var.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/files.tegra
diff -u src/sys/arch/arm/nvidia/files.tegra:1.9 src/sys/arch/arm/nvidia/files.tegra:1.10
--- src/sys/arch/arm/nvidia/files.tegra:1.9	Sun May 10 23:50:21 2015
+++ src/sys/arch/arm/nvidia/files.tegra	Wed May 13 11:06:13 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.9 2015/05/10 23:50:21 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.10 2015/05/13 11:06:13 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -14,6 +14,7 @@ file	arch/arm/arm32/armv7_generic_space.
 file	arch/arm/arm/bus_space_a4x.S
 
 file	arch/arm/nvidia/tegra_soc.c
+file	arch/arm/nvidia/tegra_cpufreq.c
 file	arch/arm/nvidia/soc_tegra124.c		soc_tegra124
 
 # On-board I/O
@@ -89,6 +90,9 @@ defparam opt_tegra.h			CONMODE
 # Memory parameters
 defparam opt_tegra.h			MEMSIZE
 
+# CPU parameters
+defparam opt_tegra.h			CPUFREQ_BOOT
+
 # SOC parameters
 defflag	opt_tegra.h			SOC_TEGRAK1
 defflag	opt_tegra.h			SOC_TEGRA124: SOC_TEGRAK1

Index: src/sys/arch/arm/nvidia/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.2 src/sys/arch/arm/nvidia/soc_tegra124.c:1.3
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.2	Sun Apr 26 22:04:28 2015
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Wed May 13 11:06:13 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.2 2015/04/26 22:04:28 jmcneill Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.3 2015/05/13 11:06:13 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -30,7 +30,7 @@
 #include opt_multiprocessor.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.2 2015/04/26 22:04:28 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: soc_tegra124.c,v 1.3 2015/05/13 11:06:13 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -47,6 +47,80 @@ __KERNEL_RCSID(0, $NetBSD: soc_tegra124
 
 #define EVP_RESET_VECTOR_0_REG	0x100
 
+static u_int	tegra124_cpufreq_set_rate(u_int);
+static u_int	tegra124_cpufreq_get_rate(void);
+static size_t	tegra124_cpufreq_get_available(u_int *, size_t);
+
+static const struct tegra_cpufreq_func tegra124_cpufreq_func = {
+	.set_rate = tegra124_cpufreq_set_rate,
+	.get_rate = tegra124_cpufreq_get_rate,
+	.get_available = tegra124_cpufreq_get_available,
+};
+
+static struct tegra124_cpufreq_rate {
+	u_int rate;
+	u_int divm;
+	u_int divn;
+	u_int divp;
+} tegra124_cpufreq_rates[] = {
+	{ 2292, 1, 191, 0 },
+	{ 2100, 1, 175, 0 },
+	{ 1896, 1, 158, 0 },
+	{ 1692, 1, 141, 0 },
+	{ 1500, 1, 125, 0 },
+	{ 1296, 1, 108, 0 },
+	{ 1092, 1, 91, 0 },
+	{ 900, 1, 75, 0 },
+	{ 696, 1, 58, 0 }
+};
+
+void
+tegra124_cpuinit(void)
+{
+	tegra_cpufreq_register(tegra124_cpufreq_func);
+}
+
+static u_int
+tegra124_cpufreq_set_rate(u_int rate)
+{
+	const u_int nrates = __arraycount(tegra124_cpufreq_rates);
+	const struct tegra124_cpufreq_rate *r = NULL;
+
+	for (int i = 0; i  nrates; i++) {
+		if (tegra124_cpufreq_rates[i].rate == rate) {
+			r = tegra124_cpufreq_rates[i];
+			break;
+		}
+	}
+	if (r == NULL)
+		return EINVAL;
+
+	tegra_car_pllx_set_rate(r-divm, r-divn, r-divp);
+
+	return 0;
+}
+
+static u_int
+tegra124_cpufreq_get_rate(void)
+{
+	return tegra_car_pllx_rate() / 100;
+}
+
+static size_t
+tegra124_cpufreq_get_available(u_int *pavail, size_t maxavail)
+{
+	const u_int nrates = __arraycount(tegra124_cpufreq_rates);
+	u_int n;
+
+	KASSERT(nrates = maxavail);
+
+	for (n = 0; n  nrates; n++) {
+		pavail[n] = tegra124_cpufreq_rates[n].rate;
+	}
+
+	return nrates;
+}
+
 void
 tegra124_mpinit(void)
 {

Index: src/sys/arch/arm/nvidia/tegra_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.10 src/sys/arch/arm/nvidia/tegra_car.c:1.11
--- src/sys/arch/arm/nvidia/tegra_car.c:1.10	Sun May 10 23:56:21 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Wed May 13 11:06:13 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.10 2015/05/10 23:56:21 jmcneill Exp $ */
+/* 

CVS commit: src/sys/arch/arm/nvidia

2015-05-13 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed May 13 11:06:13 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra soc_tegra124.c tegra_car.c
tegra_carreg.h tegra_soc.c tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: tegra_cpufreq.c

Log Message:
Tegra K1 CPU frequency scaling support.

jetsontk1# sysctl machdep.cpu
machdep.cpu.frequency.target = 2292
machdep.cpu.frequency.current = 2292
machdep.cpu.frequency.available = 2292 2100 1896 1692 1500 1296 1092 900 696


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/soc_tegra124.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_cpufreq.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_soc.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/tegra_var.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-13 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 14 00:00:44 UTC 2015

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

Log Message:
fix SATA controller init


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_carreg.h

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



CVS commit: src/sys/arch/arm/nvidia

2015-05-13 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 14 00:00:44 UTC 2015

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

Log Message:
fix SATA controller init


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_car.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_carreg.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.3 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.4
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.3	Sun May 10 15:31:48 2015
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Thu May 14 00:00:44 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.3 2015/05/10 15:31:48 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.4 2015/05/14 00:00:44 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.3 2015/05/10 15:31:48 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_ahcisata.c,v 1.4 2015/05/14 00:00:44 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -54,6 +54,8 @@ struct tegra_ahcisata_softc {
 	bus_space_tag_t		sc_bst;
 	bus_space_handle_t	sc_bsh;
 	void			*sc_ih;
+
+	struct tegra_gpio_pin	*sc_pin_power;
 };
 
 static void	tegra_ahcisata_init(struct tegra_ahcisata_softc *);
@@ -73,6 +75,8 @@ tegra_ahcisata_attach(device_t parent, d
 	struct tegra_ahcisata_softc * const sc = device_private(self);
 	struct tegraio_attach_args * const tio = aux;
 	const struct tegra_locators * const loc = tio-tio_loc;
+	prop_dictionary_t prop = device_properties(self);
+	const char *pin;
 
 	sc-sc_bst = tio-tio_bst;
 	bus_space_subregion(tio-tio_bst, tio-tio_bsh,
@@ -81,7 +85,7 @@ tegra_ahcisata_attach(device_t parent, d
 	sc-sc.sc_atac.atac_dev = self;
 	sc-sc.sc_dmat = tio-tio_dmat;
 	sc-sc.sc_ahcit = tio-tio_bst;
-	sc-sc.sc_ahcis = loc-loc_size;
+	sc-sc.sc_ahcis = loc-loc_size - TEGRA_AHCISATA_OFFSET;
 	bus_space_subregion(tio-tio_bst, tio-tio_bsh,
 	loc-loc_offset + TEGRA_AHCISATA_OFFSET,
 	loc-loc_size - TEGRA_AHCISATA_OFFSET, sc-sc.sc_ahcih);
@@ -90,6 +94,12 @@ tegra_ahcisata_attach(device_t parent, d
 	aprint_naive(\n);
 	aprint_normal(: SATA\n);
 
+	if (prop_dictionary_get_cstring_nocopy(prop, power-gpio, pin)) {
+		sc-sc_pin_power = tegra_gpio_acquire(pin, GPIO_PIN_OUTPUT);
+		if (sc-sc_pin_power)
+			tegra_gpio_write(sc-sc_pin_power, 1);
+	}
+
 	tegra_car_periph_sata_enable();
 
 	tegra_ahcisata_init(sc);

Index: src/sys/arch/arm/nvidia/tegra_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.11 src/sys/arch/arm/nvidia/tegra_car.c:1.12
--- src/sys/arch/arm/nvidia/tegra_car.c:1.11	Wed May 13 11:06:13 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Thu May 14 00:00:44 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.11 2015/05/13 11:06:13 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.12 2015/05/14 00:00:44 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_car.c,v 1.11 2015/05/13 11:06:13 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.12 2015/05/14 00:00:44 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -462,6 +462,23 @@ tegra_car_periph_sata_enable(void)
 
 	tegra_car_get_bs(bst, bsh);
 
+	const u_int pllp_rate = tegra_car_pllp0_rate();
+
+	/* Set SATA_OOB clock source to PLLP, 204MHz */
+	const u_int sataoob_div = pllp_rate / 2;
+	bus_space_write_4(bst, bsh, CAR_CLKSRC_SATA_OOB_REG,
+	__SHIFTIN(CAR_CLKSRC_SATA_SRC_PLLP_OUT0,
+		  CAR_CLKSRC_SATA_SRC) |
+	__SHIFTIN(sataoob_div - 1, CAR_CLKSRC_SATA_OOB_DIV));
+
+	/* Set SATA clock source to PLLP, 102MHz */
+	const u_int sata_div = pllp_rate / 1;
+	bus_space_write_4(bst, bsh, CAR_CLKSRC_SATA_REG,
+	CAR_CLKSRC_SATA_AUX_CLK_ENB |
+	__SHIFTIN(CAR_CLKSRC_SATA_SRC_PLLP_OUT0,
+		  CAR_CLKSRC_SATA_SRC) |
+	__SHIFTIN(sata_div - 1, CAR_CLKSRC_SATA_DIV));
+
 	/* Enable CML clock for SATA */
 	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG,
 	CAR_PLLE_AUX_CML1_OEN, 0);
@@ -475,6 +492,7 @@ tegra_car_periph_sata_enable(void)
 	tegra_pmc_power(PMC_PARTID_SAX, true);
 
 	/* Turn on the clocks to SATA and de-assert resets */
+	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG, CAR_DEV_W_SATACOLD);
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_V_SET_REG, CAR_DEV_V_SATA);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_SATACOLD);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG, CAR_DEV_V_SATA);

Index: src/sys/arch/arm/nvidia/tegra_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra_carreg.h:1.12 

CVS commit: src/sys/arch/arm/nvidia

2015-05-10 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 10 23:50:21 UTC 2015

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_car.c tegra_carreg.h
tegra_intr.h tegra_io.c tegra_reg.h tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: tegra_i2c.c tegra_i2creg.h

Log Message:
Tegra I2C driver


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/files.tegra \
src/sys/arch/arm/nvidia/tegra_car.c src/sys/arch/arm/nvidia/tegra_reg.h
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_carreg.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_i2c.c \
src/sys/arch/arm/nvidia/tegra_i2creg.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_intr.h
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_io.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_var.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/files.tegra
diff -u src/sys/arch/arm/nvidia/files.tegra:1.8 src/sys/arch/arm/nvidia/files.tegra:1.9
--- src/sys/arch/arm/nvidia/files.tegra:1.8	Thu May  7 23:55:11 2015
+++ src/sys/arch/arm/nvidia/files.tegra	Sun May 10 23:50:21 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.8 2015/05/07 23:55:11 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.9 2015/05/10 23:50:21 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -50,6 +50,11 @@ file	arch/arm/nvidia/tegra_mpio.c		tegra
 attach	com at tegraio with tegra_com
 file	arch/arm/nvidia/tegra_com.c		tegra_com needs-flag
 
+# I2C
+device	tegrai2c: i2cbus, i2cexec
+attach	tegrai2c at tegraio with tegra_i2c
+file	arch/arm/nvidia/tegra_i2c.c		tegra_i2c
+
 # RTC
 device	tegrartc
 attach	tegrartc at tegraio with tegra_rtc
Index: src/sys/arch/arm/nvidia/tegra_car.c
diff -u src/sys/arch/arm/nvidia/tegra_car.c:1.8 src/sys/arch/arm/nvidia/tegra_car.c:1.9
--- src/sys/arch/arm/nvidia/tegra_car.c:1.8	Sun May 10 15:31:48 2015
+++ src/sys/arch/arm/nvidia/tegra_car.c	Sun May 10 23:50:21 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_car.c,v 1.8 2015/05/10 15:31:48 jmcneill Exp $ */
+/* $NetBSD: tegra_car.c,v 1.9 2015/05/10 23:50:21 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_car.c,v 1.8 2015/05/10 15:31:48 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: tegra_car.c,v 1.9 2015/05/10 23:50:21 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -437,3 +437,70 @@ tegra_car_periph_sata_enable(void)
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_SATACOLD);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_V_CLR_REG, CAR_DEV_V_SATA);
 }
+
+int
+tegra_car_periph_i2c_enable(u_int port, u_int rate)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	bus_size_t rst_reg, enb_reg, clksrc_reg;
+	uint32_t dev_bit;
+
+	tegra_car_get_bs(bst, bsh);
+
+	switch (port) {
+	case 0:
+		rst_reg = CAR_RST_DEV_L_SET_REG;
+		enb_reg = CAR_CLK_ENB_L_SET_REG;
+		dev_bit = CAR_DEV_L_I2C1;
+		clksrc_reg = CAR_CLKSRC_I2C1_REG;
+		break;
+	case 1:
+		rst_reg = CAR_RST_DEV_H_SET_REG;
+		enb_reg = CAR_CLK_ENB_H_SET_REG;
+		dev_bit = CAR_DEV_H_I2C2;
+		clksrc_reg = CAR_CLKSRC_I2C2_REG;
+		break;
+	case 2:
+		rst_reg = CAR_RST_DEV_U_SET_REG;
+		enb_reg = CAR_CLK_ENB_U_SET_REG;
+		dev_bit = CAR_DEV_U_I2C3;
+		clksrc_reg = CAR_CLKSRC_I2C3_REG;
+		break;
+	case 3:
+		rst_reg = CAR_RST_DEV_V_SET_REG;
+		enb_reg = CAR_CLK_ENB_V_SET_REG;
+		dev_bit = CAR_DEV_V_I2C4;
+		clksrc_reg = CAR_CLKSRC_I2C4_REG;
+		break;
+	case 4:
+		rst_reg = CAR_RST_DEV_H_SET_REG;
+		enb_reg = CAR_CLK_ENB_V_SET_REG;
+		dev_bit = CAR_DEV_H_I2C5;
+		clksrc_reg = CAR_CLKSRC_I2C5_REG;
+		break;
+	case 5:
+		rst_reg = CAR_RST_DEV_X_SET_REG;
+		enb_reg = CAR_CLK_ENB_X_SET_REG;
+		dev_bit = CAR_DEV_X_I2C6;
+		clksrc_reg = CAR_CLKSRC_I2C6_REG;
+		break;
+	default:
+		return EINVAL;
+	}
+
+	/* Enter reset, enable clock */
+	bus_space_write_4(bst, bsh, rst_reg, dev_bit);
+	bus_space_write_4(bst, bsh, enb_reg, dev_bit);
+
+	/* Set clock source to PLLP */
+	const u_int div = howmany(tegra_car_pllp0_rate() / 1000, rate / 1000);
+	bus_space_write_4(bst, bsh, clksrc_reg,
+	__SHIFTIN(CAR_CLKSRC_I2C_SRC_PLLP_OUT0, CAR_CLKSRC_I2C_SRC) |
+	__SHIFTIN(div - 1, CAR_CLKSRC_I2C_DIV));
+
+	/* Leave reset */
+	bus_space_write_4(bst, bsh, rst_reg+4, dev_bit);
+
+	return 0;
+}
Index: src/sys/arch/arm/nvidia/tegra_reg.h
diff -u src/sys/arch/arm/nvidia/tegra_reg.h:1.8 src/sys/arch/arm/nvidia/tegra_reg.h:1.9
--- src/sys/arch/arm/nvidia/tegra_reg.h:1.8	Thu May  7 23:55:11 2015
+++ src/sys/arch/arm/nvidia/tegra_reg.h	Sun May 10 23:50:21 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_reg.h,v 1.8 2015/05/07 23:55:11 jmcneill Exp $ */
+/* $NetBSD: tegra_reg.h,v 1.9 2015/05/10 23:50:21 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill jmcne...@invisible.ca
@@ -78,6 +78,18 @@
 

<    1   2   3   4   5   6   >