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

2021-06-20 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Jun 21 03:15:22 UTC 2021

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

Log Message:
fix proplib deprecation


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_cec.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_cec.c
diff -u src/sys/arch/arm/nvidia/tegra_cec.c:1.9 src/sys/arch/arm/nvidia/tegra_cec.c:1.10
--- src/sys/arch/arm/nvidia/tegra_cec.c:1.9	Sat Apr 24 19:36:27 2021
+++ src/sys/arch/arm/nvidia/tegra_cec.c	Sun Jun 20 23:15:22 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_cec.c,v 1.9 2021/04/24 23:36:27 thorpej Exp $ */
+/* $NetBSD: tegra_cec.c,v 1.10 2021/06/21 03:15:22 christos Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_cec.c,v 1.9 2021/04/24 23:36:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_cec.c,v 1.10 2021/06/21 03:15:22 christos Exp $");
 
 #include 
 #include 
@@ -179,7 +179,7 @@ tegra_cec_attach(device_t parent, device
 	}
 	aprint_normal_dev(self, "interrupting on %s\n", intrstr);
 
-	prop_dictionary_get_cstring_nocopy(prop, "hdmi-device",
+	prop_dictionary_get_string(prop, "hdmi-device",
 	>sc_hdmidevname);
 
 	fdtbus_reset_assert(sc->sc_rst);



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

2021-01-26 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Wed Jan 27 01:58:15 UTC 2021

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

Log Message:
Use DEVICE_COMPAT_EOL.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/nvidia/tegra_pcie.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_soctherm.c
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_xusb.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.16 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.17
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.16	Mon Jan 25 14:20:38 2021
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Wed Jan 27 01:58:15 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.16 2021/01/25 14:20:38 thorpej Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.17 2021/01/27 01:58:15 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.16 2021/01/25 14:20:38 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.17 2021/01/27 01:58:15 thorpej Exp $");
 
 #include 
 #include 
@@ -105,7 +105,7 @@ struct tegra_ahcisata_data tegra210_ahci
 static const struct device_compatible_entry compat_data[] = {
 	{ .compat = "nvidia,tegra124-ahci", .data = _ahcisata_data },
 	{ .compat = "nvidia,tegra210-ahci", .data = _ahcisata_data },
-	{ },
+	DEVICE_COMPAT_EOL,
 };
 
 

Index: src/sys/arch/arm/nvidia/tegra_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.34 src/sys/arch/arm/nvidia/tegra_pcie.c:1.35
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.34	Mon Jan 25 14:20:38 2021
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Wed Jan 27 01:58:15 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.34 2021/01/25 14:20:38 thorpej Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.35 2021/01/27 01:58:15 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.34 2021/01/25 14:20:38 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.35 2021/01/27 01:58:15 thorpej Exp $");
 
 #include 
 
@@ -139,7 +139,7 @@ CFATTACH_DECL_NEW(tegra_pcie, sizeof(str
 static const struct device_compatible_entry compat_data[] = {
 	{ .compat = "nvidia,tegra210-pcie",	.value = TEGRA_PCIE_210 },
 	{ .compat = "nvidia,tegra124-pcie",	.value = TEGRA_PCIE_124 },
-	{ }
+	DEVICE_COMPAT_EOL
 };
 
 static int

Index: src/sys/arch/arm/nvidia/tegra_soctherm.c
diff -u src/sys/arch/arm/nvidia/tegra_soctherm.c:1.11 src/sys/arch/arm/nvidia/tegra_soctherm.c:1.12
--- src/sys/arch/arm/nvidia/tegra_soctherm.c:1.11	Mon Jan 25 14:20:38 2021
+++ src/sys/arch/arm/nvidia/tegra_soctherm.c	Wed Jan 27 01:58:15 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soctherm.c,v 1.11 2021/01/25 14:20:38 thorpej Exp $ */
+/* $NetBSD: tegra_soctherm.c,v 1.12 2021/01/27 01:58:15 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soctherm.c,v 1.11 2021/01/25 14:20:38 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soctherm.c,v 1.12 2021/01/27 01:58:15 thorpej Exp $");
 
 #include 
 #include 
@@ -163,7 +163,7 @@ static const struct device_compatible_en
 	{ .compat = "nvidia,tegra124-soctherm",
 	  .data = _soctherm_config },
 
-	{ }
+	DEVICE_COMPAT_EOL
 };
 
 static int

Index: src/sys/arch/arm/nvidia/tegra_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.24 src/sys/arch/arm/nvidia/tegra_xusb.c:1.25
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.24	Mon Jan 25 14:20:38 2021
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Wed Jan 27 01:58:15 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.24 2021/01/25 14:20:38 thorpej Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.25 2021/01/27 01:58:15 thorpej Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.24 2021/01/25 14:20:38 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.25 2021/01/27 01:58:15 thorpej Exp $");
 
 #include 
 #include 
@@ -148,7 +148,7 @@ struct tegra_xhci_data tegra210_xhci_dat
 static const struct device_compatible_entry compat_data[] = {
 	{ .compat = "nvidia,tegra124-xusb", .data = _xhci_data },
 	{ .compat = "nvidia,tegra210-xusb", .data = _xhci_data },
-	{ }
+	DEVICE_COMPAT_EOL
 };
 
 struct fw_dma {



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

2021-01-18 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Tue Jan 19 00:36:09 UTC 2021

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

Log Message:
Use device_compatible_entry / of_search_compatible() rather than
matching against multiple sets of compatinbility strings.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.32 src/sys/arch/arm/nvidia/tegra_pcie.c:1.33
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.32	Fri Jan 15 23:11:59 2021
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Tue Jan 19 00:36:09 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.32 2021/01/15 23:11:59 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.33 2021/01/19 00:36:09 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.32 2021/01/15 23:11:59 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.33 2021/01/19 00:36:09 thorpej Exp $");
 
 #include 
 
@@ -65,6 +65,11 @@ static void	tegra_pcie_attach(device_t, 
 #define TEGRA_PCIE_NBUS 256
 #define TEGRA_PCIE_ECFB (1<<(12 - 8))	/* extended conf frags per bus */
 
