CVS commit: src/sys/arch/arm/nvidia
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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