+enum tegra_pcie_type {
+	TEGRA_PCIE_124		= 0,
+	TEGRA_PCIE_210		= 1,
+};
+
 struct tegra_pcie_ih {
 	int			(*ih_callback)(void *);
 	void			*ih_arg;
@@ -81,6 +86,7 @@ struct tegra_pcie_softc {
 	bus_space_handle_t	sc_bsh_pads;
 	bus_space_handle_t	sc_bsh_rpconf;
 	int			sc_phandle;
+	enum tegra_pcie_type	sc_type;
 
 	struct arm32_pci_chipset sc_pc;
 
@@ -130,17 +136,18 @@ static void	tegra_pcie_intr_disestablish
 CFATTACH_DECL_NEW(tegra_pcie, sizeof(struct tegra_pcie_softc),
 	tegra_pcie_match, tegra_pcie_attach, NULL, NULL);
 
+static const struct device_compatible_entry compat_data[] = {
+	{ .compat = "nvidia,tegra210-pcie",	.value = TEGRA_PCIE_210 },
+	{ .compat = "nvidia,tegra124-pcie",	.value = TEGRA_PCIE_124 },
+	{ 0 }
+};
+
 static int
 tegra_pcie_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = {
-		"nvidia,tegra210-pcie",
-		"nvidia,tegra124-pcie",
-		NULL
-	};
 	struct fdt_attach_args * const faa = aux;
 
-	return of_match_compatible(faa->faa_phandle, compatible);
+	return of_match_compat_data(faa->faa_phandle, compat_data);
 }
 
 static void
@@ -148,6 +155,7 @@ tegra_pcie_attach(device_t parent, devic
 {
 	struct tegra_pcie_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
+	const struct device_compatible_entry *dce;
 	struct pciconf_resources *pcires;
 	struct pcibus_attach_args pba;
 	bus_addr_t afi_addr, cs_addr, pads_addr;
@@ -196,6 +204,10 @@ tegra_pcie_attach(device_t parent, devic
 		return;
 	}
 
+	dce = of_search_compatible(faa->faa_phandle, compat_data);
+	KASSERT(dce != NULL);
+	sc->sc_type = dce->value;
+
 	tegra_pcie_conf_map_buses(sc);
 
 	TAILQ_INIT(>sc_intrs);
@@ -463,14 +475,14 @@ tegra_pcie_setup(struct tegra_pcie_softc
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_PCIE_CONFIG_REG, cfg);
 
 	/* Configure refclk pad */
-	const char * const tegra124_compat[] = { "nvidia,tegra124-pcie", NULL };
-	if (of_match_compatible(sc->sc_phandle, tegra124_compat))
-		bus_space_write_4(sc->sc_bst, sc->sc_bsh_pads, PADS_REFCLK_CFG0_REG,
-		0x44ac44ac);
-	const char * const tegra210_compat[] = { "nvidia,tegra210-pcie", NULL };
-	if (of_match_compatible(sc->sc_phandle, tegra210_compat))
-		bus_space_write_4(sc->sc_bst, sc->sc_bsh_pads, PADS_REFCLK_CFG0_REG,
-		0x90b890b8);
+	if (sc->sc_type == TEGRA_PCIE_124) {
+		bus_space_write_4(sc->sc_bst, sc->sc_bsh_pads,
+		PADS_REFCLK_CFG0_REG, 0x44ac44ac);
+	}
+	if (sc->sc_type == TEGRA_PCIE_210) {
+		bus_space_write_4(sc->sc_bst, sc->sc_bsh_pads,
+		PADS_REFCLK_CFG0_REG, 0x90b890b8);
+	}
 
 	/*
 	 * Map PCI address spaces into ARM address space via



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

2021-01-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Jan 15 23:11:59 UTC 2021

Modified Files:
src/sys/arch/arm/nvidia: tegra_ahcisata.c tegra_apbdma.c tegra_cec.c
tegra_com.c tegra_drm_mode.c tegra_ehci.c tegra_hdaudio.c
tegra_i2c.c tegra_mc.c tegra_nouveau.c tegra_pcie.c tegra_sdhc.c
tegra_xusb.c

Log Message:
use fdtbus_intr_establish_xname


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_ahcisata.c \
src/sys/arch/arm/nvidia/tegra_com.c \
src/sys/arch/arm/nvidia/tegra_hdaudio.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_apbdma.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_cec.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_drm_mode.c
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_ehci.c
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/nvidia/tegra_i2c.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_mc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_nouveau.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/arm/nvidia/tegra_pcie.c
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/nvidia/tegra_sdhc.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_xusb.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.13 src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.14
--- src/sys/arch/arm/nvidia/tegra_ahcisata.c:1.13	Mon Dec 28 14:08:42 2020
+++ src/sys/arch/arm/nvidia/tegra_ahcisata.c	Fri Jan 15 23:11:59 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ahcisata.c,v 1.13 2020/12/28 14:08:42 jmcneill Exp $ */
+/* $NetBSD: tegra_ahcisata.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.13 2020/12/28 14:08:42 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_ahcisata.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $");
 
 #include 
 #include 
@@ -231,8 +231,8 @@ tegra_ahcisata_attach(device_t parent, d
 		return;
 	}
 
-	sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_BIO, 0,
-	ahci_intr, >sc);
+	sc->sc_ih = fdtbus_intr_establish_xname(phandle, 0, IPL_BIO, 0,
+	ahci_intr, >sc, device_xname(self));
 	if (sc->sc_ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt on %s\n",
 		intrstr);
Index: src/sys/arch/arm/nvidia/tegra_com.c
diff -u src/sys/arch/arm/nvidia/tegra_com.c:1.13 src/sys/arch/arm/nvidia/tegra_com.c:1.14
--- src/sys/arch/arm/nvidia/tegra_com.c:1.13	Mon Sep 28 11:54:23 2020
+++ src/sys/arch/arm/nvidia/tegra_com.c	Fri Jan 15 23:11:59 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_com.c,v 1.13 2020/09/28 11:54:23 jmcneill Exp $ */
+/* $NetBSD: tegra_com.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.13 2020/09/28 11:54:23 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $");
 
 #include 
 #include 
@@ -130,8 +130,8 @@ tegra_com_attach(device_t parent, device
 		return;
 	}
 
-	tsc->tsc_ih = fdtbus_intr_establish(faa->faa_phandle, 0, IPL_SERIAL,
-	FDT_INTR_MPSAFE, comintr, sc);
+	tsc->tsc_ih = fdtbus_intr_establish_xname(faa->faa_phandle, 0,
+	IPL_SERIAL, FDT_INTR_MPSAFE, comintr, sc, device_xname(self));
 	if (tsc->tsc_ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt on %s\n",
 		intrstr);
Index: src/sys/arch/arm/nvidia/tegra_hdaudio.c
diff -u src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.13 src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.14
--- src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.13	Sun Oct 13 06:11:31 2019
+++ src/sys/arch/arm/nvidia/tegra_hdaudio.c	Fri Jan 15 23:11:59 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdaudio.c,v 1.13 2019/10/13 06:11:31 skrll Exp $ */
+/* $NetBSD: tegra_hdaudio.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_hdaudio.c,v 1.13 2019/10/13 06:11:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_hdaudio.c,v 1.14 2021/01/15 23:11:59 jmcneill Exp $");
 
 #include 
 #include 
@@ -165,8 +165,8 @@ tegra_hdaudio_attach(device_t parent, de
 		return;
 	}
 
-	sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_AUDIO, 0,
-	tegra_hdaudio_intr, sc);
+	sc->sc_ih = fdtbus_intr_establish_xname(phandle, 0, IPL_AUDIO, 0,
+	tegra_hdaudio_intr, sc, device_xname(self));
 	if (sc->sc_ih == NULL) {
 		aprint_error_dev(self, "couldn't establish interrupt on %s\n",
 		intrstr);

Index: src/sys/arch/arm/nvidia/tegra_apbdma.c
diff -u src/sys/arch/arm/nvidia/tegra_apbdma.c:1.7 src/sys/arch/arm/nvidia/tegra_apbdma.c:1.8
--- src/sys/arch/arm/nvidia/tegra_apbdma.c:1.7	Sun Oct 13 06:11:31 2019
+++ 

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

2020-10-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Oct 15 09:33:17 UTC 2020

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

Log Message:
Initialise xhci_softc sc_ios


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.20 src/sys/arch/arm/nvidia/tegra_xusb.c:1.21
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.20	Sat Aug 29 19:06:17 2020
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Thu Oct 15 09:33:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.20 2020/08/29 19:06:17 jakllsch Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.21 2020/10/15 09:33:17 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.20 2020/08/29 19:06:17 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.21 2020/10/15 09:33:17 jmcneill Exp $");
 
 #include 
 #include 
@@ -243,6 +243,7 @@ tegra_xusb_attach(device_t parent, devic
 		return;
 	}
 	DPRINTF(sc->sc_dev, "mapped %#" PRIxBUSADDR "\n", addr);
+	sc->sc_ios = size;
 
 	if (fdtbus_get_reg_byname(faa->faa_phandle, "fpci", , ) != 0) {
 		aprint_error(": couldn't get registers\n");



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

2020-09-14 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Sep 14 07:27:19 UTC 2020

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

Log Message:
Trailing whitespace.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 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.26 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.27
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.26	Sun Mar  1 16:38:59 2020
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Mon Sep 14 07:27:19 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.26 2020/03/01 16:38:59 skrll Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.27 2020/09/14 07:27:19 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.26 2020/03/01 16:38:59 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.27 2020/09/14 07:27:19 skrll Exp $");
 
 #include 
 #include 
@@ -158,7 +158,7 @@ tegra_sdhc_attach(device_t parent, devic
 	if (sc->sc_pin_power)
 		fdtbus_gpio_write(sc->sc_pin_power, 1);
 
-	sc->sc_pin_cd = fdtbus_gpio_acquire(faa->faa_phandle, 
+	sc->sc_pin_cd = fdtbus_gpio_acquire(faa->faa_phandle,
 	"cd-gpios", GPIO_PIN_INPUT);
 	sc->sc_pin_wp = fdtbus_gpio_acquire(faa->faa_phandle,
 	"wp-gpios", GPIO_PIN_INPUT);



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

2020-08-25 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 25 13:33:43 UTC 2020

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

Log Message:
Protect tegra124_cpu_init_cpufreq against being run more than once.

config_finalize will call all config_finalize_register functions until
all registered functions return 0.  rf_autoconfig currently returns 1
which means tegra124_cpu_init_cpufreq would get called multiple times.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra124_cpu.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/tegra124_cpu.c
diff -u src/sys/arch/arm/nvidia/tegra124_cpu.c:1.4 src/sys/arch/arm/nvidia/tegra124_cpu.c:1.5
--- src/sys/arch/arm/nvidia/tegra124_cpu.c:1.4	Fri Jun  2 00:09:56 2017
+++ src/sys/arch/arm/nvidia/tegra124_cpu.c	Tue Aug 25 13:33:43 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_cpu.c,v 1.4 2017/06/02 00:09:56 jmcneill Exp $ */
+/* $NetBSD: tegra124_cpu.c,v 1.5 2020/08/25 13:33:43 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_cpu.c,v 1.4 2017/06/02 00:09:56 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_cpu.c,v 1.5 2020/08/25 13:33:43 skrll Exp $");
 
 #include 
 #include 
@@ -140,9 +140,14 @@ tegra124_cpu_attach(device_t parent, dev
 	config_finalize_register(self, tegra124_cpu_init_cpufreq);
 }
 
+static bool tegra124_cpu_init_done = false;
+
 static int
 tegra124_cpu_init_cpufreq(device_t dev)
 {
+	if (tegra124_cpu_init_done)
+		return 0;
+
 	tegra124_speedo_init();
 
 	int cpu_node = OF_finddevice("/cpus/cpu@0");
@@ -162,6 +167,8 @@ tegra124_cpu_init_cpufreq(device_t dev)
 
 	tegra_cpufreq_register(_cpufreq_func);
 
+	tegra124_cpu_init_done = true;
+
 	return 0;
 }
 



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

2020-08-21 Thread Valeriy E. Ushakov
Module Name:src
Committed By:   uwe
Date:   Fri Aug 21 23:30:03 UTC 2020

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

Log Message:
#ifdef consistency.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/nvidia/tegra_platform.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_platform.c
diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.22 src/sys/arch/arm/nvidia/tegra_platform.c:1.23
--- src/sys/arch/arm/nvidia/tegra_platform.c:1.22	Fri Jul 10 12:25:09 2020
+++ src/sys/arch/arm/nvidia/tegra_platform.c	Fri Aug 21 23:30:02 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_platform.c,v 1.22 2020/07/10 12:25:09 skrll Exp $ */
+/* $NetBSD: tegra_platform.c,v 1.23 2020/08/21 23:30:02 uwe Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -34,7 +34,7 @@
 #include "ukbd.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.22 2020/07/10 12:25:09 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.23 2020/08/21 23:30:02 uwe Exp $");
 
 #include 
 #include 
@@ -86,6 +86,7 @@ tegra_platform_early_putchar(char c)
 #endif
 }
 
+#if defined(SOC_TEGRA124) || defined(SOC_TEGRA210)
 static const struct pmap_devmap *
 tegra_platform_devmap(void)
 {
@@ -107,6 +108,7 @@ tegra_platform_devmap(void)
 
 	return devmap;
 }
+#endif	/* SOC_TEGRA124 || SOC_TEGRA210 */
 
 #if defined(SOC_TEGRA124)
 static void
@@ -133,6 +135,7 @@ tegra210_platform_bootstrap(void)
 }
 #endif
 
+#if defined(SOC_TEGRA124) || defined(SOC_TEGRA210)
 static void
 tegra_platform_init_attach_args(struct fdt_attach_args *faa)
 {
@@ -212,6 +215,7 @@ tegra_platform_uart_freq(void)
 {
 	return PLLP_OUT0_FREQ;
 }
+#endif	/* SOC_TEGRA124 || SOC_TEGRA210 */
 
 #if defined(SOC_TEGRA124)
 static const struct arm_platform tegra124_platform = {



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

2020-08-12 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Aug 12 10:21:00 UTC 2020

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

Log Message:
Add CEC clock


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra124_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.20 src/sys/arch/arm/nvidia/tegra124_car.c:1.21
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.20	Thu Apr 30 03:40:52 2020
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Wed Aug 12 10:21:00 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.20 2020/04/30 03:40:52 riastradh Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.21 2020/08/12 10:21:00 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.20 2020/04/30 03:40:52 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.21 2020/08/12 10:21:00 jmcneill Exp $");
 
 #include 
 #include 
@@ -151,6 +151,7 @@ static struct tegra124_car_clock_id {
 	{ 127, "se" },
 	{ 128, "hda2hdmi" },
 	{ 129, "sata_cold" },
+	{ 136, "cec" },
 	{ 144, "cilab" },
 	{ 145, "cilcd" },
 	{ 146, "cile" },
@@ -631,6 +632,7 @@ static struct tegra_clk tegra124_car_clo
 	CLK_GATE_V("hda2codec_2x", "div_hda2codec_2x", CAR_DEV_V_HDA2CODEC_2X),
 	CLK_GATE_V("hda", "div_hda", CAR_DEV_V_HDA),
 	CLK_GATE_W("hda2hdmi", "clk_m", CAR_DEV_W_HDA2HDMICODEC),
+	CLK_GATE_W("cec", "clk_m", CAR_DEV_W_CEC),
 	CLK_GATE_H("fuse", "clk_m", CAR_DEV_H_FUSE),
 	CLK_GATE_U("soc_therm", "div_soc_therm", CAR_DEV_U_SOC_THERM),
 	CLK_GATE_V("mselect", "div_mselect", CAR_DEV_V_MSELECT),



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

2020-07-08 Thread Valeriy E. Ushakov
Module Name:src
Committed By:   uwe
Date:   Wed Jul  8 22:28:21 UTC 2020

Modified Files:
src/sys/arch/arm/nvidia: files.tegra

Log Message:
tegra_xusb depends on firmload.

Make the dependency explicit, do not rely on some random USB device to
pull it in.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/arm/nvidia/files.tegra

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.50 src/sys/arch/arm/nvidia/files.tegra:1.51
--- src/sys/arch/arm/nvidia/files.tegra:1.50	Sat Jul 27 14:05:04 2019
+++ src/sys/arch/arm/nvidia/files.tegra	Wed Jul  8 22:28:21 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.50 2019/07/27 14:05:04 skrll Exp $
+#	$NetBSD: files.tegra,v 1.51 2020/07/08 22:28:21 uwe Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -105,7 +105,7 @@ attach	ehci at fdt with tegra_ehci
 file	arch/arm/nvidia/tegra_ehci.c		tegra_ehci
 
 # XUSB (USB 3.0)
-attach	xhci at fdt with tegra_xusb
+attach	xhci at fdt with tegra_xusb : firmload
 file	arch/arm/nvidia/tegra_xusb.c		tegra_xusb
 defflag	opt_tegra.hTEGRA_XUSB_DEBUG
 



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

2020-03-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Mar  1 16:38:59 UTC 2020

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

Log Message:
bus_dmatag_subregion isn't supported on (compiled into) arm so ifdef its
use in previous.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 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.25 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.26
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.25	Sat Feb 15 12:45:05 2020
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sun Mar  1 16:38:59 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.25 2020/02/15 12:45:05 skrll Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.26 2020/03/01 16:38:59 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.25 2020/02/15 12:45:05 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.26 2020/03/01 16:38:59 skrll Exp $");
 
 #include 
 #include 
@@ -111,13 +111,16 @@ tegra_sdhc_attach(device_t parent, devic
 		bus_width = 4;
 
 	sc->sc.sc_dev = self;
+	sc->sc.sc_dmat = faa->faa_dmat;
 
+#ifdef _LP64
 	error = bus_dmatag_subregion(faa->faa_dmat, 0, 0x,
 	>sc.sc_dmat, BUS_DMA_WAITOK);
 	if (error != 0) {
 		aprint_error(": couldn't create DMA tag: %d\n", error);
 		return;
 	}
+#endif
 
 	sc->sc.sc_flags = SDHC_FLAG_32BIT_ACCESS |
 			  SDHC_FLAG_NO_PWR0 |



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

2020-02-15 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Feb 15 12:45:05 UTC 2020

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

Log Message:
Need to limit the DMA range for tx1.  Assume 32bit DMA everywhere for now.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 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.24 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.25
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.24	Sun Oct 13 06:11:31 2019
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sat Feb 15 12:45:05 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.24 2019/10/13 06:11:31 skrll Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.25 2020/02/15 12:45:05 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.24 2019/10/13 06:11:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.25 2020/02/15 12:45:05 skrll Exp $");
 
 #include 
 #include 
@@ -111,7 +111,14 @@ tegra_sdhc_attach(device_t parent, devic
 		bus_width = 4;
 
 	sc->sc.sc_dev = self;
-	sc->sc.sc_dmat = faa->faa_dmat;
+
+	error = bus_dmatag_subregion(faa->faa_dmat, 0, 0x,
+	>sc.sc_dmat, BUS_DMA_WAITOK);
+	if (error != 0) {
+		aprint_error(": couldn't create DMA tag: %d\n", error);
+		return;
+	}
+
 	sc->sc.sc_flags = SDHC_FLAG_32BIT_ACCESS |
 			  SDHC_FLAG_NO_PWR0 |
 			  SDHC_FLAG_NO_CLKBASE |



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

2019-12-22 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Sun Dec 22 23:40:49 UTC 2019

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

Log Message:
Use a separate lock (not the i2c bus lock) to synchronize with the
interrupt handler.  This in all liklihood fixes a deadlock bug that
necessitated forcing I2C_F_POLL in tegra_i2c_exec() (someone who has
the hardware should test removing that line).

Also includes the changes for:

Cleanup i2c bus acquire / release, centralizing all of the logic into
iic_acquire_bus() / iic_release_bus().  "acquire" and "release" hooks
no longer need to be provided by back-end controller drivers (only if
they need special handling, e.g. powering on the i2c controller).
This results in the removal of a bunch of rendundant code from each
back-end controller driver.

Assert that we are not in hard interrupt context in iic_acquire_bus(),
iic_exec(), and iic_release_bus().


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 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.22 src/sys/arch/arm/nvidia/tegra_i2c.c:1.23
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.22	Tue Sep 25 22:23:22 2018
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sun Dec 22 23:40:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.22 2018/09/25 22:23:22 jmcneill Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.23 2019/12/22 23:40:49 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.22 2018/09/25 22:23:22 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.23 2019/12/22 23:40:49 thorpej Exp $");
 
 #include 
 #include 
@@ -63,15 +63,13 @@ struct tegra_i2c_softc {
 	u_int			sc_cid;
 
 	struct i2c_controller	sc_ic;
-	kmutex_t		sc_lock;
-	kcondvar_t		sc_cv;
+	kmutex_t		sc_intr_lock;
+	kcondvar_t		sc_intr_wait;
 };
 
 static void	tegra_i2c_init(struct tegra_i2c_softc *);
 static int	tegra_i2c_intr(void *);
 
-static int	tegra_i2c_acquire_bus(void *, int);
-static void	tegra_i2c_release_bus(void *, int);
 static int	tegra_i2c_exec(void *, i2c_op_t, i2c_addr_t, const void *,
 			   size_t, void *, size_t, int);
 
@@ -140,8 +138,8 @@ tegra_i2c_attach(device_t parent, device
 		addr, error);
 		return;
 	}
-	mutex_init(>sc_lock, MUTEX_DEFAULT, IPL_VM);
-	cv_init(>sc_cv, device_xname(self));
+	mutex_init(>sc_intr_lock, MUTEX_DEFAULT, IPL_VM);
+	cv_init(>sc_intr_wait, device_xname(self));
 
 	aprint_naive("\n");
 	aprint_normal(": I2C\n");
@@ -177,11 +175,12 @@ tegra_i2c_attach(device_t parent, device
 	}
 	fdtbus_reset_deassert(sc->sc_rst);
 
+	mutex_enter(>sc_intr_lock);
 	tegra_i2c_init(sc);
+	mutex_exit(>sc_intr_lock);
 
+	iic_tag_init(>sc_ic);
 	sc->sc_ic.ic_cookie = sc;
-	sc->sc_ic.ic_acquire_bus = tegra_i2c_acquire_bus;
-	sc->sc_ic.ic_release_bus = tegra_i2c_release_bus;
 	sc->sc_ic.ic_exec = tegra_i2c_exec;
 
 	fdtbus_register_i2c_controller(self, phandle, _i2c_funcs);
@@ -236,48 +235,34 @@ tegra_i2c_intr(void *priv)
 		return 0;
 	I2C_WRITE(sc, I2C_INTERRUPT_STATUS_REG, istatus);
 
-	mutex_enter(>sc_lock);
-	cv_broadcast(>sc_cv);
-	mutex_exit(>sc_lock);
+	mutex_enter(>sc_intr_lock);
+	cv_broadcast(>sc_intr_wait);
+	mutex_exit(>sc_intr_lock);
 
 	return 1;
 }
 
 static int
-tegra_i2c_acquire_bus(void *priv, int flags)
-{
-	struct tegra_i2c_softc * const sc = priv;
-
-	mutex_enter(>sc_lock);
-
-	return 0;
-}
-
-static void
-tegra_i2c_release_bus(void *priv, int flags)
-{
-	struct tegra_i2c_softc * const sc = priv;
-
-	mutex_exit(>sc_lock);
-}
-
-static int
 tegra_i2c_exec(void *priv, i2c_op_t op, i2c_addr_t addr, const void *cmdbuf,
 size_t cmdlen, void *buf, size_t buflen, int flags)
 {
 	struct tegra_i2c_softc * const sc = priv;
 	int retry, error;
 
-#if notyet
-	if (cold)
-#endif
-		flags |= I2C_F_POLL;
-
-	KASSERT(mutex_owned(>sc_lock));
+	/*
+	 * XXXJRT This is probably no longer necessary?  Before these
+	 * changes, the bus lock was also used for the interrupt handler,
+	 * and there would be a deadlock when the interrupt handler tried to
+	 * acquire it again.  The bus lock is now owned by the mid-layer and
+	 * we have our own interrupt lock.
+	 */
+	flags |= I2C_F_POLL;
 
 	if (buflen == 0 && cmdlen == 0)
 		return EINVAL;
 
+	mutex_enter(>sc_intr_lock);
+
 	if ((flags & I2C_F_POLL) == 0) {
 		I2C_WRITE(sc, I2C_INTERRUPT_MASK_REG,
 		I2C_INTERRUPT_MASK_NOACK | I2C_INTERRUPT_MASK_ARB_LOST |
@@ -296,6 +281,7 @@ tegra_i2c_exec(void *priv, i2c_op_t op, 
 		delay(1);
 	}
 	if (retry == 0) {
+		mutex_exit(>sc_intr_lock);
 		device_printf(sc->sc_dev, "timeout flushing FIFO\n");
 		return EIO;
 	}
@@ -325,6 +311,8 @@ done:
 		tegra_i2c_init(sc);
 	}
 
+	mutex_exit(>sc_intr_lock);
+
 	return error;
 }
 
@@ -338,8 +326,9 @@ tegra_i2c_wait(struct tegra_i2c_softc *s
 
 	while (--retry 

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

2019-03-12 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Tue Mar 12 18:46:20 UTC 2019

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

Log Message:
Fix paste-o in an error path diagnostic message.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.25 src/sys/arch/arm/nvidia/tegra_pcie.c:1.26
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.25	Fri Nov 16 15:06:22 2018
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Tue Mar 12 18:46:20 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.25 2018/11/16 15:06:22 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.26 2019/03/12 18:46:20 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.25 2018/11/16 15:06:22 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.26 2019/03/12 18:46:20 jakllsch Exp $");
 
 #include 
 #include 
@@ -185,7 +185,7 @@ tegra_pcie_attach(device_t parent, devic
 	error = bus_space_map(sc->sc_bst, pads_addr, pads_size, 0,
 	>sc_bsh_pads);
 	if (error) {
-		aprint_error(": couldn't map afi registers: %d\n", error);
+		aprint_error(": couldn't map pads registers: %d\n", error);
 		return;
 	}
 	error = bus_space_map(sc->sc_bst, cs_addr, cs_size, 0,



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

2019-03-09 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Sat Mar  9 19:41:26 UTC 2019

Modified Files:
src/sys/arch/arm/nvidia: tegra124_car.c tegra124_carreg.h

Log Message:
Add Tegra124 "mselect" clock and two PCIe-related clocks it sources.

With mainline u-boot (not starting the pci subsystem in the firmware):
Gets to a root prompt instead of hanging during tegrapcie attach, but
PCIe remains non-functional without a modern "xusbpad" phy driver for
Tegra124 (needed to configure the lane map).


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra124_car.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra124_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.16 src/sys/arch/arm/nvidia/tegra124_car.c:1.17
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.16	Wed Sep 26 22:32:46 2018
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Sat Mar  9 19:41:26 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.16 2018/09/26 22:32:46 jmcneill Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.17 2019/03/09 19:41:26 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.16 2018/09/26 22:32:46 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.17 2019/03/09 19:41:26 jakllsch Exp $");
 
 #include 
 #include 
@@ -403,6 +403,9 @@ static const char *mux_sata_p[] =
 static const char *mux_hda_p[] =
 	{ "pll_p_out0", "pll_c2_out0", "pll_c_out0", "pll_c3_out0",
 	  "pll_m_out0", NULL, "clk_m" };
+static const char *mux_mselect_p[] =
+	{ "pll_p_out0", "pll_c2_out0", "pll_c_out0", "pll_c3_out0",
+	  "pll_m_out0", "clk_s", "clk_m" };
 static const char *mux_tsensor_p[] =
 	{ "pll_p_out0", "pll_c2_out0", "pll_c_out0", "pll_c3_out0", "clk_m",
 	  NULL, "clk_s" };
@@ -497,6 +500,9 @@ static struct tegra_clk tegra124_car_clo
 	CLK_MUX("mux_soc_therm",
 		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_SRC,
 		mux_soc_therm_p),
+	CLK_MUX("mux_mselect",
+		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_SRC,
+		mux_mselect_p),
 	CLK_MUX("mux_tsensor",
 		CAR_CLKSRC_TSENSOR_REG, CAR_CLKSRC_TSENSOR_SRC,
 		mux_tsensor_p),
@@ -575,6 +581,8 @@ static struct tegra_clk tegra124_car_clo
 		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_DIV),
 	CLK_DIV("div_soc_therm", "mux_soc_therm",
 		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_DIV),
+	CLK_DIV("div_mselect", "mux_mselect",
+		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_DIV),
 	CLK_DIV("div_tsensor", "mux_tsensor",
 		CAR_CLKSRC_TSENSOR_REG, CAR_CLKSRC_TSENSOR_DIV),
 	CLK_DIV("div_host1x", "mux_host1x",
@@ -626,6 +634,7 @@ static struct tegra_clk tegra124_car_clo
 	CLK_GATE_W("hda2hdmi", "clk_m", CAR_DEV_W_HDA2HDMICODEC),
 	CLK_GATE_H("fuse", "clk_m", CAR_DEV_H_FUSE),
 	CLK_GATE_U("soc_therm", "div_soc_therm", CAR_DEV_U_SOC_THERM),
+	CLK_GATE_V("mselect", "div_mselect", CAR_DEV_V_MSELECT),
 	CLK_GATE_V("tsensor", "div_tsensor", CAR_DEV_V_TSENSOR),
 	CLK_GATE_L("host1x", "div_host1x", CAR_DEV_L_HOST1X),
 	CLK_GATE_L("disp1", "mux_disp1", CAR_DEV_L_DISP1),
@@ -637,6 +646,8 @@ static struct tegra_clk tegra124_car_clo
 	CLK_GATE_W("xusb_ss", "xusb_ss_src", CAR_DEV_W_XUSB_SS),
 	CLK_GATE_X("gpu", "pll_ref", CAR_DEV_X_GPU),
 	CLK_GATE_H("apbdma", "clk_m", CAR_DEV_H_APBDMA),
+	CLK_GATE_U("pcie", "mselect", CAR_DEV_U_PCIE),
+	CLK_GATE_U("afi", "mselect", CAR_DEV_U_AFI),
 };
 
 struct tegra124_init_parent {

Index: src/sys/arch/arm/nvidia/tegra124_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra124_carreg.h:1.6 src/sys/arch/arm/nvidia/tegra124_carreg.h:1.7
--- src/sys/arch/arm/nvidia/tegra124_carreg.h:1.6	Fri Jul 21 01:01:22 2017
+++ src/sys/arch/arm/nvidia/tegra124_carreg.h	Sat Mar  9 19:41:26 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_carreg.h,v 1.6 2017/07/21 01:01:22 jmcneill Exp $ */
+/* $NetBSD: tegra124_carreg.h,v 1.7 2019/03/09 19:41:26 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -427,6 +427,10 @@
 #define CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_CLKM		0
 #define CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_PLLX_OUT0_LJ	8
 
+#define CAR_CLKSRC_MSELECT_REG		0x3b4
+#define CAR_CLKSRC_MSELECT_SRC		__BITS(31,29)
+#define CAR_CLKSRC_MSELECT_DIV		__BITS(7,0)
+
 #define CAR_CLKSRC_TSENSOR_REG		0x3b8
 #define CAR_CLKSRC_TSENSOR_SRC		__BITS(31,29)
 #define CAR_CLKSRC_TSENSOR_SRC_CLK_M	4



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

2019-01-31 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Jan 31 13:19:19 UTC 2019

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

Log Message:
Fix another build


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 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.20 src/sys/arch/arm/nvidia/soc_tegra124.c:1.21
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.20	Thu Jan 31 13:06:10 2019
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Thu Jan 31 13:19:19 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.20 2019/01/31 13:06:10 skrll Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.21 2019/01/31 13:19:19 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.20 2019/01/31 13:06:10 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.21 2019/01/31 13:19:19 skrll Exp $");
 
 #include 
 #include 
@@ -84,7 +84,7 @@ tegra124_mpstart(void)
 	}
 	if (i == 0) {
 		ret++;
-		aprint_error("cpu%d: WARNING: AP failed to start\n", i;
+		aprint_error("cpu%d: WARNING: AP failed to start\n", i);
 	}
 #endif
 	return ret;



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

2019-01-08 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Tue Jan  8 18:04:00 UTC 2019

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

Log Message:
Make TEGRA124_XUSB_BIN_STATIC and TEGRA210_XUSB_BIN_STATIC compile again.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.16 src/sys/arch/arm/nvidia/tegra_xusb.c:1.17
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.16	Fri Dec 14 18:17:36 2018
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Tue Jan  8 18:04:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.16 2018/12/14 18:17:36 skrll Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.17 2019/01/08 18:04:00 jakllsch Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.16 2018/12/14 18:17:36 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.17 2019/01/08 18:04:00 jakllsch Exp $");
 
 #include 
 #include 
@@ -701,7 +701,6 @@ free:
 	return err;
 }
 
-#if !defined(TEGRA124_XUSB_BIN_STATIC)
 static void
 fw_dma_free(struct tegra_xusb_softc * const psc, struct fw_dma * const p)
 {
@@ -713,7 +712,6 @@ fw_dma_free(struct tegra_xusb_softc * co
 	bus_dmamem_unmap(dmat, p->addr, p->size);
 	bus_dmamem_free(dmat, p->segs, p->nsegs);
 }
-#endif
 
 #define FWHEADER_BOOT_CODETAG 8
 #define FWHEADER_BOOT_CODESIZE 12
@@ -735,7 +733,7 @@ tegra_xusb_open_fw(struct tegra_xusb_sof
 	case XUSB_T124:
 #if defined(TEGRA124_XUSB_BIN_STATIC)
 		firmware_size = (uintptr_t)&_binary_tegra124_xusb_bin_size;
-		fw_static = _binary_tegra124_xusb_bin_start;
+		fw_static = __UNCONST(_binary_tegra124_xusb_bin_start);
 #else
 		fw_path = "nvidia/tegra124";
 #endif
@@ -743,7 +741,7 @@ tegra_xusb_open_fw(struct tegra_xusb_sof
 	case XUSB_T210:
 #if defined(TEGRA210_XUSB_BIN_STATIC)
 		firmware_size = (uintptr_t)&_binary_tegra210_xusb_bin_size;
-		fw_static = _binary_tegra210_xusb_bin_start;
+		fw_static = __UNCONST(_binary_tegra210_xusb_bin_start);
 #else
 		fw_path = "nvidia/tegra210";
 #endif



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

2018-12-15 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Dec 15 13:17:12 UTC 2018

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

Log Message:
Add missing call to arm_fdt_cpu_mpstart, fixes SMP on Tegra X1


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_platform.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_platform.c
diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.18 src/sys/arch/arm/nvidia/tegra_platform.c:1.19
--- src/sys/arch/arm/nvidia/tegra_platform.c:1.18	Tue Oct 30 16:41:52 2018
+++ src/sys/arch/arm/nvidia/tegra_platform.c	Sat Dec 15 13:17:12 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_platform.c,v 1.18 2018/10/30 16:41:52 skrll Exp $ */
+/* $NetBSD: tegra_platform.c,v 1.19 2018/12/15 13:17:12 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -34,7 +34,7 @@
 #include "ukbd.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.18 2018/10/30 16:41:52 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.19 2018/12/15 13:17:12 jmcneill Exp $");
 
 #include 
 #include 
@@ -126,6 +126,10 @@ tegra210_platform_bootstrap(void)
 {
 
 	tegra_bootstrap();
+
+#if defined(MULTIPROCESSOR) && defined(__aarch64__)
+	arm_fdt_cpu_bootstrap();
+#endif
 }
 
 static void
@@ -133,7 +137,7 @@ tegra210_platform_mpstart(void)
 {
 
 #if defined(MULTIPROCESSOR) && defined(__aarch64__)
-	arm_fdt_cpu_bootstrap();
+	arm_fdt_cpu_mpstart();
 #endif
 }
 #endif



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

2018-12-14 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Dec 14 18:17:36 UTC 2018

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

Log Message:
Provide TEGRA210 supplies.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.15 src/sys/arch/arm/nvidia/tegra_xusb.c:1.16
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.15	Mon Jul 16 23:11:47 2018
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Fri Dec 14 18:17:36 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.15 2018/07/16 23:11:47 christos Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.16 2018/12/14 18:17:36 skrll Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.15 2018/07/16 23:11:47 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.16 2018/12/14 18:17:36 skrll Exp $");
 
 #include 
 #include 
@@ -88,9 +88,50 @@ enum xusb_type {
 	XUSB_T210
 };
 
+struct tegra_xhci_data {
+	enum xusb_type		txd_type;
+	const char * const *	txd_supplies;
+	size_t			txd_nsupplies;
+	bool			txd_scale_ss_clock;
+};
+
+const char *tegra124_xhci_supplies[] = {
+	"dvddio-pex-supply",
+	"hvddio-pex-supply",
+	"avdd-usb-supply",
+	"avdd-pll-utmip-supply",
+	"avdd-pll-uerefe-supply",
+	"dvdd-usb-ss-pll-supply",
+	"hvdd-usb-ss-pll-e-supply"
+};
+
+struct tegra_xhci_data tegra124_xhci_data = {
+	.txd_type = XUSB_T124,
+	.txd_supplies = tegra124_xhci_supplies,
+	.txd_nsupplies = __arraycount(tegra124_xhci_supplies),
+	.txd_scale_ss_clock = true,
+};
+
+const char *tegra210_xhci_supplies[] = {
+	"dvddio-pex",
+	"hvddio-pex",
+	"avdd-usb",
+	"avdd-pll-utmip",
+	"avdd-pll-uerefe",
+	"dvdd-pex-pll",
+	"hvdd-pex-pll-e",
+};
+
+struct tegra_xhci_data tegra210_xhci_data = {
+	.txd_type = XUSB_T210,
+	.txd_supplies = tegra210_xhci_supplies,
+	.txd_nsupplies = __arraycount(tegra210_xhci_supplies),
+	.txd_scale_ss_clock = false,
+};
+
 static const struct of_compat_data compat_data[] = {
-	{ "nvidia,tegra124-xusb",		XUSB_T124 },
-	{ "nvidia,tegra210-xusb",		XUSB_T210 },
+	{ "nvidia,tegra124-xusb", (uintptr_t)_xhci_data },
+	{ "nvidia,tegra210-xusb", (uintptr_t)_xhci_data },
 	{ NULL }
 };
 
@@ -112,15 +153,14 @@ struct tegra_xusb_softc {
 	void			*sc_ih_mbox;
 	struct fw_dma		sc_fw_dma;
 	struct clk		*sc_clk_ss_src;
-	enum xusb_type		sc_type;
 
-	bool			sc_scale_ss_clock;
+	struct tegra_xhci_data	*sc_txd;
 };
 
 static uint32_t	csb_read_4(struct tegra_xusb_softc * const, bus_size_t);
 static void	csb_write_4(struct tegra_xusb_softc * const, bus_size_t,
 uint32_t);
-	
+
 static void	tegra_xusb_init(struct tegra_xusb_softc * const);
 static int	tegra_xusb_open_fw(struct tegra_xusb_softc * const);
 static int	tegra_xusb_load_fw(struct tegra_xusb_softc * const, void *,
@@ -173,16 +213,9 @@ tegra_xusb_attach(device_t parent, devic
 	sc->sc_bus.ub_dmatag = faa->faa_dmat;
 	sc->sc_quirks = XHCI_DEFERRED_START;
 	psc->sc_phandle = faa->faa_phandle;
-	psc->sc_type = of_search_compatible(faa->faa_phandle, compat_data)->data;
 
-	switch (psc->sc_type) {
-	case XUSB_T124:
-		psc->sc_scale_ss_clock = true;
-		break;
-	default:
-		psc->sc_scale_ss_clock = false;
-		break;
-	}
+	uintptr_t data = of_search_compatible(faa->faa_phandle, compat_data)->data;
+	psc->sc_txd = (struct tegra_xhci_data *)data;
 
 	if (fdtbus_get_reg_byname(faa->faa_phandle, "hcd", , ) != 0) {
 		aprint_error(": couldn't get registers\n");
@@ -305,7 +338,7 @@ tegra_xusb_attach(device_t parent, devic
 	tegra_xusb_attach_check(sc, psc->sc_clk_ss_src == NULL,
 		"failed to get xusb_ss_src clock");
 
-	if (psc->sc_scale_ss_clock) {
+	if (psc->sc_txd->txd_scale_ss_clock) {
 		rate = clk_get_rate(psc->sc_clk_ss_src);
 		DPRINTF(sc->sc_dev, "xusb_ss_src rate %u\n", rate);
 		error = clk_set_rate(psc->sc_clk_ss_src, 200);
@@ -357,11 +390,11 @@ tegra_xusb_attach(device_t parent, devic
 	tegra_xusb_init(psc);
 
 #if defined(TEGRA124_XUSB_BIN_STATIC)
-	if (psc->sc_type == XUSB_T124)
+	if (psc->sc_txd->txd_type == XUSB_T124)
 		wait_for_root = false;
 #endif
 #if defined(TEGRA210_XUSB_BIN_STATIC)
-	if (psc->sc_type == XUSB_T210)
+	if (psc->sc_txd->txd_type == XUSB_T210)
 		wait_for_root = false;
 #endif
 
@@ -502,7 +535,7 @@ tegra_xusb_intr_mbox(void *v)
 		break;
 	case 4:
 	case 5:
-		if (psc->sc_scale_ss_clock) {
+		if (psc->sc_txd->txd_scale_ss_clock) {
 			DPRINTF(sc->sc_dev, "SSPI_CLOCK %u\n", data * 1000);
 			rate = clk_get_rate(psc->sc_clk_ss_src);
 			DPRINTF(sc->sc_dev, "rate of psc->sc_clk_ss_src %u\n",
@@ -517,7 +550,7 @@ tegra_xusb_intr_mbox(void *v)
 msg = __SHIFTIN(128, MAILBOX_DATA_TYPE) |
   __SHIFTIN(rate / 1000, MAILBOX_DATA_DATA);
 			} else
-clk_fail:	
+clk_fail:
 msg = __SHIFTIN(129, MAILBOX_DATA_TYPE) |
   

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

2018-12-14 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Dec 14 12:29:22 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h
tegra210_xusbpad.c tegra_ahcisata.c tegra_ahcisatareg.h tegra_var.h

Log Message:
Support SATA on TEGRA210

Thanks to jmcneill for help with this.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra210_carreg.h
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra210_xusbpad.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_ahcisata.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_ahcisatareg.h
cvs rdiff -u -r1.44 -r1.45 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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.22 src/sys/arch/arm/nvidia/tegra210_car.c:1.23
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.22	Wed Dec 12 09:55:34 2018
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Fri Dec 14 12:29:22 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.22 2018/12/12 09:55:34 skrll Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.23 2018/12/14 12:29:22 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.22 2018/12/12 09:55:34 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.23 2018/12/14 12:29:22 skrll Exp $");
 
 #include 
 #include 
@@ -457,6 +457,9 @@ static const char *mux_hda_p[] =
 	{ "PLL_P", "PLL_C2", "PLL_C", "PLL_C4_OUT0",
 	  NULL, "PLL_C4_OUT1", "CLK_M", "PLL_C4_OUT2" };
 
+static const char *mux_sata_p[] =
+	{ "PLL_P", NULL, "PLL_C", NULL, NULL, NULL, "CLK_M" };
+
 static struct tegra_clk tegra210_car_clocks[] = {
 	CLK_FIXED("CLK_M", TEGRA210_REF_FREQ),
 
@@ -536,6 +539,13 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_SRC,
 		mux_hda_p),
 
+	CLK_MUX("MUX_SATA_OOB",
+		CAR_CLKSRC_SATA_OOB_REG	, CAR_CLKSRC_SATA_OOB_SRC,
+		mux_sata_p),
+	CLK_MUX("MUX_SATA",
+		CAR_CLKSRC_SATA_REG, CAR_CLKSRC_SATA_SRC,
+		mux_sata_p),
+
 	CLK_DIV("DIV_UARTA", "MUX_UARTA",
 		CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_DIV),
 	CLK_DIV("DIV_UARTB", "MUX_UARTB",
@@ -595,6 +605,11 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_HDA", "MUX_HDA",
 		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_DIV),
 
+	CLK_DIV("DIV_SATA_OOB", "MUX_SATA_OOB",
+		CAR_CLKSRC_SATA_OOB_REG, CAR_CLKSRC_SATA_OOB_DIV),
+	CLK_DIV("DIV_SATA", "MUX_SATA",
+		CAR_CLKSRC_SATA_REG, CAR_CLKSRC_SATA_DIV),
+
 	CLK_GATE_SIMPLE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
 		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
 	CLK_GATE_SIMPLE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
@@ -636,6 +651,9 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_W("HDA2HDMI", "CLK_M", CAR_DEV_W_HDA2HDMICODEC),
 	CLK_GATE_V("HDA2CODEC_2X", "DIV_HDA2CODEC_2X", CAR_DEV_V_HDA2CODEC_2X),
 	CLK_GATE_V("HDA", "DIV_HDA", CAR_DEV_V_HDA),
+
+	CLK_GATE_V("SATA_OOB", "DIV_SATA_OOB", CAR_DEV_V_SATA_OOB),
+	CLK_GATE_V("SATA", "DIV_SATA", CAR_DEV_V_SATA),
 };
 
 struct tegra210_init_parent {
@@ -661,6 +679,8 @@ struct tegra210_init_parent {
 	{ "CML1",		NULL, 0, 0 },
 	{ "AFI",		NULL, 0, 1 },
 	{ "PCIE",		NULL, 0, 1 },
+	{ "SATA",		"PLL_P", 10400, 0 },
+	{ "SATA_OOB",		"PLL_P", 20400, 0 },
 };
 
 struct tegra210_car_rst {
@@ -1681,3 +1701,35 @@ tegra210_car_xusbio_enable_hw_seq(void)
 	tegra_reg_set_clear(bst, bsh, CAR_XUSBIO_PLL_CFG0_REG,
 	CAR_XUSBIO_PLL_CFG0_SEQ_ENABLE, 0);
 }
+
+void
+tegra210_car_sata_enable_hw_control(void)
+{
+	device_t dev = device_find_by_driver_unit("tegra210car", 0);
+	KASSERT(dev != NULL);
+	struct tegra210_car_softc * const sc = device_private(dev);
+	bus_space_tag_t bst = sc->sc_bst;
+	bus_space_handle_t bsh = sc->sc_bsh;
+
+	tegra_reg_set_clear(bst, bsh, CAR_SATA_PLL_CFG0_REG,
+	0,
+	CAR_SATA_PLL_CFG0_PADPLL_RESET_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_SATA_PLL_CFG0_REG,
+	CAR_SATA_PLL_CFG0_SEQ_PADPLL_SLEEP_IDDQ |
+	CAR_SATA_PLL_CFG0_PADPLL_USE_LOCKDET,
+	0);
+}
+
+void
+tegra210_car_sata_enable_hw_seq(void)
+{
+	device_t dev = device_find_by_driver_unit("tegra210car", 0);
+	KASSERT(dev != NULL);
+	struct tegra210_car_softc * const sc = device_private(dev);
+	bus_space_tag_t bst = sc->sc_bst;
+	bus_space_handle_t bsh = sc->sc_bsh;
+
+	tegra_reg_set_clear(bst, bsh, CAR_SATA_PLL_CFG0_REG,
+	CAR_SATA_PLL_CFG0_SEQ_ENABLE, 0);
+}
+

Index: src/sys/arch/arm/nvidia/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.8 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.9
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.8	Mon Sep 25 08:55:07 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Fri Dec 14 12:29:22 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.8 2017/09/25 08:55:07 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 

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

2018-12-12 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 12 09:55:34 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_xusbpad.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.21 src/sys/arch/arm/nvidia/tegra210_car.c:1.22
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.21	Wed Sep 26 22:33:35 2018
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Wed Dec 12 09:55:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.21 2018/09/26 22:33:35 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.22 2018/12/12 09:55:34 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.21 2018/09/26 22:33:35 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.22 2018/12/12 09:55:34 skrll Exp $");
 
 #include 
 #include 
@@ -554,17 +554,17 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_SDMMC4", "MUX_SDMMC4",
 		CAR_CLKSRC_SDMMC4_REG, CAR_CLKSRC_SDMMC_DIV),
 
-	CLK_DIV("DIV_I2C1", "MUX_I2C1", 
+	CLK_DIV("DIV_I2C1", "MUX_I2C1",
 		CAR_CLKSRC_I2C1_REG, CAR_CLKSRC_I2C_DIV),
-	CLK_DIV("DIV_I2C2", "MUX_I2C2", 
+	CLK_DIV("DIV_I2C2", "MUX_I2C2",
 		CAR_CLKSRC_I2C2_REG, CAR_CLKSRC_I2C_DIV),
-	CLK_DIV("DIV_I2C3", "MUX_I2C3", 
+	CLK_DIV("DIV_I2C3", "MUX_I2C3",
 		CAR_CLKSRC_I2C3_REG, CAR_CLKSRC_I2C_DIV),
-	CLK_DIV("DIV_I2C4", "MUX_I2C4", 
+	CLK_DIV("DIV_I2C4", "MUX_I2C4",
 		CAR_CLKSRC_I2C4_REG, CAR_CLKSRC_I2C_DIV),
-	CLK_DIV("DIV_I2C5", "MUX_I2C5", 
+	CLK_DIV("DIV_I2C5", "MUX_I2C5",
 		CAR_CLKSRC_I2C5_REG, CAR_CLKSRC_I2C_DIV),
-	CLK_DIV("DIV_I2C6", "MUX_I2C6", 
+	CLK_DIV("DIV_I2C6", "MUX_I2C6",
 		CAR_CLKSRC_I2C6_REG, CAR_CLKSRC_I2C_DIV),
 
 	CLK_DIV("XUSB_HOST_SRC", "MUX_XUSB_HOST",

Index: src/sys/arch/arm/nvidia/tegra210_xusbpad.c
diff -u src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.9 src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.10
--- src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.9	Mon Jul 16 23:11:47 2018
+++ src/sys/arch/arm/nvidia/tegra210_xusbpad.c	Wed Dec 12 09:55:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_xusbpad.c,v 1.9 2018/07/16 23:11:47 christos Exp $ */
+/* $NetBSD: tegra210_xusbpad.c,v 1.10 2018/12/12 09:55:34 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.9 2018/07/16 23:11:47 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.10 2018/12/12 09:55:34 skrll Exp $");
 
 #include 
 #include 
@@ -459,7 +459,7 @@ static const struct tegra210_xusbpad_por
 	XUSBPAD_PORT("usb3-1", 1, 0x14, __BITS(8,5), __BIT(9)),
 	XUSBPAD_PORT("usb3-2", 2, 0x14, __BITS(13,10), __BIT(14)),
 	XUSBPAD_PORT("usb3-3", 3, 0x14, __BITS(18,15), __BIT(19)),
-}; 
+};
 
 static const struct tegra210_xusbpad_port tegra210_xusbpad_hsic_ports[] = {
 	XUSBPAD_PORT("hsic-0", 0, 0, 0, 0),
@@ -847,7 +847,7 @@ static int
 tegra210_xusbpad_phy_enable(device_t dev, void *priv, bool enable)
 {
 	struct tegra210_xusbpad_phy_softc * const sc = device_private(dev);
-	
+
 	if (enable == false)
 		return ENXIO;	/* not implemented */
 



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

2018-11-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Nov  1 16:14:54 UTC 2018

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

Log Message:
Fix non-DIAGNOSTIC build


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 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/tegra_nouveau.c
diff -u src/sys/arch/arm/nvidia/tegra_nouveau.c:1.11 src/sys/arch/arm/nvidia/tegra_nouveau.c:1.12
--- src/sys/arch/arm/nvidia/tegra_nouveau.c:1.11	Mon Aug 27 15:31:51 2018
+++ src/sys/arch/arm/nvidia/tegra_nouveau.c	Thu Nov  1 16:14:54 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_nouveau.c,v 1.11 2018/08/27 15:31:51 riastradh Exp $ */
+/* $NetBSD: tegra_nouveau.c,v 1.12 2018/11/01 16:14:54 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_nouveau.c,v 1.11 2018/08/27 15:31:51 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_nouveau.c,v 1.12 2018/11/01 16:14:54 skrll Exp $");
 
 #include 
 #include 
@@ -132,7 +132,7 @@ tegra_nouveau_attach(device_t parent, de
 	prop_dictionary_t prop = device_properties(self);
 	const struct of_compat_data *data =
 	of_search_compatible(faa->faa_phandle, compat_data);
-	const struct nvkm_device_tegra_func *tegra_func =
+	const struct nvkm_device_tegra_func *tegra_func __diagused =
 	(const void *)data->data;
 	int error;
 



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

2018-09-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 26 22:33:35 UTC 2018

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

Log Message:
Initialize CML1 clock


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.20 src/sys/arch/arm/nvidia/tegra210_car.c:1.21
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.20	Wed Sep 26 22:32:46 2018
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Wed Sep 26 22:33:35 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.20 2018/09/26 22:32:46 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.21 2018/09/26 22:33:35 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.20 2018/09/26 22:32:46 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.21 2018/09/26 22:33:35 jmcneill Exp $");
 
 #include 
 #include 
@@ -658,6 +658,7 @@ struct tegra210_init_parent {
 	{ "PLL_U_OUT1",		NULL, 4800, 1 },
 	{ "PLL_U_OUT2",		NULL, 6000, 1 },
 	{ "CML0",		NULL, 0, 1 },
+	{ "CML1",		NULL, 0, 0 },
 	{ "AFI",		NULL, 0, 1 },
 	{ "PCIE",		NULL, 0, 1 },
 };



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

2018-09-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 26 22:32:46 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: tegra124_car.c tegra210_car.c

Log Message:
Register clocks with clk_attach


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra124_car.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra210_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.15 src/sys/arch/arm/nvidia/tegra124_car.c:1.16
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.15	Sun Sep  9 07:21:17 2018
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Wed Sep 26 22:32:46 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.15 2018/09/09 07:21:17 aymeric Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.16 2018/09/26 22:32:46 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.15 2018/09/09 07:21:17 aymeric Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.16 2018/09/26 22:32:46 jmcneill Exp $");
 
 #include 
 #include 
@@ -758,10 +758,13 @@ tegra124_car_attach(device_t parent, dev
 	aprint_naive("\n");
 	aprint_normal(": CAR\n");
 
+	sc->sc_clkdom.name = device_xname(self);
 	sc->sc_clkdom.funcs = _car_clock_funcs;
 	sc->sc_clkdom.priv = sc;
-	for (n = 0; n < __arraycount(tegra124_car_clocks); n++)
+	for (n = 0; n < __arraycount(tegra124_car_clocks); n++) {
 		tegra124_car_clocks[n].base.domain = >sc_clkdom;
+		clk_attach(_car_clocks[n].base);
+	}
 
 	fdtbus_register_clock_controller(self, phandle,
 	_car_fdtclock_funcs);

Index: src/sys/arch/arm/nvidia/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.19 src/sys/arch/arm/nvidia/tegra210_car.c:1.20
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.19	Sun Sep  9 07:21:17 2018
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Wed Sep 26 22:32:46 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.19 2018/09/09 07:21:17 aymeric Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.20 2018/09/26 22:32:46 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.19 2018/09/09 07:21:17 aymeric Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.20 2018/09/26 22:32:46 jmcneill Exp $");
 
 #include 
 #include 
@@ -764,10 +764,13 @@ tegra210_car_attach(device_t parent, dev
 	aprint_naive("\n");
 	aprint_normal(": CAR\n");
 
+	sc->sc_clkdom.name = device_xname(self);
 	sc->sc_clkdom.funcs = _car_clock_funcs;
 	sc->sc_clkdom.priv = sc;
-	for (n = 0; n < __arraycount(tegra210_car_clocks); n++)
+	for (n = 0; n < __arraycount(tegra210_car_clocks); n++) {
 		tegra210_car_clocks[n].base.domain = >sc_clkdom;
+		clk_attach(_car_clocks[n].base);
+	}
 
 	fdtbus_register_clock_controller(self, phandle,
 	_car_fdtclock_funcs);



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

2018-09-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Sep 25 22:23:22 UTC 2018

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

Log Message:
Disallow 0-byte transfers and suppress timeout messages


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 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.21 src/sys/arch/arm/nvidia/tegra_i2c.c:1.22
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.21	Mon Sep  3 16:29:23 2018
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Tue Sep 25 22:23:22 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.21 2018/09/03 16:29:23 riastradh Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.22 2018/09/25 22:23:22 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.21 2018/09/03 16:29:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.22 2018/09/25 22:23:22 jmcneill Exp $");
 
 #include 
 #include 
@@ -275,6 +275,9 @@ tegra_i2c_exec(void *priv, i2c_op_t op, 
 
 	KASSERT(mutex_owned(>sc_lock));
 
+	if (buflen == 0 && cmdlen == 0)
+		return EINVAL;
+
 	if ((flags & I2C_F_POLL) == 0) {
 		I2C_WRITE(sc, I2C_INTERRUPT_MASK_REG,
 		I2C_INTERRUPT_MASK_NOACK | I2C_INTERRUPT_MASK_ARB_LOST |
@@ -305,10 +308,12 @@ tegra_i2c_exec(void *priv, i2c_op_t op, 
 		}
 	}
 
-	if (I2C_OP_READ_P(op)) {
-		error = tegra_i2c_read(sc, addr, buf, buflen, flags);
-	} else {
-		error = tegra_i2c_write(sc, addr, buf, buflen, flags, false);
+	if (buflen > 0) {
+		if (I2C_OP_READ_P(op)) {
+			error = tegra_i2c_read(sc, addr, buf, buflen, flags);
+		} else {
+			error = tegra_i2c_write(sc, addr, buf, buflen, flags, false);
+		}
 	}
 
 done:
@@ -348,8 +353,9 @@ tegra_i2c_wait(struct tegra_i2c_softc *s
 		}
 	}
 	if (retry == 0) {
-		stat = I2C_READ(sc, I2C_INTERRUPT_STATUS_REG);
+#ifdef TEGRA_I2C_DEBUG
 		device_printf(sc->sc_dev, "timed out, status = %#x\n", stat);
+#endif
 		return ETIMEDOUT;
 	}
 



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

2018-09-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Sep 24 22:22:16 UTC 2018

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

Log Message:
Remove two unused bs handles


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra_soc.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_soc.c
diff -u src/sys/arch/arm/nvidia/tegra_soc.c:1.15 src/sys/arch/arm/nvidia/tegra_soc.c:1.16
--- src/sys/arch/arm/nvidia/tegra_soc.c:1.15	Sun Apr  1 04:35:04 2018
+++ src/sys/arch/arm/nvidia/tegra_soc.c	Mon Sep 24 22:22:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soc.c,v 1.15 2018/04/01 04:35:04 ryo Exp $ */
+/* $NetBSD: tegra_soc.c,v 1.16 2018/09/24 22:22:16 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.15 2018/04/01 04:35:04 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.16 2018/09/24 22:22:16 jmcneill Exp $");
 
 #include 
 #include 
@@ -47,10 +47,8 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,
 #include 
 #include 
 
-bus_space_handle_t tegra_host1x_bsh;
 bus_space_handle_t tegra_ppsb_bsh;
 bus_space_handle_t tegra_apb_bsh;
-bus_space_handle_t tegra_ahb_a2_bsh;
 
 void
 tegra_bootstrap(void)
@@ -58,16 +56,10 @@ tegra_bootstrap(void)
 	extern struct bus_space arm_generic_bs_tag;
 	bus_space_tag_t bst = _generic_bs_tag;
 
-	if (bus_space_map(bst, TEGRA_HOST1X_BASE, TEGRA_HOST1X_SIZE, 0,
-	_host1x_bsh) != 0)
-		panic("couldn't map HOST1X");
 	if (bus_space_map(bst, TEGRA_PPSB_BASE, TEGRA_PPSB_SIZE, 0,
 	_ppsb_bsh) != 0)
 		panic("couldn't map PPSB");
 	if (bus_space_map(bst, TEGRA_APB_BASE, TEGRA_APB_SIZE, 0,
 	_apb_bsh) != 0)
 		panic("couldn't map APB");
-	if (bus_space_map(bst, TEGRA_AHB_A2_BASE, TEGRA_AHB_A2_SIZE, 0,
-	_ahb_a2_bsh) != 0)
-		panic("couldn't map AHB A2");
 }



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

2018-09-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Sep 24 09:25:14 UTC 2018

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

Log Message:
Call drm_fb_helper_prepare in tegra_drm_fb_init as required.

I can boot a kernel with this

jetsontk1# dmesg | grep fb
[   1.580] tegrafb0 at tegradrm0
[   1.580] tegrafb0: framebuffer at 0x9bc0, size 1024x768, depth 32, 
stride 4096
[   1.580] wsdisplay0 at tegrafb0 kbdmux 1
jetsontk1#


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_drm_fb.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_drm_fb.c
diff -u src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.6 src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.7
--- src/sys/arch/arm/nvidia/tegra_drm_fb.c:1.6	Tue Dec 26 14:54:52 2017
+++ src/sys/arch/arm/nvidia/tegra_drm_fb.c	Mon Sep 24 09:25:14 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm_fb.c,v 1.6 2017/12/26 14:54:52 jmcneill Exp $ */
+/* $NetBSD: tegra_drm_fb.c,v 1.7 2018/09/24 09:25:14 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm_fb.c,v 1.6 2017/12/26 14:54:52 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm_fb.c,v 1.7 2018/09/24 09:25:14 skrll Exp $");
 
 #include 
 #include 
@@ -53,7 +53,8 @@ tegra_drm_fb_init(struct drm_device *dde
 	int error;
 
 	fbdev = kmem_zalloc(sizeof(*fbdev), KM_SLEEP);
-	fbdev->helper.funcs = _fb_helper_funcs;
+
+	drm_fb_helper_prepare(ddev, >helper, _fb_helper_funcs);
 
 	error = drm_fb_helper_init(ddev, >helper, 2, 1);
 	if (error) {



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

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:31:51 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: tegra_drm.c tegra_drm.h tegra_drm_mode.c
tegra_nouveau.c

Log Message:
Update tegra drm and nouveau to compile with new drmkms.

Compile-tested only.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_drm.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_drm.h
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_drm_mode.c
cvs rdiff -u -r1.10 -r1.11 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/tegra_drm.c
diff -u src/sys/arch/arm/nvidia/tegra_drm.c:1.9 src/sys/arch/arm/nvidia/tegra_drm.c:1.10
--- src/sys/arch/arm/nvidia/tegra_drm.c:1.9	Thu Dec 28 14:02:08 2017
+++ src/sys/arch/arm/nvidia/tegra_drm.c	Mon Aug 27 15:31:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.c,v 1.9 2017/12/28 14:02:08 jmcneill Exp $ */
+/* $NetBSD: tegra_drm.c,v 1.10 2018/08/27 15:31:51 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.9 2017/12/28 14:02:08 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.10 2018/08/27 15:31:51 riastradh Exp $");
 
 #include 
 #include 
@@ -51,7 +51,6 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,
 static int	tegra_drm_match(device_t, cfdata_t, void *);
 static void	tegra_drm_attach(device_t, device_t, void *);
 
-static const char *tegra_drm_get_name(struct drm_device *);
 static int	tegra_drm_set_busid(struct drm_device *, struct drm_master *);
 
 static int	tegra_drm_load(struct drm_device *, unsigned long);
@@ -80,13 +79,9 @@ static struct drm_driver tegra_drm_drive
 	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
-	.patchlevel = DRIVER_PATCHLEVEL 
-};
+	.patchlevel = DRIVER_PATCHLEVEL,
 
-static const struct drm_bus tegra_drm_bus = {
-	.bus_type = DRIVER_BUS_PLATFORM,
-	.get_name = tegra_drm_get_name,
-	.set_busid = tegra_drm_set_busid
+	.set_busid = tegra_drm_set_busid,
 };
 
 CFATTACH_DECL_NEW(tegra_drm, sizeof(struct tegra_drm_softc),
@@ -191,8 +186,6 @@ tegra_drm_attach(device_t parent, device
 
 	prop_dictionary_get_bool(prop, "force-dvi", >sc_force_dvi);
 
-	driver->bus = _drm_bus;
-
 	sc->sc_ddev = drm_dev_alloc(driver, sc->sc_dev);
 	if (sc->sc_ddev == NULL) {
 		aprint_error_dev(self, "couldn't allocate DRM device\n");
@@ -219,12 +212,6 @@ tegra_drm_attach(device_t parent, device
 	return;
 }
 
-static const char *
-tegra_drm_get_name(struct drm_device *ddev)
-{
-	return DRIVER_NAME;
-}
-
 static int
 tegra_drm_set_busid(struct drm_device *ddev, struct drm_master *master)
 {
@@ -243,16 +230,8 @@ tegra_drm_set_busid(struct drm_device *d
 static int
 tegra_drm_load(struct drm_device *ddev, unsigned long flags)
 {
-	char *devname;
 	int error;
 
-	devname = kzalloc(strlen(DRIVER_NAME) + 1, GFP_KERNEL);
-	if (devname == NULL) {
-		return -ENOMEM;
-	}
-	strcpy(devname, DRIVER_NAME);
-	ddev->devname = devname;
-
 	error = tegra_drm_mode_init(ddev);
 	if (error)
 		goto drmerr;

Index: src/sys/arch/arm/nvidia/tegra_drm.h
diff -u src/sys/arch/arm/nvidia/tegra_drm.h:1.8 src/sys/arch/arm/nvidia/tegra_drm.h:1.9
--- src/sys/arch/arm/nvidia/tegra_drm.h:1.8	Tue Dec 26 14:54:52 2017
+++ src/sys/arch/arm/nvidia/tegra_drm.h	Mon Aug 27 15:31:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.h,v 1.8 2017/12/26 14:54:52 jmcneill Exp $ */
+/* $NetBSD: tegra_drm.h,v 1.9 2018/08/27 15:31:51 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -148,9 +148,9 @@ struct tegra_fbdev {
 
 int	tegra_drm_mode_init(struct drm_device *);
 int	tegra_drm_fb_init(struct drm_device *);
-u32	tegra_drm_get_vblank_counter(struct drm_device *, int);
-int	tegra_drm_enable_vblank(struct drm_device *, int);
-void	tegra_drm_disable_vblank(struct drm_device *, int);
+u32	tegra_drm_get_vblank_counter(struct drm_device *, unsigned int);
+int	tegra_drm_enable_vblank(struct drm_device *, unsigned int);
+void	tegra_drm_disable_vblank(struct drm_device *, unsigned int);
 int	tegra_drm_framebuffer_init(struct drm_device *,
 	struct tegra_framebuffer *);
 

Index: src/sys/arch/arm/nvidia/tegra_drm_mode.c
diff -u src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.16 src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.17
--- src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.16	Tue Dec 26 14:54:52 2017
+++ src/sys/arch/arm/nvidia/tegra_drm_mode.c	Mon Aug 27 15:31:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm_mode.c,v 1.16 2017/12/26 14:54:52 jmcneill Exp $ */
+/* $NetBSD: tegra_drm_mode.c,v 1.17 2018/08/27 15:31:51 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,12 +27,13 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.16 2017/12/26 14:54:52 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.17 

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

2018-08-05 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Aug  5 15:37:10 UTC 2018

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

Log Message:
Use PRIxBUSADDR and remove unnecessary cast


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 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.19 src/sys/arch/arm/nvidia/tegra_i2c.c:1.20
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.19	Mon Jul 16 23:11:47 2018
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sun Aug  5 15:37:10 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.19 2018/07/16 23:11:47 christos Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.20 2018/08/05 15:37:10 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.19 2018/07/16 23:11:47 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.20 2018/08/05 15:37:10 skrll Exp $");
 
 #include 
 #include 
@@ -136,8 +136,8 @@ tegra_i2c_attach(device_t parent, device
 	sc->sc_cid = device_unit(self);
 	error = bus_space_map(sc->sc_bst, addr, size, 0, >sc_bsh);
 	if (error) {
-		aprint_error(": couldn't map %#" PRIx64 ": %d",
-		(uint64_t)addr, error);
+		aprint_error(": couldn't map %#" PRIxBUSADDR ": %d",
+		addr, error);
 		return;
 	}
 	mutex_init(>sc_lock, MUTEX_DEFAULT, IPL_VM);



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

2018-07-08 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul  8 11:37:50 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_platform.c
Removed Files:
src/sys/arch/arm/nvidia: soc_tegra210.c

Log Message:
Use psci_fdt_bootstrap for MP spinup on Tegra210.


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.2 -r0 src/sys/arch/arm/nvidia/soc_tegra210.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_platform.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.48 src/sys/arch/arm/nvidia/files.tegra:1.49
--- src/sys/arch/arm/nvidia/files.tegra:1.48	Sun Apr  1 04:35:04 2018
+++ src/sys/arch/arm/nvidia/files.tegra	Sun Jul  8 11:37:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.48 2018/04/01 04:35:04 ryo Exp $
+#	$NetBSD: files.tegra,v 1.49 2018/07/08 11:37:50 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -13,9 +13,6 @@ device	tegra124cpu
 attach	tegra124cpu at cpu with tegra124_cpu
 file	arch/arm/nvidia/tegra124_cpu.c		tegra124_cpu
 
-# Tegra T210 (X1) support
-file	arch/arm/nvidia/soc_tegra210.c		soc_tegra210
-
 # Interrupt controller
 device	tegralic
 attach	tegralic at fdt with tegra_lic

Index: src/sys/arch/arm/nvidia/tegra_platform.c
diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.12 src/sys/arch/arm/nvidia/tegra_platform.c:1.13
--- src/sys/arch/arm/nvidia/tegra_platform.c:1.12	Sat Jul  7 20:16:16 2018
+++ src/sys/arch/arm/nvidia/tegra_platform.c	Sun Jul  8 11:37:50 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_platform.c,v 1.12 2018/07/07 20:16:16 jmcneill Exp $ */
+/* $NetBSD: tegra_platform.c,v 1.13 2018/07/08 11:37:50 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -33,7 +33,7 @@
 #include "ukbd.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.12 2018/07/07 20:16:16 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.13 2018/07/08 11:37:50 jmcneill Exp $");
 
 #include 
 #include 
@@ -108,8 +108,8 @@ tegra210_platform_bootstrap(void)
 {
 	tegra_bootstrap();
 
-#ifdef MULTIPROCESSOR
-	tegra210_mpinit();
+#if defined(MULTIPROCESSOR) && defined(__aarch64__)
+	psci_fdt_bootstrap();
 #endif
 }
 #endif



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

2018-07-07 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jul  7 20:16:16 UTC 2018

Modified Files:
src/sys/arch/arm/nvidia: soc_tegra124.c soc_tegra210.c tegra_platform.c
tegra_var.h

Log Message:
Use arm_generic_bs_tag instead of armv7_generic_bs_tag and conditionally
define SOC platform support (so we don't try to build 32-bit support into
64-bit kernels).


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/nvidia/soc_tegra124.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/soc_tegra210.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra_platform.c
cvs rdiff -u -r1.42 -r1.43 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/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.17 src/sys/arch/arm/nvidia/soc_tegra124.c:1.18
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.17	Sun Apr 23 12:31:38 2017
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Sat Jul  7 20:16:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.17 2017/04/23 12:31:38 jmcneill Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.18 2018/07/07 20:16:16 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.17 2017/04/23 12:31:38 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.18 2018/07/07 20:16:16 jmcneill Exp $");
 
 #include 
 #include 
@@ -54,7 +54,7 @@ tegra124_mpinit(void)
 {
 #if defined(MULTIPROCESSOR)
 	extern void cortex_mpstart(void);
-	bus_space_tag_t bst = _generic_bs_tag;
+	bus_space_tag_t bst = _generic_bs_tag;
 	bus_space_handle_t bsh;
 
 	bus_space_subregion(bst, tegra_ppsb_bsh,

Index: src/sys/arch/arm/nvidia/soc_tegra210.c
diff -u src/sys/arch/arm/nvidia/soc_tegra210.c:1.1 src/sys/arch/arm/nvidia/soc_tegra210.c:1.2
--- src/sys/arch/arm/nvidia/soc_tegra210.c:1.1	Thu May 25 23:26:48 2017
+++ src/sys/arch/arm/nvidia/soc_tegra210.c	Sat Jul  7 20:16:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra210.c,v 1.1 2017/05/25 23:26:48 jmcneill Exp $ */
+/* $NetBSD: soc_tegra210.c,v 1.2 2018/07/07 20:16:16 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -30,18 +30,20 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: soc_tegra210.c,v 1.1 2017/05/25 23:26:48 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: soc_tegra210.c,v 1.2 2018/07/07 20:16:16 jmcneill Exp $");
 
 #include 
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
 #include 
 
 #include 
+#include 
 
 #include 
 #include 
@@ -54,7 +56,7 @@ tegra210_mpinit(void)
 {
 #if defined(MULTIPROCESSOR)
 	extern void cortex_mpstart(void);
-	bus_space_tag_t bst = _generic_bs_tag;
+	bus_space_tag_t bst = _generic_bs_tag;
 	bus_space_handle_t bsh;
 
 	bus_space_subregion(bst, tegra_ppsb_bsh,
@@ -73,7 +75,7 @@ tegra210_mpinit(void)
 	tegra_pmc_power(PMC_PARTID_CPU3, true); started |= __BIT(3);
 
 	for (u_int i = 0x1000; i > 0; i--) {
-		arm_dmb();
+		membar_consumer();
 		if (arm_cpu_hatched == started)
 			break;
 	}

Index: src/sys/arch/arm/nvidia/tegra_platform.c
diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.11 src/sys/arch/arm/nvidia/tegra_platform.c:1.12
--- src/sys/arch/arm/nvidia/tegra_platform.c:1.11	Sun Apr  1 04:35:04 2018
+++ src/sys/arch/arm/nvidia/tegra_platform.c	Sat Jul  7 20:16:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_platform.c,v 1.11 2018/04/01 04:35:04 ryo Exp $ */
+/* $NetBSD: tegra_platform.c,v 1.12 2018/07/07 20:16:16 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -33,7 +33,7 @@
 #include "ukbd.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.11 2018/04/01 04:35:04 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.12 2018/07/07 20:16:16 jmcneill Exp $");
 
 #include 
 #include 
@@ -54,6 +54,9 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_platfo
 
 #include 
 
+#include 
+#include 
+
 #if NUKBD > 0
 #include 
 #endif
@@ -87,6 +90,7 @@ tegra_platform_devmap(void)
 	return devmap;
 }
 
+#ifdef SOC_TEGRA124
 static void
 tegra124_platform_bootstrap(void)
 {
@@ -96,7 +100,9 @@ tegra124_platform_bootstrap(void)
 	tegra124_mpinit();
 #endif
 }
+#endif
 
+#ifdef SOC_TEGRA210
 static void
 tegra210_platform_bootstrap(void)
 {
@@ -106,6 +112,7 @@ tegra210_platform_bootstrap(void)
 	tegra210_mpinit();
 #endif
 }
+#endif
 
 static void
 tegra_platform_init_attach_args(struct fdt_attach_args *faa)
@@ -204,6 +211,7 @@ tegra_platform_uart_freq(void)
 	return PLLP_OUT0_FREQ;
 }
 
+#ifdef SOC_TEGRA124
 static const struct arm_platform tegra124_platform = {
 	.devmap = tegra_platform_devmap,
 	.bootstrap = tegra124_platform_bootstrap,
@@ -216,7 +224,9 @@ static const struct arm_platform tegra12
 };
 
 ARM_PLATFORM(tegra124, "nvidia,tegra124", _platform);
+#endif
 
+#ifdef SOC_TEGRA210
 static const struct arm_platform 

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

2018-07-01 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul  1 21:18:00 UTC 2018

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

Log Message:
Use fdtbus_attach_i2cbus


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 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.17 src/sys/arch/arm/nvidia/tegra_i2c.c:1.18
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.17	Wed May  9 02:53:00 2018
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Sun Jul  1 21:18:00 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.17 2018/05/09 02:53:00 thorpej Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.18 2018/07/01 21:18:00 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.17 2018/05/09 02:53:00 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.18 2018/07/01 21:18:00 jmcneill Exp $");
 
 #include 
 #include 
@@ -65,7 +65,6 @@ struct tegra_i2c_softc {
 	struct i2c_controller	sc_ic;
 	kmutex_t		sc_lock;
 	kcondvar_t		sc_cv;
-	device_t		sc_i2cdev;
 };
 
 static void	tegra_i2c_init(struct tegra_i2c_softc *);
@@ -112,12 +111,9 @@ tegra_i2c_attach(device_t parent, device
 	struct tegra_i2c_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
-	struct i2cbus_attach_args iba;
-	prop_dictionary_t devs;
 	char intrstr[128];
 	bus_addr_t addr;
 	bus_size_t size;
-	u_int address_cells;
 	int error;
 
 	if (fdtbus_get_reg(phandle, 0, , ) != 0) {
@@ -189,21 +185,7 @@ tegra_i2c_attach(device_t parent, device
 
 	fdtbus_register_i2c_controller(self, phandle, _i2c_funcs);
 
-	devs = prop_dictionary_create();
-
-	if (of_getprop_uint32(phandle, "#address-cells", _cells))
-		address_cells = 1;
-
-	of_enter_i2c_devs(devs, faa->faa_phandle, address_cells * 4, 0);
-
-	memset(, 0, sizeof(iba));
-	iba.iba_tag = >sc_ic;
-	iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices");
-	if (iba.iba_child_devices != NULL)
-		prop_object_retain(iba.iba_child_devices);
-	prop_object_release(devs);
-
-	sc->sc_i2cdev = config_found_ia(self, "i2cbus", , iicbus_print);
+	fdtbus_attach_i2cbus(self, phandle, >sc_ic, iicbus_print);
 }
 
 static i2c_tag_t



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

2018-07-01 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul  1 10:46:02 UTC 2018

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

Log Message:
Build fix


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.13 src/sys/arch/arm/nvidia/tegra_xusb.c:1.14
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.13	Fri Jun 29 17:48:24 2018
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Sun Jul  1 10:46:02 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.14 2018/07/01 10:46:02 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.14 2018/07/01 10:46:02 jmcneill Exp $");
 
 #include 
 #include 
@@ -428,13 +428,12 @@ tegra_xusb_mountroot(device_t self)
 		break;
 	default:
 		if (val < PCI_USBREV_3_0) {
-			aprint_error_dev(self, "Unknown revision (%02x)\n",
-			usbrev);
+			aprint_error_dev(self, "Unknown revision (%02x)\n", val);
 			sc->sc_bus.ub_revision = USBREV_UNKNOWN;
 		} else {
 			/* Default to the latest revision */
 			aprint_normal_dev(self,
-			"Unknown revision (%02x). Set to 3.1.\n", usbrev);
+			"Unknown revision (%02x). Set to 3.1.\n", val);
 			sc->sc_bus.ub_revision = USBREV_3_1;
 		}
 		break;



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

2017-12-28 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Dec 28 14:02:08 UTC 2017

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

Log Message:
Initialize drm_device bus and dma space tags


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_drm.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_drm.c
diff -u src/sys/arch/arm/nvidia/tegra_drm.c:1.8 src/sys/arch/arm/nvidia/tegra_drm.c:1.9
--- src/sys/arch/arm/nvidia/tegra_drm.c:1.8	Tue Dec 26 14:54:52 2017
+++ src/sys/arch/arm/nvidia/tegra_drm.c	Thu Dec 28 14:02:08 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.c,v 1.8 2017/12/26 14:54:52 jmcneill Exp $ */
+/* $NetBSD: tegra_drm.c,v 1.9 2017/12/28 14:02:08 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.8 2017/12/26 14:54:52 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.9 2017/12/28 14:02:08 jmcneill Exp $");
 
 #include 
 #include 
@@ -199,6 +199,10 @@ tegra_drm_attach(device_t parent, device
 		return;
 	}
 	sc->sc_ddev->dev_private = sc;
+	sc->sc_ddev->bst = sc->sc_bst;
+	sc->sc_ddev->bus_dmat = sc->sc_dmat;
+	sc->sc_ddev->dmat = sc->sc_ddev->bus_dmat;
+	sc->sc_ddev->dmat_subregion_p = false;
 
 	error = -drm_dev_register(sc->sc_ddev, 0);
 	if (error) {



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

2017-12-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Dec 26 14:54:52 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_drm.c tegra_drm.h
tegra_drm_fb.c tegra_drm_mode.c tegra_fb.c
Removed Files:
src/sys/arch/arm/nvidia: tegra_drm_gem.c

Log Message:
Use DRM GEM/CMA helper.


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_drm.c \
src/sys/arch/arm/nvidia/tegra_drm.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_drm_fb.c
cvs rdiff -u -r1.3 -r0 src/sys/arch/arm/nvidia/tegra_drm_gem.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra_drm_mode.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_fb.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.45 src/sys/arch/arm/nvidia/files.tegra:1.46
--- src/sys/arch/arm/nvidia/files.tegra:1.45	Tue Sep 26 16:12:45 2017
+++ src/sys/arch/arm/nvidia/files.tegra	Tue Dec 26 14:54:52 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.45 2017/09/26 16:12:45 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.46 2017/12/26 14:54:52 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -157,7 +157,6 @@ attach	tegradrm at fdt with tegra_drm
 file	arch/arm/nvidia/tegra_drm.c		tegra_drm
 file	arch/arm/nvidia/tegra_drm_mode.c	tegra_drm
 file	arch/arm/nvidia/tegra_drm_fb.c		tegra_drm
-file	arch/arm/nvidia/tegra_drm_gem.c		tegra_drm
 
 # Framebuffer console
 device	tegrafb: tegrafbbus, drmfb, wsemuldisplaydev

Index: src/sys/arch/arm/nvidia/tegra_drm.c
diff -u src/sys/arch/arm/nvidia/tegra_drm.c:1.7 src/sys/arch/arm/nvidia/tegra_drm.c:1.8
--- src/sys/arch/arm/nvidia/tegra_drm.c:1.7	Sun Apr 16 12:28:21 2017
+++ src/sys/arch/arm/nvidia/tegra_drm.c	Tue Dec 26 14:54:52 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm.c,v 1.7 2017/04/16 12:28:21 jmcneill Exp $ */
+/* $NetBSD: tegra_drm.c,v 1.8 2017/12/26 14:54:52 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.7 2017/04/16 12:28:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm.c,v 1.8 2017/12/26 14:54:52 jmcneill Exp $");
 
 #include 
 #include 
@@ -57,29 +57,18 @@ static int	tegra_drm_set_busid(struct dr
 static int	tegra_drm_load(struct drm_device *, unsigned long);
 static int	tegra_drm_unload(struct drm_device *);
 
-static int	tegra_drm_dumb_create(struct drm_file *, struct drm_device *,
-		struct drm_mode_create_dumb *);
-static int	tegra_drm_dumb_map_offset(struct drm_file *,
-		struct drm_device *, uint32_t, uint64_t *);
-
-static const struct uvm_pagerops tegra_drm_gem_uvm_ops = {
-	.pgo_reference = drm_gem_pager_reference,
-	.pgo_detach = drm_gem_pager_detach,
-	.pgo_fault = tegra_drm_gem_fault,
-};
-
 static struct drm_driver tegra_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM,
 	.dev_priv_size = 0,
 	.load = tegra_drm_load,
 	.unload = tegra_drm_unload,
 
-	.gem_free_object = tegra_drm_gem_free_object,
+	.gem_free_object = drm_gem_cma_free_object,
 	.mmap_object = drm_gem_or_legacy_mmap_object,
-	.gem_uvm_ops = _drm_gem_uvm_ops,
+	.gem_uvm_ops = _gem_cma_uvm_ops,
 
-	.dumb_create = tegra_drm_dumb_create,
-	.dumb_map_offset = tegra_drm_dumb_map_offset,
+	.dumb_create = drm_gem_cma_dumb_create,
+	.dumb_map_offset = drm_gem_cma_dumb_map_offset,
 	.dumb_destroy = drm_gem_dumb_destroy,
 
 	.get_vblank_counter = tegra_drm_get_vblank_counter,
@@ -283,62 +272,3 @@ tegra_drm_unload(struct drm_device *ddev
 
 	return 0;
 }
-
-static int
-tegra_drm_dumb_create(struct drm_file *file_priv, struct drm_device *ddev,
-struct drm_mode_create_dumb *args)
-{
-	struct tegra_gem_object *obj;
-	uint32_t handle;
-	int error;
-
-	args->pitch = args->width * ((args->bpp + 7) / 8);
-	args->size = args->pitch * args->height;
-	args->size = roundup(args->size, PAGE_SIZE);
-	args->handle = 0;
-
-	obj = tegra_drm_obj_alloc(ddev, args->size);
-	if (obj == NULL)
-		return -ENOMEM;
-
-	error = drm_gem_handle_create(file_priv, >base, );
-	drm_gem_object_unreference_unlocked(>base);
-	if (error) {
-		tegra_drm_obj_free(obj);
-		return error;
-	}
-
-	args->handle = handle;
-
-	return 0;
-}
-
-static int
-tegra_drm_dumb_map_offset(struct drm_file *file_priv,
-struct drm_device *ddev, uint32_t handle, uint64_t *offset)
-{
-	struct drm_gem_object *gem_obj;
-	struct tegra_gem_object *obj;
-	int error;
-
-	gem_obj = drm_gem_object_lookup(ddev, file_priv, handle);
-	if (gem_obj == NULL)
-		return -ENOENT;
-
-	obj = to_tegra_gem_obj(gem_obj);
-
-	if (drm_vma_node_has_offset(>base.vma_node) == 0) {
-		error = drm_gem_create_mmap_offset(>base);
-		if (error)
-			goto done;
-	} else {
-		error = 0;
-	}
-
-	*offset = 

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

2017-10-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Oct 19 16:01:58 UTC 2017

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

Log Message:
Don't call tegra_pcie_reset_port for now - it makes tk1 re @ pci not work


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.22 src/sys/arch/arm/nvidia/tegra_pcie.c:1.23
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.22	Wed Sep 27 10:19:13 2017
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Thu Oct 19 16:01:58 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.22 2017/09/27 10:19:13 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.23 2017/10/19 16:01:58 skrll Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.22 2017/09/27 10:19:13 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.23 2017/10/19 16:01:58 skrll Exp $");
 
 #include 
 #include 
@@ -355,6 +355,7 @@ tegra_pcie_enable_clocks(struct tegra_pc
 	}
 }
 
+#if 0
 static void
 tegra_pcie_reset_port(struct tegra_pcie_softc * const sc, int index)
 {
@@ -370,6 +371,7 @@ tegra_pcie_reset_port(struct tegra_pcie_
 	val |= AFI_PEXn_CTRL_RST_L;
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_PEXn_CTRL_REG(index), val);
 }
+#endif
 
 static void
 tegra_pcie_enable_ports(struct tegra_pcie_softc * const sc)
@@ -400,7 +402,9 @@ tegra_pcie_enable_ports(struct tegra_pci
 		val |= AFI_PEXn_CTRL_REFCLK_OVERRIDE_EN;
 		bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_PEXn_CTRL_REG(index), val);
 
+#if 0
 		tegra_pcie_reset_port(sc, index);
+#endif
 
 	}
 }



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

2017-09-28 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Sep 28 09:44:29 UTC 2017

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

Log Message:
use CLK_GATE_SIMPLE


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.16 src/sys/arch/arm/nvidia/tegra210_car.c:1.17
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.16	Wed Sep 27 10:50:06 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Thu Sep 28 09:44:29 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.16 2017/09/27 10:50:06 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.17 2017/09/28 09:44:29 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.16 2017/09/27 10:50:06 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.17 2017/09/28 09:44:29 jmcneill Exp $");
 
 #include 
 #include 
@@ -594,15 +594,15 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_HDA", "MUX_HDA",
 		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_DIV),
 
-	CLK_GATE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
-		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
-	CLK_GATE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
-		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_CLKEN),
-
-	CLK_GATE("CML0", "PLL_E",
-		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML0_OEN),
-	CLK_GATE("CML1", "PLL_E",
-		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML1_OEN),
+	CLK_GATE_SIMPLE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
+		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
+	CLK_GATE_SIMPLE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
+		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_CLKEN),
+
+	CLK_GATE_SIMPLE("CML0", "PLL_E",
+		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML0_OEN),
+	CLK_GATE_SIMPLE("CML1", "PLL_E",
+		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML1_OEN),
 
 	CLK_GATE_L("UARTA", "DIV_UARTA", CAR_DEV_L_UARTA),
 	CLK_GATE_L("UARTB", "DIV_UARTB", CAR_DEV_L_UARTB),



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

2017-09-27 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 27 10:50:06 UTC 2017

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

Log Message:
Tegra210 HDA support.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.8 -r1.9 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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.15 src/sys/arch/arm/nvidia/tegra210_car.c:1.16
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.15	Wed Sep 27 10:19:48 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Wed Sep 27 10:50:06 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.15 2017/09/27 10:19:48 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.16 2017/09/27 10:50:06 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.15 2017/09/27 10:19:48 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.16 2017/09/27 10:50:06 jmcneill Exp $");
 
 #include 
 #include 
@@ -448,6 +448,14 @@ static const char *mux_soc_therm_p[] =
 	{ "CLK_M", "PLL_C", "PLL_P", "PLL_A",
 	  "PLL_C2", "PLL_C4_OUT0", "PLL_C4_OUT1", "PLL_C4_OUT2" };
 
+static const char *mux_hda2codec_2x_p[] =
+	{ "PLL_P", "PLL_C2", "PLL_C4_OUT0", "PLL_A",
+	  "PLL_A", "PLL_C4_OUT1", "CLK_M", "PLL_C4_OUT2" };
+
+static const char *mux_hda_p[] =
+	{ "PLL_P", "PLL_C2", "PLL_C", "PLL_C4_OUT0",
+	  NULL, "PLL_C4_OUT1", "CLK_M", "PLL_C4_OUT2" };
+
 static struct tegra_clk tegra210_car_clocks[] = {
 	CLK_FIXED("CLK_M", TEGRA210_REF_FREQ),
 
@@ -520,6 +528,13 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_SRC,
 		mux_soc_therm_p),
 
+	CLK_MUX("MUX_HDA2CODEC_2X",
+		CAR_CLKSRC_HDA2CODEC_2X_REG, CAR_CLKSRC_HDA2CODEC_2X_SRC,
+		mux_hda2codec_2x_p),
+	CLK_MUX("MUX_HDA",
+		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_SRC,
+		mux_hda_p),
+
 	CLK_DIV("DIV_UARTA", "MUX_UARTA",
 		CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_DIV),
 	CLK_DIV("DIV_UARTB", "MUX_UARTB",
@@ -574,6 +589,11 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_SOC_THERM", "MUX_SOC_THERM",
 		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_DIV),
 
+	CLK_DIV("DIV_HDA2CODEC_2X", "MUX_HDA2CODEC_2X",
+		CAR_CLKSRC_HDA2CODEC_2X_REG, CAR_CLKSRC_HDA2CODEC_2X_DIV),
+	CLK_DIV("DIV_HDA", "MUX_HDA",
+		CAR_CLKSRC_HDA_REG, CAR_CLKSRC_HDA_DIV),
+
 	CLK_GATE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
 		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
 	CLK_GATE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
@@ -612,6 +632,9 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_U("AFI", "MSELECT", CAR_DEV_U_AFI),
 	CLK_GATE_V("TSENSOR", "DIV_TSENSOR", CAR_DEV_V_TSENSOR),
 	CLK_GATE_U("SOC_THERM", "DIV_SOC_THERM", CAR_DEV_U_SOC_THERM),
+	CLK_GATE_W("HDA2HDMI", "CLK_M", CAR_DEV_W_HDA2HDMICODEC),
+	CLK_GATE_V("HDA2CODEC_2X", "DIV_HDA2CODEC_2X", CAR_DEV_V_HDA2CODEC_2X),
+	CLK_GATE_V("HDA", "DIV_HDA", CAR_DEV_V_HDA),
 };
 
 struct tegra210_init_parent {

Index: src/sys/arch/arm/nvidia/tegra_hdaudio.c
diff -u src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.8 src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.9
--- src/sys/arch/arm/nvidia/tegra_hdaudio.c:1.8	Sun Apr 16 12:28:21 2017
+++ src/sys/arch/arm/nvidia/tegra_hdaudio.c	Wed Sep 27 10:50:06 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_hdaudio.c,v 1.8 2017/04/16 12:28:21 jmcneill Exp $ */
+/* $NetBSD: tegra_hdaudio.c,v 1.9 2017/09/27 10:50:06 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_hdaudio.c,v 1.8 2017/04/16 12:28:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_hdaudio.c,v 1.9 2017/09/27 10:50:06 jmcneill Exp $");
 
 #include 
 #include 
@@ -85,7 +85,11 @@ CFATTACH_DECL2_NEW(tegra_hdaudio, sizeof
 static int
 tegra_hdaudio_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-hda", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-hda",
+		"nvidia,tegra124-hda",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-09-27 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 27 10:19:48 UTC 2017

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

Log Message:
add SOC_THERM and TSENSOR clocks


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.14 src/sys/arch/arm/nvidia/tegra210_car.c:1.15
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.14	Tue Sep 26 16:12:45 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Wed Sep 27 10:19:48 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.14 2017/09/26 16:12:45 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.15 2017/09/27 10:19:48 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.14 2017/09/26 16:12:45 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.15 2017/09/27 10:19:48 jmcneill Exp $");
 
 #include 
 #include 
@@ -440,6 +440,14 @@ static const char *mux_mselect_p[] =
 	{ "PLL_P", "PLL_C2", "PLL_C", "PLL_C4_OUT2",
 	  "PLL_C4_OUT1", "CLK_S", "CLK_M", "PLL_C4_OUT0" };
 
+static const char *mux_tsensor_p[] =
+	{ "PLL_P", "PLL_C2", "PLL_C", "PLL_C4_OUT0",
+	  "CLK_M", "PLL_C4_OUT1", "CLK_S", "PLL_C4_OUT2" };
+
+static const char *mux_soc_therm_p[] =
+	{ "CLK_M", "PLL_C", "PLL_P", "PLL_A",
+	  "PLL_C2", "PLL_C4_OUT0", "PLL_C4_OUT1", "PLL_C4_OUT2" };
+
 static struct tegra_clk tegra210_car_clocks[] = {
 	CLK_FIXED("CLK_M", TEGRA210_REF_FREQ),
 
@@ -505,6 +513,13 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_SRC,
 		mux_mselect_p),
 
+	CLK_MUX("MUX_TSENSOR",
+		CAR_CLKSRC_TSENSOR_REG, CAR_CLKSRC_TSENSOR_SRC,
+		mux_tsensor_p),
+	CLK_MUX("MUX_SOC_THERM",
+		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_SRC,
+		mux_soc_therm_p),
+
 	CLK_DIV("DIV_UARTA", "MUX_UARTA",
 		CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_DIV),
 	CLK_DIV("DIV_UARTB", "MUX_UARTB",
@@ -554,6 +569,11 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_MSELECT", "MUX_MSELECT",
 		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_DIV),
 
+CLK_DIV("DIV_TSENSOR", "MUX_TSENSOR",
+CAR_CLKSRC_TSENSOR_REG, CAR_CLKSRC_TSENSOR_DIV),
+	CLK_DIV("DIV_SOC_THERM", "MUX_SOC_THERM",
+		CAR_CLKSRC_SOC_THERM_REG, CAR_CLKSRC_SOC_THERM_DIV),
+
 	CLK_GATE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
 		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
 	CLK_GATE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
@@ -590,6 +610,8 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_V("MSELECT", "DIV_MSELECT", CAR_DEV_V_MSELECT),
 	CLK_GATE_U("PCIE", "CLK_M", CAR_DEV_U_PCIE),
 	CLK_GATE_U("AFI", "MSELECT", CAR_DEV_U_AFI),
+	CLK_GATE_V("TSENSOR", "DIV_TSENSOR", CAR_DEV_V_TSENSOR),
+	CLK_GATE_U("SOC_THERM", "DIV_SOC_THERM", CAR_DEV_U_SOC_THERM),
 };
 
 struct tegra210_init_parent {
@@ -602,6 +624,8 @@ struct tegra210_init_parent {
 	{ "SDMMC2",		"PLL_P", 0, 0 },
 	{ "SDMMC3",		"PLL_P", 0, 0 },
 	{ "SDMMC4",		"PLL_P", 0, 0 },
+	{ "SOC_THERM",		"PLL_P", 0, 0 },
+	{ "TSENSOR",		"CLK_M", 0, 0 },
 	{ "XUSB_GATE",		NULL, 0, 1 },
 	{ "XUSB_HOST_SRC",	"PLL_P", 10200, 0 },
 	{ "XUSB_FALCON_SRC",	"PLL_P", 20400, 0 },



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

2017-09-27 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 27 10:19:14 UTC 2017

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

Log Message:
enable PHYs


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.21 src/sys/arch/arm/nvidia/tegra_pcie.c:1.22
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.21	Tue Sep 26 16:12:45 2017
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Wed Sep 27 10:19:13 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.21 2017/09/26 16:12:45 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.22 2017/09/27 10:19:13 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.21 2017/09/26 16:12:45 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.22 2017/09/27 10:19:13 jmcneill Exp $");
 
 #include 
 #include 
@@ -374,13 +374,21 @@ tegra_pcie_reset_port(struct tegra_pcie_
 static void
 tegra_pcie_enable_ports(struct tegra_pcie_softc * const sc)
 {
+	struct fdtbus_phy *phy;
 	const u_int *data;
-	int child, len;
+	int child, len, n;
 	uint32_t val;
 
 	for (child = OF_child(sc->sc_phandle); child; child = OF_peer(child)) {
 		if (!fdtbus_status_okay(child))
 			continue;
+
+		/* Enable PHYs */
+		for (n = 0; (phy = fdtbus_phy_get_index(child, n)) != NULL; n++)
+			if (fdtbus_phy_enable(phy, true) != 0)
+aprint_error_dev(sc->sc_dev, "couldn't enable %s phy #%d\n",
+fdtbus_get_string(child, "name"), n);
+
 		data = fdtbus_get_prop(child, "reg", );
 		if (data == NULL || len < 4)
 			continue;
@@ -393,6 +401,7 @@ tegra_pcie_enable_ports(struct tegra_pci
 		bus_space_write_4(sc->sc_bst, sc->sc_bsh_afi, AFI_PEXn_CTRL_REG(index), val);
 
 		tegra_pcie_reset_port(sc, index);
+
 	}
 }
 



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

2017-09-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Sep 25 08:55:27 UTC 2017

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

Log Message:
Enable pcie on tegra210


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.19 src/sys/arch/arm/nvidia/tegra_pcie.c:1.20
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.19	Thu Jul 20 01:45:38 2017
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Mon Sep 25 08:55:27 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.19 2017/07/20 01:45:38 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.20 2017/09/25 08:55:27 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.19 2017/07/20 01:45:38 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.20 2017/09/25 08:55:27 jmcneill Exp $");
 
 #include 
 #include 
@@ -92,6 +92,7 @@ struct tegra_pcie_softc {
 static int	tegra_pcie_intr(void *);
 static void	tegra_pcie_init(pci_chipset_tag_t, void *);
 static void	tegra_pcie_enable(struct tegra_pcie_softc *);
+static void	tegra_pcie_enable_clocks(struct tegra_pcie_softc *);
 static void	tegra_pcie_setup(struct tegra_pcie_softc * const);
 static void	tegra_pcie_conf_frag_map(struct tegra_pcie_softc * const,
 	 uint, uint);
@@ -126,9 +127,7 @@ static int
 tegra_pcie_match(device_t parent, cfdata_t cf, void *aux)
 {
 	const char * const compatible[] = {
-#if notyet
 		"nvidia,tegra210-pcie",
-#endif
 		"nvidia,tegra124-pcie",
 		NULL
 	};
@@ -188,6 +187,8 @@ tegra_pcie_attach(device_t parent, devic
 	aprint_naive("\n");
 	aprint_normal(": PCIE\n");
 
+	tegra_pcie_enable_clocks(sc);
+
 	if (!fdtbus_intr_str(faa->faa_phandle, 0, intrstr, sizeof(intrstr))) {
 		aprint_error_dev(self, "failed to decode interrupt\n");
 		return;
@@ -313,6 +314,30 @@ tegra_pcie_intr(void *priv)
 }
 
 static void
+tegra_pcie_enable_clocks(struct tegra_pcie_softc * const sc)
+{
+	const char *clock_names[] = { "pex", "afi", "pll_e", "cml" };
+	const char *reset_names[] = { "pex", "afi", "pcie_x" };
+	struct fdtbus_reset *rst;
+	struct clk *clk;
+	int n;
+
+	for (n = 0; n < __arraycount(clock_names); n++) {
+		clk = fdtbus_clock_get(sc->sc_phandle, clock_names[n]);
+		if (clk == NULL || clk_enable(clk) != 0)
+			aprint_error_dev(sc->sc_dev, "couldn't enable clock %s\n",
+			clock_names[n]);
+	}
+
+	for (n = 0; n < __arraycount(reset_names); n++) {
+		rst = fdtbus_reset_get(sc->sc_phandle, reset_names[n]);
+		if (rst == NULL || fdtbus_reset_deassert(rst) != 0)
+			aprint_error_dev(sc->sc_dev, "couldn't de-assert reset %s\n",
+			reset_names[n]);
+	}
+}
+
+static void
 tegra_pcie_setup(struct tegra_pcie_softc * const sc)
 {
 	size_t i;



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

2017-09-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Sep 25 08:55:07 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h

Log Message:
Add clocks used by pcie


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.12 src/sys/arch/arm/nvidia/tegra210_car.c:1.13
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.12	Mon Sep 25 00:12:21 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Mon Sep 25 08:55:07 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.12 2017/09/25 00:12:21 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.13 2017/09/25 08:55:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.12 2017/09/25 00:12:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.13 2017/09/25 08:55:07 jmcneill Exp $");
 
 #include 
 #include 
@@ -436,6 +436,10 @@ static const char *mux_xusb_ss_p[] =
 	{ "CLK_M", "PLL_REF", "CLK_32K", "PLL_U_480M",
 	  NULL, NULL, NULL, NULL };
 
+static const char *mux_mselect_p[] =
+	{ "PLL_P", "PLL_C2", "PLL_C", "PLL_C4_OUT2",
+	  "PLL_C4_OUT1", "CLK_S", "CLK_M", "PLL_C4_OUT0" };
+
 static struct tegra_clk tegra210_car_clocks[] = {
 	CLK_FIXED("CLK_M", TEGRA210_REF_FREQ),
 
@@ -497,6 +501,10 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_XUSB_FS_REG, CAR_CLKSRC_XUSB_FS_SRC,
 		mux_xusb_fs_p),
 
+	CLK_MUX("MUX_MSELECT",
+		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_SRC,
+		mux_mselect_p),
+
 	CLK_DIV("DIV_UARTA", "MUX_UARTA",
 		CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_DIV),
 	CLK_DIV("DIV_UARTB", "MUX_UARTB",
@@ -543,11 +551,19 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_PLL_U_OUT2", "PLL_U",
 		CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_RATIO),
 
+	CLK_DIV("DIV_MSELECT", "MUX_MSELECT",
+		CAR_CLKSRC_MSELECT_REG, CAR_CLKSRC_MSELECT_DIV),
+
 	CLK_GATE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
 		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
 	CLK_GATE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
 		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_CLKEN),
 
+	CLK_GATE("CML0", "PLL_E",
+		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML0_OEN),
+	CLK_GATE("CML1", "PLL_E",
+		 CAR_PLLE_AUX_REG, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_CML1_OEN),
+
 	CLK_GATE_L("UARTA", "DIV_UARTA", CAR_DEV_L_UARTA),
 	CLK_GATE_L("UARTB", "DIV_UARTB", CAR_DEV_L_UARTB),
 	CLK_GATE_H("UARTC", "DIV_UARTC", CAR_DEV_H_UARTC),
@@ -571,6 +587,9 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_H("APBDMA", "CLK_M", CAR_DEV_H_APBDMA),
 	CLK_GATE_L("USBD", "PLL_U_480M", CAR_DEV_L_USBD),
 	CLK_GATE_H("USB2", "PLL_U_480M", CAR_DEV_H_USB2),
+	CLK_GATE_V("MSELECT", "DIV_MSELECT", CAR_DEV_V_MSELECT),
+	CLK_GATE_U("PCIE", "CLK_M", CAR_DEV_U_PCIE),
+	CLK_GATE_U("AFI", "MSELECT", CAR_DEV_U_AFI),
 };
 
 struct tegra210_init_parent {

Index: src/sys/arch/arm/nvidia/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.7 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.8
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.7	Sun Sep 24 20:09:53 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Mon Sep 25 08:55:07 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.7 2017/09/24 20:09:53 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.8 2017/09/25 08:55:07 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -482,6 +482,10 @@
 #define	CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_CLKM		0
 #define	CAR_CCLKG_BURST_POLICY_CWAKEUP_SOURCE_PLLX_OUT0_LJ	8
 
+#define	CAR_CLKSRC_MSELECT_REG		0x3b4
+#define	CAR_CLKSRC_MSELECT_SRC		__BITS(31,29)
+#define	CAR_CLKSRC_MSELECT_DIV		__BITS(7,0)
+
 #define	CAR_CLKSRC_TSENSOR_REG		0x3b8
 #define	CAR_CLKSRC_TSENSOR_SRC		__BITS(31,29)
 #define	CAR_CLKSRC_TSENSOR_SRC_CLK_M	4



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

2017-09-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Sep 25 00:12:21 UTC 2017

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

Log Message:
Disable debug again


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.11 src/sys/arch/arm/nvidia/tegra210_car.c:1.12
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.11	Mon Sep 25 00:03:34 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Mon Sep 25 00:12:21 2017
@@ -1,5 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.11 2017/09/25 00:03:34 jmcneill Exp $ */
-#define TEGRA210_CAR_DEBUG
+/* $NetBSD: tegra210_car.c,v 1.12 2017/09/25 00:12:21 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -28,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.11 2017/09/25 00:03:34 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.12 2017/09/25 00:12:21 jmcneill Exp $");
 
 #include 
 #include 



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

2017-09-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Sep 25 00:03:34 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_xusbpad.c tegra_xusb.c

Log Message:
USB works on Tegra X1 now.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra210_car.c \
src/sys/arch/arm/nvidia/tegra_xusb.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.10 src/sys/arch/arm/nvidia/tegra210_car.c:1.11
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.10	Sun Sep 24 20:09:53 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Mon Sep 25 00:03:34 2017
@@ -1,4 +1,5 @@
-/* $NetBSD: tegra210_car.c,v 1.10 2017/09/24 20:09:53 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.11 2017/09/25 00:03:34 jmcneill Exp $ */
+#define TEGRA210_CAR_DEBUG
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.10 2017/09/24 20:09:53 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.11 2017/09/25 00:03:34 jmcneill Exp $");
 
 #include 
 #include 
@@ -538,6 +539,15 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_XUSB_FALCON_REG, CAR_CLKSRC_XUSB_FALCON_DIV),
 	CLK_DIV("USB2_HSIC_TRK", "CLK_M",
 		CAR_CLKSRC_USB2_HSIC_TRK_REG, CAR_CLKSRC_USB2_HSIC_TRK_DIV),
+	CLK_DIV("DIV_PLL_U_OUT1", "PLL_U",
+		CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_RATIO),
+	CLK_DIV("DIV_PLL_U_OUT2", "PLL_U",
+		CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_RATIO),
+
+	CLK_GATE("PLL_U_OUT1", "DIV_PLL_U_OUT1",
+		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_CLKEN),
+	CLK_GATE("PLL_U_OUT2", "DIV_PLL_U_OUT2",
+		 CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_CLKEN),
 
 	CLK_GATE_L("UARTA", "DIV_UARTA", CAR_DEV_L_UARTA),
 	CLK_GATE_L("UARTB", "DIV_UARTB", CAR_DEV_L_UARTB),
@@ -553,10 +563,11 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_V("I2C4", "DIV_I2C4", CAR_DEV_V_I2C4),
 	CLK_GATE_H("I2C5", "DIV_I2C5", CAR_DEV_H_I2C5),
 	CLK_GATE_X("I2C6", "DIV_I2C6", CAR_DEV_X_I2C6),
+	CLK_GATE_W("XUSB_GATE", "CLK_M", CAR_DEV_W_XUSB),
 	CLK_GATE_U("XUSB_HOST", "XUSB_HOST_SRC", CAR_DEV_U_XUSB_HOST),
 	CLK_GATE_W("XUSB_SS", "XUSB_SS_SRC", CAR_DEV_W_XUSB_SS),
 	CLK_GATE_H("FUSE", "CLK_M", CAR_DEV_H_FUSE),
-	CLK_GATE_Y("USB2_TRK", "UBS2_HSIC_TRK", CAR_DEV_Y_USB2_TRK),
+	CLK_GATE_Y("USB2_TRK", "USB2_HSIC_TRK", CAR_DEV_Y_USB2_TRK),
 	CLK_GATE_Y("HSIC_TRK", "USB2_HSIC_TRK", CAR_DEV_Y_HSIC_TRK),
 	CLK_GATE_H("APBDMA", "CLK_M", CAR_DEV_H_APBDMA),
 	CLK_GATE_L("USBD", "PLL_U_480M", CAR_DEV_L_USBD),
@@ -566,15 +577,20 @@ static struct tegra_clk tegra210_car_clo
 struct tegra210_init_parent {
 	const char *clock;
 	const char *parent;
+	u_int rate;
+	u_int enable;
 } tegra210_init_parents[] = {
-	{ "SDMMC1", 		"PLL_P" },
-	{ "SDMMC2",		"PLL_P" },
-	{ "SDMMC3",		"PLL_P" },
-	{ "SDMMC4",		"PLL_P" },
-	{ "XUSB_HOST_SRC",	"PLL_P" },
-	{ "XUSB_FALCON_SRC",	"PLL_P" },
-	{ "XUSB_SS_SRC",	"PLL_U_480M" },
-	{ "XUSB_FS_SRC",	"PLL_U_48M" },
+	{ "SDMMC1", 		"PLL_P", 0, 0 },
+	{ "SDMMC2",		"PLL_P", 0, 0 },
+	{ "SDMMC3",		"PLL_P", 0, 0 },
+	{ "SDMMC4",		"PLL_P", 0, 0 },
+	{ "XUSB_GATE",		NULL, 0, 1 },
+	{ "XUSB_HOST_SRC",	"PLL_P", 10200, 0 },
+	{ "XUSB_FALCON_SRC",	"PLL_P", 20400, 0 },
+	{ "XUSB_SS_SRC",	"PLL_U_480M", 12000, 0 },
+	{ "XUSB_FS_SRC",	"PLL_U_48M", 4800, 0 },
+	{ "PLL_U_OUT1",		NULL, 4800, 1 },
+	{ "PLL_U_OUT2",		NULL, 6000, 1 },
 };
 
 struct tegra210_car_rst {
@@ -719,18 +735,38 @@ tegra210_car_parent_init(struct tegra210
 
 	for (n = 0; n < __arraycount(tegra210_init_parents); n++) {
 		clk = clk_get(>sc_clkdom, tegra210_init_parents[n].clock);
-		KASSERT(clk != NULL);
-		clk_parent = clk_get(>sc_clkdom,
-		tegra210_init_parents[n].parent);
-		KASSERT(clk_parent != NULL);
-
-		error = clk_set_parent(clk, clk_parent);
-		if (error) {
-			aprint_error_dev(sc->sc_dev,
-			"couldn't set '%s' parent to '%s': %d\n",
-			clk->name, clk_parent->name, error);
+		KASSERTMSG(clk != NULL, "tegra210 clock %s not found", tegra210_init_parents[n].clock);
+
+		if (tegra210_init_parents[n].parent != NULL) {
+			clk_parent = clk_get(>sc_clkdom,
+			tegra210_init_parents[n].parent);
+			KASSERT(clk_parent != NULL);
+
+			error = clk_set_parent(clk, clk_parent);
+			if (error) {
+aprint_error_dev(sc->sc_dev,
+"couldn't set '%s' parent to '%s': %d\n",
+clk->name, clk_parent->name, error);
+			}
+			clk_put(clk_parent);
+		}
+		if (tegra210_init_parents[n].rate != 0) {
+			error = clk_set_rate(clk, tegra210_init_parents[n].rate);
+			if (error) {
+aprint_error_dev(sc->sc_dev,
+"couldn't set '%s' rate to %u Hz: %d\n",
+clk->name, tegra210_init_parents[n].rate,
+error);
+			}
+		

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

2017-09-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Sep 24 20:09:53 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h
tegra210_xusbpad.c tegra_var.h

Log Message:
More XUSB init. A USB3 memory stick seems to work now.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra210_carreg.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra210_xusbpad.c
cvs rdiff -u -r1.41 -r1.42 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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.9 src/sys/arch/arm/nvidia/tegra210_car.c:1.10
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.9	Sat Sep 23 23:58:31 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Sun Sep 24 20:09:53 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.9 2017/09/23 23:58:31 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.10 2017/09/24 20:09:53 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.9 2017/09/23 23:58:31 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.10 2017/09/24 20:09:53 jmcneill Exp $");
 
 #include 
 #include 
@@ -559,6 +559,8 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_Y("USB2_TRK", "UBS2_HSIC_TRK", CAR_DEV_Y_USB2_TRK),
 	CLK_GATE_Y("HSIC_TRK", "USB2_HSIC_TRK", CAR_DEV_Y_HSIC_TRK),
 	CLK_GATE_H("APBDMA", "CLK_M", CAR_DEV_H_APBDMA),
+	CLK_GATE_L("USBD", "PLL_U_480M", CAR_DEV_L_USBD),
+	CLK_GATE_H("USB2", "PLL_U_480M", CAR_DEV_H_USB2),
 };
 
 struct tegra210_init_parent {
@@ -761,6 +763,8 @@ tegra210_car_utmip_init(struct tegra210_
 	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG,
 	0x3, CAR_UTMIP_PLL_CFG1_XTAL_FREQ_COUNT);
 
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_L_CLR_REG, CAR_DEV_L_USBD);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_H_CLR_REG, CAR_DEV_H_USB2);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_XUSB);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_Y_CLR_REG, CAR_DEV_Y_PEX_USB_UPHY);
 	bus_space_write_4(bst, bsh, CAR_RST_DEV_Y_CLR_REG, CAR_DEV_Y_SATA_USB_UPHY);
@@ -827,6 +831,24 @@ tegra210_car_xusb_init(struct tegra210_c
 	delay(2);
 
 	/*
+	 * Now switch PLLU to hw controlled mode.
+	 */
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, 0, CAR_PLLU_BASE_OVERRIDE);
+	tegra_reg_set_clear(bst, bsh, CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_REG,
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE |
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_USE_SWITCH_DETECT |
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_USE_LOCKDET,
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL |
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_CLK_SWITCH_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CLK_RST_CONTROLLER_XUSB_PLL_CFG0_REG, 0,
+	CLK_RST_CONTROLLER_XUSB_PLL_CFG0_PLLU_LOCK_DLY);
+	delay(1);
+	tegra_reg_set_clear(bst, bsh, CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_REG,
+	CLK_RST_CONTROLLER_PLLU_HW_PWRDN_CFG0_SEQ_ENABLE, 0);
+	delay(1);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, 0, CAR_PLLU_BASE_CLKENABLE_USB);
+
+	/*
 	 * Set up PLLREFE
 	 */
 	tegra_reg_set_clear(bst, bsh, CAR_PLLREFE_MISC_REG,
@@ -1510,3 +1532,35 @@ tegra210_car_reset_deassert(device_t dev
 
 	return 0;
 }
+
+void
+tegra210_car_xusbio_enable_hw_control(void)
+{
+	device_t dev = device_find_by_driver_unit("tegra210car", 0);
+	KASSERT(dev != NULL);
+	struct tegra210_car_softc * const sc = device_private(dev);
+	bus_space_tag_t bst = sc->sc_bst;
+	bus_space_handle_t bsh = sc->sc_bsh;
+
+	tegra_reg_set_clear(bst, bsh, CAR_XUSBIO_PLL_CFG0_REG,
+	0,
+	CAR_XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL |
+	CAR_XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_XUSBIO_PLL_CFG0_REG,
+	CAR_XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ |
+	CAR_XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET,
+	0);
+}
+
+void
+tegra210_car_xusbio_enable_hw_seq(void)
+{
+	device_t dev = device_find_by_driver_unit("tegra210car", 0);
+	KASSERT(dev != NULL);
+	struct tegra210_car_softc * const sc = device_private(dev);
+	bus_space_tag_t bst = sc->sc_bst;
+	bus_space_handle_t bsh = sc->sc_bsh;
+
+	tegra_reg_set_clear(bst, bsh, CAR_XUSBIO_PLL_CFG0_REG,
+	CAR_XUSBIO_PLL_CFG0_SEQ_ENABLE, 0);
+}

Index: src/sys/arch/arm/nvidia/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.6 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.7
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.6	Sat Sep 23 23:21:35 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Sun Sep 24 20:09:53 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.6 2017/09/23 23:21:35 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.7 2017/09/24 20:09:53 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared 

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

2017-09-24 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Sep 24 20:09:22 UTC 2017

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

Log Message:
Enable XUSB power rails at attach


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.9 src/sys/arch/arm/nvidia/tegra_xusb.c:1.10
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.9	Fri Sep 22 18:13:36 2017
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Sun Sep 24 20:09:22 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.9 2017/09/22 18:13:36 jmcneill Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.10 2017/09/24 20:09:22 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.9 2017/09/22 18:13:36 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.10 2017/09/24 20:09:22 jmcneill Exp $");
 
 #include 
 #include 
@@ -42,8 +42,9 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c
 #include 
 #include 
 #include 
-
 #include 
+#include 
+
 #include 
 
 #include 
@@ -231,6 +232,13 @@ tegra_xusb_attach(device_t parent, devic
 	}
 	aprint_normal_dev(self, "interrupting on %s\n", intrstr);
 
+	/* Enable XUSB power rails */
+
+	tegra_pmc_power(PMC_PARTID_XUSBC, true);	/* Host/USB2.0 */
+	tegra_pmc_power(PMC_PARTID_XUSBA, true);	/* SuperSpeed */
+
+	/* Enable XUSB clocks */
+
 	clk = fdtbus_clock_get(faa->faa_phandle, "pll_e");
 	rate = clk_get_rate(clk);
 	error = clk_enable(clk); /* XXX set frequency */



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

2017-09-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Sep 23 23:58:04 UTC 2017

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

Log Message:
Add APBDMA clock


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.7 src/sys/arch/arm/nvidia/tegra210_car.c:1.8
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.7	Sat Sep 23 23:21:35 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Sat Sep 23 23:58:04 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.7 2017/09/23 23:21:35 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.8 2017/09/23 23:58:04 jmcneill Exp $ */
 #define TEGRA210_CAR_DEBUG
 
 /*-
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.7 2017/09/23 23:21:35 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.8 2017/09/23 23:58:04 jmcneill Exp $");
 
 #include 
 #include 
@@ -559,6 +559,7 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_H("FUSE", "CLK_M", CAR_DEV_H_FUSE),
 	CLK_GATE_Y("USB2_TRK", "UBS2_HSIC_TRK", CAR_DEV_Y_USB2_TRK),
 	CLK_GATE_Y("HSIC_TRK", "USB2_HSIC_TRK", CAR_DEV_Y_HSIC_TRK),
+	CLK_GATE_H("APBDMA", "CLK_M", CAR_DEV_H_APBDMA),
 };
 
 struct tegra210_init_parent {



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

2017-09-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Sep 23 23:58:32 UTC 2017

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

Log Message:
Disable debug


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.8 src/sys/arch/arm/nvidia/tegra210_car.c:1.9
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.8	Sat Sep 23 23:58:04 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Sat Sep 23 23:58:31 2017
@@ -1,5 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.8 2017/09/23 23:58:04 jmcneill Exp $ */
-#define TEGRA210_CAR_DEBUG
+/* $NetBSD: tegra210_car.c,v 1.9 2017/09/23 23:58:31 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -28,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.8 2017/09/23 23:58:04 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.9 2017/09/23 23:58:31 jmcneill Exp $");
 
 #include 
 #include 



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

2017-09-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Sep 23 23:58:18 UTC 2017

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

Log Message:
Match nvidia,tegra210-apbdma


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_apbdma.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_apbdma.c
diff -u src/sys/arch/arm/nvidia/tegra_apbdma.c:1.3 src/sys/arch/arm/nvidia/tegra_apbdma.c:1.4
--- src/sys/arch/arm/nvidia/tegra_apbdma.c:1.3	Wed May  3 13:13:12 2017
+++ src/sys/arch/arm/nvidia/tegra_apbdma.c	Sat Sep 23 23:58:18 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_apbdma.c,v 1.3 2017/05/03 13:13:12 jakllsch Exp $ */
+/* $NetBSD: tegra_apbdma.c,v 1.4 2017/09/23 23:58:18 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.3 2017/05/03 13:13:12 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.4 2017/09/23 23:58:18 jmcneill Exp $");
 
 #include 
 #include 
@@ -94,7 +94,11 @@ CFATTACH_DECL_NEW(tegra_apbdma, sizeof(s
 static int
 tegra_apbdma_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-apbdma", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-apbdma",
+		"nvidia,tegra124-apbdma",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-09-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Sep 23 23:21:35 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h
tegra210_xusbpad.c

Log Message:
More XUSB init stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra210_carreg.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.6 src/sys/arch/arm/nvidia/tegra210_car.c:1.7
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.6	Fri Sep 22 10:54:44 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Sat Sep 23 23:21:35 2017
@@ -1,4 +1,5 @@
-/* $NetBSD: tegra210_car.c,v 1.6 2017/09/22 10:54:44 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.7 2017/09/23 23:21:35 jmcneill Exp $ */
+#define TEGRA210_CAR_DEBUG
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.6 2017/09/22 10:54:44 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.7 2017/09/23 23:21:35 jmcneill Exp $");
 
 #include 
 #include 
@@ -738,31 +739,58 @@ tegra210_car_utmip_init(struct tegra210_
 	bus_space_tag_t bst = sc->sc_bst;
 	bus_space_handle_t bsh = sc->sc_bsh;
 
-	const u_int enable_dly_count = 5;
-	const u_int stable_count = 150;
-	const u_int active_dly_count = 24;
-	const u_int xtal_freq_count = 385;
+	/*
+	 * Set up the UTMI PLL.
+	 */
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG3_REG,
+	0, CAR_UTMIP_PLL_CFG3_REF_SRC_SEL);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG3_REG,
+	0, CAR_UTMIP_PLL_CFG3_REF_DIS);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	0, CAR_UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE);
+	delay(10);
+	/* TODO UTMIP_PLL_CFG0 */
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG2_REG,
+	CAR_UTMIP_PLL_CFG2_PHY_XTAL_CLOCKEN, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG2_REG,
+	0, CAR_UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT);	/* Don't care */
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG2_REG,
+	0, CAR_UTMIP_PLL_CFG2_STABLE_COUNT);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG,
+	0, CAR_UTMIP_PLL_CFG1_ENABLE_DLY_COUNT);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG,
+	0x3, CAR_UTMIP_PLL_CFG1_XTAL_FREQ_COUNT);
+
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_W_CLR_REG, CAR_DEV_W_XUSB);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_Y_CLR_REG, CAR_DEV_Y_PEX_USB_UPHY);
+	bus_space_write_4(bst, bsh, CAR_RST_DEV_Y_CLR_REG, CAR_DEV_Y_SATA_USB_UPHY);
 
 	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG2_REG,
-	__SHIFTIN(stable_count, CAR_UTMIP_PLL_CFG2_STABLE_COUNT) |
-	__SHIFTIN(active_dly_count, CAR_UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT),
+	CAR_UTMIP_PLL_CFG2_PD_SAMP_A_POWERUP |
+	CAR_UTMIP_PLL_CFG2_PD_SAMP_B_POWERUP |
+	CAR_UTMIP_PLL_CFG2_PD_SAMP_C_POWERUP,
 	CAR_UTMIP_PLL_CFG2_PD_SAMP_A_POWERDOWN |
 	CAR_UTMIP_PLL_CFG2_PD_SAMP_B_POWERDOWN |
-	CAR_UTMIP_PLL_CFG2_PD_SAMP_C_POWERDOWN |
-	CAR_UTMIP_PLL_CFG2_STABLE_COUNT |
-	CAR_UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT);
-
-tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG,
-	__SHIFTIN(enable_dly_count, CAR_UTMIP_PLL_CFG1_ENABLE_DLY_COUNT) |
-	__SHIFTIN(xtal_freq_count, CAR_UTMIP_PLL_CFG1_XTAL_FREQ_COUNT),
-	CAR_UTMIP_PLL_CFG1_ENABLE_DLY_COUNT |
-	CAR_UTMIP_PLL_CFG1_XTAL_FREQ_COUNT);
-
-	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG,
-	0,
-	CAR_UTMIP_PLL_CFG1_PLLU_POWERDOWN |
-	CAR_UTMIP_PLL_CFG1_PLL_ENABLE_POWERDOWN);
+	CAR_UTMIP_PLL_CFG2_PD_SAMP_C_POWERDOWN);
 
+	/*
+	 * Set up UTMI PLL under hardware control
+	 */
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG1_REG, 0,
+	CAR_UTMIP_PLL_CFG1_PLL_ENABLE_POWERUP | CAR_UTMIP_PLL_CFG1_PLL_ENABLE_POWERDOWN);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	0, CAR_UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	CAR_UTMIPLL_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	0, CAR_UTMIPLL_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	CAR_UTMIPLL_HW_PWRDN_CFG0_USE_LOCKDET, 0);
+	tegra_reg_set_clear(bst, bsh, CLK_RST_CONTROLLER_XUSB_PLL_CFG0_REG,
+	0, CLK_RST_CONTROLLER_XUSB_PLL_CFG0_UTMIPLL_LOCK_DLY);
+	delay(1);
+	tegra_reg_set_clear(bst, bsh, CAR_UTMIPLL_HW_PWRDN_CFG0_REG,
+	CAR_UTMIPLL_HW_PWRDN_CFG0_SEQ_ENABLE, 0);
 }
 
 static void
@@ -781,6 +809,11 @@ tegra210_car_xusb_init(struct tegra210_c
 	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, 0, CAR_PLLU_OUTA_OUT1_RSTN);
 	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, 0, 

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

2017-09-22 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Fri Sep 22 20:25:51 UTC 2017

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

Log Message:
use more symbolic register bits


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra124_xusbpad.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/tegra124_xusbpad.c
diff -u src/sys/arch/arm/nvidia/tegra124_xusbpad.c:1.1 src/sys/arch/arm/nvidia/tegra124_xusbpad.c:1.2
--- src/sys/arch/arm/nvidia/tegra124_xusbpad.c:1.1	Tue Sep 19 20:46:12 2017
+++ src/sys/arch/arm/nvidia/tegra124_xusbpad.c	Fri Sep 22 20:25:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_xusbpad.c,v 1.1 2017/09/19 20:46:12 jmcneill Exp $ */
+/* $NetBSD: tegra124_xusbpad.c,v 1.2 2017/09/22 20:25:51 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -29,7 +29,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_xusbpad.c,v 1.1 2017/09/19 20:46:12 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_xusbpad.c,v 1.2 2017/09/22 20:25:51 jakllsch Exp $");
 
 #include 
 #include 
@@ -318,17 +318,28 @@ tegra124_xusbpad_xhci_enable(device_t de
 	0, XUSB_PADCTL_ELPG_PROGRAM_SSP0_ELPG_VCORE_DOWN);
 
 	DELAY(200);
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0, __BIT(26));
+	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0,
+	XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN);
 	DELAY(200);
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0, __BIT(25));
+	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0,
+	XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY);
 	DELAY(200);
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0, __BIT(24));
+	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_ELPG_PROGRAM_REG, 0,
+	XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN);
 	DELAY(200);
 
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG, 0, __BITS(22,16));
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG, __BIT(4), 0);
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG, __BIT(8), 0);
-	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG, __BIT(9), 0);
+	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG, 0,
+	XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD2 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD1 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD0 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED3 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED2 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED1 |
+	XUSB_PADCTL_OC_DET_OC_DETECTED0);
+	tegra_reg_set_clear(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_OC_DET_REG,
+	XUSB_PADCTL_OC_DET_VBUS_ENABLE2 | 
+	XUSB_PADCTL_OC_DET_VBUS_ENABLE1 |
+	XUSB_PADCTL_OC_DET_VBUS_ENABLE0, 0);
 
 #ifdef TEGRA_XUSBPAD_DEBUG
 	val = bus_space_read_4(sc->sc_bst, sc->sc_bsh, XUSB_PADCTL_USB2_PAD_MUX_REG);



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

2017-09-22 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Fri Sep 22 20:23:22 UTC 2017

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

Log Message:
Add more Tegra124 XUSB PADCTL register bits.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra124_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/tegra124_xusbpadreg.h
diff -u src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.2 src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.3
--- src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.2	Fri Sep 22 19:11:47 2017
+++ src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h	Fri Sep 22 20:23:22 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_xusbpadreg.h,v 1.2 2017/09/22 19:11:47 jakllsch Exp $ */
+/* $NetBSD: tegra124_xusbpadreg.h,v 1.3 2017/09/22 20:23:22 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -118,6 +118,23 @@
 #define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL5_REG		0x158
 #define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL6_REG		0x15c
 
+#define XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD2		__BIT(22)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD1		__BIT(21)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED_VBUS_PAD0		__BIT(20)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED3__BIT(19)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED2__BIT(18)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED1__BIT(17)
+#define XUSB_PADCTL_OC_DET_OC_DETECTED0__BIT(16)
+#define XUSB_PADCTL_OC_DET_VBUS_ENABLE1__BIT(9)
+#define XUSB_PADCTL_OC_DET_VBUS_ENABLE0__BIT(8)
+#define XUSB_PADCTL_OC_DET_VBUS_ENABLE2__BIT(4)
+
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN		__BIT(26)
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY	__BIT(25)
+#define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN		__BIT(24)
+#define XUSB_PADCTL_ELPG_PROGRAM_SSP1_ELPG_VCORE_DOWN		__BIT(22)
+#define XUSB_PADCTL_ELPG_PROGRAM_SSP1_ELPG_CLAMP_EN_EARLY	__BIT(21)
+#define XUSB_PADCTL_ELPG_PROGRAM_SSP1_ELPG_CLAMP_EN		__BIT(20)
 #define XUSB_PADCTL_ELPG_PROGRAM_SSP0_ELPG_VCORE_DOWN		__BIT(18)
 #define XUSB_PADCTL_ELPG_PROGRAM_SSP0_ELPG_CLAMP_EN_EARLY	__BIT(17)
 #define XUSB_PADCTL_ELPG_PROGRAM_SSP0_ELPG_CLAMP_EN		__BIT(16)



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

2017-09-22 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Fri Sep 22 19:11:47 UTC 2017

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

Log Message:
Update #include guard #define after move.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra124_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/tegra124_xusbpadreg.h
diff -u src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.1 src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.2
--- src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h:1.1	Tue Sep 19 20:46:12 2017
+++ src/sys/arch/arm/nvidia/tegra124_xusbpadreg.h	Fri Sep 22 19:11:47 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_xusbpadreg.h,v 1.1 2017/09/19 20:46:12 jmcneill Exp $ */
+/* $NetBSD: tegra124_xusbpadreg.h,v 1.2 2017/09/22 19:11:47 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _ARM_TEGRA_XUSBPADCTLREG_H
-#define _ARM_TEGRA_XUSBPADCTLREG_H
+#ifndef _ARM_TEGRA_TEGRA124_XUSBPADREG_H
+#define _ARM_TEGRA_TEGRA124_XUSBPADREG_H
 
 #define XUSB_PADCTL_BOOT_MEDIA_REG			0x000
 #define XUSB_PADCTL_USB2_PAD_MUX_REG			0x004
@@ -158,4 +158,4 @@
 #define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ_OVRD	__BIT(1)
 #define XUSB_PADCTL_IOPHY_MISC_PAD_S0_CTL1_IDDQ		__BIT(0)
 
-#endif /* _ARM_TEGRA_XUSBPADCTLREG_H */
+#endif /* _ARM_TEGRA_TEGRA124_XUSBPADREG_H */



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

2017-09-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 18:13:37 UTC 2017

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

Log Message:
Enable regulators at attach


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.8 src/sys/arch/arm/nvidia/tegra_xusb.c:1.9
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.8	Thu Sep 21 23:44:48 2017
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Fri Sep 22 18:13:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.8 2017/09/21 23:44:48 jmcneill Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.9 2017/09/22 18:13:36 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.8 2017/09/21 23:44:48 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.9 2017/09/22 18:13:36 jmcneill Exp $");
 
 #include 
 #include 
@@ -122,6 +122,7 @@ static void	tegra_xusb_init(struct tegra
 static int	tegra_xusb_open_fw(struct tegra_xusb_softc * const);
 static int	tegra_xusb_load_fw(struct tegra_xusb_softc * const, void *,
 size_t);
+static void	tegra_xusb_init_regulators(struct tegra_xusb_softc * const);
 
 static int	xusb_mailbox_send(struct tegra_xusb_softc * const, uint32_t);
 
@@ -320,6 +321,8 @@ tegra_xusb_attach(device_t parent, devic
 
 	DELAY(1);
 
+	tegra_xusb_init_regulators(psc);
+
 	tegra_xusb_init(psc);
 
 #if defined(TEGRA124_XUSB_BIN_STATIC)
@@ -487,6 +490,39 @@ clk_fail:
 }
 
 static void
+tegra_xusb_init_regulators(struct tegra_xusb_softc * const psc)
+{
+	const char * supply_names[] = {
+		"dvddio-pex-supply",
+		"hvddio-pex-supply",
+		"avdd-usb-supply",
+		"avdd-pll-utmip-supply",
+		"avdd-pll-uerefe-supply",
+		"dvdd-usb-ss-pll-supply",
+		"hvdd-usb-ss-pll-e-supply"
+	};
+	device_t dev = psc->sc_xhci.sc_dev;
+	const int phandle = psc->sc_phandle;
+	struct fdtbus_regulator *reg;
+	int n, error;
+
+	for (n = 0; n < __arraycount(supply_names); n++) {
+		if (!of_hasprop(phandle, supply_names[n]))
+			continue;
+		reg = fdtbus_regulator_acquire(phandle, supply_names[n]);
+		if (reg == NULL) {
+			aprint_error_dev(dev, "couldn't acquire supply '%s'\n",
+			supply_names[n]);
+			continue;
+		}
+		error = fdtbus_regulator_enable(reg);
+		if (error != 0)
+			aprint_error_dev(dev, "couldn't enable supply '%s': %d\n",
+			supply_names[n], error);
+	}
+}
+
+static void
 tegra_xusb_init(struct tegra_xusb_softc * const psc)
 {
 	struct xhci_softc * const sc = >sc_xhci;



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

2017-09-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 11:01:24 UTC 2017

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

Log Message:
Print an error if we can't acquire a clock or reset


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_xusbpad.c
diff -u src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.3 src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.4
--- src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.3	Fri Sep 22 01:24:31 2017
+++ src/sys/arch/arm/nvidia/tegra210_xusbpad.c	Fri Sep 22 11:01:24 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_xusbpad.c,v 1.3 2017/09/22 01:24:31 jmcneill Exp $ */
+/* $NetBSD: tegra210_xusbpad.c,v 1.4 2017/09/22 11:01:24 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.3 2017/09/22 01:24:31 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.4 2017/09/22 11:01:24 jmcneill Exp $");
 
 #include 
 #include 
@@ -237,15 +237,19 @@ tegra210_xusbpad_configure_pads(struct t
 		return;		/* pad is disabled */
 
 	/* Enable the pad's resources */
-	clk = fdtbus_clock_get_index(phandle, 0);
-	if (clk && clk_enable(clk) != 0) {
-		aprint_error_dev(sc->sc_dev, "couldn't enable %s's clock\n", name);
-		return;
-	}
-	rst = fdtbus_reset_get_index(phandle, 0);
-	if (rst && fdtbus_reset_deassert(rst) != 0) {
-		aprint_error_dev(sc->sc_dev, "couldn't de-assert %s's reset\n", name);
-		return;
+	if (of_hasprop(phandle, "clocks")) {
+		clk = fdtbus_clock_get_index(phandle, 0);
+		if (clk == NULL || clk_enable(clk) != 0) {
+			aprint_error_dev(sc->sc_dev, "couldn't enable %s's clock\n", name);
+			return;
+		}
+	}
+	if (of_hasprop(phandle, "resets")) {
+		rst = fdtbus_reset_get_index(phandle, 0);
+		if (rst == NULL || fdtbus_reset_deassert(rst) != 0) {
+			aprint_error_dev(sc->sc_dev, "couldn't de-assert %s's reset\n", name);
+			return;
+		}
 	}
 
 	/* Configure lanes */



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

2017-09-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 10:55:43 UTC 2017

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

Log Message:
#define


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra210_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/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.4 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.5
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.4	Fri Sep 22 10:54:44 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Fri Sep 22 10:55:43 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.4 2017/09/22 10:54:44 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.5 2017/09/22 10:55:43 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -29,18 +29,18 @@
 #ifndef _ARM_TEGRA210_CARREG_H
 #define _ARM_TEGRA210_CARREG_H
 
-#define TEGRA210_REF_FREQ	3840
+#define	TEGRA210_REF_FREQ	3840
 
-#define CAR_RST_SOURCE_REG	0x00
-#define CAR_RST_SOURCE_WDT_EN		__BIT(5)
-#define CAR_RST_SOURCE_WDT_SEL		__BIT(4)
-#define CAR_RST_SOURCE_WDT_SYS_RST_EN	__BIT(2)
-#define CAR_RST_SOURCE_WDT_COP_RST_EN	__BIT(1)
-#define CAR_RST_SOURCE_WDT_CPU_RST_EN	__BIT(0)
-
-#define CAR_CLK_OUT_ENB_L_REG	0x10
-#define CAR_CLK_OUT_ENB_H_REG	0x14
-#define CAR_CLK_OUT_ENB_U_REG	0x18
+#define	CAR_RST_SOURCE_REG	0x00
+#define	CAR_RST_SOURCE_WDT_EN		__BIT(5)
+#define	CAR_RST_SOURCE_WDT_SEL		__BIT(4)
+#define	CAR_RST_SOURCE_WDT_SYS_RST_EN	__BIT(2)
+#define	CAR_RST_SOURCE_WDT_COP_RST_EN	__BIT(1)
+#define	CAR_RST_SOURCE_WDT_CPU_RST_EN	__BIT(0)
+
+#define	CAR_CLK_OUT_ENB_L_REG	0x10
+#define	CAR_CLK_OUT_ENB_H_REG	0x14
+#define	CAR_CLK_OUT_ENB_U_REG	0x18
 
 #define	CAR_PLLE_SS_CNTL_REG	0x68
 #define	CAR_PLLE_SS_CNTL_INTEGOFFSET	__BITS(31,30)
@@ -54,60 +54,60 @@
 #define	CAR_PLLE_SS_CNTL_BYPASS_SS	__BIT(10)
 #define	CAR_PLLE_SS_CNTL_SSCMAX		__BITS(8,0)
 
-#define CAR_PLLP_BASE_REG	0xa0
-#define CAR_PLLP_BASE_BYPASS		__BIT(31)
-#define CAR_PLLP_BASE_ENABLE		__BIT(30)
-#define CAR_PLLP_BASE_REF_DIS		__BIT(29)
-#define CAR_PLLP_BASE_OVERRIDE		__BIT(28)
-#define CAR_PLLP_BASE_LOCK		__BIT(27)
-#define CAR_PLLP_BASE_DIVP		__BITS(24,20)
-#define CAR_PLLP_BASE_DIVN		__BITS(17,10)
-#define CAR_PLLP_BASE_DIVM		__BITS(7,0)
-
-#define CAR_PLLP_OUTA_REG	0xa4
-#define CAR_PLLP_OUTA_OUT1_RATIO	__BITS(15,8)
-#define CAR_PLLP_OUTA_OUT1_OVRRIDE	__BIT(2)
-#define CAR_PLLP_OUTA_OUT1_CLKEN	__BIT(1)
-#define CAR_PLLP_OUTA_OUT1_RSTN		__BIT(0)
-#define CAR_PLLP_OUTB_REG	0xa8
-#define CAR_PLLP_OUTB_OUT4_RATIO	__BITS(31,24)
-#define CAR_PLLP_OUTB_OUT4_OVRRIDE	__BIT(18)
-#define CAR_PLLP_OUTB_OUT4_CLKEN	__BIT(17)
-#define CAR_PLLP_OUTB_OUT4_RSTN		__BIT(16)
-#define CAR_PLLP_OUTB_OUT3_RATIO	__BITS(15,8)
-#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
-#define CAR_PLLC_BASE_BYPASS		__BIT(31)
-#define CAR_PLLC_BASE_ENABLE		__BIT(30)
-#define CAR_PLLC_BASE_REF_DIS		__BIT(29)
-#define CAR_PLLC_BASE_LOCK_OVERRIDE	__BIT(27)
-#define CAR_PLLC_BASE_LOCK		__BIT(26)
-#define CAR_PLLC_BASE_DIVP		__BITS(24,20)
-#define CAR_PLLC_BASE_DIVN		__BITS(17,10)
-#define CAR_PLLC_BASE_DIVM		__BITS(7,0)
-
-#define CAR_PLLU_BASE_REG	0xc0
-#define CAR_PLLU_BASE_BYPASS		__BIT(31)
-#define CAR_PLLU_BASE_ENABLE		__BIT(30)
-#define CAR_PLLU_BASE_REF_DIS		__BIT(29)
-#define CAR_PLLU_BASE_LOCK		__BIT(27)
-#define CAR_PLLU_BASE_CLKENABLE_48M	__BIT(25)
-#define CAR_PLLU_BASE_OVERRIDE		__BIT(24)
-#define CAR_PLLU_BASE_CLKENABLE_ICUSB	__BIT(23)
-#define CAR_PLLU_BASE_CLKENABLE_HSIC	__BIT(22)
-#define CAR_PLLU_BASE_CLKENABLE_USB	__BIT(21)
-#define CAR_PLLU_BASE_DIVP		__BITS(20,16)
-#define CAR_PLLU_BASE_DIVN		__BITS(15,8)
-#define CAR_PLLU_BASE_DIVM		__BITS(4,0)
+#define	CAR_PLLP_BASE_REG	0xa0
+#define	CAR_PLLP_BASE_BYPASS		__BIT(31)
+#define	CAR_PLLP_BASE_ENABLE		__BIT(30)
+#define	CAR_PLLP_BASE_REF_DIS		__BIT(29)
+#define	CAR_PLLP_BASE_OVERRIDE		__BIT(28)
+#define	CAR_PLLP_BASE_LOCK		__BIT(27)
+#define	CAR_PLLP_BASE_DIVP		__BITS(24,20)
+#define	CAR_PLLP_BASE_DIVN		__BITS(17,10)
+#define	CAR_PLLP_BASE_DIVM		__BITS(7,0)
+
+#define	CAR_PLLP_OUTA_REG	0xa4
+#define	CAR_PLLP_OUTA_OUT1_RATIO	__BITS(15,8)
+#define	CAR_PLLP_OUTA_OUT1_OVRRIDE	__BIT(2)
+#define	CAR_PLLP_OUTA_OUT1_CLKEN	__BIT(1)
+#define	CAR_PLLP_OUTA_OUT1_RSTN		__BIT(0)
+#define	CAR_PLLP_OUTB_REG	0xa8
+#define	CAR_PLLP_OUTB_OUT4_RATIO	__BITS(31,24)
+#define	CAR_PLLP_OUTB_OUT4_OVRRIDE	__BIT(18)
+#define	CAR_PLLP_OUTB_OUT4_CLKEN	__BIT(17)
+#define	CAR_PLLP_OUTB_OUT4_RSTN		__BIT(16)
+#define	

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

2017-09-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 10:54:44 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h

Log Message:
add USB2_TRK and HSIC_TRK clocks


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.5 src/sys/arch/arm/nvidia/tegra210_car.c:1.6
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.5	Fri Sep 22 01:24:05 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Fri Sep 22 10:54:44 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.5 2017/09/22 01:24:05 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.6 2017/09/22 10:54:44 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.5 2017/09/22 01:24:05 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.6 2017/09/22 10:54:44 jmcneill Exp $");
 
 #include 
 #include 
@@ -536,6 +536,8 @@ static struct tegra_clk tegra210_car_clo
 		CAR_CLKSRC_XUSB_FS_REG, CAR_CLKSRC_XUSB_FS_DIV),
 	CLK_DIV("XUSB_FALCON_SRC", "MUX_XUSB_FALCON",
 		CAR_CLKSRC_XUSB_FALCON_REG, CAR_CLKSRC_XUSB_FALCON_DIV),
+	CLK_DIV("USB2_HSIC_TRK", "CLK_M",
+		CAR_CLKSRC_USB2_HSIC_TRK_REG, CAR_CLKSRC_USB2_HSIC_TRK_DIV),
 
 	CLK_GATE_L("UARTA", "DIV_UARTA", CAR_DEV_L_UARTA),
 	CLK_GATE_L("UARTB", "DIV_UARTB", CAR_DEV_L_UARTB),
@@ -554,6 +556,8 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_U("XUSB_HOST", "XUSB_HOST_SRC", CAR_DEV_U_XUSB_HOST),
 	CLK_GATE_W("XUSB_SS", "XUSB_SS_SRC", CAR_DEV_W_XUSB_SS),
 	CLK_GATE_H("FUSE", "CLK_M", CAR_DEV_H_FUSE),
+	CLK_GATE_Y("USB2_TRK", "UBS2_HSIC_TRK", CAR_DEV_Y_USB2_TRK),
+	CLK_GATE_Y("HSIC_TRK", "USB2_HSIC_TRK", CAR_DEV_Y_HSIC_TRK),
 };
 
 struct tegra210_init_parent {

Index: src/sys/arch/arm/nvidia/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.3 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.4
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.3	Fri Sep 22 01:24:31 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Fri Sep 22 10:54:44 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.3 2017/09/22 01:24:31 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.4 2017/09/22 10:54:44 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -438,6 +438,38 @@
 #define CAR_DEV_X_ETR			__BIT(3)
 #define CAR_DEV_X_SPARE			__BIT(0)
 
+#define	CAR_DEV_Y_PLLP_OUT_CPU		__BIT(31)
+#define	CAR_DEV_Y_SOR_SAFE		__BIT(30)
+#define	CAR_DEV_Y_IQC1			__BIT(29)
+#define	CAR_DEV_Y_IQC2			__BIT(28)
+#define	CAR_DEV_Y_NVENC			__BIT(27)
+#define	CAR_DEV_Y_ADSPNEON		__BIT(26)
+#define	CAR_DEV_Y_ADSPSCU		__BIT(25)
+#define	CAR_DEV_Y_ADSPWDT		__BIT(24)
+#define	CAR_DEV_Y_ADSPDBG		__BIT(23)
+#define	CAR_DEV_Y_ADSPPERIPH		__BIT(22)
+#define	CAR_DEV_Y_ADSPINTF		__BIT(21)
+#define	CAR_DEV_Y_UARTAPE		__BIT(20)
+#define	CAR_DEV_Y_QSPI			__BIT(19)
+#define	CAR_DEV_Y_USB2_TRK		__BIT(18)
+#define	CAR_DEV_Y_HSIC_TRK		__BIT(17)
+#define	CAR_DEV_Y_VI_I2C		__BIT(16)
+#define	CAR_DEV_Y_DPAUX			__BIT(15)
+#define	CAR_DEV_Y_TSECB			__BIT(14)
+#define	CAR_DEV_Y_PEX_USB_UPHY		__BIT(13)
+#define	CAR_DEV_Y_SATA_USB_UPHY		__BIT(12)
+#define	CAR_DEV_Y_MAUD			__BIT(10)
+#define	CAR_DEV_Y_MC_CCPA		__BIT(9)
+#define	CAR_DEV_Y_MC_CDPA		__BIT(8)
+#define	CAR_DEV_Y_ADSP			__BIT(7)
+#define	CAR_DEV_Y_APE			__BIT(6)
+#define	CAR_DEV_Y_DMIC3			__BIT(5)
+#define	CAR_DEV_Y_AXIAP			__BIT(4)
+#define	CAR_DEV_Y_NVJPG			__BIT(3)
+#define	CAR_DEV_Y_NVDEC			__BIT(2)
+#define	CAR_DEV_Y_SDMMC_LEGACY_TM	__BIT(1)
+#define	CAR_DEV_Y_SPARE1		__BIT(0)
+
 #define CAR_CCLKG_BURST_POLICY_REG	0x368
 #define CAR_CCLKG_BURST_POLICY_CPU_STATE	__BITS(31,28)
 #define CAR_CCLKG_BURST_POLICY_CPU_STATE_IDLE			1
@@ -578,4 +610,7 @@
 #define CAR_CLKSRC_SOC_THERM_DDLL_SEL	__BITS(11,10)
 #define CAR_CLKSRC_SOC_THERM_DIV	__BITS(7,0)
 
+#define	CAR_CLKSRC_USB2_HSIC_TRK_REG	0x6cc
+#define	CAR_CLKSRC_USB2_HSIC_TRK_DIV	__BITS(7,0)
+
 #endif /* _ARM_TEGRA210_CARREG_H */



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

2017-09-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 01:24:31 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_carreg.h tegra210_xusbpad.c

Log Message:
More USB3 port init stuff


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra210_carreg.h \
src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.2 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.3
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.2	Thu Sep 21 23:44:26 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Fri Sep 22 01:24:31 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.2 2017/09/21 23:44:26 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.3 2017/09/22 01:24:31 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -42,6 +42,18 @@
 #define CAR_CLK_OUT_ENB_H_REG	0x14
 #define CAR_CLK_OUT_ENB_U_REG	0x18
 
+#define	CAR_PLLE_SS_CNTL_REG	0x68
+#define	CAR_PLLE_SS_CNTL_INTEGOFFSET	__BITS(31,30)
+#define	CAR_PLLE_SS_CNTL_SSCINCINTRV	__BITS(29,24)
+#define	CAR_PLLE_SS_CNTL_SSCINC		__BITS(23,16)
+#define	CAR_PLLE_SS_CNTL_SSCINVERT	__BIT(15)
+#define	CAR_PLLE_SS_CNTL_SSCCENTER	__BIT(14)
+#define	CAR_PLLE_SS_CNTL_SSCPDMBYP	__BIT(13)
+#define	CAR_PLLE_SS_CNTL_SSCBYP		__BIT(12)
+#define	CAR_PLLE_SS_CNTL_INTERP_RESET	__BIT(11)
+#define	CAR_PLLE_SS_CNTL_BYPASS_SS	__BIT(10)
+#define	CAR_PLLE_SS_CNTL_SSCMAX		__BITS(8,0)
+
 #define CAR_PLLP_BASE_REG	0xa0
 #define CAR_PLLP_BASE_BYPASS		__BIT(31)
 #define CAR_PLLP_BASE_ENABLE		__BIT(30)
@@ -159,6 +171,7 @@
 #define CAR_PLLE_MISC_IDDQ_OVERRIDE	__BIT(13)
 #define CAR_PLLE_MISC_LOCK		__BIT(11)
 #define CAR_PLLE_MISC_LOCK_ENABLE	__BIT(9)
+#define	CAR_PLLE_MISC_PTS		__BIT(8)
 
 #define CAR_PLLD2_BASE_REG	0x4b8
 #define CAR_PLLD2_BASE_BYPASS		__BIT(31)
Index: src/sys/arch/arm/nvidia/tegra210_xusbpad.c
diff -u src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.2 src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.3
--- src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.2	Wed Sep 20 21:59:23 2017
+++ src/sys/arch/arm/nvidia/tegra210_xusbpad.c	Fri Sep 22 01:24:31 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_xusbpad.c,v 1.2 2017/09/20 21:59:23 jmcneill Exp $ */
+/* $NetBSD: tegra210_xusbpad.c,v 1.3 2017/09/22 01:24:31 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.2 2017/09/20 21:59:23 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.3 2017/09/22 01:24:31 jmcneill Exp $");
 
 #include 
 #include 
@@ -42,6 +42,31 @@ __KERNEL_RCSID(0, "$NetBSD: tegra210_xus
 
 #include 
 
+#define	XUSB_PADCTL_USB2_PAD_MUX_REG		0x04
+#define	 XUSB_PADCTL_USB2_PAD_MUX_USB2_BIAS_PAD			__BITS(19,18)
+#define	  XUSB_PADCTL_USB2_PAD_MUX_USB2_BIAS_PAD_XUSB		1
+
+#define	XUSB_PADCTL_ELPG_PROGRAM_1_REG		0x24
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_AUX_MUX_LP0_VCORE_DOWN	__BIT(31)
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_AUX_MUX_LP0_CLAMP_EN_EARLY	__BIT(30)
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_AUX_MUX_LP0_CLAMP_EN	__BIT(29)
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_SSPn_ELPG_VCORE_DOWN(n)	__BIT((n) * 3 + 2)
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_SSPn_ELPG_CLAMP_EN_EARLY(n)	__BIT((n) * 3 + 1)
+#define	 XUSB_PADCTL_ELPG_PROGRAM_1_SSPn_ELPG_CLAMP_EN(n)	__BIT((n) * 3 + 0)
+
+#define	XUSB_PADCTL_UPHY_USB3_PADn_ECTL_1_REG(n)	(0xa60 + (n) * 0x40)
+#define	 XUSB_PADCTL_UPHY_USB3_PADn_ECTL_2_TX_TERM_CTRL		__BITS(19,18)
+
+#define	XUSB_PADCTL_UPHY_USB3_PADn_ECTL_2_REG(n)	(0xa64 + (n) * 0x40)
+#define	 XUSB_PADCTL_UPHY_USB3_PADn_ECTL_2_RX_CTLE		__BITS(15,0)
+
+#define	XUSB_PADCTL_UPHY_USB3_PADn_ECTL_3_REG(n)	(0xa68 + (n) * 0x40)
+
+#define	XUSB_PADCTL_UPHY_USB3_PADn_ECTL_4_REG(n)	(0xa6c + (n) * 0x40)
+#define	 XUSB_PADCTL_UPHY_USB3_PADn_ECTL_4_RX_CDR_CTRL		__BITS(31,16)
+
+#define	XUSB_PADCTL_UPHY_USB3_PADn_ECTL_6_REG(n)	(0xa74 + (n) * 0x40)
+
 struct tegra210_xusbpad_softc {
 	device_t		sc_dev;
 	int			sc_phandle;
@@ -49,6 +74,8 @@ struct tegra210_xusbpad_softc {
 	bus_space_handle_t	sc_bsh;
 
 	struct fdtbus_reset	*sc_rst;
+
+	bool			sc_enabled;
 };
 
 #define	RD4(sc, reg)	\
@@ -97,9 +124,10 @@ static const struct tegra210_xusbpad_lan
 	XUSBPAD_LANE("sata-0", 0x28, __BITS(31,30), tegra210_xusbpad_pcie_func),
 };
 
-#define	XUSBPAD_PORT(n, r, m, im)		\
+#define	XUSBPAD_PORT(n, i, r, m, im)		\
 	{	\
 		.name = (n),			\
+		.index = (i),			\
 		.reg = (r),			\
 		.mask = (m),			\
 		.internal_mask = (im)		\
@@ -107,28 +135,29 @@ static const struct tegra210_xusbpad_lan
 
 struct tegra210_xusbpad_port {
 	const char		*name;
+	int			index;
 	bus_size_t		reg;
 	uint32_t		mask;
 	uint32_t		internal_mask;
 };
 
 static const struct tegra210_xusbpad_port tegra210_xusbpad_usb2_ports[] = {
-	XUSBPAD_PORT("usb2-0", 

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

2017-09-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 22 01:24:05 UTC 2017

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

Log Message:
Initialize PLLE


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.4 src/sys/arch/arm/nvidia/tegra210_car.c:1.5
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.4	Thu Sep 21 23:44:26 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Fri Sep 22 01:24:05 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.4 2017/09/21 23:44:26 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.5 2017/09/22 01:24:05 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.4 2017/09/21 23:44:26 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.5 2017/09/22 01:24:05 jmcneill Exp $");
 
 #include 
 #include 
@@ -769,7 +769,7 @@ tegra210_car_xusb_init(struct tegra210_c
 	uint32_t val;
 
 	/*
-	 * Set up the PLLU (enable in software).
+	 * Set up the PLLU.
 	 */
 	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_OVERRIDE, 0);
 	tegra_reg_set_clear(bst, bsh, CAR_PLLU_MISC_REG, CAR_PLLU_MISC_IDDQ, 0);
@@ -789,6 +789,31 @@ tegra210_car_xusb_init(struct tegra210_c
 	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_RSTN, 0);
 	delay(2);
 
+	/*
+	 * Set up the PLLE.
+	 */
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, 0, CAR_PLLE_AUX_REF_SEL_PLLREFE);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, 0, CAR_PLLE_AUX_REF_SRC);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_MISC_REG, 0, CAR_PLLE_MISC_IDDQ_OVERRIDE);
+	delay(5);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_MISC_REG, CAR_PLLE_MISC_PTS, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_BASE_REG, CAR_PLLE_BASE_ENABLE, 0);
+	do {
+		delay(2);
+		val = bus_space_read_4(bst, bsh, CAR_PLLE_MISC_REG);
+	} while ((val & CAR_PLLE_MISC_LOCK) == 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_SS_CNTL_REG, 0, CAR_PLLE_SS_CNTL_BYPASS_SS);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_SS_CNTL_REG, 0, CAR_PLLE_SS_CNTL_SSCBYP);
+	delay(1);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_SS_CNTL_REG, 0, CAR_PLLE_SS_CNTL_INTERP_RESET);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_MISC_REG, 0, CAR_PLLE_MISC_IDDQ_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, 0, CAR_PLLE_AUX_SS_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, 0, CAR_PLLE_AUX_ENABLE_SWCTL);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_SS_SEQ_INCLUDE, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_USE_LOCKDET, 0);
+	delay(1);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLE_AUX_REG, CAR_PLLE_AUX_SEQ_ENABLE, 0);
+
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG, CAR_DEV_W_XUSB);
 
 	tegra_reg_set_clear(bst, bsh, CAR_PLLREFE_MISC_REG,



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

2017-09-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Sep 21 23:44:26 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra210_car.c tegra210_carreg.h

Log Message:
Setup PLLU


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.3 src/sys/arch/arm/nvidia/tegra210_car.c:1.4
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.3	Thu Sep 21 22:54:39 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Thu Sep 21 23:44:26 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.3 2017/09/21 22:54:39 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.4 2017/09/21 23:44:26 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.3 2017/09/21 22:54:39 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.4 2017/09/21 23:44:26 jmcneill Exp $");
 
 #include 
 #include 
@@ -768,7 +768,26 @@ tegra210_car_xusb_init(struct tegra210_c
 	const bus_space_handle_t bsh = sc->sc_bsh;
 	uint32_t val;
 
-	/* XXX do this all better */
+	/*
+	 * Set up the PLLU (enable in software).
+	 */
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_OVERRIDE, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_MISC_REG, CAR_PLLU_MISC_IDDQ, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_MISC_REG, 0, CAR_PLLU_MISC_IDDQ);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, 0, CAR_PLLU_OUTA_OUT1_RSTN);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, 0, CAR_PLLU_OUTA_OUT2_RSTN);
+	delay(5);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_ENABLE, 0);
+	do {
+		delay(2);
+		val = bus_space_read_4(bst, bsh, CAR_PLLU_BASE_REG);
+	} while ((val & CAR_PLLU_BASE_LOCK) == 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_CLKENABLE_ICUSB, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_CLKENABLE_HSIC, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_BASE_REG, CAR_PLLU_BASE_CLKENABLE_USB, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT1_RSTN, 0);
+	tegra_reg_set_clear(bst, bsh, CAR_PLLU_OUTA_REG, CAR_PLLU_OUTA_OUT2_RSTN, 0);
+	delay(2);
 
 	bus_space_write_4(bst, bsh, CAR_CLK_ENB_W_SET_REG, CAR_DEV_W_XUSB);
 

Index: src/sys/arch/arm/nvidia/tegra210_carreg.h
diff -u src/sys/arch/arm/nvidia/tegra210_carreg.h:1.1 src/sys/arch/arm/nvidia/tegra210_carreg.h:1.2
--- src/sys/arch/arm/nvidia/tegra210_carreg.h:1.1	Fri Jul 21 01:01:22 2017
+++ src/sys/arch/arm/nvidia/tegra210_carreg.h	Thu Sep 21 23:44:26 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_carreg.h,v 1.1 2017/07/21 01:01:22 jmcneill Exp $ */
+/* $NetBSD: tegra210_carreg.h,v 1.2 2017/09/21 23:44:26 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -97,6 +97,25 @@
 #define CAR_PLLU_BASE_DIVN		__BITS(15,8)
 #define CAR_PLLU_BASE_DIVM		__BITS(4,0)
 
+#define	CAR_PLLU_OUTA_REG	0xc4
+#define	CAR_PLLU_OUTA_OUT2_RATIO	__BITS(31,24)
+#define	CAR_PLLU_OUTA_OUT2_OVRRIDE	__BIT(18)
+#define	CAR_PLLU_OUTA_OUT2_CLKEN	__BIT(17)
+#define	CAR_PLLU_OUTA_OUT2_RSTN		__BIT(16)
+#define	CAR_PLLU_OUTA_OUT1_RATIO	__BITS(15,8)
+#define	CAR_PLLU_OUTA_OUT1_OVRRIDE	__BIT(2)
+#define	CAR_PLLU_OUTA_OUT1_CLKEN	__BIT(1)
+#define	CAR_PLLU_OUTA_OUT1_RSTN		__BIT(0)
+
+#define	CAR_PLLU_MISC_REG	0xcc
+#define	CAR_PLLU_MISC_IDDQ		__BIT(31)
+#define	CAR_PLLU_MISC_FREQLOCK		__BIT(30)
+#define	CAR_PLLU_MISC_EN_LCKDET		__BIT(29)
+#define	CAR_PLLU_MISC_PTS		__BITS(28,27)
+#define	CAR_PLLU_MISC_KCP		__BITS(26,25)
+#define	CAR_PLLU_MISC_KVCO		__BIT(24)
+#define	CAR_PLLU_MISC_SETUP		__BITS(23,0)
+
 #define CAR_PLLD_BASE_REG	0xd0
 #define CAR_PLLD_BASE_BYPASS		__BIT(31)
 #define CAR_PLLD_BASE_ENABLE		__BIT(30)



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

2017-09-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Sep 21 23:44:48 UTC 2017

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

Log Message:
Enable xusb on tegra210


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_xusb.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_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.7 src/sys/arch/arm/nvidia/tegra_xusb.c:1.8
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.7	Tue Sep 19 20:46:12 2017
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Thu Sep 21 23:44:48 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.7 2017/09/19 20:46:12 jmcneill Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.8 2017/09/21 23:44:48 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.7 2017/09/19 20:46:12 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.8 2017/09/21 23:44:48 jmcneill Exp $");
 
 #include 
 #include 
@@ -89,9 +89,7 @@ enum xusb_type {
 
 static const struct of_compat_data compat_data[] = {
 	{ "nvidia,tegra124-xusb",		XUSB_T124 },
-#if notyet
 	{ "nvidia,tegra210-xusb",		XUSB_T210 },
-#endif
 	{ NULL }
 };
 



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

2017-09-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Sep 21 22:54:39 UTC 2017

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

Log Message:
Fix div calculation and utmip init params


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.2 src/sys/arch/arm/nvidia/tegra210_car.c:1.3
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.2	Tue Sep 19 20:45:09 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Thu Sep 21 22:54:39 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.2 2017/09/19 20:45:09 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.3 2017/09/21 22:54:39 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.2 2017/09/19 20:45:09 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.3 2017/09/21 22:54:39 jmcneill Exp $");
 
 #include 
 #include 
@@ -734,10 +734,10 @@ tegra210_car_utmip_init(struct tegra210_
 	bus_space_tag_t bst = sc->sc_bst;
 	bus_space_handle_t bsh = sc->sc_bsh;
 
-	const u_int enable_dly_count = 0x02;
-	const u_int stable_count = 0x2f;
-	const u_int active_dly_count = 0x04;
-	const u_int xtal_freq_count = 0x76;
+	const u_int enable_dly_count = 5;
+	const u_int stable_count = 150;
+	const u_int active_dly_count = 24;
+	const u_int xtal_freq_count = 385;
 
 	tegra_reg_set_clear(bst, bsh, CAR_UTMIP_PLL_CFG2_REG,
 	__SHIFTIN(stable_count, CAR_UTMIP_PLL_CFG2_STABLE_COUNT) |
@@ -998,6 +998,8 @@ tegra210_car_clock_set_rate_pll(struct t
 
 		return 0;
 	} else {
+		aprint_error_dev(sc->sc_dev, "failed to set %s rate to %u\n",
+		tclk->base.name, rate);
 		/* TODO */
 		return EOPNOTSUPP;
 	}
@@ -1158,7 +1160,9 @@ tegra210_car_clock_set_rate_div(struct t
 			v &= ~CAR_CLKSRC_UART_DIV_ENB;
 		} else if (rate) {
 			v |= CAR_CLKSRC_UART_DIV_ENB;
-			raw_div = (parent_rate / rate) * 2 - 1;
+			raw_div = (parent_rate / rate) * 2;
+			if (raw_div >= 2)
+raw_div -= 2;
 		}
 		break;
 	case CAR_CLKSRC_I2C1_REG:
@@ -1186,8 +1190,11 @@ tegra210_car_clock_set_rate_div(struct t
 		}
 		break;
 	default:
-		if (rate)
-			raw_div = (parent_rate / rate) * 2 - 1;
+		if (rate) {
+			raw_div = (parent_rate / rate) * 2;
+			if (raw_div >= 2)
+raw_div -= 2;
+		}
 		break;
 	}
 



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

2017-09-20 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 20 21:59:23 UTC 2017

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

Log Message:
parse ports node and configure usb2/usb3/hsic ports


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra210_xusbpad.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/tegra210_xusbpad.c
diff -u src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.1 src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.2
--- src/sys/arch/arm/nvidia/tegra210_xusbpad.c:1.1	Tue Sep 19 23:18:01 2017
+++ src/sys/arch/arm/nvidia/tegra210_xusbpad.c	Wed Sep 20 21:59:23 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_xusbpad.c,v 1.1 2017/09/19 23:18:01 jmcneill Exp $ */
+/* $NetBSD: tegra210_xusbpad.c,v 1.2 2017/09/20 21:59:23 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.1 2017/09/19 23:18:01 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_xusbpad.c,v 1.2 2017/09/20 21:59:23 jmcneill Exp $");
 
 #include 
 #include 
@@ -97,6 +97,40 @@ static const struct tegra210_xusbpad_lan
 	XUSBPAD_LANE("sata-0", 0x28, __BITS(31,30), tegra210_xusbpad_pcie_func),
 };
 
+#define	XUSBPAD_PORT(n, r, m, im)		\
+	{	\
+		.name = (n),			\
+		.reg = (r),			\
+		.mask = (m),			\
+		.internal_mask = (im)		\
+	}
+
+struct tegra210_xusbpad_port {
+	const char		*name;
+	bus_size_t		reg;
+	uint32_t		mask;
+	uint32_t		internal_mask;
+};
+
+static const struct tegra210_xusbpad_port tegra210_xusbpad_usb2_ports[] = {
+	XUSBPAD_PORT("usb2-0", 0x08, __BITS(1,0), __BIT(2)),
+	XUSBPAD_PORT("usb2-1", 0x08, __BITS(5,4), __BIT(6)),
+	XUSBPAD_PORT("usb2-2", 0x08, __BITS(9,8), __BIT(10)),
+	XUSBPAD_PORT("usb2-3", 0x08, __BITS(13,12), __BIT(14)),
+};
+
+static const struct tegra210_xusbpad_port tegra210_xusbpad_usb3_ports[] = {
+	XUSBPAD_PORT("usb3-0", 0x14, __BITS(3,0), __BIT(4)),
+	XUSBPAD_PORT("usb3-1", 0x14, __BITS(8,5), __BIT(9)),
+	XUSBPAD_PORT("usb3-2", 0x14, __BITS(13,10), __BIT(14)),
+	XUSBPAD_PORT("usb3-3", 0x14, __BITS(18,15), __BIT(19)),
+}; 
+
+static const struct tegra210_xusbpad_port tegra210_xusbpad_hsic_ports[] = {
+	XUSBPAD_PORT("hsic-0", 0, 0, 0),
+	XUSBPAD_PORT("hsic-1", 0, 0, 0),
+};
+
 static int
 tegra210_xusbpad_find_func(const struct tegra210_xusbpad_lane *lane,
 const char *func)
@@ -146,7 +180,7 @@ tegra210_xusbpad_configure_lane(struct t
 		return;
 	}
 
-	aprint_debug_dev(sc->sc_dev, "[%s] set func %s\n", name, function);
+	aprint_normal_dev(sc->sc_dev, "lane %s: set func %s\n", name, function);
 	SETCLR4(sc, lane->reg, __SHIFTIN(func, lane->mask), lane->mask);
 }
 
@@ -198,6 +232,143 @@ tegra210_xusbpad_configure_pads(struct t
 	}
 }
 
+static const struct tegra210_xusbpad_port *
+tegra210_xusbpad_find_port(const char *name, const struct tegra210_xusbpad_port *ports,
+int nports)
+{
+	for (int n = 0; n < nports; n++)
+		if (strcmp(name, ports[n].name) == 0)
+			return [n];
+	return NULL;
+}
+
+static const struct tegra210_xusbpad_port *
+tegra210_xusbpad_find_usb2_port(const char *name)
+{
+	return tegra210_xusbpad_find_port(name, tegra210_xusbpad_usb2_ports,
+	__arraycount(tegra210_xusbpad_usb2_ports));
+}
+
+static const struct tegra210_xusbpad_port *
+tegra210_xusbpad_find_usb3_port(const char *name)
+{
+	return tegra210_xusbpad_find_port(name, tegra210_xusbpad_usb3_ports,
+	__arraycount(tegra210_xusbpad_usb3_ports));
+}
+
+static const struct tegra210_xusbpad_port *
+tegra210_xusbpad_find_hsic_port(const char *name)
+{
+	return tegra210_xusbpad_find_port(name, tegra210_xusbpad_hsic_ports,
+	__arraycount(tegra210_xusbpad_hsic_ports));
+}
+
+static void
+tegra210_xusbpad_configure_usb2_port(struct tegra210_xusbpad_softc *sc,
+int phandle, const struct tegra210_xusbpad_port *port)
+{
+	struct fdtbus_regulator *vbus_reg;
+	const char *mode;
+	u_int modeval, internal;
+
+	mode = fdtbus_get_string(phandle, "mode");
+	if (mode == NULL) {
+		aprint_error_dev(sc->sc_dev, "no 'mode' property on port %s\n", port->name);
+		return;
+	}
+	if (strcmp(mode, "host") == 0)
+		modeval = 1;
+	else if (strcmp(mode, "device") == 0)
+		modeval = 2;
+	else if (strcmp(mode, "otg") == 0)
+		modeval = 3;
+	else {
+		aprint_error_dev(sc->sc_dev, "unsupported mode '%s' on port %s\n", mode, port->name);
+		return;
+	}
+
+	internal = of_hasprop(phandle, "nvidia,internal");
+
+	vbus_reg = fdtbus_regulator_acquire(phandle, "vbus-supply");
+	if (vbus_reg && fdtbus_regulator_enable(vbus_reg) != 0) {
+		aprint_error_dev(sc->sc_dev,
+		"couldn't enable vbus regulator for port %s\n",
+		port->name);
+	}
+
+	aprint_normal_dev(sc->sc_dev, "port %s: set mode %s, %s\n", port->name, mode,
+	internal ? "internal" : "external");
+	SETCLR4(sc, port->reg, __SHIFTIN(internal, port->internal_mask), 

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

2017-09-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Sep 19 20:45:09 UTC 2017

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

Log Message:
Add some xusb clocks (not working yet)


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra210_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/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.1 src/sys/arch/arm/nvidia/tegra210_car.c:1.2
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.1	Fri Jul 21 01:01:22 2017
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Tue Sep 19 20:45:09 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.1 2017/07/21 01:01:22 jmcneill Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.2 2017/09/19 20:45:09 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.1 2017/07/21 01:01:22 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.2 2017/09/19 20:45:09 jmcneill Exp $");
 
 #include 
 #include 
@@ -424,6 +424,18 @@ static const char *mux_i2c_p[] =
 	{ "PLL_P", "PLL_C2_OUT0", "PLL_C", "PLL_C4_OUT0",
 	  NULL, "PLL_C4_OUT1", "CLK_M", "PLL_C4_OUT2" };
 
+static const char *mux_xusb_host_p[] =
+	{ "CLK_M", "PLL_P", NULL, NULL,
+	  NULL, "PLL_REF", NULL, NULL };
+
+static const char *mux_xusb_fs_p[] =
+	{ "CLK_M", NULL, "PLL_U_48M", NULL,
+	  "PLL_P", NULL, "PLL_U_480M", NULL };
+
+static const char *mux_xusb_ss_p[] =
+	{ "CLK_M", "PLL_REF", "CLK_32K", "PLL_U_480M",
+	  NULL, NULL, NULL, NULL };
+
 static struct tegra_clk tegra210_car_clocks[] = {
 	CLK_FIXED("CLK_M", TEGRA210_REF_FREQ),
 
@@ -444,6 +456,9 @@ static struct tegra_clk tegra210_car_clo
 	CLK_PLL("PLL_REF", "CLK_M", CAR_PLLREFE_BASE_REG,
 		CAR_PLLREFE_BASE_DIVM, CAR_PLLREFE_BASE_DIVN, CAR_PLLREFE_BASE_DIVP),
 
+	CLK_FIXED_DIV("PLL_U_480M", "PLL_U", 1),
+	CLK_FIXED_DIV("PLL_U_48M", "PLL_U", 10),
+
 	CLK_MUX("MUX_UARTA", CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_SRC,
 		mux_uart_p),
 	CLK_MUX("MUX_UARTB", CAR_CLKSRC_UARTB_REG, CAR_CLKSRC_UART_SRC,
@@ -469,6 +484,19 @@ static struct tegra_clk tegra210_car_clo
 	CLK_MUX("MUX_I2C5", CAR_CLKSRC_I2C5_REG, CAR_CLKSRC_I2C_SRC, mux_i2c_p),
 	CLK_MUX("MUX_I2C6", CAR_CLKSRC_I2C6_REG, CAR_CLKSRC_I2C_SRC, mux_i2c_p),
 
+	CLK_MUX("MUX_XUSB_HOST",
+		CAR_CLKSRC_XUSB_HOST_REG, CAR_CLKSRC_XUSB_HOST_SRC,
+		mux_xusb_host_p),
+	CLK_MUX("MUX_XUSB_FALCON",
+		CAR_CLKSRC_XUSB_FALCON_REG, CAR_CLKSRC_XUSB_FALCON_SRC,
+		mux_xusb_host_p),
+	CLK_MUX("MUX_XUSB_SS",
+		CAR_CLKSRC_XUSB_SS_REG, CAR_CLKSRC_XUSB_SS_SRC,
+		mux_xusb_ss_p),
+	CLK_MUX("MUX_XUSB_FS",
+		CAR_CLKSRC_XUSB_FS_REG, CAR_CLKSRC_XUSB_FS_SRC,
+		mux_xusb_fs_p),
+
 	CLK_DIV("DIV_UARTA", "MUX_UARTA",
 		CAR_CLKSRC_UARTA_REG, CAR_CLKSRC_UART_DIV),
 	CLK_DIV("DIV_UARTB", "MUX_UARTB",
@@ -500,6 +528,15 @@ static struct tegra_clk tegra210_car_clo
 	CLK_DIV("DIV_I2C6", "MUX_I2C6", 
 		CAR_CLKSRC_I2C6_REG, CAR_CLKSRC_I2C_DIV),
 
+	CLK_DIV("XUSB_HOST_SRC", "MUX_XUSB_HOST",
+		CAR_CLKSRC_XUSB_HOST_REG, CAR_CLKSRC_XUSB_HOST_DIV),
+	CLK_DIV("XUSB_SS_SRC", "MUX_XUSB_SS",
+		CAR_CLKSRC_XUSB_SS_REG, CAR_CLKSRC_XUSB_SS_DIV),
+	CLK_DIV("XUSB_FS_SRC", "MUX_XUSB_FS",
+		CAR_CLKSRC_XUSB_FS_REG, CAR_CLKSRC_XUSB_FS_DIV),
+	CLK_DIV("XUSB_FALCON_SRC", "MUX_XUSB_FALCON",
+		CAR_CLKSRC_XUSB_FALCON_REG, CAR_CLKSRC_XUSB_FALCON_DIV),
+
 	CLK_GATE_L("UARTA", "DIV_UARTA", CAR_DEV_L_UARTA),
 	CLK_GATE_L("UARTB", "DIV_UARTB", CAR_DEV_L_UARTB),
 	CLK_GATE_H("UARTC", "DIV_UARTC", CAR_DEV_H_UARTC),
@@ -514,16 +551,23 @@ static struct tegra_clk tegra210_car_clo
 	CLK_GATE_V("I2C4", "DIV_I2C4", CAR_DEV_V_I2C4),
 	CLK_GATE_H("I2C5", "DIV_I2C5", CAR_DEV_H_I2C5),
 	CLK_GATE_X("I2C6", "DIV_I2C6", CAR_DEV_X_I2C6),
+	CLK_GATE_U("XUSB_HOST", "XUSB_HOST_SRC", CAR_DEV_U_XUSB_HOST),
+	CLK_GATE_W("XUSB_SS", "XUSB_SS_SRC", CAR_DEV_W_XUSB_SS),
+	CLK_GATE_H("FUSE", "CLK_M", CAR_DEV_H_FUSE),
 };
 
 struct tegra210_init_parent {
 	const char *clock;
 	const char *parent;
 } tegra210_init_parents[] = {
-	{ "SDMMC1", 	"PLL_P" },
-	{ "SDMMC2",	"PLL_P" },
-	{ "SDMMC3",	"PLL_P" },
-	{ "SDMMC4",	"PLL_P" },
+	{ "SDMMC1", 		"PLL_P" },
+	{ "SDMMC2",		"PLL_P" },
+	{ "SDMMC3",		"PLL_P" },
+	{ "SDMMC4",		"PLL_P" },
+	{ "XUSB_HOST_SRC",	"PLL_P" },
+	{ "XUSB_FALCON_SRC",	"PLL_P" },
+	{ "XUSB_SS_SRC",	"PLL_U_480M" },
+	{ "XUSB_FS_SRC",	"PLL_U_48M" },
 };
 
 struct tegra210_car_rst {
@@ -572,9 +616,12 @@ struct tegra210_car_softc {
 };
 
 static void	tegra210_car_init(struct tegra210_car_softc *);
+static void	tegra210_car_utmip_init(struct tegra210_car_softc *);
+static void	tegra210_car_xusb_init(struct tegra210_car_softc *);
 static void	tegra210_car_watchdog_init(struct tegra210_car_softc *);
 static void	tegra210_car_parent_init(struct tegra210_car_softc *);
 
+
 CFATTACH_DECL_NEW(tegra210_car, sizeof(struct tegra210_car_softc),
 	tegra210_car_match, 

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

2017-07-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Jul 21 18:25:25 UTC 2017

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

Log Message:
Fix of_search_compatible usage


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_soctherm.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_soctherm.c
diff -u src/sys/arch/arm/nvidia/tegra_soctherm.c:1.5 src/sys/arch/arm/nvidia/tegra_soctherm.c:1.6
--- src/sys/arch/arm/nvidia/tegra_soctherm.c:1.5	Thu Jul 20 01:46:15 2017
+++ src/sys/arch/arm/nvidia/tegra_soctherm.c	Fri Jul 21 18:25:25 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soctherm.c,v 1.5 2017/07/20 01:46:15 jmcneill Exp $ */
+/* $NetBSD: tegra_soctherm.c,v 1.6 2017/07/21 18:25:25 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soctherm.c,v 1.5 2017/07/20 01:46:15 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soctherm.c,v 1.6 2017/07/21 18:25:25 jmcneill Exp $");
 
 #include 
 #include 
@@ -213,7 +213,7 @@ tegra_soctherm_attach(device_t parent, d
 	aprint_naive("\n");
 	aprint_normal(": SOC_THERM\n");
 
-	sc->sc_config = (const void *)of_search_compatible(phandle, compat_data);
+	sc->sc_config = (void *)of_search_compatible(phandle, compat_data)->data;
 	if (sc->sc_config == NULL) {
 		aprint_error_dev(self, "unsupported SoC\n");
 		return;



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

2017-07-20 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Jul 21 01:00:58 UTC 2017

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

Log Message:
Disable UHS modes if signaling voltage regulator is unavailable.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 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.20 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.21
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.20	Thu May 25 23:53:50 2017
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Fri Jul 21 01:00:58 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.20 2017/05/25 23:53:50 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.21 2017/07/21 01:00:58 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.20 2017/05/25 23:53:50 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.21 2017/07/21 01:00:58 jmcneill Exp $");
 
 #include 
 #include 
@@ -165,6 +165,14 @@ tegra_sdhc_attach(device_t parent, devic
 	"vqmmc-supply");
 	if (sc->sc_reg_vqmmc) {
 		sc->sc.sc_vendor_signal_voltage = tegra_sdhc_signal_voltage;
+	} else {
+		/* Regulator required for UHS signaling */
+		sc->sc.sc_flags |= SDHC_FLAG_HOSTCAPS;
+		sc->sc.sc_caps = bus_space_read_4(sc->sc_bst, sc->sc_bsh,
+		SDHC_CAPABILITIES);
+		sc->sc.sc_caps2 = bus_space_read_4(sc->sc_bst, sc->sc_bsh,
+		SDHC_CAPABILITIES2);
+		sc->sc.sc_caps2 &= ~(SDHC_SDR50_SUPP|SDHC_SDR104_SUPP|SDHC_DDR50_SUPP);
 	}
 
 	sc->sc_clk = fdtbus_clock_get_index(faa->faa_phandle, 0);



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

2017-07-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 20 01:46:15 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: tegra_platform.c tegra_pmc.c tegra_soc.c
tegra_soctherm.c tegra_var.h

Log Message:
Get rid of tegra_chip_id/tegra_chip_name and rely on FDT for this info.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_platform.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_pmc.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_soc.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_soctherm.c
cvs rdiff -u -r1.38 -r1.39 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_platform.c
diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.6 src/sys/arch/arm/nvidia/tegra_platform.c:1.7
--- src/sys/arch/arm/nvidia/tegra_platform.c:1.6	Fri Jun  2 13:53:29 2017
+++ src/sys/arch/arm/nvidia/tegra_platform.c	Thu Jul 20 01:46:15 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_platform.c,v 1.6 2017/06/02 13:53:29 jmcneill Exp $ */
+/* $NetBSD: tegra_platform.c,v 1.7 2017/07/20 01:46:15 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -33,7 +33,7 @@
 #include "ukbd.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.6 2017/06/02 13:53:29 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.7 2017/07/20 01:46:15 jmcneill Exp $");
 
 #include 
 #include 
@@ -97,9 +97,19 @@ tegra_platform_devmap(void)
 }
 
 static void
-tegra_platform_bootstrap(void)
+tegra124_platform_bootstrap(void)
 {
 	tegra_bootstrap();
+
+	tegra124_mpinit();
+}
+
+static void
+tegra210_platform_bootstrap(void)
+{
+	tegra_bootstrap();
+
+	tegra210_mpinit();
 }
 
 static void
@@ -196,9 +206,22 @@ tegra_platform_uart_freq(void)
 	return PLLP_OUT0_FREQ;
 }
 
-static const struct arm_platform tegra_platform = {
+static const struct arm_platform tegra124_platform = {
+	.devmap = tegra_platform_devmap,
+	.bootstrap = tegra124_platform_bootstrap,
+	.init_attach_args = tegra_platform_init_attach_args,
+	.early_putchar = tegra_platform_early_putchar,
+	.device_register = tegra_platform_device_register,
+	.reset = tegra_platform_reset,
+	.delay = tegra_platform_delay,
+	.uart_freq = tegra_platform_uart_freq,
+};
+
+ARM_PLATFORM(tegra124, "nvidia,tegra124", _platform);
+
+static const struct arm_platform tegra210_platform = {
 	.devmap = tegra_platform_devmap,
-	.bootstrap = tegra_platform_bootstrap,
+	.bootstrap = tegra210_platform_bootstrap,
 	.init_attach_args = tegra_platform_init_attach_args,
 	.early_putchar = tegra_platform_early_putchar,
 	.device_register = tegra_platform_device_register,
@@ -207,5 +230,4 @@ static const struct arm_platform tegra_p
 	.uart_freq = tegra_platform_uart_freq,
 };
 
-ARM_PLATFORM(tegra124, "nvidia,tegra124", _platform);
-ARM_PLATFORM(tegra210, "nvidia,tegra210", _platform);
+ARM_PLATFORM(tegra210, "nvidia,tegra210", _platform);

Index: src/sys/arch/arm/nvidia/tegra_pmc.c
diff -u src/sys/arch/arm/nvidia/tegra_pmc.c:1.10 src/sys/arch/arm/nvidia/tegra_pmc.c:1.11
--- src/sys/arch/arm/nvidia/tegra_pmc.c:1.10	Thu May 25 23:52:10 2017
+++ src/sys/arch/arm/nvidia/tegra_pmc.c	Thu Jul 20 01:46:15 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmc.c,v 1.10 2017/05/25 23:52:10 jmcneill Exp $ */
+/* $NetBSD: tegra_pmc.c,v 1.11 2017/07/20 01:46:15 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.10 2017/05/25 23:52:10 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.11 2017/07/20 01:46:15 jmcneill Exp $");
 
 #include 
 #include 
@@ -174,12 +174,8 @@ tegra_pmc_remove_clamping(u_int partid)
 		 * On Tegra124 and later, the GPU power clamping is
 		 * controlled by a separate register
 		 */
-		switch (tegra_chip_id()) {
-		case CHIP_ID_TEGRA124:
-		case CHIP_ID_TEGRA210:
-			bus_space_write_4(bst, bsh, PMC_GPU_RG_CNTRL_REG, 0);
-			return;
-		}
+		bus_space_write_4(bst, bsh, PMC_GPU_RG_CNTRL_REG, 0);
+		return;
 	}
 
 	bus_space_write_4(bst, bsh, PMC_REMOVE_CLAMPING_CMD_0_REG,

Index: src/sys/arch/arm/nvidia/tegra_soc.c
diff -u src/sys/arch/arm/nvidia/tegra_soc.c:1.13 src/sys/arch/arm/nvidia/tegra_soc.c:1.14
--- src/sys/arch/arm/nvidia/tegra_soc.c:1.13	Sun May 28 23:32:14 2017
+++ src/sys/arch/arm/nvidia/tegra_soc.c	Thu Jul 20 01:46:15 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soc.c,v 1.13 2017/05/28 23:32:14 jmcneill Exp $ */
+/* $NetBSD: tegra_soc.c,v 1.14 2017/07/20 01:46:15 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.13 2017/05/28 23:32:14 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.14 2017/07/20 01:46:15 jmcneill Exp $");
 
 

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

2017-07-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jul 20 01:45:38 UTC 2017

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

Log Message:
Don't match tegra210, this doesn't work yet.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.18 src/sys/arch/arm/nvidia/tegra_pcie.c:1.19
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.18	Fri May 26 20:14:17 2017
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Thu Jul 20 01:45:38 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.18 2017/05/26 20:14:17 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.19 2017/07/20 01:45:38 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.18 2017/05/26 20:14:17 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.19 2017/07/20 01:45:38 jmcneill Exp $");
 
 #include 
 #include 
@@ -126,7 +126,9 @@ static int
 tegra_pcie_match(device_t parent, cfdata_t cf, void *aux)
 {
 	const char * const compatible[] = {
+#if notyet
 		"nvidia,tegra210-pcie",
+#endif
 		"nvidia,tegra124-pcie",
 		NULL
 	};



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

2017-05-28 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun May 28 23:32:14 UTC 2017

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

Log Message:
Remove unused tegra_dma_tag


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_soc.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_soc.c
diff -u src/sys/arch/arm/nvidia/tegra_soc.c:1.12 src/sys/arch/arm/nvidia/tegra_soc.c:1.13
--- src/sys/arch/arm/nvidia/tegra_soc.c:1.12	Sat May 27 20:26:27 2017
+++ src/sys/arch/arm/nvidia/tegra_soc.c	Sun May 28 23:32:14 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soc.c,v 1.12 2017/05/27 20:26:27 jmcneill Exp $ */
+/* $NetBSD: tegra_soc.c,v 1.13 2017/05/28 23:32:14 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,9 +30,8 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.12 2017/05/27 20:26:27 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.13 2017/05/28 23:32:14 jmcneill Exp $");
 
-#define	_ARM32_BUS_DMA_PRIVATE
 #include 
 #include 
 #include 
@@ -53,12 +52,6 @@ bus_space_handle_t tegra_ppsb_bsh;
 bus_space_handle_t tegra_apb_bsh;
 bus_space_handle_t tegra_ahb_a2_bsh;
 
-struct arm32_bus_dma_tag tegra_dma_tag = {
-	_BUS_DMAMAP_FUNCS,
-	_BUS_DMAMEM_FUNCS,
-	_BUS_DMATAG_FUNCS,
-};
-
 static void	tegra_mpinit(void);
 
 void



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

2017-05-27 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat May 27 20:26:44 UTC 2017

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

Log Message:
tegra_dma_bootstrap is no more


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 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_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.35 src/sys/arch/arm/nvidia/tegra_var.h:1.36
--- src/sys/arch/arm/nvidia/tegra_var.h:1.35	Thu May 25 23:26:48 2017
+++ src/sys/arch/arm/nvidia/tegra_var.h	Sat May 27 20:26:44 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.35 2017/05/25 23:26:48 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.36 2017/05/27 20:26:44 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -51,7 +51,6 @@ extern struct arm32_bus_dma_tag tegra_dm
 u_int	tegra_chip_id(void);
 const char *tegra_chip_name(void);
 void	tegra_bootstrap(void);
-void	tegra_dma_bootstrap(psize_t);
 
 struct tegra_gpio_pin;
 struct tegra_gpio_pin *tegra_gpio_acquire(const char *, u_int);



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

2017-05-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 26 20:14:17 UTC 2017

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

Log Message:
Match nvidia,tegra210-pcie compat string.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/nvidia/tegra_pcie.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_pcie.c
diff -u src/sys/arch/arm/nvidia/tegra_pcie.c:1.17 src/sys/arch/arm/nvidia/tegra_pcie.c:1.18
--- src/sys/arch/arm/nvidia/tegra_pcie.c:1.17	Sun Apr 16 22:38:04 2017
+++ src/sys/arch/arm/nvidia/tegra_pcie.c	Fri May 26 20:14:17 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pcie.c,v 1.17 2017/04/16 22:38:04 jmcneill Exp $ */
+/* $NetBSD: tegra_pcie.c,v 1.18 2017/05/26 20:14:17 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.17 2017/04/16 22:38:04 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pcie.c,v 1.18 2017/05/26 20:14:17 jmcneill Exp $");
 
 #include 
 #include 
@@ -125,7 +125,11 @@ CFATTACH_DECL_NEW(tegra_pcie, sizeof(str
 static int
 tegra_pcie_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-pcie", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-pcie",
+		"nvidia,tegra124-pcie",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-26 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri May 26 20:08:02 UTC 2017

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

Log Message:
Match nvidia,tegra210-ictlr compat string.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_lic.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_lic.c
diff -u src/sys/arch/arm/nvidia/tegra_lic.c:1.4 src/sys/arch/arm/nvidia/tegra_lic.c:1.5
--- src/sys/arch/arm/nvidia/tegra_lic.c:1.4	Sat Apr 22 19:20:51 2017
+++ src/sys/arch/arm/nvidia/tegra_lic.c	Fri May 26 20:08:02 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_lic.c,v 1.4 2017/04/22 19:20:51 jmcneill Exp $ */
+/* $NetBSD: tegra_lic.c,v 1.5 2017/05/26 20:08:02 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_lic.c,v 1.4 2017/04/22 19:20:51 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_lic.c,v 1.5 2017/05/26 20:08:02 jmcneill Exp $");
 
 #include 
 #include 
@@ -72,7 +72,11 @@ CFATTACH_DECL_NEW(tegra_lic, sizeof(stru
 static int
 tegra_lic_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-ictlr", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-ictlr",
+		"nvidia,tegra124-ictlr",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:55:30 UTC 2017

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

Log Message:
Match nvidia,tegra210-usb-phy and nvidia,tegra30-usb-phy compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nvidia/tegra_usbphy.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_usbphy.c
diff -u src/sys/arch/arm/nvidia/tegra_usbphy.c:1.6 src/sys/arch/arm/nvidia/tegra_usbphy.c:1.7
--- src/sys/arch/arm/nvidia/tegra_usbphy.c:1.6	Tue Mar  8 07:49:20 2016
+++ src/sys/arch/arm/nvidia/tegra_usbphy.c	Thu May 25 23:55:30 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_usbphy.c,v 1.6 2016/03/08 07:49:20 skrll Exp $ */
+/* $NetBSD: tegra_usbphy.c,v 1.7 2017/05/25 23:55:30 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_usbphy.c,v 1.6 2016/03/08 07:49:20 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_usbphy.c,v 1.7 2017/05/25 23:55:30 jmcneill Exp $");
 
 #include 
 #include 
@@ -79,7 +79,12 @@ CFATTACH_DECL_NEW(tegra_usbphy, sizeof(s
 static int
 tegra_usbphy_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-usb-phy", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-usb-phy",
+		"nvidia,tegra124-usb-phy",
+		"nvidia,tegra30-usb-phy",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:54:45 UTC 2017

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

Log Message:
Match nvidia,tegra210-timer and nvidia,tegra20-timer compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_timer.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_timer.c
diff -u src/sys/arch/arm/nvidia/tegra_timer.c:1.5 src/sys/arch/arm/nvidia/tegra_timer.c:1.6
--- src/sys/arch/arm/nvidia/tegra_timer.c:1.5	Sun Apr 16 12:28:21 2017
+++ src/sys/arch/arm/nvidia/tegra_timer.c	Thu May 25 23:54:45 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_timer.c,v 1.5 2017/04/16 12:28:21 jmcneill Exp $ */
+/* $NetBSD: tegra_timer.c,v 1.6 2017/05/25 23:54:45 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_timer.c,v 1.5 2017/04/16 12:28:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_timer.c,v 1.6 2017/05/25 23:54:45 jmcneill Exp $");
 
 #include 
 #include 
@@ -74,7 +74,12 @@ CFATTACH_DECL_NEW(tegra_timer, sizeof(st
 static int
 tegra_timer_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-timer", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-timer",
+		"nvidia,tegra124-timer",
+		"nvidia,tegra20-timer",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:53:50 UTC 2017

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

Log Message:
Match nvidia,tegra210-sdhci compat string.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 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.19 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.20
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.19	Sat Apr 22 21:50:49 2017
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Thu May 25 23:53:50 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.19 2017/04/22 21:50:49 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.20 2017/05/25 23:53:50 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.19 2017/04/22 21:50:49 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.20 2017/05/25 23:53:50 jmcneill Exp $");
 
 #include 
 #include 
@@ -81,7 +81,11 @@ CFATTACH_DECL_NEW(tegra_sdhc, sizeof(str
 static int
 tegra_sdhc_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-sdhci", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-sdhci",
+		"nvidia,tegra124-sdhci",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:53:05 UTC 2017

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

Log Message:
Match nvidia,tegra210-rtc and nvidia,tegra20-rtc compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_rtc.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_rtc.c
diff -u src/sys/arch/arm/nvidia/tegra_rtc.c:1.3 src/sys/arch/arm/nvidia/tegra_rtc.c:1.4
--- src/sys/arch/arm/nvidia/tegra_rtc.c:1.3	Sat Apr 22 13:24:45 2017
+++ src/sys/arch/arm/nvidia/tegra_rtc.c	Thu May 25 23:53:05 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_rtc.c,v 1.3 2017/04/22 13:24:45 jmcneill Exp $ */
+/* $NetBSD: tegra_rtc.c,v 1.4 2017/05/25 23:53:05 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_rtc.c,v 1.3 2017/04/22 13:24:45 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_rtc.c,v 1.4 2017/05/25 23:53:05 jmcneill Exp $");
 
 #include 
 #include 
@@ -70,7 +70,12 @@ CFATTACH_DECL_NEW(tegra_rtc, sizeof(stru
 static int
 tegra_rtc_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-rtc", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-rtc",
+		"nvidia,tegra124-rtc",
+		"nvidia,tegra20-rtc",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:52:10 UTC 2017

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

Log Message:
Match nvidia,tegra210-pmc compat string.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 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.9 src/sys/arch/arm/nvidia/tegra_pmc.c:1.10
--- src/sys/arch/arm/nvidia/tegra_pmc.c:1.9	Thu May 25 23:15:39 2017
+++ src/sys/arch/arm/nvidia/tegra_pmc.c	Thu May 25 23:52:10 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmc.c,v 1.9 2017/05/25 23:15:39 jmcneill Exp $ */
+/* $NetBSD: tegra_pmc.c,v 1.10 2017/05/25 23:52:10 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.9 2017/05/25 23:15:39 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.10 2017/05/25 23:52:10 jmcneill Exp $");
 
 #include 
 #include 
@@ -59,7 +59,11 @@ CFATTACH_DECL_NEW(tegra_pmc, sizeof(stru
 static int
 tegra_pmc_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-pmc", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-pmc",
+		"nvidia,tegra124-pmc",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:50:22 UTC 2017

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

Log Message:
Match nvidia,tegra210-gpio and nvidia,tegra30-gpio compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_gpio.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_gpio.c
diff -u src/sys/arch/arm/nvidia/tegra_gpio.c:1.7 src/sys/arch/arm/nvidia/tegra_gpio.c:1.8
--- src/sys/arch/arm/nvidia/tegra_gpio.c:1.7	Sun Mar 13 17:38:44 2016
+++ src/sys/arch/arm/nvidia/tegra_gpio.c	Thu May 25 23:50:22 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_gpio.c,v 1.7 2016/03/13 17:38:44 christos Exp $ */
+/* $NetBSD: tegra_gpio.c,v 1.8 2017/05/25 23:50:22 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_gpio.c,v 1.7 2016/03/13 17:38:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_gpio.c,v 1.8 2017/05/25 23:50:22 jmcneill Exp $");
 
 #include 
 #include 
@@ -148,7 +148,12 @@ CFATTACH_DECL_NEW(tegra_gpio, sizeof(str
 static int
 tegra_gpio_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-gpio", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-gpio",
+		"nvidia,tegra124-gpio",
+		"nvidia,tegra30-gpio",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:48:36 UTC 2017

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

Log Message:
Match nvidia,tegra210-efuse compat string.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/nvidia/tegra_fuse.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_fuse.c
diff -u src/sys/arch/arm/nvidia/tegra_fuse.c:1.4 src/sys/arch/arm/nvidia/tegra_fuse.c:1.5
--- src/sys/arch/arm/nvidia/tegra_fuse.c:1.4	Tue Dec 22 22:10:36 2015
+++ src/sys/arch/arm/nvidia/tegra_fuse.c	Thu May 25 23:48:36 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_fuse.c,v 1.4 2015/12/22 22:10:36 jmcneill Exp $ */
+/* $NetBSD: tegra_fuse.c,v 1.5 2017/05/25 23:48:36 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_fuse.c,v 1.4 2015/12/22 22:10:36 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_fuse.c,v 1.5 2017/05/25 23:48:36 jmcneill Exp $");
 
 #include 
 #include 
@@ -61,7 +61,11 @@ CFATTACH_DECL_NEW(tegra_fuse, sizeof(str
 static int
 tegra_fuse_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-efuse", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-efuse",
+		"nvidia,tegra124-efuse",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:45:04 UTC 2017

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

Log Message:
Match nvidia,tegra210-ehci and nvidia,tegra30-ehci compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 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.14 src/sys/arch/arm/nvidia/tegra_ehci.c:1.15
--- src/sys/arch/arm/nvidia/tegra_ehci.c:1.14	Mon May 23 18:21:14 2016
+++ src/sys/arch/arm/nvidia/tegra_ehci.c	Thu May 25 23:45:04 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_ehci.c,v 1.14 2016/05/23 18:21:14 jmcneill Exp $ */
+/* $NetBSD: tegra_ehci.c,v 1.15 2017/05/25 23:45:04 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_ehci.c,v 1.14 2016/05/23 18:21:14 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_ehci.c,v 1.15 2017/05/25 23:45:04 jmcneill Exp $");
 
 #include 
 #include 
@@ -73,7 +73,12 @@ CFATTACH_DECL2_NEW(tegra_ehci, sizeof(st
 static int
 tegra_ehci_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-ehci", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-ehci",
+		"nvidia,tegra124-ehci",
+		"nvidia,tegra30-ehci",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:43:49 UTC 2017

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

Log Message:
Match nvidia,tegra210-i2c and nvidia,tegra114-i2c compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 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.15 src/sys/arch/arm/nvidia/tegra_i2c.c:1.16
--- src/sys/arch/arm/nvidia/tegra_i2c.c:1.15	Mon Aug  8 14:40:57 2016
+++ src/sys/arch/arm/nvidia/tegra_i2c.c	Thu May 25 23:43:49 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_i2c.c,v 1.15 2016/08/08 14:40:57 jakllsch Exp $ */
+/* $NetBSD: tegra_i2c.c,v 1.16 2017/05/25 23:43:49 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.15 2016/08/08 14:40:57 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.16 2017/05/25 23:43:49 jmcneill Exp $");
 
 #include 
 #include 
@@ -95,7 +95,12 @@ CFATTACH_DECL_NEW(tegra_i2c, sizeof(stru
 static int
 tegra_i2c_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-i2c", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-i2c",
+		"nvidia,tegra124-i2c",
+		"nvidia,tegra114-i2c",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:42:44 UTC 2017

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

Log Message:
Match nvidia,tegra210-uart and nvidia,tegra20-uart compat strings.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_com.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_com.c
diff -u src/sys/arch/arm/nvidia/tegra_com.c:1.5 src/sys/arch/arm/nvidia/tegra_com.c:1.6
--- src/sys/arch/arm/nvidia/tegra_com.c:1.5	Tue Dec 22 22:10:36 2015
+++ src/sys/arch/arm/nvidia/tegra_com.c	Thu May 25 23:42:44 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_com.c,v 1.5 2015/12/22 22:10:36 jmcneill Exp $ */
+/* $NetBSD: tegra_com.c,v 1.6 2017/05/25 23:42:44 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.5 2015/12/22 22:10:36 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.6 2017/05/25 23:42:44 jmcneill Exp $");
 
 #include 
 #include 
@@ -65,7 +65,12 @@ CFATTACH_DECL_NEW(tegra_com, sizeof(stru
 static int
 tegra_com_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "nvidia,tegra124-uart", NULL };
+	const char * const compatible[] = {
+		"nvidia,tegra210-uart",
+		"nvidia,tegra124-uart",
+		"nvidia,tegra20-uart",
+		NULL
+	};
 	struct fdt_attach_args * const faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:26:48 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_soc.c tegra_var.h
Added Files:
src/sys/arch/arm/nvidia: soc_tegra210.c

Log Message:
Chip detection and MP spinup code for Tegra210


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/soc_tegra210.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra_soc.c
cvs rdiff -u -r1.34 -r1.35 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.35 src/sys/arch/arm/nvidia/files.tegra:1.36
--- src/sys/arch/arm/nvidia/files.tegra:1.35	Sat Apr 29 11:01:51 2017
+++ src/sys/arch/arm/nvidia/files.tegra	Thu May 25 23:26:48 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.35 2017/04/29 11:01:51 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.36 2017/05/25 23:26:48 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -27,6 +27,9 @@ device	tegra124cpu
 attach	tegra124cpu at fdt with tegra124_cpu
 file	arch/arm/nvidia/tegra124_cpu.c		tegra124_cpu
 
+# Tegra T210 (X1) support
+file	arch/arm/nvidia/soc_tegra210.c		soc_tegra210
+
 # Interrupt controller
 device	tegralic
 attach	tegralic at fdt with tegra_lic
@@ -161,4 +164,6 @@ defparam opt_tegra.h			MEMSIZE
 
 # SOC parameters
 defflag	opt_tegra.h			SOC_TEGRAK1
+defflag	opt_tegra.h			SOC_TEGRAX1
 defflag	opt_tegra.h			SOC_TEGRA124: SOC_TEGRAK1
+defflag	opt_tegra.h			SOC_TEGRA210: SOC_TEGRAX1

Index: src/sys/arch/arm/nvidia/tegra_soc.c
diff -u src/sys/arch/arm/nvidia/tegra_soc.c:1.10 src/sys/arch/arm/nvidia/tegra_soc.c:1.11
--- src/sys/arch/arm/nvidia/tegra_soc.c:1.10	Sat Apr 22 23:53:24 2017
+++ src/sys/arch/arm/nvidia/tegra_soc.c	Thu May 25 23:26:48 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_soc.c,v 1.10 2017/04/22 23:53:24 jmcneill Exp $ */
+/* $NetBSD: tegra_soc.c,v 1.11 2017/05/25 23:26:48 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.10 2017/04/22 23:53:24 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_soc.c,v 1.11 2017/05/25 23:26:48 jmcneill Exp $");
 
 #define	_ARM32_BUS_DMA_PRIVATE
 #include 
@@ -99,6 +99,11 @@ tegra_mpinit(void)
 		tegra124_mpinit();
 		break;
 #endif
+#ifdef SOC_TEGRA210
+	case CHIP_ID_TEGRA210:
+		tegra210_mpinit();
+		break;
+#endif
 	default:
 		panic("Unsupported SOC ID %#x", tegra_chip_id());
 	}
@@ -127,6 +132,7 @@ tegra_chip_name(void)
 	switch (tegra_chip_id()) {
 	case CHIP_ID_TEGRA124:	return "Tegra K1 (T124)";
 	case CHIP_ID_TEGRA132:	return "Tegra K1 (T132)";
+	case CHIP_ID_TEGRA210:	return "Tegra X1 (T210)";
 	default:		return "Unknown Tegra SoC";
 	}
 }

Index: src/sys/arch/arm/nvidia/tegra_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.34 src/sys/arch/arm/nvidia/tegra_var.h:1.35
--- src/sys/arch/arm/nvidia/tegra_var.h:1.34	Thu May 25 23:12:59 2017
+++ src/sys/arch/arm/nvidia/tegra_var.h	Thu May 25 23:26:48 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.34 2017/05/25 23:12:59 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.35 2017/05/25 23:26:48 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -107,6 +107,9 @@ void	tegra_cpufreq_register(const struct
 #if defined(SOC_TEGRA124)
 void	tegra124_mpinit(void);
 #endif
+#if defined(SOC_TEGRA210)
+void	tegra210_mpinit(void);
+#endif
 
 static void inline
 tegra_reg_set_clear(bus_space_tag_t bst, bus_space_handle_t bsh,

Added files:

Index: src/sys/arch/arm/nvidia/soc_tegra210.c
diff -u /dev/null src/sys/arch/arm/nvidia/soc_tegra210.c:1.1
--- /dev/null	Thu May 25 23:26:48 2017
+++ src/sys/arch/arm/nvidia/soc_tegra210.c	Thu May 25 23:26:48 2017
@@ -0,0 +1,81 @@
+/* $NetBSD: soc_tegra210.c,v 1.1 2017/05/25 23:26:48 jmcneill Exp $ */
+
+/*-
+ * Copyright (c) 2017 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 

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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:15:39 UTC 2017

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

Log Message:
Correct an issue introduced in r1.7 that prevented unclamping power for
non-GPU partitions. While here, apply the GPU power workaround to Tegra210
as well.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 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.8 src/sys/arch/arm/nvidia/tegra_pmc.c:1.9
--- src/sys/arch/arm/nvidia/tegra_pmc.c:1.8	Sun Dec 13 17:39:19 2015
+++ src/sys/arch/arm/nvidia/tegra_pmc.c	Thu May 25 23:15:39 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_pmc.c,v 1.8 2015/12/13 17:39:19 jmcneill Exp $ */
+/* $NetBSD: tegra_pmc.c,v 1.9 2017/05/25 23:15:39 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.8 2015/12/13 17:39:19 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_pmc.c,v 1.9 2017/05/25 23:15:39 jmcneill Exp $");
 
 #include 
 #include 
@@ -165,13 +165,17 @@ tegra_pmc_remove_clamping(u_int partid)
 
 	tegra_pmc_get_bs(, );
 
-	if (tegra_chip_id() == CHIP_ID_TEGRA124) {
+	if (partid == PMC_PARTID_TD) {
 		/*
-		 * On Tegra124 the GPU power clamping is controlled by a
-		 * separate register
+		 * On Tegra124 and later, the GPU power clamping is
+		 * controlled by a separate register
 		 */
-		bus_space_write_4(bst, bsh, PMC_GPU_RG_CNTRL_REG, 0);
-		return;
+		switch (tegra_chip_id()) {
+		case CHIP_ID_TEGRA124:
+		case CHIP_ID_TEGRA210:
+			bus_space_write_4(bst, bsh, PMC_GPU_RG_CNTRL_REG, 0);
+			return;
+		}
 	}
 
 	bus_space_write_4(bst, bsh, PMC_REMOVE_CLAMPING_CMD_0_REG,



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

2017-05-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu May 25 23:12:59 UTC 2017

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

Log Message:
Add Tegra210 chip ID.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 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_var.h
diff -u src/sys/arch/arm/nvidia/tegra_var.h:1.33 src/sys/arch/arm/nvidia/tegra_var.h:1.34
--- src/sys/arch/arm/nvidia/tegra_var.h:1.33	Sat Apr 22 23:53:24 2017
+++ src/sys/arch/arm/nvidia/tegra_var.h	Thu May 25 23:12:59 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_var.h,v 1.33 2017/04/22 23:53:24 jmcneill Exp $ */
+/* $NetBSD: tegra_var.h,v 1.34 2017/05/25 23:12:59 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -46,6 +46,7 @@ extern struct arm32_bus_dma_tag tegra_dm
 #define CHIP_ID_TEGRA114	0x35
 #define CHIP_ID_TEGRA124	0x40
 #define CHIP_ID_TEGRA132	0x13
+#define CHIP_ID_TEGRA210	0x21
 
 u_int	tegra_chip_id(void);
 const char *tegra_chip_name(void);



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

2017-05-03 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Wed May  3 13:13:12 UTC 2017

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

Log Message:
The DMA Request number is seperate from the DMA Channel number, treat as such.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_apbdma.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_apbdma.c
diff -u src/sys/arch/arm/nvidia/tegra_apbdma.c:1.2 src/sys/arch/arm/nvidia/tegra_apbdma.c:1.3
--- src/sys/arch/arm/nvidia/tegra_apbdma.c:1.2	Wed May  3 12:38:39 2017
+++ src/sys/arch/arm/nvidia/tegra_apbdma.c	Wed May  3 13:13:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_apbdma.c,v 1.2 2017/05/03 12:38:39 jmcneill Exp $ */
+/* $NetBSD: tegra_apbdma.c,v 1.3 2017/05/03 13:13:12 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.2 2017/05/03 12:38:39 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.3 2017/05/03 13:13:12 jakllsch Exp $");
 
 #include 
 #include 
@@ -71,6 +71,7 @@ struct tegra_apbdma_chan {
 	void			*ch_ih;
 	void			(*ch_cb)(void *);
 	void			*ch_cbarg;
+	u_int			ch_req;
 };
 
 struct tegra_apbdma_softc {
@@ -187,18 +188,23 @@ tegra_apbdma_acquire(device_t dev, const
 {
 	struct tegra_apbdma_softc *sc = device_private(dev);
 	struct tegra_apbdma_chan *ch;
+	u_int n;
 	char intrstr[128];
 
 	if (len != 4)
 		return NULL;
 
-	const u_int n = be32dec(data);
-	if (n >= TEGRA_APBDMA_NCHAN)
+	const u_int req = be32dec(data);
+	if (req > __SHIFTOUT_MASK(APBDMACHAN_CSR_REQ_SEL))
 		return NULL;
 
-	ch = >sc_chan[n];
-	if (ch->ch_ih != NULL) {
-		aprint_error_dev(dev, "dma channel %u is in use\n", n);
+	for (n = 0; n < TEGRA_APBDMA_NCHAN; n++) {
+		ch = >sc_chan[n];
+		if (ch->ch_ih == NULL)
+			break;
+	}
+	if (n >= TEGRA_APBDMA_NCHAN) {
+		aprint_error_dev(dev, "no free DMA channel\n");
 		return NULL;
 	}
 
@@ -218,6 +224,7 @@ tegra_apbdma_acquire(device_t dev, const
 
 	ch->ch_cb = cb;
 	ch->ch_cbarg = cbarg;
+	ch->ch_req = req;
 
 	/* Unmask interrupts for this channel */
 	APBDMA_WRITE(sc, APBDMA_IRQ_MASK_SET_REG, __BIT(n));
@@ -270,11 +277,7 @@ tegra_apbdma_transfer(device_t dev, void
 	if ((req->dreq_segs[0].ds_len & 3) != 0)
 		return EINVAL;
 
-	/* REQ_SEL is between 0 and 31 */
-	if (req->dreq_sel < 0 || req->dreq_sel > 31)
-		return EINVAL;
-
-	csr |= __SHIFTIN(req->dreq_sel, APBDMACHAN_CSR_REQ_SEL);
+	csr |= __SHIFTIN(ch->ch_req, APBDMACHAN_CSR_REQ_SEL);
 
 	/*
 	 * Set DMA transfer direction.



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

2017-05-03 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed May  3 12:38:39 UTC 2017

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

Log Message:
tegra_apbdma_acquire: length param is in bytes not cells


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_apbdma.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_apbdma.c
diff -u src/sys/arch/arm/nvidia/tegra_apbdma.c:1.1 src/sys/arch/arm/nvidia/tegra_apbdma.c:1.2
--- src/sys/arch/arm/nvidia/tegra_apbdma.c:1.1	Sat Apr 29 11:01:51 2017
+++ src/sys/arch/arm/nvidia/tegra_apbdma.c	Wed May  3 12:38:39 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_apbdma.c,v 1.1 2017/04/29 11:01:51 jmcneill Exp $ */
+/* $NetBSD: tegra_apbdma.c,v 1.2 2017/05/03 12:38:39 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.1 2017/04/29 11:01:51 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.2 2017/05/03 12:38:39 jmcneill Exp $");
 
 #include 
 #include 
@@ -189,7 +189,7 @@ tegra_apbdma_acquire(device_t dev, const
 	struct tegra_apbdma_chan *ch;
 	char intrstr[128];
 
-	if (len != 1)
+	if (len != 4)
 		return NULL;
 
 	const u_int n = be32dec(data);



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

2017-04-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 29 23:00:42 UTC 2017

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

Log Message:
Adjust voltage when changing CPU frequency.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra124_cpu.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/tegra124_cpu.c
diff -u src/sys/arch/arm/nvidia/tegra124_cpu.c:1.2 src/sys/arch/arm/nvidia/tegra124_cpu.c:1.3
--- src/sys/arch/arm/nvidia/tegra124_cpu.c:1.2	Sat Apr 29 20:43:48 2017
+++ src/sys/arch/arm/nvidia/tegra124_cpu.c	Sat Apr 29 23:00:42 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_cpu.c,v 1.2 2017/04/29 20:43:48 jakllsch Exp $ */
+/* $NetBSD: tegra124_cpu.c,v 1.3 2017/04/29 23:00:42 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_cpu.c,v 1.2 2017/04/29 20:43:48 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_cpu.c,v 1.3 2017/04/29 23:00:42 jmcneill Exp $");
 
 #include 
 #include 
@@ -88,15 +88,15 @@ static struct tegra124_cpufreq_rate {
 	u_int divp;
 	u_int uvol;
 } tegra124_cpufreq_rates[] = {
-	{ 2316, 1, 193, 0, 120 },
-	{ 2100, 1, 175, 0, 120 },
-	{ 1896, 1, 158, 0, 120 },
-	{ 1692, 1, 141, 0, 120 },
-	{ 1500, 1, 125, 0, 120 },
-	{ 1296, 1, 108, 0, 120 },
-	{ 1092, 1, 91,  0, 120 },
-	{ 900,  1, 75,  0, 120 },
-	{ 696,  1, 58,  0, 120 }
+	{ 2316, 1, 193, 0, 136 },
+	{ 2100, 1, 175, 0, 126 },
+	{ 1896, 1, 158, 0, 118 },
+	{ 1692, 1, 141, 0, 110 },
+	{ 1500, 1, 125, 0, 102 },
+	{ 1296, 1, 108, 0, 96 },
+	{ 1092, 1, 91,  0, 90 },
+	{ 900,  1, 75,  0, 84 },
+	{ 696,  1, 58,  0, 80 }
 };
 
 static const u_int tegra124_cpufreq_max[] = {



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

2017-04-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 29 11:47:32 UTC 2017

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

Log Message:
APB-DMA channel registers start at offset 1000h relative to the APB-DMA
controller registers.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/nvidia/tegra_apbdmareg.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_apbdmareg.h
diff -u src/sys/arch/arm/nvidia/tegra_apbdmareg.h:1.1 src/sys/arch/arm/nvidia/tegra_apbdmareg.h:1.2
--- src/sys/arch/arm/nvidia/tegra_apbdmareg.h:1.1	Sat Apr 29 11:01:51 2017
+++ src/sys/arch/arm/nvidia/tegra_apbdmareg.h	Sat Apr 29 11:47:32 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_apbdmareg.h,v 1.1 2017/04/29 11:01:51 jmcneill Exp $ */
+/* $NetBSD: tegra_apbdmareg.h,v 1.2 2017/04/29 11:47:32 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -56,7 +56,7 @@
 /*
  * APB DMA channel registers
  */
-#define	APBDMACHAN_CSR_REG(n)		(0x00 + ((n) * 0x40))
+#define	APBDMACHAN_CSR_REG(n)		(0x1000 + ((n) * 0x40))
 #define	 APBDMACHAN_CSR_ENB		__BIT(31)
 #define	 APBDMACHAN_CSR_IE_EOC		__BIT(30)
 #define	 APBDMACHAN_CSR_HOLD		__BIT(29)
@@ -64,12 +64,12 @@
 #define	 APBDMACHAN_CSR_ONCE		__BIT(27)
 #define	 APBDMACHAN_CSR_FLOW		__BIT(21)
 #define	 APBDMACHAN_CSR_REQ_SEL		__BITS(20,16)
-#define	APBDMACHAN_STA_REG(n)		(0x04 + ((n) * 0x40))
-#define	APBDMACHAN_DMA_BYTE_STA_REG(n)	(0x08 + ((n) * 0x40))
-#define	APBDMACHAN_CSRE_REG(n)		(0x0c + ((n) * 0x40))
-#define	APBDMACHAN_AHB_PTR_REG(n)	(0x10 + ((n) * 0x40))
+#define	APBDMACHAN_STA_REG(n)		(0x1004 + ((n) * 0x40))
+#define	APBDMACHAN_DMA_BYTE_STA_REG(n)	(0x1008 + ((n) * 0x40))
+#define	APBDMACHAN_CSRE_REG(n)		(0x100c + ((n) * 0x40))
+#define	APBDMACHAN_AHB_PTR_REG(n)	(0x1010 + ((n) * 0x40))
 #define	 APBDMACHAN_AHB_PTR_MASK	__BITS(31,2)
-#define	APBDMACHAN_AHB_SEQ_REG(n)	(0x14 + ((n) * 0x40))
+#define	APBDMACHAN_AHB_SEQ_REG(n)	(0x1014 + ((n) * 0x40))
 #define	 APBDMACHAN_AHB_SEQ_INTR_ENB	__BIT(31)
 #define	 APBDMACHAN_AHB_SEQ_BUS_WIDTH	__BITS(30,28)
 #define	  APBDMACHAN_AHB_SEQ_BUS_WIDTH_32	2
@@ -88,9 +88,9 @@
 #define	  APBDMACHAN_AHB_SEQ_WRAP_512		5
 #define	  APBDMACHAN_AHB_SEQ_WRAP_1024		6
 #define	  APBDMACHAN_AHB_SEQ_WRAP_2048		7
-#define	APBDMACHAN_APB_PTR_REG(n)	(0x18 + ((n) * 0x40))
+#define	APBDMACHAN_APB_PTR_REG(n)	(0x1018 + ((n) * 0x40))
 #define	 APBDMACHAN_APB_PTR_MASK	__BITS(31,2)
-#define	APBDMACHAN_APB_SEQ_REG(n)	(0x1c + ((n) * 0x40))
+#define	APBDMACHAN_APB_SEQ_REG(n)	(0x101c + ((n) * 0x40))
 #define	 APBDMACHAN_APB_SEQ_BUS_WIDTH	__BITS(30,28)
 #define	  APBDMACHAN_APB_SEQ_BUS_WIDTH_8	0
 #define	  APBDMACHAN_APB_SEQ_BUS_WIDTH_16	1
@@ -105,8 +105,7 @@
 #define	  APBDMACHAN_APB_SEQ_WRAP_16		5
 #define	  APBDMACHAN_APB_SEQ_WRAP_32		6
 #define	  APBDMACHAN_APB_SEQ_WRAP_64		7
-#define	APBDMACHAN_WCOUNT_REG(n)	(0x20 + ((n) * 0x40))
-#define	APBDMACHAN_WORD_REG(n)		(0x24 + ((n) * 0x40))
-
+#define	APBDMACHAN_WCOUNT_REG(n)	(0x1020 + ((n) * 0x40))
+#define	APBDMACHAN_WORD_REG(n)		(0x1024 + ((n) * 0x40))
 
 #endif /* _ARM_TEGRA_APBDMAREG_H */



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

2017-04-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 29 11:01:52 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: files.tegra
Added Files:
src/sys/arch/arm/nvidia: tegra_apbdma.c tegra_apbdmareg.h

Log Message:
Add Tegra124 APB-DMA controller driver.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra_apbdma.c \
src/sys/arch/arm/nvidia/tegra_apbdmareg.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.34 src/sys/arch/arm/nvidia/files.tegra:1.35
--- src/sys/arch/arm/nvidia/files.tegra:1.34	Fri Apr 28 09:46:49 2017
+++ src/sys/arch/arm/nvidia/files.tegra	Sat Apr 29 11:01:51 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.34 2017/04/28 09:46:49 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.35 2017/04/29 11:01:51 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -67,6 +67,11 @@ device	tegrampio
 attach	tegrampio at fdt with tegra_mpio
 file	arch/arm/nvidia/tegra_mpio.c		tegra_mpio
 
+# APB DMA
+device	tegraapbdma
+attach	tegraapbdma at fdt with tegra_apbdma
+file	arch/arm/nvidia/tegra_apbdma.c		tegra_apbdma
+
 # XUSB PADCTL
 device	tegraxusbpad
 attach	tegraxusbpad at fdt with tegra_xusbpad

Added files:

Index: src/sys/arch/arm/nvidia/tegra_apbdma.c
diff -u /dev/null src/sys/arch/arm/nvidia/tegra_apbdma.c:1.1
--- /dev/null	Sat Apr 29 11:01:52 2017
+++ src/sys/arch/arm/nvidia/tegra_apbdma.c	Sat Apr 29 11:01:51 2017
@@ -0,0 +1,487 @@
+/* $NetBSD: tegra_apbdma.c,v 1.1 2017/04/29 11:01:51 jmcneill Exp $ */
+
+/*-
+ * Copyright (c) 2017 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 
+__KERNEL_RCSID(0, "$NetBSD: tegra_apbdma.c,v 1.1 2017/04/29 11:01:51 jmcneill Exp $");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+
+#define	TEGRA_APBDMA_NCHAN	32
+
+static void *	tegra_apbdma_acquire(device_t, const void *, size_t,
+ void (*)(void *), void *);
+static void	tegra_apbdma_release(device_t, void *);
+static int	tegra_apbdma_transfer(device_t, void *,
+  struct fdtbus_dma_req *);
+static void	tegra_apbdma_halt(device_t, void *);
+
+static const struct fdtbus_dma_controller_func tegra_apbdma_funcs = {
+	.acquire = tegra_apbdma_acquire,
+	.release = tegra_apbdma_release,
+	.transfer = tegra_apbdma_transfer,
+	.halt = tegra_apbdma_halt
+};
+
+static int	tegra_apbdma_match(device_t, cfdata_t, void *);
+static void	tegra_apbdma_attach(device_t, device_t, void *);
+
+static int	tegra_apbdma_intr(void *);
+
+struct tegra_apbdma_softc;
+
+struct tegra_apbdma_chan {
+	struct tegra_apbdma_softc *ch_sc;
+	u_int			ch_n;
+	void			*ch_ih;
+	void			(*ch_cb)(void *);
+	void			*ch_cbarg;
+};
+
+struct tegra_apbdma_softc {
+	device_t		sc_dev;
+	bus_space_tag_t		sc_bst;
+	bus_space_handle_t	sc_bsh;
+	int			sc_phandle;
+
+	struct tegra_apbdma_chan sc_chan[TEGRA_APBDMA_NCHAN];
+};
+
+CFATTACH_DECL_NEW(tegra_apbdma, sizeof(struct tegra_apbdma_softc),
+	tegra_apbdma_match, tegra_apbdma_attach, NULL, NULL);
+
+#define	APBDMA_READ(sc, reg)		\
+	bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, (reg))
+#define	APBDMA_WRITE(sc, reg, val)	\
+	bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, (reg), (val))
+
+static int
+tegra_apbdma_match(device_t parent, cfdata_t cf, void *aux)
+{
+	const char * const compatible[] = { "nvidia,tegra124-apbdma", NULL };
+	struct fdt_attach_args * const faa = aux;
+
+	return of_match_compatible(faa->faa_phandle, 

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

2017-04-29 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 29 11:00:17 UTC 2017

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

Log Message:
add APB-DMA clock gate


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra124_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.12 src/sys/arch/arm/nvidia/tegra124_car.c:1.13
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.12	Wed Apr 26 01:43:00 2017
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Sat Apr 29 11:00:17 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.12 2017/04/26 01:43:00 jmcneill Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.13 2017/04/29 11:00:17 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.12 2017/04/26 01:43:00 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.13 2017/04/29 11:00:17 jmcneill Exp $");
 
 #include 
 #include 
@@ -635,6 +635,7 @@ static struct tegra_clk tegra124_car_clo
 	CLK_GATE_U("xusb_host", "xusb_host_src", CAR_DEV_U_XUSB_HOST),
 	CLK_GATE_W("xusb_ss", "xusb_ss_src", CAR_DEV_W_XUSB_SS),
 	CLK_GATE_X("gpu", "pll_ref", CAR_DEV_X_GPU),
+	CLK_GATE_H("apbdma", "clk_m", CAR_DEV_H_APBDMA),
 };
 
 struct tegra124_init_parent {



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

2017-04-28 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Apr 28 09:46:49 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: files.tegra tegra_xusb.c

Log Message:
Hide the debug output unless either TEGRA_XUSB_DEBUG is defined or
tegra_xusb_debug is set to 1.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_xusb.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.33 src/sys/arch/arm/nvidia/files.tegra:1.34
--- src/sys/arch/arm/nvidia/files.tegra:1.33	Sun Apr 23 12:31:38 2017
+++ src/sys/arch/arm/nvidia/files.tegra	Fri Apr 28 09:46:49 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.33 2017/04/23 12:31:38 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.34 2017/04/28 09:46:49 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -99,6 +99,7 @@ file	arch/arm/nvidia/tegra_ehci.c		tegra
 # XUSB (USB 3.0)
 attach	xhci at fdt with tegra_xusb
 file	arch/arm/nvidia/tegra_xusb.c		tegra_xusb
+defflag	opt_tegra.hTEGRA_XUSB_DEBUG
 
 # SDMMC
 attach	sdhc at fdt with tegra_sdhc

Index: src/sys/arch/arm/nvidia/tegra_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.5 src/sys/arch/arm/nvidia/tegra_xusb.c:1.6
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.5	Sun Apr 16 12:28:21 2017
+++ src/sys/arch/arm/nvidia/tegra_xusb.c	Fri Apr 28 09:46:49 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.5 2017/04/16 12:28:21 jmcneill Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.6 2017/04/28 09:46:49 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
 #include "opt_tegra.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.5 2017/04/16 12:28:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.6 2017/04/28 09:46:49 jmcneill Exp $");
 
 #include 
 #include 
@@ -57,6 +57,14 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c
 #include 
 #include 
 
+#ifdef TEGRA_XUSB_DEBUG
+int tegra_xusb_debug = 1;
+#else
+int tegra_xusb_debug = 0;
+#endif
+
+#define DPRINTF(...)	if (tegra_xusb_debug) device_printf(__VA_ARGS__)
+
 static int	tegra_xusb_match(device_t, cfdata_t, void *);
 static void	tegra_xusb_attach(device_t, device_t, void *);
 static void	tegra_xusb_mountroot(device_t);
@@ -126,10 +134,10 @@ tegra_xusb_attach(device_t parent, devic
 	char intrstr[128];
 	bus_addr_t addr;
 	bus_size_t size;
-	int error;
+	struct fdtbus_reset *rst;
 	struct clk *clk;
 	uint32_t rate;
-	struct fdtbus_reset *rst;
+	int error;
 
 	aprint_naive("\n");
 	aprint_normal(": XUSB\n");
@@ -149,7 +157,7 @@ tegra_xusb_attach(device_t parent, devic
 		aprint_error(": couldn't map %#llx: %d", (uint64_t)addr, error);
 		return;
 	}
-	printf("mapped %#llx\n", (uint64_t)addr);
+	DPRINTF(sc->sc_dev, "mapped %#llx\n", (uint64_t)addr);
 
 	if (fdtbus_get_reg(faa->faa_phandle, 1, , ) != 0) {
 		aprint_error(": couldn't get registers\n");
@@ -160,7 +168,7 @@ tegra_xusb_attach(device_t parent, devic
 		aprint_error(": couldn't map %#llx: %d", (uint64_t)addr, error);
 		return;
 	}
-	printf("mapped %#llx\n", (uint64_t)addr);
+	DPRINTF(sc->sc_dev, "mapped %#llx\n", (uint64_t)addr);
 
 	if (fdtbus_get_reg(faa->faa_phandle, 2, , ) != 0) {
 		aprint_error(": couldn't get registers\n");
@@ -171,7 +179,7 @@ tegra_xusb_attach(device_t parent, devic
 		aprint_error(": couldn't map %#llx: %d", (uint64_t)addr, error);
 		return;
 	}
-	printf("mapped %#llx\n", (uint64_t)addr);
+	DPRINTF(sc->sc_dev, "mapped %#llx\n", (uint64_t)addr);
 
 	if (!fdtbus_intr_str(faa->faa_phandle, 0, intrstr, sizeof(intrstr))) {
 		aprint_error_dev(self, "failed to decode interrupt\n");
@@ -204,40 +212,40 @@ tegra_xusb_attach(device_t parent, devic
 	clk = fdtbus_clock_get(faa->faa_phandle, "pll_e");
 	rate = clk_get_rate(clk);
 	error = clk_enable(clk); /* XXX set frequency */
-	device_printf(sc->sc_dev, "rate %u error %d\n", rate, error);
+	DPRINTF(sc->sc_dev, "rate %u error %d\n", rate, error);
 	tegra_xusb_attach_check(sc, error, "failed to enable pll_e clock");
 
 	clk = fdtbus_clock_get(faa->faa_phandle, "xusb_host_src");
 	rate = clk_get_rate(clk);
-	device_printf(sc->sc_dev, "rate %u error %d\n", rate, error);
+	DPRINTF(sc->sc_dev, "rate %u error %d\n", rate, error);
 	error = clk_set_rate(clk, 10200);
 	tegra_xusb_attach_check(sc, error, "failed to set xusb_host_src clock rate");
 
 	rate = clk_get_rate(clk);
 	error = clk_enable(clk); /* XXX set frequency */
-	device_printf(sc->sc_dev, "rate %u error %d\n", rate, error);
+	DPRINTF(sc->sc_dev, "rate %u error %d\n", rate, error);
 	tegra_xusb_attach_check(sc, error, "failed to enable xusb_host_src clock");
 
 	clk = fdtbus_clock_get(faa->faa_phandle, "xusb_falcon_src");
 	rate = clk_get_rate(clk);
-	device_printf(sc->sc_dev, "rate %u error %d\n", rate, error);
+	DPRINTF(sc->sc_dev, "rate %u 

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

2017-04-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Apr 26 01:43:00 UTC 2017

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

Log Message:
Set host1x parent to pll_p_out0


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/nvidia/tegra124_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.11 src/sys/arch/arm/nvidia/tegra124_car.c:1.12
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.11	Sat Apr 22 17:40:47 2017
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Wed Apr 26 01:43:00 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.11 2017/04/22 17:40:47 jmcneill Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.12 2017/04/26 01:43:00 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.11 2017/04/22 17:40:47 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.12 2017/04/26 01:43:00 jmcneill Exp $");
 
 #include 
 #include 
@@ -651,6 +651,7 @@ struct tegra124_init_parent {
 	{ "xusb_falcon_src",	"pll_p_out0" },
 	{ "xusb_ss_src",	"pll_u_480" },
 	{ "xusb_fs_src",	"pll_u_48" },
+	{ "host1x",		"pll_p_out0" },
 };
 
 struct tegra124_car_rst {



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

2017-04-25 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Apr 26 01:42:46 UTC 2017

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

Log Message:
Ignore dc parent clock from devicetree and use hdmi parent for dc.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/nvidia/tegra_drm_mode.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_drm_mode.c
diff -u src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.13 src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.14
--- src/sys/arch/arm/nvidia/tegra_drm_mode.c:1.13	Sun Apr 16 12:22:18 2017
+++ src/sys/arch/arm/nvidia/tegra_drm_mode.c	Wed Apr 26 01:42:46 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_drm_mode.c,v 1.13 2017/04/16 12:22:18 jmcneill Exp $ */
+/* $NetBSD: tegra_drm_mode.c,v 1.14 2017/04/26 01:42:46 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.13 2017/04/16 12:22:18 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_drm_mode.c,v 1.14 2017/04/26 01:42:46 jmcneill Exp $");
 
 #include 
 #include 
@@ -290,7 +290,7 @@ tegra_crtc_init(struct drm_device *ddev,
 	int error;
 
 	if (sc->sc_clk_dc[index] == NULL ||
-	sc->sc_clk_dc_parent[index] == NULL ||
+	sc->sc_clk_hdmi_parent == NULL ||
 	sc->sc_rst_dc[index] == NULL) {
 		DRM_ERROR("no clocks configured for crtc %d\n", index);
 		return -EIO;
@@ -344,9 +344,9 @@ tegra_crtc_init(struct drm_device *ddev,
 	tegra_pmc_power(pmc_partid, true);
 	tegra_pmc_remove_clamping(pmc_partid);
 
-	/* Set parent clock */
+	/* Set parent clock to the HDMI parent (ignoring DC parent in DT!) */
 	error = clk_set_parent(sc->sc_clk_dc[index],
-	sc->sc_clk_dc_parent[index]);
+	sc->sc_clk_hdmi_parent);
 	if (error) {
 		DRM_ERROR("failed to set crtc %d clock parent: %d\n",
 		index, error);
@@ -363,7 +363,7 @@ tegra_crtc_init(struct drm_device *ddev,
 	/* Leave reset */
 	fdtbus_reset_deassert(sc->sc_rst_dc[index]);
 
-	crtc->clk_parent = sc->sc_clk_dc_parent[index];
+	crtc->clk_parent = sc->sc_clk_hdmi_parent;
 
 	DC_WRITE(crtc, DC_CMD_INT_ENABLE_REG, DC_CMD_INT_V_BLANK);
 



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

2017-04-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Apr 23 12:31:38 UTC 2017

Modified Files:
src/sys/arch/arm/nvidia: files.tegra soc_tegra124.c
Added Files:
src/sys/arch/arm/nvidia: tegra124_cpu.c

Log Message:
Split cpufreq driver out into a separate module.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/nvidia/files.tegra
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/soc_tegra124.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/nvidia/tegra124_cpu.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.32 src/sys/arch/arm/nvidia/files.tegra:1.33
--- src/sys/arch/arm/nvidia/files.tegra:1.32	Sat Apr 22 23:53:24 2017
+++ src/sys/arch/arm/nvidia/files.tegra	Sun Apr 23 12:31:38 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.tegra,v 1.32 2017/04/22 23:53:24 jmcneill Exp $
+#	$NetBSD: files.tegra,v 1.33 2017/04/23 12:31:38 jmcneill Exp $
 #
 # Configuration info for NVIDIA Tegra ARM Peripherals
 #
@@ -22,9 +22,10 @@ file	arch/arm/nvidia/tegra_soc.c
 file	arch/arm/nvidia/tegra_cpufreq.c
 
 # Tegra T124 (32-bit K1) support
+file	arch/arm/nvidia/soc_tegra124.c		soc_tegra124
 device	tegra124cpu
 attach	tegra124cpu at fdt with tegra124_cpu
-file	arch/arm/nvidia/soc_tegra124.c		soc_tegra124 | tegra124_cpu
+file	arch/arm/nvidia/tegra124_cpu.c		tegra124_cpu
 
 # Interrupt controller
 device	tegralic

Index: src/sys/arch/arm/nvidia/soc_tegra124.c
diff -u src/sys/arch/arm/nvidia/soc_tegra124.c:1.16 src/sys/arch/arm/nvidia/soc_tegra124.c:1.17
--- src/sys/arch/arm/nvidia/soc_tegra124.c:1.16	Sat Apr 22 23:53:24 2017
+++ src/sys/arch/arm/nvidia/soc_tegra124.c	Sun Apr 23 12:31:38 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: soc_tegra124.c,v 1.16 2017/04/22 23:53:24 jmcneill Exp $ */
+/* $NetBSD: soc_tegra124.c,v 1.17 2017/04/23 12:31:38 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -30,7 +30,7 @@
 #include "opt_multiprocessor.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.16 2017/04/22 23:53:24 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: soc_tegra124.c,v 1.17 2017/04/23 12:31:38 jmcneill Exp $");
 
 #include 
 #include 
@@ -49,258 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: soc_tegra124
 
 #define EVP_RESET_VECTOR_0_REG	0x100
 
-#define FUSE_SKU_INFO_REG	0x010
-#define FUSE_CPU_SPEEDO_0_REG	0x014
-#define FUSE_CPU_IDDQ_REG	0x018
-#define FUSE_FT_REV_REG		0x028
-#define FUSE_CPU_SPEEDO_1_REG	0x02c
-#define FUSE_CPU_SPEEDO_2_REG	0x030
-#define FUSE_SOC_SPEEDO_0_REG	0x034
-#define FUSE_SOC_SPEEDO_1_REG	0x038
-#define FUSE_SOC_SPEEDO_2_REG	0x03c
-#define FUSE_SOC_IDDQ_REG	0x040
-#define FUSE_GPU_IDDQ_REG	0x128
-
-static void	tegra124_speedo_init(void);
-static int	tegra124_speedo_init_ids(uint32_t);
-static bool	tegra124_speedo_rate_ok(u_int);
-
-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 int	tegra124_cpu_match(device_t, cfdata_t, void *);
-static void	tegra124_cpu_attach(device_t, device_t, void *);
-static void	tegra124_cpu_init_cpufreq(device_t);
-
-CFATTACH_DECL_NEW(tegra124_cpu, 0, tegra124_cpu_match, tegra124_cpu_attach,
-NULL, NULL);
-
-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;
-	u_int uvol;
-} tegra124_cpufreq_rates[] = {
-	{ 2316, 1, 193, 0, 140 },
-	{ 2100, 1, 175, 0, 140 },
-	{ 1896, 1, 158, 0, 140 },
-	{ 1692, 1, 141, 0, 140 },
-	{ 1500, 1, 125, 0, 140 },
-	{ 1296, 1, 108, 0, 140 },
-	{ 1092, 1, 91,  0, 140 },
-	{ 900,  1, 75,  0, 140 },
-	{ 696,  1, 58,  0, 140 }
-};
-
-static const u_int tegra124_cpufreq_max[] = {
-	2014,
-	2320,
-	2116,
-	2524
-};
-
-static struct tegra124_speedo {
-	u_int cpu_speedo_id;
-	u_int soc_speedo_id;
-	u_int gpu_speedo_id;
-} tegra124_speedo = {
-	.cpu_speedo_id = 0,
-	.soc_speedo_id = 0,
-	.gpu_speedo_id = 0
-};
-
-static struct clk *tegra124_clk_pllx = NULL;
-static struct fdtbus_regulator *tegra124_reg_vddcpu = NULL;
-
-static int
-tegra124_cpu_match(device_t parent, cfdata_t cf, void *aux)
-{
-	const char * const compatible[] = { "nvidia,tegra124", NULL };
-	struct fdt_attach_args *faa = aux;
-
-	if (OF_finddevice("/cpus") != faa->faa_phandle)
-		return 0;
-
-	return of_match_compatible(OF_finddevice("/"), compatible);
-}
-
-static void
-tegra124_cpu_attach(device_t parent, device_t self, void *aux)
-{
-	aprint_naive("\n");
-	aprint_normal(": CPU complex\n");
-
-	config_defer(self, tegra124_cpu_init_cpufreq);
-}
-
-static void
-tegra124_cpu_init_cpufreq(device_t dev)
-{
-	tegra124_speedo_init();
-
-	int 

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

2017-04-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 22 21:50:50 UTC 2017

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

Log Message:
If the "vqmmc-supply" regulator is present, use it to set signal voltage.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 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.18 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.19
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.18	Sat Apr 22 17:41:20 2017
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sat Apr 22 21:50:49 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.19 2017/04/22 21:50:49 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -31,7 +31,7 @@
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.19 2017/04/22 21:50:49 jmcneill Exp $");
 
 #include 
 #include 
@@ -54,6 +54,7 @@ static void	tegra_sdhc_attach(device_t, 
 
 static int	tegra_sdhc_card_detect(struct sdhc_softc *);
 static int	tegra_sdhc_write_protect(struct sdhc_softc *);
+static int	tegra_sdhc_signal_voltage(struct sdhc_softc *, int);
 
 struct tegra_sdhc_softc {
 	struct sdhc_softc	sc;
@@ -70,6 +71,8 @@ struct tegra_sdhc_softc {
 	struct fdtbus_gpio_pin	*sc_pin_cd;
 	struct fdtbus_gpio_pin	*sc_pin_power;
 	struct fdtbus_gpio_pin	*sc_pin_wp;
+
+	struct fdtbus_regulator	*sc_reg_vqmmc;
 };
 
 CFATTACH_DECL_NEW(tegra_sdhc, sizeof(struct tegra_sdhc_softc),
@@ -154,6 +157,12 @@ tegra_sdhc_attach(device_t parent, devic
 		sc->sc.sc_vendor_write_protect = tegra_sdhc_write_protect;
 	}
 
+	sc->sc_reg_vqmmc = fdtbus_regulator_acquire(faa->faa_phandle,
+	"vqmmc-supply");
+	if (sc->sc_reg_vqmmc) {
+		sc->sc.sc_vendor_signal_voltage = tegra_sdhc_signal_voltage;
+	}
+
 	sc->sc_clk = fdtbus_clock_get_index(faa->faa_phandle, 0);
 	if (sc->sc_clk == NULL) {
 		aprint_error(": couldn't get clock\n");
@@ -235,3 +244,30 @@ tegra_sdhc_write_protect(struct sdhc_sof
 
 	return fdtbus_gpio_read(sc->sc_pin_wp);
 }
+
+static int
+tegra_sdhc_signal_voltage(struct sdhc_softc *ssc, int signal_voltage)
+{
+	struct tegra_sdhc_softc *sc = device_private(ssc->sc_dev);
+	u_int uvol;
+	int error;
+
+	KASSERT(sc->sc_reg_vqmmc != NULL);
+
+	switch (signal_voltage) {
+	case SDMMC_SIGNAL_VOLTAGE_330:
+		uvol = 330;
+		break;
+	case SDMMC_SIGNAL_VOLTAGE_180:
+		uvol = 180;
+		break;
+	default:
+		return EINVAL;
+	}
+
+	error = fdtbus_regulator_set_voltage(sc->sc_reg_vqmmc, uvol, uvol);
+	if (error != 0)
+		return error;
+
+	return fdtbus_regulator_enable(sc->sc_reg_vqmmc);
+}



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

2017-04-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 22 19:20:51 UTC 2017

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

Log Message:
Explicitly initialize interrupt controllers and since we pass through to
GIC, don't include "LIC" in interrupt string.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/nvidia/tegra_lic.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_lic.c
diff -u src/sys/arch/arm/nvidia/tegra_lic.c:1.3 src/sys/arch/arm/nvidia/tegra_lic.c:1.4
--- src/sys/arch/arm/nvidia/tegra_lic.c:1.3	Tue Jan  5 21:53:48 2016
+++ src/sys/arch/arm/nvidia/tegra_lic.c	Sat Apr 22 19:20:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_lic.c,v 1.3 2016/01/05 21:53:48 marty Exp $ */
+/* $NetBSD: tegra_lic.c,v 1.4 2017/04/22 19:20:51 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_lic.c,v 1.3 2016/01/05 21:53:48 marty Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_lic.c,v 1.4 2017/04/22 19:20:51 jmcneill Exp $");
 
 #include 
 #include 
@@ -44,6 +44,9 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_lic.c,
 
 #include 
 
+#define	LIC_CPU_IER_CLR_REG	0x28
+#define	LIC_CPU_IEP_CLASS_REG	0x2c
+
 static int	tegra_lic_match(device_t, cfdata_t, void *);
 static void	tegra_lic_attach(device_t, device_t, void *);
 
@@ -80,7 +83,11 @@ tegra_lic_attach(device_t parent, device
 {
 	struct tegra_lic_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
-	int error;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	bus_addr_t addr;
+	bus_size_t size;
+	int error, index;
 
 	sc->sc_dev = self;
 	sc->sc_phandle = faa->faa_phandle;
@@ -94,6 +101,27 @@ tegra_lic_attach(device_t parent, device
 
 	aprint_naive("\n");
 	aprint_normal(": LIC\n");
+
+	bst = faa->faa_bst;
+	for (index = 0; ; index++) {
+		error = fdtbus_get_reg(faa->faa_phandle, index, , );
+		if (error != 0)
+			break;
+		error = bus_space_map(bst, addr, size, 0, );
+		if (error) {
+			aprint_error_dev(self, "can't map IC#%d: %d\n",
+			index, error);
+			continue;
+		}
+
+		/* Clear interrupt enable for CPU */
+		bus_space_write_4(bst, bsh, LIC_CPU_IER_CLR_REG, 0x);
+
+		/* Route to IRQ */
+		bus_space_write_4(bst, bsh, LIC_CPU_IEP_CLASS_REG, 0);
+
+		bus_space_unmap(bst, bsh, size);
+	}
 }
 
 static void *
@@ -133,7 +161,7 @@ tegra_lic_intrstr(device_t dev, u_int *s
 	const u_int intr = be32toh(specifier[1]);
 	const u_int irq = type == 0 ? IRQ_SPI(intr) : IRQ_PPI(intr);
 
-	snprintf(buf, buflen, "LIC irq %d", irq);
+	snprintf(buf, buflen, "irq %d", irq);
 
 	return true;
 }



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

2017-04-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 22 17:41:20 UTC 2017

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

Log Message:
Set parent clock rate to 100MHz when SDR104 is disabled


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 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.17 src/sys/arch/arm/nvidia/tegra_sdhc.c:1.18
--- src/sys/arch/arm/nvidia/tegra_sdhc.c:1.17	Sun Apr 16 13:27:19 2017
+++ src/sys/arch/arm/nvidia/tegra_sdhc.c	Sat Apr 22 17:41:20 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_sdhc.c,v 1.17 2017/04/16 13:27:19 jmcneill Exp $ */
+/* $NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -26,10 +26,12 @@
  * SUCH DAMAGE.
  */
 
+#define	TEGRA_SDHC_NO_SDR104
+
 #include "locators.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.17 2017/04/16 13:27:19 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_sdhc.c,v 1.18 2017/04/22 17:41:20 jmcneill Exp $");
 
 #include 
 #include 
@@ -124,6 +126,7 @@ tegra_sdhc_attach(device_t parent, devic
 	}
 	sc->sc_bsz = size;
 
+#ifdef TEGRA_SDHC_NO_SDR104
 	/* XXX SDR104 requires a custom tuning method on Tegra K1 */
 	sc->sc.sc_flags |= SDHC_FLAG_HOSTCAPS;
 	sc->sc.sc_caps = bus_space_read_4(sc->sc_bst, sc->sc_bsh,
@@ -131,6 +134,7 @@ tegra_sdhc_attach(device_t parent, devic
 	sc->sc.sc_caps2 = bus_space_read_4(sc->sc_bst, sc->sc_bsh,
 	SDHC_CAPABILITIES2);
 	sc->sc.sc_caps2 &= ~SDHC_SDR104_SUPP;
+#endif
 
 	sc->sc_pin_power = fdtbus_gpio_acquire(faa->faa_phandle,
 	"power-gpios", GPIO_PIN_OUTPUT);
@@ -162,7 +166,11 @@ tegra_sdhc_attach(device_t parent, devic
 	}
 
 	fdtbus_reset_assert(sc->sc_rst);
+#ifdef TEGRA_SDHC_NO_SDR104
+	error = clk_set_rate(sc->sc_clk, 1);
+#else
 	error = clk_set_rate(sc->sc_clk, 20400);
+#endif
 	if (error) {
 		aprint_error(": couldn't set frequency: %d\n", error);
 		return;
@@ -177,7 +185,7 @@ tegra_sdhc_attach(device_t parent, devic
 	sc->sc.sc_clkbase = clk_get_rate(sc->sc_clk) / 1000;
 
 	aprint_naive("\n");
-	aprint_normal(": SDMMC\n");
+	aprint_normal(": SDMMC (%u kHz)\n", sc->sc.sc_clkbase);
 
 	if (sc->sc.sc_clkbase == 0) {
 		aprint_error_dev(self, "couldn't determine frequency\n");



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

2017-04-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 22 17:40:47 UTC 2017

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

Log Message:
Fix fractional divider calculations and round down for sdmmc clocks.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/nvidia/tegra124_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/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.10 src/sys/arch/arm/nvidia/tegra124_car.c:1.11
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.10	Sun Apr 16 12:28:21 2017
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Sat Apr 22 17:40:47 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.10 2017/04/16 12:28:21 jmcneill Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.11 2017/04/22 17:40:47 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.10 2017/04/16 12:28:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.11 2017/04/22 17:40:47 jmcneill Exp $");
 
 #include 
 #include 
@@ -1204,6 +1204,16 @@ tegra124_car_clock_get_rate_fixed_div(st
 }
 
 static u_int
+tegra124_car_clock_calc_rate_frac_div(u_int rate, u_int raw_div)
+{
+	raw_div += 2;
+	rate *= 2;
+	rate += raw_div - 1;
+	rate /= raw_div;
+	return rate;
+}
+
+static u_int
 tegra124_car_clock_get_rate_div(struct tegra124_car_softc *sc,
 struct tegra_clk *tclk)
 {
@@ -1235,13 +1245,15 @@ tegra124_car_clock_get_rate_div(struct t
 	case CAR_CLKSRC_UARTC_REG:
 	case CAR_CLKSRC_UARTD_REG:
 		if (v & CAR_CLKSRC_UART_DIV_ENB) {
-			rate = parent_rate * 2 / (raw_div + 2);
+			rate = tegra124_car_clock_calc_rate_frac_div(
+			parent_rate, raw_div);
 		} else {
 			rate = parent_rate;
 		}
 		break;
 	default:
-		rate = parent_rate * 2 / (raw_div + 2);
+		rate = tegra124_car_clock_calc_rate_frac_div(parent_rate,
+		raw_div);
 		break;
 	}
 
@@ -1301,6 +1313,22 @@ tegra124_car_clock_set_rate_div(struct t
 		if (rate)
 			raw_div = parent_rate / rate - 1;
 		break;
+	case CAR_CLKSRC_SDMMC1_REG:
+	case CAR_CLKSRC_SDMMC2_REG:
+	case CAR_CLKSRC_SDMMC3_REG:
+	case CAR_CLKSRC_SDMMC4_REG:
+		if (rate) {
+			for (raw_div = 0x00; raw_div <= 0xff; raw_div++) {
+u_int calc_rate =
+tegra124_car_clock_calc_rate_frac_div(
+	parent_rate, raw_div);
+if (calc_rate <= rate)
+	break;
+			}
+			if (raw_div == 0x100)
+return EINVAL;
+		}
+		break;
 	default:
 		if (rate)
 			raw_div = (parent_rate * 2) / rate - 2;



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

2017-04-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Apr 22 13:24:45 UTC 2017

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

Log Message:
Use fdtbus_todr_attach


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/nvidia/tegra_rtc.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_rtc.c
diff -u src/sys/arch/arm/nvidia/tegra_rtc.c:1.2 src/sys/arch/arm/nvidia/tegra_rtc.c:1.3
--- src/sys/arch/arm/nvidia/tegra_rtc.c:1.2	Sun Dec 13 17:39:19 2015
+++ src/sys/arch/arm/nvidia/tegra_rtc.c	Sat Apr 22 13:24:45 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_rtc.c,v 1.2 2015/12/13 17:39:19 jmcneill Exp $ */
+/* $NetBSD: tegra_rtc.c,v 1.3 2017/04/22 13:24:45 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: tegra_rtc.c,v 1.2 2015/12/13 17:39:19 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_rtc.c,v 1.3 2017/04/22 13:24:45 jmcneill Exp $");
 
 #include 
 #include 
@@ -104,7 +104,7 @@ tegra_rtc_attach(device_t parent, device
 	sc->sc_todr.todr_gettime = tegra_rtc_gettime;
 	sc->sc_todr.todr_settime = tegra_rtc_settime;
 	sc->sc_todr.cookie = sc;
-	todr_attach(>sc_todr);
+	fdtbus_todr_attach(self, faa->faa_phandle, >sc_todr);
 }
 
 static int



  1   2   3   >