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

2021-08-08 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  8 18:55:12 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_com_acpi.c

Log Message:
Adjust register base and size


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_com_acpi.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/broadcom/bcm2835_com_acpi.c
diff -u src/sys/arch/arm/broadcom/bcm2835_com_acpi.c:1.1 src/sys/arch/arm/broadcom/bcm2835_com_acpi.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_com_acpi.c:1.1	Sun Aug  8 18:43:21 2021
+++ src/sys/arch/arm/broadcom/bcm2835_com_acpi.c	Sun Aug  8 18:55:12 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_com_acpi.c,v 1.1 2021/08/08 18:43:21 jmcneill Exp $ */
+/* $NetBSD: bcm2835_com_acpi.c,v 1.2 2021/08/08 18:55:12 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2021 Jared McNeill 
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_com_acpi.c,v 1.1 2021/08/08 18:43:21 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_com_acpi.c,v 1.2 2021/08/08 18:55:12 jmcneill Exp $");
 
 #include 
 #include 
@@ -100,8 +100,8 @@ bcmcom_acpi_attach(device_t parent, devi
 	}
 
 	iot = aa->aa_memt;
-	base = mem->ar_base;
-	size = mem->ar_length;
+	base = mem->ar_base + 0x40;
+	size = mem->ar_length - 0x40;
 
 	irq = acpi_res_irq(, 0);
 	if (irq == NULL) {



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

2021-08-08 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  8 18:43:21 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: files.bcm2835
Added Files:
src/sys/arch/arm/broadcom: bcm2835_com_acpi.c

Log Message:
broadcom: ACPI: Add support for mini UART in ACPI mode.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2835_com_acpi.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.41 src/sys/arch/arm/broadcom/files.bcm2835:1.42
--- src/sys/arch/arm/broadcom/files.bcm2835:1.41	Sun Aug  8 10:32:26 2021
+++ src/sys/arch/arm/broadcom/files.bcm2835	Sun Aug  8 18:43:21 2021
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.41 2021/08/08 10:32:26 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.42 2021/08/08 18:43:21 jmcneill Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -60,6 +60,11 @@ file	arch/arm/broadcom/bcm2835_aux.c		bc
 attach	com at fdt with bcmcom
 file	arch/arm/broadcom/bcm2835_com.c		bcmcom
 
+ifdef acpinodebus
+attach	com at acpinodebus with bcmcom_acpi
+file	arch/arm/broadcom/bcm2835_com_acpi.c	bcmcom_acpi
+endif
+
 # External Mass Media Controller (BCM2835_EMMC_BASE)
 attach	sdhc at fdt with bcmemmc
 file	arch/arm/broadcom/bcm2835_emmc.c	bcmemmc

Added files:

Index: src/sys/arch/arm/broadcom/bcm2835_com_acpi.c
diff -u /dev/null src/sys/arch/arm/broadcom/bcm2835_com_acpi.c:1.1
--- /dev/null	Sun Aug  8 18:43:21 2021
+++ src/sys/arch/arm/broadcom/bcm2835_com_acpi.c	Sun Aug  8 18:43:21 2021
@@ -0,0 +1,168 @@
+/* $NetBSD: bcm2835_com_acpi.c,v 1.1 2021/08/08 18:43:21 jmcneill Exp $ */
+
+/*
+ * Copyright (c) 2021 Jared 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. The name of the author may not be used to endorse or promote products
+ *derived from this software without specific prior written permission.
+ *
+ * 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: bcm2835_com_acpi.c,v 1.1 2021/08/08 18:43:21 jmcneill Exp $");
+
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+#include 
+
+#include 
+#include 
+#include 
+
+static int	bcmcom_acpi_match(device_t, cfdata_t , void *);
+static void	bcmcom_acpi_attach(device_t, device_t, void *);
+
+static u_int	bcmcom_acpi_get_clockrate(device_t);
+
+struct vcmbox_clockrate_request {
+	struct vcprop_buffer_hdr	vb_hdr;
+	struct vcprop_tag_clockrate	vbt_clockrate;
+	struct vcprop_tag end;
+} __packed;
+
+CFATTACH_DECL_NEW(bcmcom_acpi, sizeof(struct com_softc), bcmcom_acpi_match,
+bcmcom_acpi_attach, NULL, NULL);
+
+static const struct device_compatible_entry compat_data[] = {
+	{ .compat = "BCM2836",		.value = COM_TYPE_BCMAUXUART },
+	DEVICE_COMPAT_EOL
+};
+
+static int
+bcmcom_acpi_match(device_t parent, cfdata_t match, void *aux)
+{
+	struct acpi_attach_args *aa = aux;
+
+	return acpi_compatible_match(aa, compat_data);
+}
+
+static void
+bcmcom_acpi_attach(device_t parent, device_t self, void *aux)
+{
+	struct com_softc *sc = device_private(self);
+	struct acpi_attach_args *aa = aux;
+	const struct device_compatible_entry *dce;
+	struct acpi_resources res;
+	struct acpi_mem *mem;
+	struct acpi_irq *irq;
+	bus_space_tag_t iot;
+	bus_space_handle_t ioh;
+	bus_addr_t base;
+	bus_size_t size;
+	ACPI_STATUS rv;
+	void *ih;
+
+	sc->sc_dev = self;
+
+	rv = acpi_resource_parse(sc->sc_dev, aa->aa_node->ad_handle, "_CRS",
+	, _resource_parse_ops_default);
+	if (ACPI_FAILURE(rv)) {
+		return;
+	}
+
+	mem = acpi_res_mem(, 0);
+	if (mem == NULL) {
+		aprint_error_dev(self, "couldn't find mem resource\n");
+		goto cleanup;
+	}
+
+	iot = aa->aa_memt;
+	base = mem->ar_base;
+	size = mem->ar_length;
+
+	irq = acpi_res_irq(, 0);
+	if (irq == NULL) {
+		aprint_error_dev(self, "couldn't find irq resource\n");
+	

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

2021-08-08 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  8 10:59:27 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2838_emmc2_acpi.c

Log Message:
disable DMA for now...


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.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/broadcom/bcm2838_emmc2_acpi.c
diff -u src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c:1.1 src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c:1.2
--- src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c:1.1	Sun Aug  8 10:32:26 2021
+++ src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c	Sun Aug  8 10:59:27 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2838_emmc2_acpi.c,v 1.1 2021/08/08 10:32:26 jmcneill Exp $	*/
+/*	$NetBSD: bcm2838_emmc2_acpi.c,v 1.2 2021/08/08 10:59:27 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2021 Jared McNeill 
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2838_emmc2_acpi.c,v 1.1 2021/08/08 10:32:26 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2838_emmc2_acpi.c,v 1.2 2021/08/08 10:59:27 jmcneill Exp $");
 
 #include 
 #include 
@@ -119,8 +119,10 @@ bcmemmc2_acpi_attach(device_t parent, de
 	 * disable UHS modes.
 	 */
 	sc->sc.sc_flags = SDHC_FLAG_32BIT_ACCESS |
+#if notyet
 			  SDHC_FLAG_USE_DMA |
 			  SDHC_FLAG_USE_ADMA2 |
+#endif
 			  SDHC_FLAG_NO_1_8_V;
 
 	sc->sc_ih = acpi_intr_establish(self,



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

2021-08-08 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  8 10:32:27 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: files.bcm2835
Added Files:
src/sys/arch/arm/broadcom: bcm2838_emmc2_acpi.c

Log Message:
bcm2838: Add ACPI support for the EMMC2 SDHCI controller.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.40 src/sys/arch/arm/broadcom/files.bcm2835:1.41
--- src/sys/arch/arm/broadcom/files.bcm2835:1.40	Wed Mar 10 11:03:48 2021
+++ src/sys/arch/arm/broadcom/files.bcm2835	Sun Aug  8 10:32:26 2021
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.40 2021/03/10 11:03:48 mlelstv Exp $
+#	$NetBSD: files.bcm2835,v 1.41 2021/08/08 10:32:26 jmcneill Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -67,6 +67,8 @@ file	arch/arm/broadcom/bcm2835_emmc.c	bc
 ifdef acpinodebus
 attach	sdhc at acpinodebus with bcmemmc_acpi
 file	arch/arm/broadcom/bcm2835_emmc_acpi.c	bcmemmc_acpi
+attach	sdhc at acpinodebus with bcmemmc2_acpi
+file	arch/arm/broadcom/bcm2838_emmc2_acpi.c	bcmemmc2_acpi
 endif
 
 # SD Host Controller (BCM2835_SDHOST_BASE)

Added files:

Index: src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c
diff -u /dev/null src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c:1.1
--- /dev/null	Sun Aug  8 10:32:27 2021
+++ src/sys/arch/arm/broadcom/bcm2838_emmc2_acpi.c	Sun Aug  8 10:32:26 2021
@@ -0,0 +1,164 @@
+/*	$NetBSD: bcm2838_emmc2_acpi.c,v 1.1 2021/08/08 10:32:26 jmcneill Exp $	*/
+
+/*
+ * Copyright (c) 2021 Jared 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. The name of the author may not be used to endorse or promote products
+ *derived from this software without specific prior written permission.
+ *
+ * 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: bcm2838_emmc2_acpi.c,v 1.1 2021/08/08 10:32:26 jmcneill Exp $");
+
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#define _COMPONENT	ACPI_RESOURCE_COMPONENT
+ACPI_MODULE_NAME	("bcmemmc2_acpi")
+
+static int	bcmemmc2_acpi_match(device_t, cfdata_t, void *);
+static void	bcmemmc2_acpi_attach(device_t, device_t, void *);
+static void	bcmemmc2_acpi_attach1(device_t);
+
+static const char * const compatible[] = {
+	"BRCME88C",
+	NULL
+};
+
+struct bcmemmc2_acpi_softc {
+	struct sdhc_softc sc;
+	bus_space_tag_t sc_memt;
+	bus_space_handle_t sc_memh;
+	bus_size_t sc_memsize;
+	void *sc_ih;
+	struct sdhc_host *sc_hosts[1];
+};
+
+CFATTACH_DECL_NEW(bcmemmc2_acpi, sizeof(struct bcmemmc2_acpi_softc),
+bcmemmc2_acpi_match, bcmemmc2_acpi_attach, NULL, NULL);
+
+static int
+bcmemmc2_acpi_match(device_t parent, cfdata_t match, void *opaque)
+{
+	struct acpi_attach_args *aa = opaque;
+
+	if (aa->aa_node->ad_type != ACPI_TYPE_DEVICE)
+		return 0;
+
+	return acpi_match_hid(aa->aa_node->ad_devinfo, compatible);
+}
+
+static void
+bcmemmc2_acpi_attach(device_t parent, device_t self, void *opaque)
+{
+	struct bcmemmc2_acpi_softc *sc = device_private(self);
+	struct acpi_attach_args *aa = opaque;
+	struct acpi_resources res;
+	struct acpi_mem *mem;
+	struct acpi_irq *irq;
+	ACPI_STATUS rv;
+
+	sc->sc.sc_dev = self;
+	sc->sc.sc_dmat = aa->aa_dmat;
+	sc->sc.sc_host = sc->sc_hosts;
+	sc->sc_memt = aa->aa_memt;
+
+	rv = acpi_resource_parse(self, aa->aa_node->ad_handle, "_CRS",
+	, _resource_parse_ops_default);
+	if (ACPI_FAILURE(rv))
+		return;
+
+	mem = acpi_res_mem(, 0);
+	irq = acpi_res_irq(, 0);
+	if (mem == NULL || irq == NULL) {
+		aprint_error_dev(self, "incomplete resources\n");
+		goto cleanup;
+	}
+	if (mem->ar_length == 0) {
+		aprint_error_dev(self, "zero length memory resource\n");
+		goto 

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

2021-05-03 Thread Tobias Nygren
Module Name:src
Committed By:   tnn
Date:   Mon May  3 18:56:38 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2838_pcie.c

Log Message:
bcm2838_pcie: match brcm,bcm2711-pcie


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/broadcom/bcm2838_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/broadcom/bcm2838_pcie.c
diff -u src/sys/arch/arm/broadcom/bcm2838_pcie.c:1.2 src/sys/arch/arm/broadcom/bcm2838_pcie.c:1.3
--- src/sys/arch/arm/broadcom/bcm2838_pcie.c:1.2	Sat Apr 24 23:36:26 2021
+++ src/sys/arch/arm/broadcom/bcm2838_pcie.c	Mon May  3 18:56:38 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2838_pcie.c,v 1.2 2021/04/24 23:36:26 thorpej Exp $ */
+/*	$NetBSD: bcm2838_pcie.c,v 1.3 2021/05/03 18:56:38 tnn Exp $ */
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2838_pcie.c,v 1.2 2021/04/24 23:36:26 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2838_pcie.c,v 1.3 2021/05/03 18:56:38 tnn Exp $");
 
 #include 
 #include 
@@ -156,6 +156,7 @@ stb_setbits(struct bcmstb_softc *sc, int
 
 static const struct device_compatible_entry compat_data[] = {
 	{ .compat = "brcm,pci-plat-dev" },
+	{ .compat = "brcm,bcm2711-pcie" },
 	DEVICE_COMPAT_EOL
 };
 



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

2021-03-10 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Wed Mar 10 11:03:49 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: files.bcm2835

Log Message:
Add PCIe driver to build.

You still need:

bcm2838pcie* at fdt?# STB PCIe host controller

in kernel config, and DTB entries like:

pci@7d50 {
compatible = "brcm,bcm2711-pcie\0brcm,pci-plat-dev";
device_type = "pci";
#address-cells = <0x03>;
#size-cells = <0x02>;
bus-range = <0x00 0x01>;
reg = <0x00 0x7d50 0x8>;
ranges = <0x200 0x00 0xf800 0x06 0x00 0x00 0x400>;
#interrupt-cells = <0x01>;
interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x8f 0x04>;
interrupt-map-mask = <0x00 0x00 0x00 0x07>;
linux,pci-domain = <0x00>;
phandle = <0x90>;
};

and
pcie0 = "/scb/pci@7d50";

in __symbols__


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.39 src/sys/arch/arm/broadcom/files.bcm2835:1.40
--- src/sys/arch/arm/broadcom/files.bcm2835:1.39	Tue Mar 31 12:23:17 2020
+++ src/sys/arch/arm/broadcom/files.bcm2835	Wed Mar 10 11:03:48 2021
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.39 2020/03/31 12:23:17 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.40 2021/03/10 11:03:48 mlelstv Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -46,6 +46,11 @@ attach bcm2838rng at fdt with bcm2838rng
 file	arch/arm/broadcom/bcm2838_rng.c		bcm2838rng
 file	dev/ic/rng200.cbcm2838rng
 
+# Broadcom STB PCIE host
+device	bcm2838pcie: pcibus
+attach bcm2838pcie at fdt with bcm2838pcie_fdt
+file	arch/arm/broadcom/bcm2838_pcie.c	bcm2838pcie
+
 # AUX
 device	bcmaux
 attach	bcmaux at fdt with bcmaux_fdt



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

2021-03-08 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Mon Mar  8 14:27:46 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h

Log Message:
Add comments for 2711 local peripherals


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.31 src/sys/arch/arm/broadcom/bcm2835reg.h:1.32
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.31	Mon Mar  8 14:22:42 2021
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Mon Mar  8 14:27:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.31 2021/03/08 14:22:42 mlelstv Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.32 2021/03/08 14:27:45 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -179,18 +179,18 @@
 #define	BCM2836_ARM_LOCAL_BASE		0x4000
 #define	BCM2836_ARM_LOCAL_SIZE		0x1000	/* 4KBytes */
 
-#define	BCM2836_LOCAL_CONTROL		0x000
+#define	BCM2836_LOCAL_CONTROL		0x000	/* ARM_CONTROL */
 #define	BCM2836_LOCAL_PRESCALER		0x008
-#define	BCM2836_LOCAL_GPU_INT_ROUTING	0x00c
-#define	BCM2836_LOCAL_PM_ROUTING_SET	0x010
-#define	BCM2836_LOCAL_PM_ROUTING_CLR	0x014
+#define	BCM2836_LOCAL_GPU_INT_ROUTING	0x00c	/* CORE_IRQ_CONTROL */
+#define	BCM2836_LOCAL_PM_ROUTING_SET	0x010	/* PMU_CONTROL_SET */
+#define	BCM2836_LOCAL_PM_ROUTING_CLR	0x014	/* PMU_CONTROL_CLR */
 #define	BCM2836_LOCAL_TIMER_LS		0x01c
 #define	BCM2836_LOCAL_TIMER_MS		0x020
-#define	BCM2836_LOCAL_INT_ROUTING	0x024
+#define	BCM2836_LOCAL_INT_ROUTING	0x024	/* PERI_IRQ_ROUTE0 */
 #define	BCM2836_LOCAL_AXI_COUNT		0x02c
-#define	BCM2836_LOCAL_AXI_IRQ		0x030
+#define	BCM2836_LOCAL_AXI_IRQ		0x030	/* AXI_QUIET_TIME */
 #define	BCM2836_LOCAL_TIMER_CONTROL	0x034
-#define	BCM2836_LOCAL_TIMER_WRITE	0x038
+#define	BCM2836_LOCAL_TIMER_WRITE	0x038	/* LOCAL_TIMER_IRQ */
 
 
 #define	BCM2836_LOCAL_TIMER_IRQ_CONTROL_BASE	0x40



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

2021-03-08 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Mon Mar  8 14:22:42 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c bcm2835reg.h

Log Message:
Move interrupt register definitions to driver.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/arm/broadcom/bcm2835_intr.c
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.37 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.38
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.37	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Mon Mar  8 14:22:42 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.37 2021/01/27 03:10:19 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.38 2021/03/08 14:22:42 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.37 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.38 2021/03/08 14:22:42 mlelstv Exp $");
 
 #define _INTR_PRIVATE
 
@@ -104,6 +104,49 @@ static int bcm2836mp_int_base[BCM2836_NC
 #define	BCM2835_INT_BASE		bcm2835_int_base
 #define	BCM2836_INT_BASECPUN(n)		bcm2836mp_int_base[(n)]
 
+#define BCM2836_INT_CNTPSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPSIRQ)
+#define BCM2836_INT_CNTPNSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPNSIRQ)
+#define BCM2836_INT_CNTVIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTVIRQ)
+#define BCM2836_INT_CNTHPIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTHPIRQ)
+#define BCM2836_INT_MAILBOX0_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_MAILBOX0)
+
+/* Periperal Interrupt sources */
+#define	BCM2835_NIRQ			96
+
+#define BCM2835_INT_GPU0BASE		(BCM2835_INT_BASE + 0)
+#define BCM2835_INT_TIMER0		(BCM2835_INT_GPU0BASE + 0)
+#define BCM2835_INT_TIMER1		(BCM2835_INT_GPU0BASE + 1)
+#define BCM2835_INT_TIMER2		(BCM2835_INT_GPU0BASE + 2)
+#define BCM2835_INT_TIMER3		(BCM2835_INT_GPU0BASE + 3)
+#define BCM2835_INT_USB			(BCM2835_INT_GPU0BASE + 9)
+#define BCM2835_INT_DMA0		(BCM2835_INT_GPU0BASE + 16)
+#define BCM2835_INT_DMA2		(BCM2835_INT_GPU0BASE + 18)
+#define BCM2835_INT_DMA3		(BCM2835_INT_GPU0BASE + 19)
+#define BCM2835_INT_AUX			(BCM2835_INT_GPU0BASE + 29)
+#define BCM2835_INT_ARM			(BCM2835_INT_GPU0BASE + 30)
+
+#define BCM2835_INT_GPU1BASE		(BCM2835_INT_BASE + 32)
+#define BCM2835_INT_GPIO0		(BCM2835_INT_GPU1BASE + 17)
+#define BCM2835_INT_GPIO1		(BCM2835_INT_GPU1BASE + 18)
+#define BCM2835_INT_GPIO2		(BCM2835_INT_GPU1BASE + 19)
+#define BCM2835_INT_GPIO3		(BCM2835_INT_GPU1BASE + 20)
+#define BCM2835_INT_BSC			(BCM2835_INT_GPU1BASE + 21)
+#define BCM2835_INT_SPI0		(BCM2835_INT_GPU1BASE + 22)
+#define BCM2835_INT_PCM			(BCM2835_INT_GPU1BASE + 23)
+#define BCM2835_INT_SDHOST		(BCM2835_INT_GPU1BASE + 24)
+#define BCM2835_INT_UART0		(BCM2835_INT_GPU1BASE + 25)
+#define BCM2835_INT_EMMC		(BCM2835_INT_GPU1BASE + 30)
+
+#define BCM2835_INT_BASICBASE		(BCM2835_INT_BASE + 64)
+#define BCM2835_INT_ARMTIMER		(BCM2835_INT_BASICBASE + 0)
+#define BCM2835_INT_ARMMAILBOX		(BCM2835_INT_BASICBASE + 1)
+#define BCM2835_INT_ARMDOORBELL0	(BCM2835_INT_BASICBASE + 2)
+#define BCM2835_INT_ARMDOORBELL1	(BCM2835_INT_BASICBASE + 3)
+#define BCM2835_INT_GPU0HALTED		(BCM2835_INT_BASICBASE + 4)
+#define BCM2835_INT_GPU1HALTED		(BCM2835_INT_BASICBASE + 5)
+#define BCM2835_INT_ILLEGALTYPE0	(BCM2835_INT_BASICBASE + 6)
+#define BCM2835_INT_ILLEGALTYPE1	(BCM2835_INT_BASICBASE + 7)
+
 static void
 bcm2835_set_priority(struct pic_softc *pic, int ipl)
 {

Index: src/sys/arch/arm/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.30 src/sys/arch/arm/broadcom/bcm2835reg.h:1.31
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.30	Sat Feb 22 00:17:54 2020
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Mon Mar  8 14:22:42 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.30 2020/02/22 00:17:54 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.31 2021/03/08 14:22:42 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -165,50 +165,6 @@
 #define	BCM2836_INT_TIMER		11
 #define	BCM2836_INT_NLOCAL		12
 
-#define	BCM2836_INT_CNTPSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPSIRQ)
-#define	BCM2836_INT_CNTPNSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPNSIRQ)
-#define	BCM2836_INT_CNTVIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTVIRQ)
-#define	BCM2836_INT_CNTHPIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTHPIRQ)
-#define	BCM2836_INT_MAILBOX0_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_MAILBOX0)
-
-/* Periperal Interrupt sources */
-#define	BCM2835_NIRQ			96
-
-#define	BCM2835_INT_GPU0BASE		(BCM2835_INT_BASE + 0)
-#define	BCM2835_INT_TIMER0		(BCM2835_INT_GPU0BASE + 0)

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

2021-03-08 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Mon Mar  8 13:59:29 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpioreg.h

Log Message:
Undocumented register to multiplex emmc2 pins to legacy sdhc


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/broadcom/bcm2835_gpioreg.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/broadcom/bcm2835_gpioreg.h
diff -u src/sys/arch/arm/broadcom/bcm2835_gpioreg.h:1.5 src/sys/arch/arm/broadcom/bcm2835_gpioreg.h:1.6
--- src/sys/arch/arm/broadcom/bcm2835_gpioreg.h:1.5	Sat Sep 28 07:24:52 2019
+++ src/sys/arch/arm/broadcom/bcm2835_gpioreg.h	Mon Mar  8 13:59:29 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpioreg.h,v 1.5 2019/09/28 07:24:52 mlelstv Exp $	*/
+/*	$NetBSD: bcm2835_gpioreg.h,v 1.6 2021/03/08 13:59:29 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 2013 Jonathan A. Kollasch
@@ -73,4 +73,8 @@
 #define BCM2835_GPIO_ALT2	6
 #define BCM2835_GPIO_ALT3	7
 
+/* Undocumented register to multiplex emmc2 pins to legacy sdhc */
+#define BCM2838_GPIO_MUX		0x0d0
+#define  BCM2838_GPIO_MUX_LEGACY	0x2
+
 #endif /* _BROADCOM_BCM2835_GPIOREG_H_ */



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

2021-03-08 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Mon Mar  8 13:49:02 UTC 2021

Added Files:
src/sys/arch/arm/broadcom: bcm2838_pcie.c bcm2838_pcie.h

Log Message:
RPI4 PCIe driver, based on pcihost_fdt.c


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2838_pcie.c \
src/sys/arch/arm/broadcom/bcm2838_pcie.h

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

Added files:

Index: src/sys/arch/arm/broadcom/bcm2838_pcie.c
diff -u /dev/null src/sys/arch/arm/broadcom/bcm2838_pcie.c:1.1
--- /dev/null	Mon Mar  8 13:49:02 2021
+++ src/sys/arch/arm/broadcom/bcm2838_pcie.c	Mon Mar  8 13:49:01 2021
@@ -0,0 +1,872 @@
+/*	$NetBSD: bcm2838_pcie.c,v 1.1 2021/03/08 13:49:01 mlelstv Exp $ */
+
+/*-
+ * Copyright (c) 2020 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Michael van Elst
+ *
+ * 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 FOUNDATION OR CONTRIBUTORS
+ * 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: bcm2838_pcie.c,v 1.1 2021/03/08 13:49:01 mlelstv Exp $");
+
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+
+#include 
+#include 
+
+#include 
+#include 
+
+#define PHYS_HI_RELO		__BIT(31)
+#define PHYS_HI_PREFETCH	__BIT(30)
+#define PHYS_HI_ALIASED		__BIT(29)
+#define PHYS_HI_SPACE		__BITS(25,24)
+#define  PHYS_HI_SPACE_CFG	0
+#define  PHYS_HI_SPACE_IO	1
+#define  PHYS_HI_SPACE_MEM32	2
+#define  PHYS_HI_SPACE_MEM64	3
+
+#define CFG_OFFSET(b,d,f,r) ((b) << 16 | (d) << 1 | (f) << 8 | (r))
+
+struct bcmstb_busspace {
+	struct bus_space	bst;
+	int			(*map)(void *, bus_addr_t, bus_size_t,
+int, bus_space_handle_t *);
+	int			flags;
+	struct {
+		bus_addr_t	bpci;
+		bus_addr_t	bbus;
+		bus_size_t	size;
+	}			ranges[4];
+	size_t			nranges;
+};
+
+struct bcmstb_softc {
+bus_space_tag_t sc_bst;
+bus_space_handle_t  sc_bsh;
+	bus_dma_tag_t		sc_dmat;
+
+kmutex_tsc_lock;
+const char  *sc_name;
+
+	int			sc_phandle;
+
+	uint32_t		sc_bus_min;
+	uint32_t		sc_bus_max;
+
+	struct arm32_pci_chipset	sc_pc;
+
+	struct bcmstb_busspace	sc_io;
+	struct bcmstb_busspace	sc_mem;
+
+	int			sc_pci_flags;
+};
+
+static void	bcmstb_attach(device_t, struct bcmstb_softc *);
+static int	bcmstb_config(struct bcmstb_softc *);
+static int	bcmstb_setup(struct bcmstb_softc *);
+static void	bcmstb_attach_hook(device_t, device_t, struct pcibus_attach_args *);
+static int	bcmstb_bus_maxdevs(void *, int);
+static pcitag_t bcmstb_make_tag(void *, int, int, int);
+static void	bcmstb_decompose_tag(void *, pcitag_t, int *, int *, int *);
+static u_int	bcmstb_get_segment(void *);
+static pcireg_t bcmstb_conf_read(void *, pcitag_t, int);
+static void	bcmstb_conf_write(void *, pcitag_t, int, pcireg_t);
+static int	bcmstb_conf_hook(void *, int, int, int, pcireg_t);
+static void	bcmstb_conf_interrupt(void *, int, int, int, int, int *);
+
+static int			bcmstb_intr_map(const struct pci_attach_args *, pci_intr_handle_t *);
+static const char		*bcmstb_intr_string(void *, pci_intr_handle_t, char *, size_t);
+static const struct evcnt	*bcmstb_intr_evcnt(void *, pci_intr_handle_t);
+static int			bcmstb_intr_setattr(void *, pci_intr_handle_t *, int, uint64_t);
+static void			*bcmstb_intr_establish(void *, pci_intr_handle_t, int,
+int (*)(void *), void *, const char *);
+static void			bcmstb_intr_disestablish(void *, void *);
+static int			bcmstb_bus_space_map(void *, bus_addr_t,
+bus_size_t, int, bus_space_handle_t *);
+
+struct bcm2838pcie_softc {
+	device_t		sc_dev;
+	struct bcmstb_softc	sc_bcmstb;
+};
+
+static int 

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

2021-01-29 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Jan 29 14:11:14 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc_fdt.c bcm2835_com.c
bcm2835_dmac.c bcm2835_dwctwo.c bcm2835_emmc.c bcm2835_gpio.c
bcm2835_mbox_fdt.c bcm2835_sdhost.c bcm2835_spi.c bcm2835_tmr.c

Log Message:
fdtbus_intr_establish -> fdtbus_intr_establish_xname


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/broadcom/bcm2835_com.c \
src/sys/arch/arm/broadcom/bcm2835_sdhost.c
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/broadcom/bcm2835_dmac.c \
src/sys/arch/arm/broadcom/bcm2835_gpio.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm2835_dwctwo.c
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/arm/broadcom/bcm2835_emmc.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/broadcom/bcm2835_mbox_fdt.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/broadcom/bcm2835_spi.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm2835_tmr.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/broadcom/bcm2835_bsc_fdt.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.5 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.6
--- src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.5	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c	Fri Jan 29 14:11:14 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.5 2021/01/27 03:10:19 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.6 2021/01/29 14:11:14 skrll Exp $	*/
 
 /*
  * Copyright (c) 2019 Jason R. Thorpe
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.5 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.6 2021/01/29 14:11:14 skrll Exp $");
 
 #include 
 #include 
@@ -118,8 +118,8 @@ bsciic_fdt_attach(device_t parent, devic
 		aprint_error_dev(sc->sc_dev, "failed to decode interrupt\n");
 		return;
 	}
-	sc->sc_inth = fdtbus_intr_establish(phandle, 0, IPL_VM,
-	FDT_INTR_MPSAFE, bsciic_intr, sc);
+	sc->sc_inth = fdtbus_intr_establish_xname(phandle, 0, IPL_VM,
+	FDT_INTR_MPSAFE, bsciic_intr, sc, device_xname(sc->sc_dev));
 	if (sc->sc_inth == NULL) {
 		aprint_error_dev(sc->sc_dev,
 		"failed to establish interrupt %s\n", intrstr);

Index: src/sys/arch/arm/broadcom/bcm2835_com.c
diff -u src/sys/arch/arm/broadcom/bcm2835_com.c:1.7 src/sys/arch/arm/broadcom/bcm2835_com.c:1.8
--- src/sys/arch/arm/broadcom/bcm2835_com.c:1.7	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/broadcom/bcm2835_com.c	Fri Jan 29 14:11:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_com.c,v 1.7 2021/01/27 03:10:19 thorpej Exp $ */
+/* $NetBSD: bcm2835_com.c,v 1.8 2021/01/29 14:11:14 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.7 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.8 2021/01/29 14:11:14 skrll Exp $");
 
 #include 
 #include 
@@ -116,8 +116,8 @@ bcm_com_attach(device_t parent, device_t
 		return;
 	}
 
-	ih = fdtbus_intr_establish(phandle, 0, IPL_SERIAL, FDT_INTR_MPSAFE,
-	comintr, sc);
+	ih = fdtbus_intr_establish_xname(phandle, 0, IPL_SERIAL, FDT_INTR_MPSAFE,
+	comintr, sc, device_xname(sc->sc_dev));
 	if (ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt %s\n",
 		intrstr);
Index: src/sys/arch/arm/broadcom/bcm2835_sdhost.c
diff -u src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.7 src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.8
--- src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.7	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/broadcom/bcm2835_sdhost.c	Fri Jan 29 14:11:14 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_sdhost.c,v 1.7 2021/01/27 03:10:19 thorpej Exp $ */
+/* $NetBSD: bcm2835_sdhost.c,v 1.8 2021/01/29 14:11:14 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.7 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.8 2021/01/29 14:11:14 skrll Exp $");
 
 #include "bcmdmac.h"
 
@@ -243,8 +243,8 @@ sdhost_attach(device_t parent, device_t 
 		return;
 	}
 
-	sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_SDMMC,
-	FDT_INTR_MPSAFE, sdhost_intr, sc);
+	sc->sc_ih = fdtbus_intr_establish_xname(phandle, 0, IPL_SDMMC,
+	FDT_INTR_MPSAFE, sdhost_intr, sc, device_xname(self));
 	if (sc->sc_ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt %s\n",
 		intrstr);

Index: src/sys/arch/arm/broadcom/bcm2835_dmac.c
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.18 src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.19
--- src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.18	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.c	Fri Jan 29 14:11:14 2021
@@ -1,4 +1,4 

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

2021-01-27 Thread Nia Alarie
Module Name:src
Committed By:   nia
Date:   Wed Jan 27 12:06:10 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c

Log Message:
vcaudio: Do not report recording mode in hardware format


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.16 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.17
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.16	Sat Jan 23 12:53:46 2021
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Wed Jan 27 12:06:10 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.16 2021/01/23 12:53:46 nia Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.17 2021/01/27 12:06:10 nia Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.16 2021/01/23 12:53:46 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.17 2021/01/27 12:06:10 nia Exp $");
 
 #include 
 #include 
@@ -270,7 +270,7 @@ vcaudio_init(struct vcaudio_softc *sc)
 	sc->sc_hwvol[VCAUDIO_DEST_HDMI] = 255;
 	sc->sc_dest = VCAUDIO_DEST_AUTO;
 
-	sc->sc_format.mode = AUMODE_PLAY|AUMODE_RECORD;
+	sc->sc_format.mode = AUMODE_PLAY;
 	sc->sc_format.encoding = AUDIO_ENCODING_SLINEAR_LE;
 	sc->sc_format.validbits = 16;
 	sc->sc_format.precision = 16;



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

2021-01-23 Thread Nia Alarie
Module Name:src
Committed By:   nia
Date:   Sat Jan 23 12:53:46 UTC 2021

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c

Log Message:
vcaudio: don't advertise CAPTURE when all functions return EINVAL


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.15 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.16
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.15	Wed Jan 22 21:21:24 2020
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Sat Jan 23 12:53:46 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.16 2021/01/23 12:53:46 nia Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.16 2021/01/23 12:53:46 nia Exp $");
 
 #include 
 #include 
@@ -159,7 +159,6 @@ static int	vcaudio_set_format(void *, in
 const audio_params_t *, const audio_params_t *,
 audio_filter_reg_t *, audio_filter_reg_t *);
 static int	vcaudio_halt_output(void *);
-static int	vcaudio_halt_input(void *);
 static int	vcaudio_set_port(void *, mixer_ctrl_t *);
 static int	vcaudio_get_port(void *, mixer_ctrl_t *);
 static int	vcaudio_query_devinfo(void *, mixer_devinfo_t *);
@@ -171,8 +170,6 @@ static int	vcaudio_round_blocksize(void 
 
 static int	vcaudio_trigger_output(void *, void *, void *, int,
 void (*)(void *), void *, const audio_params_t *);
-static int	vcaudio_trigger_input(void *, void *, void *, int,
-void (*)(void *), void *, const audio_params_t *);
 
 static void	vcaudio_get_locks(void *, kmutex_t **, kmutex_t **);
 
@@ -182,7 +179,6 @@ static const struct audio_hw_if vcaudio_
 	.query_format = vcaudio_query_format,
 	.set_format = vcaudio_set_format,
 	.halt_output = vcaudio_halt_output,
-	.halt_input = vcaudio_halt_input,
 	.getdev = vcaudio_getdev,
 	.set_port = vcaudio_set_port,
 	.get_port = vcaudio_get_port,
@@ -190,7 +186,6 @@ static const struct audio_hw_if vcaudio_
 	.get_props = vcaudio_get_props,
 	.round_blocksize = vcaudio_round_blocksize,
 	.trigger_output = vcaudio_trigger_output,
-	.trigger_input = vcaudio_trigger_input,
 	.get_locks = vcaudio_get_locks,
 };
 
@@ -612,12 +607,6 @@ vcaudio_halt_output(void *priv)
 }
 
 static int
-vcaudio_halt_input(void *priv)
-{
-	return EINVAL;
-}
-
-static int
 vcaudio_set_volume(struct vcaudio_softc *sc, enum vcaudio_dest dest,
 int hwvol)
 {
@@ -802,7 +791,7 @@ vcaudio_getdev(void *priv, struct audio_
 static int
 vcaudio_get_props(void *priv)
 {
-	return AUDIO_PROP_PLAYBACK|AUDIO_PROP_CAPTURE|AUDIO_PROP_INDEPENDENT;
+	return AUDIO_PROP_PLAYBACK;
 }
 
 static int
@@ -837,13 +826,6 @@ vcaudio_trigger_output(void *priv, void 
 	return 0;
 }
 
-static int
-vcaudio_trigger_input(void *priv, void *start, void *end, int blksize,
-void (*intr)(void *), void *intrarg, const audio_params_t *params)
-{
-	return EINVAL;
-}
-
 static void
 vcaudio_get_locks(void *priv, kmutex_t **intr, kmutex_t **thread)
 {



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

2020-12-22 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Wed Dec 23 02:56:11 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc_fdt.c

Log Message:
Add missing call to fdtbus_register_i2c_controller().  This doesn't
affect basic child attachment, but would have broken other references
to the i2c controller in DT overlays.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.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/broadcom/bcm2835_bsc_fdt.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.2 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.3
--- src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.2	Sun May 31 23:52:19 2020
+++ src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c	Wed Dec 23 02:56:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.2 2020/05/31 23:52:19 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.3 2020/12/23 02:56:11 thorpej Exp $	*/
 
 /*
  * Copyright (c) 2019 Jason R. Thorpe
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.2 2020/05/31 23:52:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.3 2020/12/23 02:56:11 thorpej Exp $");
 
 #include 
 #include 
@@ -46,6 +46,18 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_
 
 #include 
 
+static i2c_tag_t
+bsciic_fdt_get_tag(device_t dev)
+{
+	struct bsciic_softc * const sc = device_private(dev);
+
+	return >sc_i2c;
+}
+
+static const struct fdtbus_i2c_controller_func bsciic_fdt_funcs = {
+	.get_tag = bsciic_fdt_get_tag,
+};
+
 static int bsciic_fdt_match(device_t, cfdata_t, void *);
 static void bsciic_fdt_attach(device_t, device_t, void *);
 
@@ -129,5 +141,7 @@ bsciic_fdt_attach(device_t parent, devic
 	sc->sc_i2c.ic_release_bus = bsciic_release_bus;
 	sc->sc_i2c.ic_exec = bsciic_exec;
 
+	fdtbus_register_i2c_controller(self, phandle, _fdt_funcs);
+
 	fdtbus_attach_i2cbus(self, phandle, >sc_i2c, iicbus_print);
 }



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

2020-11-30 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Dec  1 04:17:10 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_genfb.c

Log Message:
bcm2835-fb seems byte-swapped to CPU when running in big-endian mode.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_genfb.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/broadcom/bcm2835_genfb.c
diff -u src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.10 src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.11
--- src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.10	Mon Nov 23 06:46:38 2020
+++ src/sys/arch/arm/broadcom/bcm2835_genfb.c	Tue Dec  1 04:17:10 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_genfb.c,v 1.10 2020/11/23 06:46:38 rin Exp $ */
+/* $NetBSD: bcm2835_genfb.c,v 1.11 2020/12/01 04:17:10 rin Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,13 +31,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.10 2020/11/23 06:46:38 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.11 2020/12/01 04:17:10 rin Exp $");
 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -96,6 +97,9 @@ bcmgenfb_attach(device_t parent, device_
 	sc->sc_wstype = WSDISPLAY_TYPE_VC4;
 	prop_dictionary_get_uint32(dict, "wsdisplay_type", >sc_wstype);
 	prop_dictionary_get_bool(dict, "is_console", _console);
+#if BYTE_ORDER == BIG_ENDIAN
+	prop_dictionary_set_bool(dict, "is_swapped", true);
+#endif
 
 	genfb_init(>sc_gen);
 



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

2020-11-30 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Dec  1 04:16:18 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Data written to and read from bcm283x UART registers should be in little-endian.


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.44 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.45
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.44	Tue Dec  1 04:14:31 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Dec  1 04:16:18 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.44 2020/12/01 04:14:31 rin Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.45 2020/12/01 04:16:18 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.44 2020/12/01 04:14:31 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.45 2020/12/01 04:16:18 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1347,12 +1347,12 @@ bcm283x_platform_early_putchar(vaddr_t v
 		(volatile uint32_t *)va :
 		(volatile uint32_t *)pa;
 
-	while ((uartaddr[PL01XCOM_FR / 4] & PL01X_FR_TXFF) != 0)
+	while ((le32toh(uartaddr[PL01XCOM_FR / 4]) & PL01X_FR_TXFF) != 0)
 		continue;
 
-	uartaddr[PL01XCOM_DR / 4] = c;
+	uartaddr[PL01XCOM_DR / 4] = htole32(c);
 
-	while ((uartaddr[PL01XCOM_FR / 4] & PL01X_FR_TXFE) == 0)
+	while ((le32toh(uartaddr[PL01XCOM_FR / 4]) & PL01X_FR_TXFE) == 0)
 		continue;
 }
 
@@ -1364,10 +1364,10 @@ bcm283x_aux_platform_early_putchar(vaddr
 		(volatile uint32_t *)va :
 		(volatile uint32_t *)pa;
 
-	while ((uartaddr[com_lsr] & LSR_TXRDY) == 0)
+	while ((le32toh(uartaddr[com_lsr]) & LSR_TXRDY) == 0)
 		continue;
 
-	uartaddr[com_data] = c;
+	uartaddr[com_data] = htole32(c);
 }
 
 void __noasan



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

2020-11-30 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Dec  1 04:15:04 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_dmac.h bcm2835_emmc.c
bcm2835_sdhost.c

Log Message:
Data written to bcmdmac(4) should be in little-endian.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm2835_dmac.h
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/arm/broadcom/bcm2835_emmc.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/broadcom/bcm2835_sdhost.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/broadcom/bcm2835_dmac.h
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.4 src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.5
--- src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.4	Sun Aug  9 13:06:44 2015
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.h	Tue Dec  1 04:15:04 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.h,v 1.4 2015/08/09 13:06:44 mlelstv Exp $ */
+/* $NetBSD: bcm2835_dmac.h,v 1.5 2020/12/01 04:15:04 rin Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill 
@@ -29,6 +29,8 @@
 #ifndef BCM2835_DMAC_H
 #define BCM2835_DMAC_H
 
+#include 
+
 #define DMAC_CS(n)		(0x00 + (0x100 * (n)))
 #define  DMAC_CS_RESET		__BIT(31)
 #define  DMAC_CS_ABORT		__BIT(30)
@@ -62,6 +64,9 @@
 #define  DMAC_DEBUG_FIFO_ERROR	__BIT(1)
 #define  DMAC_DEBUG_READ_LAST_NOT_SET_ERROR __BIT(0)
 
+/*
+ * Byte-order is little endain.
+ */
 struct bcm_dmac_conblk {
 	uint32_t	cb_ti;
 #define DMAC_TI_NO_WIDE_BURSTS	__BIT(26)
@@ -108,5 +113,16 @@ void bcm_dmac_set_conblk_addr(struct bcm
 int bcm_dmac_transfer(struct bcm_dmac_channel *);
 void bcm_dmac_halt(struct bcm_dmac_channel *);
 
+static inline void
+bcm_dmac_swap_conblk(struct bcm_dmac_conblk *conblk)
+{
+
+	HTOLE32(conblk->cb_ti);
+	HTOLE32(conblk->cb_source_ad);
+	HTOLE32(conblk->cb_dest_ad);
+	HTOLE32(conblk->cb_txfr_len);
+	HTOLE32(conblk->cb_stride);
+	HTOLE32(conblk->cb_nextconbk);
+}
 
 #endif /* !BCM2835_DMAC_H */

Index: src/sys/arch/arm/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.38 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.39
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.38	Fri Aug 28 13:13:55 2020
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Tue Dec  1 04:15:04 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.38 2020/08/28 13:13:55 skrll Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.39 2020/12/01 04:15:04 rin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.38 2020/08/28 13:13:55 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.39 2020/12/01 04:15:04 rin Exp $");
 
 #include "bcmdmac.h"
 
@@ -327,6 +327,7 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 			sc->sc_dmamap->dm_segs[0].ds_addr +
 			sizeof(struct bcm_dmac_conblk) * (seg+1);
 		}
+		bcm_dmac_swap_conblk(>sc_cblk[seg]);
 		sc->sc_cblk[seg].cb_padding[0] = 0;
 		sc->sc_cblk[seg].cb_padding[1] = 0;
 	}

Index: src/sys/arch/arm/broadcom/bcm2835_sdhost.c
diff -u src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.5 src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.6
--- src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.5	Sun May 31 23:52:19 2020
+++ src/sys/arch/arm/broadcom/bcm2835_sdhost.c	Tue Dec  1 04:15:04 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_sdhost.c,v 1.5 2020/05/31 23:52:19 thorpej Exp $ */
+/* $NetBSD: bcm2835_sdhost.c,v 1.6 2020/12/01 04:15:04 rin Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.5 2020/05/31 23:52:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.6 2020/12/01 04:15:04 rin Exp $");
 
 #include "bcmdmac.h"
 
@@ -397,6 +397,7 @@ sdhost_dma_transfer(struct sdhost_softc 
 			sc->sc_dmamap->dm_segs[0].ds_addr +
 			sizeof(struct bcm_dmac_conblk) * (seg+1);
 		}
+		bcm_dmac_swap_conblk(>sc_cblk[seg]);
 		sc->sc_cblk[seg].cb_padding[0] = 0;
 		sc->sc_cblk[seg].cb_padding[1] = 0;
 	}



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

2020-11-22 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Nov 23 06:46:38 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_genfb.c

Log Message:
Sort headers. No binary changes.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm2835_genfb.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/broadcom/bcm2835_genfb.c
diff -u src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.9 src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.10
--- src/sys/arch/arm/broadcom/bcm2835_genfb.c:1.9	Sun Apr  1 04:35:03 2018
+++ src/sys/arch/arm/broadcom/bcm2835_genfb.c	Mon Nov 23 06:46:38 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_genfb.c,v 1.9 2018/04/01 04:35:03 ryo Exp $ */
+/* $NetBSD: bcm2835_genfb.c,v 1.10 2020/11/23 06:46:38 rin Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,15 +31,15 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.9 2018/04/01 04:35:03 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.10 2020/11/23 06:46:38 rin Exp $");
 
 #include 
 #include 
-#include 
-#include 
-#include 
 #include 
+#include 
+#include 
 #include 
+#include 
 
 #include 
 



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

2020-11-22 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Mon Nov 23 06:21:07 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Factor out bcm283x_aux_platform_early_putchar() from
bcm{2837,2711}_platform_early_putchar(), for which output goes to
AUX UART (aka mini UART).

No functional changes.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.41 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.42
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.41	Mon Sep 28 11:54:23 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Nov 23 06:21:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.41 2020/09/28 11:54:23 jmcneill Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.42 2020/11/23 06:21:07 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.41 2020/09/28 11:54:23 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.42 2020/11/23 06:21:07 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1344,6 +1344,20 @@ bcm283x_platform_early_putchar(vaddr_t v
 		continue;
 }
 
+static void __noasan
+bcm283x_aux_platform_early_putchar(vaddr_t va, paddr_t pa, char c)
+{
+	volatile uint32_t *uartaddr =
+	cpu_earlydevice_va_p() ?
+		(volatile uint32_t *)va :
+		(volatile uint32_t *)pa;
+
+	while ((uartaddr[com_lsr] & LSR_TXRDY) == 0)
+		continue;
+
+	uartaddr[com_data] = c;
+}
+
 void __noasan
 bcm2835_platform_early_putchar(char c)
 {
@@ -1365,37 +1379,19 @@ bcm2836_platform_early_putchar(char c)
 void __noasan
 bcm2837_platform_early_putchar(char c)
 {
-#define AUCONSADDR_PA	BCM2836_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE)
-#define AUCONSADDR_VA	BCM2835_IOPHYSTOVIRT(AUCONSADDR_PA)
-	volatile uint32_t *uartaddr =
-	cpu_earlydevice_va_p() ?
-		(volatile uint32_t *)AUCONSADDR_VA :
-		(volatile uint32_t *)AUCONSADDR_PA;
-
-	while ((uartaddr[com_lsr] & LSR_TXRDY) == 0)
-		;
+	paddr_t pa = BCM2836_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE);
+	vaddr_t va = BCM2835_IOPHYSTOVIRT(pa);
 
-	uartaddr[com_data] = c;
-#undef AUCONSADDR_VA
-#undef AUCONSADDR_PA
+	bcm283x_aux_platform_early_putchar(va, pa, c);
 }
 
 void __noasan
 bcm2711_platform_early_putchar(char c)
 {
-#define AUCONSADDR_PA	BCM2711_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE)
-#define AUCONSADDR_VA	BCM2711_IOPHYSTOVIRT(AUCONSADDR_PA)
-	volatile uint32_t *uartaddr =
-	cpu_earlydevice_va_p() ?
-		(volatile uint32_t *)AUCONSADDR_VA :
-		(volatile uint32_t *)AUCONSADDR_PA;
+	paddr_t pa = BCM2711_PERIPHERALS_BUS_TO_PHYS(BCM2835_AUX_UART_BASE);
+	vaddr_t va = BCM2711_IOPHYSTOVIRT(pa);
 
-	while ((uartaddr[com_lsr] & LSR_TXRDY) == 0)
-		;
-
-	uartaddr[com_data] = c;
-#undef AUCONSADDR_VA
-#undef AUCONSADDR_PA
+	bcm283x_aux_platform_early_putchar(va, pa, c);
 }
 
 #define	BCM283x_REF_FREQ	1920



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

2020-09-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Sep 30 23:58:13 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_dmac.c

Log Message:
Fix off-by-one in channel count, from Mark Millard.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/broadcom/bcm2835_dmac.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/broadcom/bcm2835_dmac.c
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.16 src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.17
--- src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.16	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.c	Wed Sep 30 23:58:13 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.c,v 1.16 2017/12/10 21:38:26 skrll Exp $ */
+/* $NetBSD: bcm2835_dmac.c,v 1.17 2020/09/30 23:58:13 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill 
@@ -29,7 +29,7 @@
 #include "opt_ddb.h"
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_dmac.c,v 1.16 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_dmac.c,v 1.17 2020/09/30 23:58:13 jmcneill Exp $");
 
 #include 
 #include 
@@ -142,7 +142,7 @@ bcm_dmac_attach(device_t parent, device_
 
 	mutex_init(>sc_lock, MUTEX_DEFAULT, IPL_SCHED);
 
-	sc->sc_nchannels = 31 - __builtin_clz(sc->sc_channelmask);
+	sc->sc_nchannels = 32 - __builtin_clz(sc->sc_channelmask);
 	sc->sc_channels = kmem_alloc(
 	sizeof(*sc->sc_channels) * sc->sc_nchannels, KM_SLEEP);
 



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

2020-08-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Aug 28 13:13:55 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Fix build if NBCMDMAC is zero


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.37 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.38
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.37	Sun May 31 23:52:19 2020
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Fri Aug 28 13:13:55 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.37 2020/05/31 23:52:19 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.38 2020/08/28 13:13:55 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.37 2020/05/31 23:52:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.38 2020/08/28 13:13:55 skrll Exp $");
 
 #include "bcmdmac.h"
 
@@ -118,11 +118,8 @@ bcmemmc_attach(device_t parent, device_t
 	struct bcmemmc_softc *sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
-	enum bcmemmc_type type;
 	int error;
 
-	type = of_search_compatible(phandle, compat_data)->data;
-
 	sc->sc.sc_dev = self;
 	sc->sc.sc_dmat = faa->faa_dmat;
 	sc->sc.sc_flags = 0;
@@ -186,6 +183,8 @@ bcmemmc_attach(device_t parent, device_t
 	aprint_normal_dev(self, "interrupting on %s\n", intrstr);
 
 #if NBCMDMAC > 0
+	enum bcmemmc_type type = of_search_compatible(phandle, compat_data)->data;
+
 	if (type != BCM2835_SDHCI)
 		goto done;
 



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

2020-06-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Jun 26 08:42:01 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Avoid large stack usage with kmem_alloc - we're in device_register so
there is no problem doing this.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.38 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.39
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.38	Sun Jun 21 07:17:25 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Fri Jun 26 08:42:01 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.38 2020/06/21 07:17:25 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.39 2020/06/26 08:42:01 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.38 2020/06/21 07:17:25 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.39 2020/06/26 08:42:01 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: bcm283x_plat
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include 
@@ -881,11 +882,12 @@ rpi_fb_parse_mode(const char *s, uint32_
 	return true;
 }
 
+#define RPI_EDIDSIZE 1024
+
 static bool
 rpi_fb_get_edid_mode(uint32_t *pwidth, uint32_t *pheight)
 {
 	struct edid_info ei;
-	uint8_t edid_data[1024];
 	uint32_t res;
 	int error;
 
@@ -901,7 +903,9 @@ rpi_fb_get_edid_mode(uint32_t *pwidth, u
 	vb_edid.vbt_edid.status != 0)
 		return false;
 
-	memset(edid_data, 0, sizeof(edid_data));
+	uint8_t *edid_data = kmem_alloc(RPI_EDIDSIZE, KM_SLEEP);
+
+	memset(edid_data, 0, RPI_EDIDSIZE);
 	memcpy(edid_data, vb_edid.vbt_edid.data,
 	sizeof(vb_edid.vbt_edid.data));
 	edid_parse(edid_data, );
@@ -914,6 +918,8 @@ rpi_fb_get_edid_mode(uint32_t *pwidth, u
 		*pheight = ei.edid_preferred_mode->vdisplay;
 	}
 
+	kmem_free(edid_data, RPI_EDIDSIZE);
+
 	return true;
 }
 



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

2020-06-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Jun 21 07:17:25 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Update to new proplib api


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.37 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.38
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.37	Sat Feb 22 00:28:35 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Sun Jun 21 07:17:25 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.37 2020/02/22 00:28:35 jmcneill Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.38 2020/06/21 07:17:25 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.37 2020/02/22 00:28:35 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.38 2020/06/21 07:17:25 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1428,14 +1428,8 @@ bcm283x_platform_device_register(device_
 		 (vb.vbt_macaddr.addr >> 40) & 0xff
 		};
 
-		prop_data_t pd = prop_data_create_data(enaddr, ETHER_ADDR_LEN);
-		KASSERT(pd != NULL);
-		if (prop_dictionary_set(device_properties(dev), "mac-address",
-		pd) == false) {
-			aprint_error_dev(dev,
-			"WARNING: Unable to set mac-address property\n");
-		}
-		prop_object_release(pd);
+		prop_dictionary_set_data(dict, "mac-address", enaddr,
+		ETHER_ADDR_LEN);
 	}
 
 #if NGENFB > 0



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

2020-05-31 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Sun May 31 23:52:19 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc_fdt.c bcm2835_emmc.c
bcm2835_sdhost.c

Log Message:
Remove superfluous checking for a "disable" property in the device_t
properties dictionary.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/arm/broadcom/bcm2835_emmc.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm2835_sdhost.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/broadcom/bcm2835_bsc_fdt.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.1 src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c:1.1	Tue Mar 31 12:23:17 2020
+++ src/sys/arch/arm/broadcom/bcm2835_bsc_fdt.c	Sun May 31 23:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.1 2020/03/31 12:23:17 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_bsc_fdt.c,v 1.2 2020/05/31 23:52:19 thorpej Exp $	*/
 
 /*
  * Copyright (c) 2019 Jason R. Thorpe
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.1 2020/03/31 12:23:17 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_fdt.c,v 1.2 2020/05/31 23:52:19 thorpej Exp $");
 
 #include 
 #include 
@@ -67,8 +67,6 @@ bsciic_fdt_attach(device_t parent, devic
 	struct bsciic_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
-	prop_dictionary_t prop = device_properties(self);
-	bool disable = false;
 
 	bus_addr_t addr;
 	bus_size_t size;
@@ -82,13 +80,6 @@ bsciic_fdt_attach(device_t parent, devic
 		return;
 	}
 
-	prop_dictionary_get_bool(prop, "disable", );
-	if (disable) {
-		aprint_naive(": disabled\n");
-		aprint_normal(": disabled\n");
-		return;
-	}
-
 	/* Enable clock */
 	sc->sc_clk = fdtbus_clock_get_index(phandle, 0);
 	if (sc->sc_clk == NULL) {

Index: src/sys/arch/arm/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.36 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.37
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.36	Thu Feb 20 01:44:06 2020
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sun May 31 23:52:19 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.36 2020/02/20 01:44:06 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.37 2020/05/31 23:52:19 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.36 2020/02/20 01:44:06 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.37 2020/05/31 23:52:19 thorpej Exp $");
 
 #include "bcmdmac.h"
 
@@ -117,9 +117,7 @@ bcmemmc_attach(device_t parent, device_t
 {
 	struct bcmemmc_softc *sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
-	prop_dictionary_t dict = device_properties(self);
 	const int phandle = faa->faa_phandle;
-	bool disable = false;
 	enum bcmemmc_type type;
 	int error;
 
@@ -138,13 +136,6 @@ bcmemmc_attach(device_t parent, device_t
 	sc->sc.sc_clkbase = 5;	/* Default to 50MHz */
 	sc->sc_iot = faa->faa_bst;
 
-	prop_dictionary_get_bool(dict, "disable", );
-	if (disable) {
-		aprint_naive(": disabled\n");
-		aprint_normal(": disabled\n");
-		return;
-	}
-
 	bus_addr_t addr;
 	bus_size_t size;
 

Index: src/sys/arch/arm/broadcom/bcm2835_sdhost.c
diff -u src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.4 src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.5
--- src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.4	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_sdhost.c	Sun May 31 23:52:19 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_sdhost.c,v 1.4 2017/12/10 21:38:26 skrll Exp $ */
+/* $NetBSD: bcm2835_sdhost.c,v 1.5 2020/05/31 23:52:19 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.4 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.5 2020/05/31 23:52:19 thorpej Exp $");
 
 #include "bcmdmac.h"
 
@@ -191,8 +191,6 @@ sdhost_attach(device_t parent, device_t 
 {
 	struct sdhost_softc * const sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
-	prop_dictionary_t dict = device_properties(self);
-	bool disable = false;
 
 	sc->sc_dev = self;
 	sc->sc_bst = faa->faa_bst;
@@ -220,12 +218,6 @@ sdhost_attach(device_t parent, device_t 
 	aprint_naive("\n");
 	aprint_normal(": SD HOST controller\n");
 
-	prop_dictionary_get_bool(dict, "disable", );
-	if (disable) {
-		aprint_naive(": disabled\n");
-		aprint_normal(": disabled\n");
-		return;
-	}
 	/* Enable clocks */
 	struct clk *clk;
 	for (int i = 0; (clk = fdtbus_clock_get_index(phandle, i)); i++) {



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

2020-03-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Mar 31 14:39:44 UTC 2020

Added Files:
src/sys/arch/arm/broadcom: bcm2835_bscvar.h

Log Message:
Add bcm2835_bscvar.h


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2835_bscvar.h

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

Added files:

Index: src/sys/arch/arm/broadcom/bcm2835_bscvar.h
diff -u /dev/null src/sys/arch/arm/broadcom/bcm2835_bscvar.h:1.1
--- /dev/null	Tue Mar 31 14:39:44 2020
+++ src/sys/arch/arm/broadcom/bcm2835_bscvar.h	Tue Mar 31 14:39:44 2020
@@ -0,0 +1,100 @@
+/*	$NetBSD: bcm2835_bscvar.h,v 1.1 2020/03/31 14:39:44 jmcneill Exp $	*/
+
+/*
+ * Copyright (c) 2019 Jason R. Thorpe
+ * Copyright (c) 2012 Jonathan A. Kollasch
+ * 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _BCM2835_BSCVAR_H
+#define _BCM2835_BSCVAR_H
+
+#include 
+
+typedef enum {
+	BSC_EXEC_STATE_IDLE		= 0,
+	BSC_EXEC_STATE_SEND_ADDR	= 1,
+	BSC_EXEC_STATE_SEND_CMD		= 2,
+	BSC_EXEC_STATE_SEND_DATA	= 3,
+	BSC_EXEC_STATE_RECV_DATA	= 4,
+	BSC_EXEC_STATE_DONE		= 5,
+	BSC_EXEC_STATE_ERROR		= 6,
+} bsc_exec_state_t;
+
+#define	BSC_EXEC_STATE_SENDING(sc)	\
+	((sc)->sc_exec_state >= BSC_EXEC_STATE_SEND_ADDR && \
+	(sc)->sc_exec_state <= BSC_EXEC_STATE_SEND_DATA)
+
+#define	BSC_EXEC_STATE_RECEIVING(sc)	\
+	((sc)->sc_exec_state == BSC_EXEC_STATE_RECV_DATA)
+
+struct bsciic_softc {
+	device_t sc_dev;
+	bus_space_tag_t sc_iot;
+	bus_space_handle_t sc_ioh;
+	struct i2c_controller sc_i2c;
+	void *sc_inth;
+
+	struct clk *sc_clk;
+	u_int sc_frequency;
+	u_int sc_clkrate;
+
+	kmutex_t sc_intr_lock;
+	kcondvar_t sc_intr_wait;
+
+	struct {
+		i2c_op_t op;
+		i2c_addr_t addr;
+		const void *cmdbuf;
+		size_t cmdlen;
+		void *databuf;
+		size_t datalen;
+		int flags;
+	} sc_exec;
+
+	/*
+	 * Everything below here protected by the i2c controller lock
+	 * /and/ sc_intr_lock (if we're using interrupts).
+	 */
+
+	bsc_exec_state_t sc_exec_state;
+
+	uint8_t *sc_buf;
+	size_t sc_bufpos;
+	size_t sc_buflen;
+
+	uint32_t sc_c_bits;
+	bool sc_expecting_interrupt;
+};
+
+void bsciic_attach(struct bsciic_softc *);
+
+int  bsciic_acquire_bus(void *, int);
+void bsciic_release_bus(void *, int);
+int  bsciic_exec(void *, i2c_op_t, i2c_addr_t, const void *, size_t,
+		 void *, size_t, int);
+
+int bsciic_intr(void *);
+
+#endif /* !_BCM2835_BSCVAR_H */



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

2020-02-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Feb 22 22:09:07 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_mbox.c bcm2835_mbox_acpi.c

Log Message:
RPi4 UEFI firmware 1.1 reports the wrong IRQ for the VC mailbox. Use
polling mode for now until this is sorted out.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/broadcom/bcm2835_mbox.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.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/broadcom/bcm2835_mbox.c
diff -u src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.14 src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.15
--- src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.14	Mon Dec 30 18:43:38 2019
+++ src/sys/arch/arm/broadcom/bcm2835_mbox.c	Sat Feb 22 22:09:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_mbox.c,v 1.14 2019/12/30 18:43:38 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_mbox.c,v 1.15 2020/02/22 22:09:07 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.14 2019/12/30 18:43:38 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.15 2020/02/22 22:09:07 jmcneill Exp $");
 
 #include 
 #include 
@@ -97,8 +97,9 @@ bcmmbox_attach(struct bcm2835mbox_softc 
 		cv_init(>sc_chan[i], "bcmmbox");
 
 	/* enable mbox interrupt */
-	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BCM2835_MBOX_CFG,
-	BCM2835_MBOX_CFG_DATAIRQEN);
+	if (sc->sc_intrh != NULL)
+		bus_space_write_4(sc->sc_iot, sc->sc_ioh, BCM2835_MBOX_CFG,
+		BCM2835_MBOX_CFG_DATAIRQEN);
 
 	baa.baa_dmat = sc->sc_dmat;
 	sc->sc_platdev = config_found_ia(sc->sc_dev, "bcmmboxbus", , NULL);
@@ -130,7 +131,7 @@ bcmmbox_read(uint8_t chan, uint32_t *dat
 
 	mutex_enter(>sc_intr_lock);
 	while (BCM2835_MBOX_CHAN(sc->sc_mbox[chan]) == 0) {
-		if (cold)
+		if (cold || sc->sc_intrh == NULL)
 			bcmmbox_intr1(sc, 0);
 		else
 			cv_wait(>sc_chan[chan], >sc_intr_lock);

Index: src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c
diff -u src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c:1.1 src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c:1.1	Mon Dec 30 18:43:38 2019
+++ src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c	Sat Feb 22 22:09:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_mbox_acpi.c,v 1.1 2019/12/30 18:43:38 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_mbox_acpi.c,v 1.2 2020/02/22 22:09:07 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox_acpi.c,v 1.1 2019/12/30 18:43:38 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox_acpi.c,v 1.2 2020/02/22 22:09:07 jmcneill Exp $");
 
 #include 
 #include 
@@ -103,12 +103,14 @@ bcmmbox_acpi_attach(device_t parent, dev
 		return;
 	}
 
+#if notyet
 	sc->sc_intrh = acpi_intr_establish(self, (uint64_t)aa->aa_node->ad_handle,
 	IPL_VM, false, bcmmbox_intr, sc, device_xname(self));
 	if (sc->sc_intrh == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt\n");
 		return;
 	}
+#endif
 
 	bcmmbox_attach(sc);
 }



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

2020-02-21 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Feb 22 00:17:54 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h bcm283x_platform.c

Log Message:
Translate bus addresses for SCB on BCM2711


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/broadcom/bcm2835reg.h
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.29 src/sys/arch/arm/broadcom/bcm2835reg.h:1.30
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.29	Mon Dec 30 16:19:27 2019
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Sat Feb 22 00:17:54 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.29 2019/12/30 16:19:27 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.30 2020/02/22 00:17:54 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -124,6 +124,15 @@
 
 #define	BCM2835_INTC_BASE	(0x0)	/* Relative to BCM2835_ARMICU_BASE */
 
+#define	BCM2711_SCB_BASE	0xfc00
+#define	BCM2711_SCB_SIZE	0x0380
+#define	BCM2711_SCB_BASE_BUS	0x7c00
+
+#define	BCM2711_SCB_PHYS_TO_BUS(a) \
+((a) - BCM2711_SCB_BASE + BCM2711_SCB_BASE_BUS)
+#define	BCM2711_SCB_BUS_TO_PHYS(a) \
+((a) - BCM2711_SCB_BASE_BUS + BCM2711_SCB_BASE)
+
 /* Interrupt controller */
 #define	BCM2835_INTC_IRQBPENDING	(BCM2835_INTC_BASE + 0x00)	/* IRQ Basic pending */
 #define	BCM2835_INTC_IRQ1PENDING	(BCM2835_INTC_BASE + 0x04)	/* IRQ pending 1 */

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.35 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.36
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.35	Thu Feb 20 01:43:07 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Sat Feb 22 00:17:54 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.35 2020/02/20 01:43:07 jmcneill Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.36 2020/02/22 00:17:54 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.35 2020/02/20 01:43:07 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.36 2020/02/22 00:17:54 jmcneill Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -187,6 +187,10 @@ bcm2711_bus_to_phys(bus_addr_t ba)
 	ba < BCM283X_PERIPHERALS_BASE_BUS + BCM283X_PERIPHERALS_SIZE)
 		return BCM2711_PERIPHERALS_BUS_TO_PHYS(ba);
 
+	if (ba >= BCM2711_SCB_BASE_BUS &&
+	ba < BCM2711_SCB_BASE_BUS + BCM2711_SCB_SIZE)
+		return BCM2711_SCB_BUS_TO_PHYS(ba);
+
 	if (ba >= BCM2711_ARM_LOCAL_BASE_BUS &&
 	ba < BCM2711_ARM_LOCAL_BASE_BUS + BCM2711_ARM_LOCAL_SIZE)
 		return BCM2711_ARM_LOCAL_BUS_TO_PHYS(ba);



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

2020-02-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Feb 20 01:44:06 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Add support for brcm,bcm2711-emmc2


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.35 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.36
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.35	Mon Dec 30 16:41:38 2019
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Thu Feb 20 01:44:06 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.35 2019/12/30 16:41:38 skrll Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.36 2020/02/20 01:44:06 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.35 2019/12/30 16:41:38 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.36 2020/02/20 01:44:06 jmcneill Exp $");
 
 #include "bcmdmac.h"
 
@@ -91,17 +91,24 @@ static void bcmemmc_dma_done(uint32_t, u
 CFATTACH_DECL_NEW(bcmemmc, sizeof(struct bcmemmc_softc),
 bcmemmc_match, bcmemmc_attach, NULL, NULL);
 
+enum bcmemmc_type {
+	BCM2835_SDHCI,
+	BCM2711_EMMC2,
+};
+
+static const struct of_compat_data compat_data[] = {
+	{ "brcm,bcm2835-sdhci",		BCM2835_SDHCI },
+	{ "brcm,bcm2711-emmc2",		BCM2711_EMMC2 },
+	{ NULL }
+};
+
 /* ARGSUSED */
 static int
 bcmemmc_match(device_t parent, struct cfdata *match, void *aux)
 {
-	const char * const compatible[] = {
-	"brcm,bcm2835-sdhci",
-	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);
 }
 
 /* ARGSUSED */
@@ -111,9 +118,13 @@ bcmemmc_attach(device_t parent, device_t
 	struct bcmemmc_softc *sc = device_private(self);
 	struct fdt_attach_args * const faa = aux;
 	prop_dictionary_t dict = device_properties(self);
+	const int phandle = faa->faa_phandle;
 	bool disable = false;
+	enum bcmemmc_type type;
 	int error;
 
+	type = of_search_compatible(phandle, compat_data)->data;
+
 	sc->sc.sc_dev = self;
 	sc->sc.sc_dmat = faa->faa_dmat;
 	sc->sc.sc_flags = 0;
@@ -137,7 +148,6 @@ bcmemmc_attach(device_t parent, device_t
 	bus_addr_t addr;
 	bus_size_t size;
 
-	const int phandle = faa->faa_phandle;
 	error = fdtbus_get_reg(phandle, 0, , );
 	if (error) {
 		aprint_error_dev(sc->sc.sc_dev, "unable to map device\n");
@@ -185,6 +195,9 @@ bcmemmc_attach(device_t parent, device_t
 	aprint_normal_dev(self, "interrupting on %s\n", intrstr);
 
 #if NBCMDMAC > 0
+	if (type != BCM2835_SDHCI)
+		goto done;
+
 	sc->sc_dmac = bcm_dmac_alloc(BCM_DMAC_TYPE_NORMAL, IPL_SDMMC,
 	bcmemmc_dma_done, sc);
 	if (sc->sc_dmac == NULL)



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

2020-02-19 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Feb 20 01:43:08 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Remove custom bus dma tag handling.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.34 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.35
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.34	Wed Jan  1 13:54:32 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Thu Feb 20 01:43:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.34 2020/01/01 13:54:32 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.35 2020/02/20 01:43:07 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.34 2020/01/01 13:54:32 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.35 2020/02/20 01:43:07 jmcneill Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -109,7 +109,6 @@ __KERNEL_RCSID(0, "$NetBSD: bcm283x_plat
 #endif
 
 #define RPI_CPU_MAX	4
-#define BCM2711_DMA_SIZE	0x3c00
 
 void bcm2835_platform_early_putchar(char c);
 void bcm2836_platform_early_putchar(char c);
@@ -267,28 +266,6 @@ bcm2711_a4x_bs_mmap(void *t, bus_addr_t 
 	return bcm2711_bs_mmap(t, ba, 4 * offset, prot, flags);
 }
 
-struct arm32_dma_range bcm2835_dma_ranges[] = {
-	[0] = {
-		.dr_sysbase = 0,
-		.dr_busbase = BCM2835_BUSADDR_CACHE_COHERENT,
-	}
-};
-
-struct arm32_dma_range bcm2836_dma_ranges[] = {
-	[0] = {
-		.dr_sysbase = 0,
-		.dr_busbase = BCM2835_BUSADDR_CACHE_DIRECT,
-	}
-};
-
-struct arm32_dma_range bcm2711_dma_ranges[] = {
-	[0] = {
-		.dr_sysbase = 0,
-		.dr_busbase = BCM2835_BUSADDR_CACHE_DIRECT,
-	}
-};
-
-
 #if defined(SOC_BCM2835)
 static const struct pmap_devmap *
 bcm2835_platform_devmap(void)
@@ -1321,11 +1298,6 @@ bcm2835_platform_init_attach_args(struct
 
 	faa->faa_bst = _bs_tag;
 	faa->faa_a4x_bst = _a4x_bs_tag;
-	faa->faa_dmat = _bus_dma_tag;
-
-	bcm2835_bus_dma_tag._ranges = bcm2835_dma_ranges;
-	bcm2835_bus_dma_tag._nranges = __arraycount(bcm2835_dma_ranges);
-	bcm2835_dma_ranges[0].dr_len = bcm283x_memorysize;
 }
 #endif
 
@@ -1336,11 +1308,6 @@ bcm2836_platform_init_attach_args(struct
 
 	faa->faa_bst = _bs_tag;
 	faa->faa_a4x_bst = _a4x_bs_tag;
-	faa->faa_dmat = _bus_dma_tag;
-
-	bcm2835_bus_dma_tag._ranges = bcm2836_dma_ranges;
-	bcm2835_bus_dma_tag._nranges = __arraycount(bcm2836_dma_ranges);
-	bcm2836_dma_ranges[0].dr_len = bcm283x_memorysize;
 }
 
 static void
@@ -1349,11 +1316,6 @@ bcm2711_platform_init_attach_args(struct
 
 	faa->faa_bst = _bs_tag;
 	faa->faa_a4x_bst = _a4x_bs_tag;
-	faa->faa_dmat = _bus_dma_tag;
-
-	bcm2835_bus_dma_tag._ranges = bcm2711_dma_ranges;
-	bcm2835_bus_dma_tag._nranges = __arraycount(bcm2711_dma_ranges);
-	bcm2711_dma_ranges[0].dr_len = BCM2711_DMA_SIZE;
 }
 #endif
 



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

2020-02-03 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Feb  3 08:00:35 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm53xx_eth.c

Log Message:
Adopt 


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/arm/broadcom/bcm53xx_eth.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/broadcom/bcm53xx_eth.c
diff -u src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.39 src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.40
--- src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.39	Wed Oct 30 10:12:37 2019
+++ src/sys/arch/arm/broadcom/bcm53xx_eth.c	Mon Feb  3 08:00:35 2020
@@ -35,7 +35,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.39 2019/10/30 10:12:37 msaitoh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.40 2020/02/03 08:00:35 skrll Exp $");
 
 #include 
 #include 
@@ -1119,7 +1119,7 @@ bcmeth_rxq_consume(
 
 #ifdef BCMETH_RCVMAGIC
 		if (rxsts == BCMETH_RCVMAGIC) {
-			ifp->if_ierrors++;
+			if_statinc(ifp, if_ierrors);
 			if ((m->m_ext.ext_paddr >> 28) == 8) {
 BCMETH_EVCNT_INCR(sc->sc_ev_rx_badmagic_lo);
 			} else {
@@ -1137,7 +1137,7 @@ bcmeth_rxq_consume(
 			 * We encountered an error, take the mbufs and add them
 			 * to the rx bufcache so we can quickly reuse them.
 			 */
-			ifp->if_ierrors++;
+			if_statinc(ifp, if_ierrors);
 			do {
 struct mbuf *m0 = m->m_next;
 m->m_next = NULL;
@@ -1662,10 +1662,10 @@ bcmeth_txq_consume(
 			__func__, m, m->m_pkthdr.len);
 #endif
 			bpf_mtap(ifp, m, BPF_D_OUT);
-			ifp->if_opackets++;
-			ifp->if_obytes += m->m_pkthdr.len;
+			if_statinc(ifp, if_opackets);
+			if_statadd(ifp, if_obytes,  m->m_pkthdr.len);
 			if (m->m_flags & M_MCAST)
-ifp->if_omcasts++;
+if_statinc(ifp, if_omcasts);
 			m_freem(m);
 		}
 



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

2020-01-22 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Wed Jan 22 21:21:24 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c bcm2835_vcaudioreg.h

Log Message:
Adapt to changed 64bit vchiq interface.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.14 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.15
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.14	Wed May  8 13:40:14 2019
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Wed Jan 22 21:21:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.14 2019/05/08 13:40:14 isaki Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.14 2019/05/08 13:40:14 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $");
 
 #include 
 #include 
@@ -371,8 +371,6 @@ vcaudio_service_callback(void *priv, con
 	VC_AUDIO_MSG_T msg;
 	int32_t msglen = 0;
 	int error;
-	void (*intr)(void *) = NULL;
-	void *intrarg = NULL;
 
 	if (sc == NULL || reason != VCHI_CALLBACK_MSG_AVAILABLE)
 		return;
@@ -396,9 +394,8 @@ vcaudio_service_callback(void *priv, con
 		break;
 
 	case VC_AUDIO_MSG_TYPE_COMPLETE:
-		intr = msg.u.complete.callback;
-		intrarg = msg.u.complete.cookie;
-		if (intr && intrarg) {
+		if (msg.u.complete.cookie1 == VC_AUDIO_WRITE_COOKIE1 &&
+		msg.u.complete.cookie2 == VC_AUDIO_WRITE_COOKIE2) {
 			int count = msg.u.complete.count & 0x;
 			int perr = (msg.u.complete.count & __BIT(30)) != 0;
 			bool sched = false;
@@ -420,7 +417,7 @@ vcaudio_service_callback(void *priv, con
 			}
 
 			if (sched && sc->sc_pint) {
-intr(intrarg);
+sc->sc_pint(sc->sc_pintarg);
 sc->sc_abytes += sc->sc_pblksize;
 cv_signal(>sc_datacv);
 			}
@@ -465,8 +462,8 @@ vcaudio_worker(void *priv)
 		msg.type = VC_AUDIO_MSG_TYPE_WRITE;
 		msg.u.write.max_packet = VCAUDIO_MSGSIZE;
 		msg.u.write.count = count;
-		msg.u.write.callback = intr;
-		msg.u.write.cookie = intrarg;
+		msg.u.write.cookie1 = VC_AUDIO_WRITE_COOKIE1;
+		msg.u.write.cookie2 = VC_AUDIO_WRITE_COOKIE2;
 		msg.u.write.silence = 0;
 
 		block = (uint8_t *)sc->sc_pstart + sc->sc_ppos;

Index: src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.3 src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.4
--- src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.3	Fri Apr 25 15:51:12 2014
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h	Wed Jan 22 21:21:24 2020
@@ -33,6 +33,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
 
 // FourCC code used for VCHI connection
 #define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
+#define VC_AUDIO_WRITE_COOKIE1  MAKE_FOURCC("BCMA")
+#define VC_AUDIO_WRITE_COOKIE2  MAKE_FOURCC("DATA")
 
 // Maximum message length
 #define VC_AUDIO_MAX_MSG_LEN  (sizeof( VC_AUDIO_MSG_T ))
@@ -115,8 +117,8 @@ typedef struct
 typedef struct
 {
uint32_t count; // in bytes
-   void *callback;
-   void *cookie;
+   uint32_t cookie1;
+   uint32_t cookie2;
uint16_t silence;
uint16_t max_packet;
 } VC_AUDIO_WRITE_T;
@@ -132,8 +134,8 @@ typedef struct
 typedef struct
 {
int32_t count;  // Success value
-   void *callback;
-   void *cookie;
+   uint32_t cookie1;
+   uint32_t cookie2;
 } VC_AUDIO_COMPLETE_T;
 
 // Message header for all messages in HOST->VC direction



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

2020-01-19 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Mon Jan 20 06:55:35 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
use arm_cpu_mpidr() and fix arm64 builds.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.30 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.31
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.30	Sun Jan 19 16:53:20 2020
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Mon Jan 20 06:55:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.30 2020/01/19 16:53:20 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.31 2020/01/20 06:55:35 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.30 2020/01/19 16:53:20 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.31 2020/01/20 06:55:35 mrg Exp $");
 
 #define _INTR_PRIVATE
 
@@ -337,7 +337,7 @@ bcm2835_irq_handler(void *frame)
 {
 	struct cpu_info * const ci = curcpu();
 	const int oldipl = ci->ci_cpl;
-	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
+	const cpuid_t cpuid = __SHIFTOUT(arm_cpu_mpidr(ci), MPIDR_AFF0);
 	const uint32_t oldipl_mask = __BIT(oldipl);
 	int ipl_mask = 0;
 
@@ -700,7 +700,7 @@ static int
 bcm2836mp_pic_find_pending_irqs(struct pic_softc *pic)
 {
 	struct cpu_info * const ci = curcpu();
-	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
+	const cpuid_t cpuid = __SHIFTOUT(arm_cpu_mpidr(ci), MPIDR_AFF0);
 	uint32_t lpending;
 	int ipl = 0;
 
@@ -741,7 +741,7 @@ bcm2836mp_pic_source_name(struct pic_sof
 #if defined(MULTIPROCESSOR)
 static void bcm2836mp_cpu_init(struct pic_softc *pic, struct cpu_info *ci)
 {
-	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
+	const cpuid_t cpuid = __SHIFTOUT(arm_cpu_mpidr(ci), MPIDR_AFF0);
 
 	KASSERT(cpuid < BCM2836_NCPUS);
 
@@ -768,7 +768,7 @@ int
 bcm2836mp_ipi_handler(void *priv)
 {
 	const struct cpu_info *ci = curcpu();
-	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
+	const cpuid_t cpuid = __SHIFTOUT(arm_cpu_mpidr(ci), MPIDR_AFF0);
 	uint32_t ipimask, bit;
 
 	KASSERT(cpuid < BCM2836_NCPUS);
@@ -817,7 +817,7 @@ bcm2836mp_ipi_handler(void *priv)
 static void
 bcm2836mp_intr_init(void *priv, struct cpu_info *ci)
 {
-	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
+	const cpuid_t cpuid = __SHIFTOUT(arm_cpu_mpidr(ci), MPIDR_AFF0);
 	struct pic_softc * const pic = _pic[cpuid];
 
 	KASSERT(cpuid < BCM2836_NCPUS);



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

2020-01-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Jan 19 16:53:20 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
ci_core_id isn't setup early enough after recent arm_cpu_topology
changes, so use ci_mpidr as a stop gap fix for cpuid


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.29 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.30
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.29	Thu Dec 26 11:09:11 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Sun Jan 19 16:53:20 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.29 2019/12/26 11:09:11 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.30 2020/01/19 16:53:20 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.29 2019/12/26 11:09:11 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.30 2020/01/19 16:53:20 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -337,7 +337,7 @@ bcm2835_irq_handler(void *frame)
 {
 	struct cpu_info * const ci = curcpu();
 	const int oldipl = ci->ci_cpl;
-	const cpuid_t cpuid = ci->ci_core_id;
+	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
 	const uint32_t oldipl_mask = __BIT(oldipl);
 	int ipl_mask = 0;
 
@@ -700,7 +700,7 @@ static int
 bcm2836mp_pic_find_pending_irqs(struct pic_softc *pic)
 {
 	struct cpu_info * const ci = curcpu();
-	const cpuid_t cpuid = ci->ci_core_id;
+	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
 	uint32_t lpending;
 	int ipl = 0;
 
@@ -741,7 +741,7 @@ bcm2836mp_pic_source_name(struct pic_sof
 #if defined(MULTIPROCESSOR)
 static void bcm2836mp_cpu_init(struct pic_softc *pic, struct cpu_info *ci)
 {
-	const cpuid_t cpuid = ci->ci_core_id;
+	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
 
 	KASSERT(cpuid < BCM2836_NCPUS);
 
@@ -768,7 +768,7 @@ int
 bcm2836mp_ipi_handler(void *priv)
 {
 	const struct cpu_info *ci = curcpu();
-	const cpuid_t cpuid = ci->ci_core_id;
+	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
 	uint32_t ipimask, bit;
 
 	KASSERT(cpuid < BCM2836_NCPUS);
@@ -817,7 +817,7 @@ bcm2836mp_ipi_handler(void *priv)
 static void
 bcm2836mp_intr_init(void *priv, struct cpu_info *ci)
 {
-	const cpuid_t cpuid = ci->ci_core_id;
+	const cpuid_t cpuid = __SHIFTOUT(ci->ci_mpidr, MPIDR_AFF0);
 	struct pic_softc * const pic = _pic[cpuid];
 
 	KASSERT(cpuid < BCM2836_NCPUS);



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

2020-01-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jan  1 13:54:32 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Provide a single generic bcm283x_platform_uart_freq which checks for
"brcm,bcm2835-aux-uart" and returns the appropriate core clock based
results; otherwise it returns the uart clock from firmware.

Should fix early console output on the rpi0w.

Based on a diff from mlelstv


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.33 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.34
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.33	Wed Jan  1 09:35:50 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Wed Jan  1 13:54:32 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.33 2020/01/01 09:35:50 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.34 2020/01/01 13:54:32 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.33 2020/01/01 09:35:50 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.34 2020/01/01 13:54:32 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1499,6 +1499,20 @@ static u_int
 bcm283x_platform_uart_freq(void)
 {
 
+	/*
+	 * We are safe to access stdout phandle - consinit did before
+	 * calling ap_uart_freq
+	 */
+	const int phandle = fdtbus_get_stdout_phandle();
+
+	static const char * const aux_compatible[] = {
+		"brcm,bcm2835-aux-uart",
+		NULL
+	};
+
+	if (of_match_compatible(phandle, aux_compatible))
+		return core_clk * 2;
+
 	return uart_clk;
 }
 
@@ -1517,12 +1531,6 @@ ARM_PLATFORM(bcm2835, "brcm,bcm2835", 
 #endif
 
 #if defined(SOC_BCM2836)
-static u_int
-bcm2837_platform_uart_freq(void)
-{
-
-	return core_clk * 2;
-}
 
 static const struct arm_platform bcm2836_platform = {
 	.ap_devmap = bcm2836_platform_devmap,
@@ -1542,7 +1550,7 @@ static const struct arm_platform bcm2837
 	.ap_device_register = bcm283x_platform_device_register,
 	.ap_reset = bcm2835_system_reset,
 	.ap_delay = gtmr_delay,
-	.ap_uart_freq = bcm2837_platform_uart_freq,
+	.ap_uart_freq = bcm283x_platform_uart_freq,
 	.ap_mpstart = arm_fdt_cpu_mpstart,
 };
 
@@ -1553,7 +1561,7 @@ static const struct arm_platform bcm2711
 	.ap_device_register = bcm283x_platform_device_register,
 	.ap_reset = bcm2835_system_reset,
 	.ap_delay = gtmr_delay,
-	.ap_uart_freq = bcm2837_platform_uart_freq,
+	.ap_uart_freq = bcm283x_platform_uart_freq,
 	.ap_mpstart = arm_fdt_cpu_mpstart,
 };
 



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

2020-01-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Jan  1 09:35:50 UTC 2020

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
The DMA range doesn't cover all of memory on the bcm2711 (rpi4) - it
covers (most of) the first 1GB.


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.32 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.33
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.32	Tue Dec 31 08:01:19 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Wed Jan  1 09:35:50 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.32 2019/12/31 08:01:19 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.33 2020/01/01 09:35:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.32 2019/12/31 08:01:19 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.33 2020/01/01 09:35:50 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -109,6 +109,7 @@ __KERNEL_RCSID(0, "$NetBSD: bcm283x_plat
 #endif
 
 #define RPI_CPU_MAX	4
+#define BCM2711_DMA_SIZE	0x3c00
 
 void bcm2835_platform_early_putchar(char c);
 void bcm2836_platform_early_putchar(char c);
@@ -1352,7 +1353,7 @@ bcm2711_platform_init_attach_args(struct
 
 	bcm2835_bus_dma_tag._ranges = bcm2711_dma_ranges;
 	bcm2835_bus_dma_tag._nranges = __arraycount(bcm2711_dma_ranges);
-	bcm2711_dma_ranges[0].dr_len = bcm283x_memorysize;
+	bcm2711_dma_ranges[0].dr_len = BCM2711_DMA_SIZE;
 }
 #endif
 



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

2019-12-31 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Dec 31 08:01:19 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Add another cache invalidation before reading memory for firmware query
results.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.31 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.32
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.31	Mon Dec 30 16:19:27 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Dec 31 08:01:19 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.31 2019/12/30 16:19:27 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.32 2019/12/31 08:01:19 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.31 2019/12/30 16:19:27 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.32 2019/12/31 08:01:19 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -671,6 +671,13 @@ bcm283x_uartinit(bus_space_tag_t iot, bu
 
 	bcm2835_mbox_read(iot, ioh, BCMMBOX_CHANARM2VC, );
 
+	/*
+	 * RPI4 has Cortex A72 processors which do speculation, so
+	 * we need to invalidate the cache for an updates done by
+	 * the firmware
+	 */
+	cpu_dcache_inv_range((vaddr_t)_uart, sizeof(vb_uart));
+
 	if (vcprop_tag_success_p(_uart.vbt_uartclockrate.tag))
 		uart_clk = vb_uart.vbt_uartclockrate.rate;
 	if (vcprop_tag_success_p(_uart.vbt_vpuclockrate.tag))



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

2019-12-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Dec 31 00:59:27 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: files.bcm2835

Log Message:
acpi glue is conditional on acpinodebus


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.37 src/sys/arch/arm/broadcom/files.bcm2835:1.38
--- src/sys/arch/arm/broadcom/files.bcm2835:1.37	Mon Dec 30 18:53:34 2019
+++ src/sys/arch/arm/broadcom/files.bcm2835	Tue Dec 31 00:59:26 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.37 2019/12/30 18:53:34 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.38 2019/12/31 00:59:26 jmcneill Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -19,8 +19,11 @@ device	bcmmbox: bcmmboxbus
 file	arch/arm/broadcom/bcm2835_mbox.c	bcmmbox
 attach	bcmmbox at fdt with bcmmbox_fdt
 filearch/arm/broadcom/bcm2835_mbox_fdt.c	bcmmbox_fdt
+
+ifdef acpinodebus
 attach  bcmmbox at acpinodebus with bcmmbox_acpi
 file	arch/arm/broadcom/bcm2835_mbox_acpi.c	bcmmbox_acpi
+endif
 
 # System Timer (BCM2835_TIMER_BASE)
 device	bcmtmr
@@ -56,8 +59,10 @@ file	arch/arm/broadcom/bcm2835_com.c		bc
 attach	sdhc at fdt with bcmemmc
 file	arch/arm/broadcom/bcm2835_emmc.c	bcmemmc
 
+ifdef acpinodebus
 attach	sdhc at acpinodebus with bcmemmc_acpi
 file	arch/arm/broadcom/bcm2835_emmc_acpi.c	bcmemmc_acpi
+endif
 
 # SD Host Controller (BCM2835_SDHOST_BASE)
 device	bcmsdhost: sdmmcbus



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

2019-12-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Dec 30 18:53:34 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: files.bcm2835
Added Files:
src/sys/arch/arm/broadcom: bcm2835_emmc_acpi.c

Log Message:
Add BCM2835 EMMC acpi glue


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2835_emmc_acpi.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.36 src/sys/arch/arm/broadcom/files.bcm2835:1.37
--- src/sys/arch/arm/broadcom/files.bcm2835:1.36	Mon Dec 30 18:43:38 2019
+++ src/sys/arch/arm/broadcom/files.bcm2835	Mon Dec 30 18:53:34 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.36 2019/12/30 18:43:38 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.37 2019/12/30 18:53:34 jmcneill Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -56,6 +56,9 @@ file	arch/arm/broadcom/bcm2835_com.c		bc
 attach	sdhc at fdt with bcmemmc
 file	arch/arm/broadcom/bcm2835_emmc.c	bcmemmc
 
+attach	sdhc at acpinodebus with bcmemmc_acpi
+file	arch/arm/broadcom/bcm2835_emmc_acpi.c	bcmemmc_acpi
+
 # SD Host Controller (BCM2835_SDHOST_BASE)
 device	bcmsdhost: sdmmcbus
 attach	bcmsdhost at fdt with bcmsdhost

Added files:

Index: src/sys/arch/arm/broadcom/bcm2835_emmc_acpi.c
diff -u /dev/null src/sys/arch/arm/broadcom/bcm2835_emmc_acpi.c:1.1
--- /dev/null	Mon Dec 30 18:53:34 2019
+++ src/sys/arch/arm/broadcom/bcm2835_emmc_acpi.c	Mon Dec 30 18:53:34 2019
@@ -0,0 +1,215 @@
+/*	$NetBSD: bcm2835_emmc_acpi.c,v 1.1 2019/12/30 18:53:34 jmcneill Exp $	*/
+
+/*
+ * Copyright (c) 2016 Kimihiro Nonaka 
+ * 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. The name of the author may not be used to endorse or promote products
+ *derived from this software without specific prior written permission.
+ *
+ * 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: bcm2835_emmc_acpi.c,v 1.1 2019/12/30 18:53:34 jmcneill Exp $");
+
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#define _COMPONENT	ACPI_RESOURCE_COMPONENT
+ACPI_MODULE_NAME	("bcmemmc_acpi")
+
+static int	bcmemmc_acpi_match(device_t, cfdata_t, void *);
+static void	bcmemmc_acpi_attach(device_t, device_t, void *);
+static void	bcmemmc_acpi_attach1(device_t);
+
+static u_int	bcmemmc_acpi_emmc_clock_rate(void);
+
+static const char * const compatible[] = {
+	"BCM2847",
+	NULL
+};
+
+static struct {
+	struct vcprop_buffer_hdr	vb_hdr;
+	struct vcprop_tag_clockrate	vbt_emmcclockrate;
+	struct vcprop_tag end;
+} vb_emmc __cacheline_aligned = {
+	.vb_hdr = {
+		.vpb_len = sizeof(vb_emmc),
+		.vpb_rcode = VCPROP_PROCESS_REQUEST,
+	},
+	.vbt_emmcclockrate = {
+		.tag = {
+			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
+			.vpt_len = VCPROPTAG_LEN(vb_emmc.vbt_emmcclockrate),
+			.vpt_rcode = VCPROPTAG_REQUEST
+		},
+		.id = VCPROP_CLK_EMMC
+	},
+	.end = {
+		.vpt_tag = VCPROPTAG_NULL
+	}
+};
+
+struct bcmemmc_acpi_softc {
+	struct sdhc_softc sc;
+	bus_space_tag_t sc_memt;
+	bus_space_handle_t sc_memh;
+	bus_size_t sc_memsize;
+	void *sc_ih;
+	struct sdhc_host *sc_hosts[1];
+};
+
+CFATTACH_DECL_NEW(bcmemmc_acpi, sizeof(struct bcmemmc_acpi_softc),
+bcmemmc_acpi_match, bcmemmc_acpi_attach, NULL, NULL);
+
+static int
+bcmemmc_acpi_match(device_t parent, cfdata_t match, void *opaque)
+{
+	struct acpi_attach_args *aa = opaque;
+
+	if (aa->aa_node->ad_type != ACPI_TYPE_DEVICE)
+		return 0;
+
+	return acpi_match_hid(aa->aa_node->ad_devinfo, compatible);
+}
+
+static void
+bcmemmc_acpi_attach(device_t parent, device_t self, void *opaque)
+{
+	struct bcmemmc_acpi_softc *sc = device_private(self);
+	struct acpi_attach_args *aa = opaque;
+	struct acpi_resources res;
+	

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

2019-12-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Dec 30 18:43:38 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_mbox.c bcm2835_mbox.h files.bcm2835
Added Files:
src/sys/arch/arm/broadcom: bcm2835_mbox_acpi.c bcm2835_mbox_fdt.c

Log Message:
Split bcm2835 mbox driver into separate fdt and acpi frontends.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_mbox.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/broadcom/bcm2835_mbox.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2835_mbox_acpi.c \
src/sys/arch/arm/broadcom/bcm2835_mbox_fdt.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/arm/broadcom/files.bcm2835

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/broadcom/bcm2835_mbox.c
diff -u src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.13 src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.13	Sun Aug 19 09:18:48 2018
+++ src/sys/arch/arm/broadcom/bcm2835_mbox.c	Mon Dec 30 18:43:38 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_mbox.c,v 1.13 2018/08/19 09:18:48 rin Exp $	*/
+/*	$NetBSD: bcm2835_mbox.c,v 1.14 2019/12/30 18:43:38 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.13 2018/08/19 09:18:48 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.14 2019/12/30 18:43:38 jmcneill Exp $");
 
 #include 
 #include 
@@ -43,103 +43,10 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox
 #include 
 #include 
 #include 
-
-#include 
-
-struct bcm2835mbox_softc {
-	device_t sc_dev;
-	device_t sc_platdev;
-
-	bus_space_tag_t sc_iot;
-	bus_space_handle_t sc_ioh;
-	bus_dma_tag_t sc_dmat;
-	void *sc_intrh;
-
-	kmutex_t sc_lock;
-	kmutex_t sc_intr_lock;
-	kcondvar_t sc_chan[BCM2835_MBOX_NUMCHANNELS];
-	uint32_t sc_mbox[BCM2835_MBOX_NUMCHANNELS];
-};
+#include 
 
 static struct bcm2835mbox_softc *bcm2835mbox_sc;
 
-static int bcmmbox_match(device_t, cfdata_t, void *);
-static void bcmmbox_attach(device_t, device_t, void *);
-static int bcmmbox_intr1(struct bcm2835mbox_softc *, int);
-static int bcmmbox_intr(void *);
-
-CFATTACH_DECL_NEW(bcmmbox, sizeof(struct bcm2835mbox_softc),
-bcmmbox_match, bcmmbox_attach, NULL, NULL);
-
-/* ARGSUSED */
-static int
-bcmmbox_match(device_t parent, cfdata_t match, void *aux)
-{
-	const char * const compatible[] = { "brcm,bcm2835-mbox", NULL };
-	struct fdt_attach_args * const faa = aux;
-
-	return of_match_compatible(faa->faa_phandle, compatible);
-}
-
-static void
-bcmmbox_attach(device_t parent, device_t self, void *aux)
-{
-	struct bcm2835mbox_softc *sc = device_private(self);
-	struct fdt_attach_args * const faa = aux;
-	struct bcmmbox_attach_args baa;
-	const int phandle = faa->faa_phandle;
-	int i;
-
-	aprint_naive("\n");
-	aprint_normal(": VC mailbox\n");
-
-	sc->sc_dev = self;
-	sc->sc_iot = faa->faa_bst;
-	sc->sc_dmat = faa->faa_dmat;
-	mutex_init(>sc_lock, MUTEX_DEFAULT, IPL_NONE);
-	mutex_init(>sc_intr_lock, MUTEX_DEFAULT, IPL_VM);
-	for (i = 0; i < BCM2835_MBOX_NUMCHANNELS; ++i)
-		cv_init(>sc_chan[i], "bcmmbox");
-
-	bus_addr_t addr;
-	bus_size_t size;
-
-	if (fdtbus_get_reg(phandle, 0, , ) != 0) {
-		aprint_error(": couldn't get register address\n");
-		return;
-	}
-
-	if (bus_space_map(faa->faa_bst, addr, size, 0, >sc_ioh) != 0) {
-		aprint_error_dev(sc->sc_dev, "unable to map device\n");
-		return;
-	}
-
-	char intrstr[128];
-	if (!fdtbus_intr_str(phandle, 0, intrstr, sizeof(intrstr))) {
-		aprint_error(": failed to decode interrupt\n");
-		return;
-	}
-
-	sc->sc_intrh = fdtbus_intr_establish(phandle, 0, IPL_VM, 0,
-	bcmmbox_intr, sc);
-	if (sc->sc_intrh == NULL) {
-		aprint_error_dev(self, "failed to establish interrupt %s\n",
-		intrstr);
-		return;
-	}
-	aprint_normal_dev(self, "interrupting on %s\n", intrstr);
-
-	/* enable mbox interrupt */
-	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BCM2835_MBOX_CFG,
-	BCM2835_MBOX_CFG_DATAIRQEN);
-
-	if (bcm2835mbox_sc == NULL)
-		bcm2835mbox_sc = sc;
-
-	baa.baa_dmat = sc->sc_dmat;
-	sc->sc_platdev = config_found_ia(self, "bcmmboxbus", , NULL);
-}
-
 static int
 bcmmbox_intr1(struct bcm2835mbox_softc *sc, int cv)
 {
@@ -175,7 +82,29 @@ bcmmbox_intr1(struct bcm2835mbox_softc *
 	return ret;
 }
 
-static int
+void
+bcmmbox_attach(struct bcm2835mbox_softc *sc)
+{
+	struct bcmmbox_attach_args baa;
+	int i;
+
+	if (bcm2835mbox_sc == NULL)
+		bcm2835mbox_sc = sc;
+
+	mutex_init(>sc_lock, MUTEX_DEFAULT, IPL_NONE);
+	mutex_init(>sc_intr_lock, MUTEX_DEFAULT, IPL_VM);
+	for (i = 0; i < BCM2835_MBOX_NUMCHANNELS; ++i)
+		cv_init(>sc_chan[i], "bcmmbox");
+
+	/* enable mbox interrupt */
+	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BCM2835_MBOX_CFG,
+	BCM2835_MBOX_CFG_DATAIRQEN);
+
+	baa.baa_dmat = sc->sc_dmat;
+	sc->sc_platdev = config_found_ia(sc->sc_dev, "bcmmboxbus", , NULL);
+}
+
+int

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

2019-12-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 30 16:41:38 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Oops, don't match brcm,bcm2711-emmc2 here.

Thanks to jmcneill for pointing out my mistake


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.34 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.35
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.34	Mon Dec 30 15:31:15 2019
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Mon Dec 30 16:41:38 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.34 2019/12/30 15:31:15 skrll Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.35 2019/12/30 16:41:38 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.34 2019/12/30 15:31:15 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.35 2019/12/30 16:41:38 skrll Exp $");
 
 #include "bcmdmac.h"
 
@@ -97,7 +97,6 @@ bcmemmc_match(device_t parent, struct cf
 {
 	const char * const compatible[] = {
 	"brcm,bcm2835-sdhci",
-	"brcm,bcm2711-emmc2",
 	NULL
 	};
 	struct fdt_attach_args * const faa = aux;



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

2019-12-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 30 16:19:27 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h bcm283x_platform.c
bcm283x_platform.h

Log Message:
Fix up ARM_LOCAL for 2711 so that it works now.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/broadcom/bcm2835reg.h
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/arm/broadcom/bcm283x_platform.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm283x_platform.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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.28 src/sys/arch/arm/broadcom/bcm2835reg.h:1.29
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.28	Thu Dec 26 11:09:11 2019
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Mon Dec 30 16:19:27 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.28 2019/12/26 11:09:11 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.29 2019/12/30 16:19:27 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -202,8 +202,14 @@
 
 #define	BCM2835_UART0_CLK		300
 
+#define	BCM2711_ARM_LOCAL_BASE_BUS	0x4000
 #define	BCM2711_ARM_LOCAL_BASE		0xff80
-#define	BCM2711_ARM_LOCAL_SIZE		0x0010	/* 1MByte */
+#define	BCM2711_ARM_LOCAL_SIZE		0x0010	/* 1MBytes */
+
+#define	BCM2711_ARM_LOCAL_PHYS_TO_BUS(a) \
+((a) - BCM2711_ARM_LOCAL_BASE + BCM2711_ARM_LOCAL_BASE_BUS)
+#define	BCM2711_ARM_LOCAL_BUS_TO_PHYS(a) \
+((a) - BCM2711_ARM_LOCAL_BASE_BUS + BCM2711_ARM_LOCAL_BASE)
 
 #define	BCM2836_ARM_LOCAL_BASE		0x4000
 #define	BCM2836_ARM_LOCAL_SIZE		0x1000	/* 4KBytes */

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.30 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.31
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.30	Mon Dec 30 16:06:29 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Dec 30 16:19:27 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.30 2019/12/30 16:06:29 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.31 2019/12/30 16:19:27 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.30 2019/12/30 16:06:29 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.31 2019/12/30 16:19:27 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -187,9 +187,9 @@ bcm2711_bus_to_phys(bus_addr_t ba)
 	ba < BCM283X_PERIPHERALS_BASE_BUS + BCM283X_PERIPHERALS_SIZE)
 		return BCM2711_PERIPHERALS_BUS_TO_PHYS(ba);
 
-	if (ba >= BCM2711_ARM_LOCAL_BASE &&
-	ba < BCM2711_ARM_LOCAL_BASE + BCM2711_ARM_LOCAL_SIZE)
-		return ba;
+	if (ba >= BCM2711_ARM_LOCAL_BASE_BUS &&
+	ba < BCM2711_ARM_LOCAL_BASE_BUS + BCM2711_ARM_LOCAL_SIZE)
+		return BCM2711_ARM_LOCAL_BUS_TO_PHYS(ba);
 
 	return ba & ~BCM2835_BUSADDR_CACHE_MASK;
 }
@@ -333,7 +333,7 @@ bcm2711_platform_devmap(void)
 		BCM2711_ARM_LOCAL_SIZE),
 #if defined(MULTIPROCESSOR) && defined(__aarch64__)
 		/* for fdt cpu spin-table */
-		DEVMAP_ENTRY(BCM2836_ARM_SMP_VBASE, BCM2836_ARM_SMP_BASE,
+		DEVMAP_ENTRY(BCM2711_ARM_SMP_VBASE, BCM2836_ARM_SMP_BASE,
 		BCM2836_ARM_SMP_SIZE),
 #endif
 		DEVMAP_ENTRY_END

Index: src/sys/arch/arm/broadcom/bcm283x_platform.h
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.h:1.4 src/sys/arch/arm/broadcom/bcm283x_platform.h:1.5
--- src/sys/arch/arm/broadcom/bcm283x_platform.h:1.4	Tue Dec 24 14:10:51 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.h	Mon Dec 30 16:19:27 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.h,v 1.4 2019/12/24 14:10:51 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.h,v 1.5 2019/12/30 16:19:27 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -58,4 +58,7 @@
 #define	BCM2711_ARM_LOCAL_VBASE \
 	BCM2711_IOPHYSTOVIRT(BCM2711_ARM_LOCAL_BASE)
 
+#define	BCM2711_ARM_SMP_VBASE	\
+	BCM2711_IOPHYSTOVIRT(BCM2836_ARM_SMP_BASE)
+
 #endif /* _ARM_BCM2835REG_PLATFORM_H_ */



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

2019-12-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 30 16:06:29 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Invalidate the cache just before trying to read the results from the
firmware as RPI4 A72s can fill the cache with speculation


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.29 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.30
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.29	Mon Dec 30 15:36:37 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Dec 30 16:06:29 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.30 2019/12/30 16:06:29 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.30 2019/12/30 16:06:29 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -744,6 +744,13 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 
 	bcm2835_mbox_read(iot, ioh, BCMMBOX_CHANARM2VC, );
 
+	/*
+	 * RPI4 has Cortex A72 processors which do speculation, so
+	 * we need to invalidate the cache for an updates done by
+	 * the firmware
+	 */
+	cpu_dcache_inv_range((vaddr_t), sizeof(vb));
+
 	if (!vcprop_buffer_success_p(_hdr)) {
 		bootconfig.dramblocks = 1;
 		bootconfig.dram[0].address = 0x0;



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

2019-12-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 30 15:36:37 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_cprman.c bcm2835var.h
bcm283x_platform.c

Log Message:
Add emmc2 clock goop from mlelstv@


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_cprman.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm2835var.h
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm2835_cprman.c
diff -u src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.3 src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.4
--- src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.3	Tue Dec 24 13:40:56 2019
+++ src/sys/arch/arm/broadcom/bcm2835_cprman.c	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $ */
+/* $NetBSD: bcm2835_cprman.c,v 1.4 2019/12/30 15:36:37 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.4 2019/12/30 15:36:37 skrll Exp $");
 
 #include 
 #include 
@@ -56,6 +56,7 @@ enum {
 	CPRMAN_CLOCK_PERIIMAGE = 29,
 	CPRMAN_CLOCK_PWM = 30,
 	CPRMAN_CLOCK_PCM = 31,
+	CPRMAN_CLOCK_EMMC2 = 51,
 	CPRMAN_NCLOCK
 };
 
@@ -133,6 +134,8 @@ cprman_get_rate(void *priv, struct clk *
 		return bcm283x_clk_get_rate_vpu();
 	case CPRMAN_CLOCK_EMMC:
 		return bcm283x_clk_get_rate_emmc();
+	case CPRMAN_CLOCK_EMMC2:
+		return bcm283x_clk_get_rate_emmc2();
 	default:
 		panic("unsupported clock id %d\n", clk->id);
 	}
@@ -179,6 +182,7 @@ cprman_attach(device_t parent, device_t 
 	cprman_add_clock(sc, CPRMAN_CLOCK_UART, "uart");
 	cprman_add_clock(sc, CPRMAN_CLOCK_VPU, "vpu");
 	cprman_add_clock(sc, CPRMAN_CLOCK_EMMC, "emmc");
+	cprman_add_clock(sc, CPRMAN_CLOCK_EMMC2, "emmc2");
 
 	aprint_naive("\n");
 	aprint_normal(": BCM283x Clock Controller\n");

Index: src/sys/arch/arm/broadcom/bcm2835var.h
diff -u src/sys/arch/arm/broadcom/bcm2835var.h:1.4 src/sys/arch/arm/broadcom/bcm2835var.h:1.5
--- src/sys/arch/arm/broadcom/bcm2835var.h:1.4	Sun Apr  1 04:35:03 2018
+++ src/sys/arch/arm/broadcom/bcm2835var.h	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835var.h,v 1.4 2018/04/01 04:35:03 ryo Exp $	*/
+/*	$NetBSD: bcm2835var.h,v 1.5 2019/12/30 15:36:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -49,5 +49,6 @@ void bcm2836_cpu_hatch(struct cpu_info *
 u_int bcm283x_clk_get_rate_uart(void);
 u_int bcm283x_clk_get_rate_vpu(void);
 u_int bcm283x_clk_get_rate_emmc(void);
+u_int bcm283x_clk_get_rate_emmc2(void);
 
 #endif	/* _ARM_BROADCOM_BCM2835_VAR_H_ */

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.28 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.29
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.28	Tue Dec 24 14:10:51 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -402,6 +402,7 @@ static struct {
 	struct vcprop_tag_clockrate	vbt_emmcclockrate;
 	struct vcprop_tag_clockrate	vbt_armclockrate;
 	struct vcprop_tag_clockrate	vbt_vpuclockrate;
+	struct vcprop_tag_clockrate	vbt_emmc2clockrate;
 	struct vcprop_tag end;
 } vb __cacheline_aligned = {
 	.vb_hdr = {
@@ -488,6 +489,14 @@ static struct {
 		},
 		.id = VCPROP_CLK_CORE
 	},
+	.vbt_emmc2clockrate = {
+		.tag = {
+			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
+			.vpt_len = VCPROPTAG_LEN(vb.vbt_emmc2clockrate),
+			.vpt_rcode = VCPROPTAG_REQUEST
+		},
+		.id = VCPROP_CLK_EMMC2
+	},
 	.end = {
 		.vpt_tag = VCPROPTAG_NULL
 	}
@@ -639,6 +648,17 @@ bcm283x_clk_get_rate_emmc(void)
 	return 0;
 }
 
+u_int
+bcm283x_clk_get_rate_emmc2(void)
+{
+
+	if (vcprop_tag_success_p(_emmc2clockrate.tag) &&
+	vb.vbt_emmc2clockrate.rate > 0) {
+		return vb.vbt_emmc2clockrate.rate;
+	}
+	return 0;
+}
+
 
 
 static void
@@ -758,6 +778,15 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 	if (vcprop_tag_success_p(_armclockrate.tag))
 		printf("%s: arm clock%d\n", __func__,
 		vb.vbt_armclockrate.rate);
+	if (vcprop_tag_success_p(_vpuclockrate.tag))
+		printf("%s: vpu clock%d\n", __func__,
+		vb.vbt_vpuclockrate.rate);
+	if (vcprop_tag_success_p(_emmcclockrate.tag))
+		printf("%s: emmc clock   %d\n", 

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

2019-12-30 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Dec 30 15:31:15 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Match brcm,bcm2711-emmc2


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.33 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.34
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.33	Sun Aug 19 09:18:48 2018
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Mon Dec 30 15:31:15 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.33 2018/08/19 09:18:48 rin Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.34 2019/12/30 15:31:15 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.33 2018/08/19 09:18:48 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.34 2019/12/30 15:31:15 skrll Exp $");
 
 #include "bcmdmac.h"
 
@@ -97,6 +97,7 @@ bcmemmc_match(device_t parent, struct cf
 {
 	const char * const compatible[] = {
 	"brcm,bcm2835-sdhci",
+	"brcm,bcm2711-emmc2",
 	NULL
 	};
 	struct fdt_attach_args * const faa = aux;



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

2019-12-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Dec 26 11:09:11 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c bcm2835reg.h

Log Message:
Use PIC_IRQBASE_ALLOC for all pic_add calls and track/use each cpu irqbase


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/broadcom/bcm2835_intr.c
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.28 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.29
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.28	Wed Dec 25 10:49:29 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Thu Dec 26 11:09:11 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.29 2019/12/26 11:09:11 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.29 2019/12/26 11:09:11 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -99,7 +99,10 @@ static int  bcm2835_icu_match(device_t, 
 static void bcm2835_icu_attach(device_t, device_t, void *);
 
 static int bcm2835_int_base;
-static int bcm2836mp_int_base;
+static int bcm2836mp_int_base[BCM2836_NCPUS];
+
+#define	BCM2835_INT_BASE		bcm2835_int_base
+#define	BCM2836_INT_BASECPUN(n)		bcm2836mp_int_base[(n)]
 
 static void
 bcm2835_set_priority(struct pic_softc *pic, int ipl)
@@ -710,9 +713,9 @@ bcm2836mp_pic_find_pending_irqs(struct p
 	BCM2836_LOCAL_INTC_IRQPENDINGN(cpuid));
 
 	lpending &= ~BCM2836_INTBIT_GPUPENDING;
-	if (lpending & BCM2836MP_ALL_IRQS) {
-		ipl |= pic_mark_pending_sources(pic, 0 /* BCM2836_INT_LOCALBASE */,
-		lpending & BCM2836MP_ALL_IRQS);
+	const uint32_t allirqs = lpending & BCM2836MP_ALL_IRQS;
+	if (allirqs) {
+		ipl |= pic_mark_pending_sources(pic, 0, allirqs);
 	}
 
 	return ipl;
@@ -830,11 +833,7 @@ bcm2836mp_intr_init(void *priv, struct c
 	snprintf(suffix, sizeof(suffix), "#%lu", cpuid);
 	strlcat(pic->pic_name, suffix, sizeof(pic->pic_name));
 #endif
-	if (cpuid == 0) {
-		bcm2836mp_int_base = pic_add(pic, PIC_IRQBASE_ALLOC);
-	} else {
-		pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
-	}
+	bcm2836mp_int_base[cpuid] = pic_add(pic, PIC_IRQBASE_ALLOC);
 
 #if defined(MULTIPROCESSOR)
 	intr_establish(BCM2836_INT_MAILBOX0_CPUN(cpuid), IPL_HIGH,

Index: src/sys/arch/arm/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.27 src/sys/arch/arm/broadcom/bcm2835reg.h:1.28
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.27	Thu Dec 26 08:27:43 2019
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Thu Dec 26 11:09:11 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.27 2019/12/26 08:27:43 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.28 2019/12/26 11:09:11 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -139,14 +139,9 @@
 #define	BCM2835_INTC_ENABLEBASE		(BCM2835_INTC_BASE + 0x10)
 #define	BCM2835_INTC_DISABLEBASE	(BCM2835_INTC_BASE + 0x1c)
 
-#define BCM2835_INT_BASE		bcm2835_int_base
-
 #define	BCM2836_NCPUS			4
 #define	BCM2836_NIRQPERCPU		32
 
-#define	BCM2836_INT_LOCALBASE		bcm2836mp_int_base
-#define	BCM2836_INT_BASECPUN(n)		(BCM2836_INT_LOCALBASE + ((n) * BCM2836_NIRQPERCPU))
-
 #define	BCM2836_INT_CNTPSIRQ		0
 #define	BCM2836_INT_CNTPNSIRQ		1
 #define	BCM2836_INT_CNTHPIRQ		2



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

2019-12-26 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Dec 26 08:27:43 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h

Log Message:
Use PIC_IRQBASE_ALLOC and allow conditional attachment of interrupt
handlers (for RPI4)

(missing from previous commit)


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.26 src/sys/arch/arm/broadcom/bcm2835reg.h:1.27
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.26	Tue Dec 24 14:10:51 2019
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Thu Dec 26 08:27:43 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.26 2019/12/24 14:10:51 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.27 2019/12/26 08:27:43 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -139,18 +139,13 @@
 #define	BCM2835_INTC_ENABLEBASE		(BCM2835_INTC_BASE + 0x10)
 #define	BCM2835_INTC_DISABLEBASE	(BCM2835_INTC_BASE + 0x1c)
 
-#if defined(SOC_BCM2836)
-#define	BCM2835_INT_BASE		BCM2836_NIRQ
-#else
-#define	BCM2835_INT_BASE		0
-#endif /* !BCM2836 */
+#define BCM2835_INT_BASE		bcm2835_int_base
 
 #define	BCM2836_NCPUS			4
 #define	BCM2836_NIRQPERCPU		32
 
-#define	BCM2836_INT_LOCALBASE		0
+#define	BCM2836_INT_LOCALBASE		bcm2836mp_int_base
 #define	BCM2836_INT_BASECPUN(n)		(BCM2836_INT_LOCALBASE + ((n) * BCM2836_NIRQPERCPU))
-#define	BCM2836_NIRQ			(BCM2836_NIRQPERCPU * BCM2836_NCPUS)
 
 #define	BCM2836_INT_CNTPSIRQ		0
 #define	BCM2836_INT_CNTPNSIRQ		1



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

2019-12-25 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 25 10:49:29 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Use PIC_IRQBASE_ALLOC and allow conditional attachment of interrupt
handlers (for RPI4)


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.27 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.28
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.27	Fri Nov 29 17:44:27 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Wed Dec 25 10:49:29 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.27 2019/11/29 17:44:27 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.27 2019/11/29 17:44:27 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.28 2019/12/25 10:49:29 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -98,6 +98,9 @@ static bool bcm2836mp_icu_fdt_intrstr(de
 static int  bcm2835_icu_match(device_t, cfdata_t, void *);
 static void bcm2835_icu_attach(device_t, device_t, void *);
 
+static int bcm2835_int_base;
+static int bcm2836mp_int_base;
+
 static void
 bcm2835_set_priority(struct pic_softc *pic, int ipl)
 {
@@ -314,7 +317,7 @@ bcm2835_icu_attach(device_t parent, devi
 		bcmicu_sc = sc;
 		sc->sc_ioh = ioh;
 		sc->sc_phandle = phandle;
-		pic_add(_pic, BCM2835_INT_BASE);
+		bcm2835_int_base = pic_add(_pic, PIC_IRQBASE_ALLOC);
 		ifuncs = _fdt_funcs;
 	}
 
@@ -827,7 +830,11 @@ bcm2836mp_intr_init(void *priv, struct c
 	snprintf(suffix, sizeof(suffix), "#%lu", cpuid);
 	strlcat(pic->pic_name, suffix, sizeof(pic->pic_name));
 #endif
-	pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
+	if (cpuid == 0) {
+		bcm2836mp_int_base = pic_add(pic, PIC_IRQBASE_ALLOC);
+	} else {
+		pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
+	}
 
 #if defined(MULTIPROCESSOR)
 	intr_establish(BCM2836_INT_MAILBOX0_CPUN(cpuid), IPL_HIGH,



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

2019-12-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Dec 24 14:10:51 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h bcm283x_platform.c
bcm283x_platform.h

Log Message:
We follow linux mainline and they're using 2711 and not 2838 for RPI4


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/broadcom/bcm2835reg.h
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/broadcom/bcm283x_platform.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm283x_platform.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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.25 src/sys/arch/arm/broadcom/bcm2835reg.h:1.26
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.25	Wed Sep 25 18:05:39 2019
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Tue Dec 24 14:10:51 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.25 2019/09/25 18:05:39 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.26 2019/12/24 14:10:51 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -44,16 +44,16 @@
 #error Must define SOC_BCM2835 or SOC_BCM2836, and not both
 #endif
 
-#define	BCM2838_PERIPHERALS_BASE	0xfe00
+#define	BCM2711_PERIPHERALS_BASE	0xfe00
 #define	BCM2836_PERIPHERALS_BASE	0x3f00
 #define	BCM2835_PERIPHERALS_BASE	0x2000
 #define	BCM283X_PERIPHERALS_SIZE	0x0100	/* 16MBytes */
 #define	BCM283X_PERIPHERALS_BASE_BUS	0x7e00
 
-#define	BCM2838_PERIPHERALS_PHYS_TO_BUS(a) \
-((a) - BCM2838_PERIPHERALS_BASE + BCM283X_PERIPHERALS_BASE_BUS)
-#define	BCM2838_PERIPHERALS_BUS_TO_PHYS(a) \
-((a) - BCM283X_PERIPHERALS_BASE_BUS + BCM2838_PERIPHERALS_BASE)
+#define	BCM2711_PERIPHERALS_PHYS_TO_BUS(a) \
+((a) - BCM2711_PERIPHERALS_BASE + BCM283X_PERIPHERALS_BASE_BUS)
+#define	BCM2711_PERIPHERALS_BUS_TO_PHYS(a) \
+((a) - BCM283X_PERIPHERALS_BASE_BUS + BCM2711_PERIPHERALS_BASE)
 
 #define	BCM2836_PERIPHERALS_PHYS_TO_BUS(a) \
 ((a) - BCM2836_PERIPHERALS_BASE + BCM283X_PERIPHERALS_BASE_BUS)
@@ -212,8 +212,8 @@
 
 #define	BCM2835_UART0_CLK		300
 
-#define	BCM2838_ARM_LOCAL_BASE		0xff80
-#define	BCM2838_ARM_LOCAL_SIZE		0x0010	/* 1MByte */
+#define	BCM2711_ARM_LOCAL_BASE		0xff80
+#define	BCM2711_ARM_LOCAL_SIZE		0x0010	/* 1MByte */
 
 #define	BCM2836_ARM_LOCAL_BASE		0x4000
 #define	BCM2836_ARM_LOCAL_SIZE		0x1000	/* 4KBytes */

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.27 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.28
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.27	Sun Dec 22 12:21:45 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Dec 24 14:10:51 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.27 2019/12/22 12:21:45 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.27 2019/12/22 12:21:45 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -113,7 +113,7 @@ __KERNEL_RCSID(0, "$NetBSD: bcm283x_plat
 void bcm2835_platform_early_putchar(char c);
 void bcm2836_platform_early_putchar(char c);
 void bcm2837_platform_early_putchar(char c);
-void bcm2838_platform_early_putchar(char c);
+void bcm2711_platform_early_putchar(char c);
 
 extern void bcmgenfb_set_console_dev(device_t dev);
 void bcmgenfb_set_ioctl(int(*)(void *, void *, u_long, void *, int, struct lwp *));
@@ -130,19 +130,19 @@ bs_protos(bcm2835);
 bs_protos(bcm2835_a4x);
 bs_protos(bcm2836);
 bs_protos(bcm2836_a4x);
-bs_protos(bcm2838);
-bs_protos(bcm2838_a4x);
+bs_protos(bcm2711);
+bs_protos(bcm2711_a4x);
 
 struct bus_space bcm2835_bs_tag;
 struct bus_space bcm2835_a4x_bs_tag;
 struct bus_space bcm2836_bs_tag;
 struct bus_space bcm2836_a4x_bs_tag;
-struct bus_space bcm2838_bs_tag;
-struct bus_space bcm2838_a4x_bs_tag;
+struct bus_space bcm2711_bs_tag;
+struct bus_space bcm2711_a4x_bs_tag;
 
 static paddr_t bcm2835_bus_to_phys(bus_addr_t);
 static paddr_t bcm2836_bus_to_phys(bus_addr_t);
-static paddr_t bcm2838_bus_to_phys(bus_addr_t);
+static paddr_t bcm2711_bus_to_phys(bus_addr_t);
 
 #ifdef VERBOSE_INIT_ARM
 #define VPRINTF(...)	printf(__VA_ARGS__)
@@ -179,16 +179,16 @@ bcm2836_bus_to_phys(bus_addr_t ba)
 }
 
 static paddr_t
-bcm2838_bus_to_phys(bus_addr_t ba)
+bcm2711_bus_to_phys(bus_addr_t ba)
 {
 
 	/* Attempt to find the PA device mapping */
 	if (ba >= BCM283X_PERIPHERALS_BASE_BUS &&
 	ba < BCM283X_PERIPHERALS_BASE_BUS + BCM283X_PERIPHERALS_SIZE)
-		return BCM2838_PERIPHERALS_BUS_TO_PHYS(ba);
+		return BCM2711_PERIPHERALS_BUS_TO_PHYS(ba);
 
-	if (ba >= BCM2838_ARM_LOCAL_BASE &&
-	ba < BCM2838_ARM_LOCAL_BASE + BCM2838_ARM_LOCAL_SIZE)
+	if (ba >= 

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

2019-12-24 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Dec 24 13:40:56 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_cprman.c

Log Message:
Match brcm,bcm2711-cprman


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/broadcom/bcm2835_cprman.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/broadcom/bcm2835_cprman.c
diff -u src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.2 src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.3
--- src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.2	Sun Sep  9 07:21:17 2018
+++ src/sys/arch/arm/broadcom/bcm2835_cprman.c	Tue Dec 24 13:40:56 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_cprman.c,v 1.2 2018/09/09 07:21:17 aymeric Exp $ */
+/* $NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.2 2018/09/09 07:21:17 aymeric Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $");
 
 #include 
 #include 
@@ -155,7 +155,10 @@ cprman_add_clock(struct cprman_softc *sc
 static int
 cprman_match(device_t parent, cfdata_t cf, void *aux)
 {
-	const char * const compatible[] = { "brcm,bcm2835-cprman", NULL };
+	const char * const compatible[] = {
+	"brcm,bcm2835-cprman",
+	"brcm,bcm2711-cprman",
+	NULL };
 	const struct fdt_attach_args *faa = aux;
 
 	return of_match_compatible(faa->faa_phandle, compatible);



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

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

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc.c

Log Message:
Rewrite the bcm2835 i2c driver as an interrupt-driven state machine.  This
improves general system responsiveness when tranferring large amounts of
data on a single-core Pi board.  This also includes:

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.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_bsc.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/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.13 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.13	Sun Jul  1 21:23:16 2018
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Sun Dec 22 23:24:56 2019
@@ -1,6 +1,7 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.13 2018/07/01 21:23:16 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.14 2019/12/22 23:24:56 thorpej Exp $	*/
 
 /*
+ * Copyright (c) 2019 Jason R. Thorpe
  * Copyright (c) 2012 Jonathan A. Kollasch
  * All rights reserved.
  *
@@ -27,11 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.13 2018/07/01 21:23:16 jmcneill Exp $");
-
-#if defined(_KERNEL_OPT)
-#include "opt_kernhist.h"
-#endif
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.14 2019/12/22 23:24:56 thorpej Exp $");
 
 #include 
 #include 
@@ -39,7 +36,6 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.
 #include 
 #include 
 #include 
-#include 
 #include 
 
 #include 
@@ -49,42 +45,118 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.
 
 #include 
 
-KERNHIST_DEFINE(bsciichist);
+typedef enum {
+	BSC_EXEC_STATE_IDLE		= 0,
+	BSC_EXEC_STATE_SEND_ADDR	= 1,
+	BSC_EXEC_STATE_SEND_CMD		= 2,
+	BSC_EXEC_STATE_SEND_DATA	= 3,
+	BSC_EXEC_STATE_RECV_DATA	= 4,
+	BSC_EXEC_STATE_DONE		= 5,
+	BSC_EXEC_STATE_ERROR		= 6,
+} bsc_exec_state_t;
+
+#define	BSC_EXEC_STATE_SENDING(sc)	\
+	((sc)->sc_exec_state >= BSC_EXEC_STATE_SEND_ADDR && \
+	 (sc)->sc_exec_state <= BSC_EXEC_STATE_SEND_DATA)
+
+#define	BSC_EXEC_STATE_RECEIVING(sc)	\
+	((sc)->sc_exec_state == BSC_EXEC_STATE_RECV_DATA)
 
 struct bsciic_softc {
 	device_t sc_dev;
 	bus_space_tag_t sc_iot;
 	bus_space_handle_t sc_ioh;
 	struct i2c_controller sc_i2c;
-	kmutex_t sc_buslock;
 	void *sc_inth;
 
 	struct clk *sc_clk;
 	u_int sc_frequency;
 	u_int sc_clkrate;
+
+	kmutex_t sc_intr_lock;
+	kcondvar_t sc_intr_wait;
+
+	struct {
+		i2c_op_t op;
+		i2c_addr_t addr;
+		const void *cmdbuf;
+		size_t cmdlen;
+		void *databuf;
+		size_t datalen;
+		int flags;
+	} sc_exec;
+
+	/*
+	 * Everything below here protected by the i2c controller lock
+	 * /and/ sc_intr_lock (if we're using interrupts).
+	 */
+
+	bsc_exec_state_t sc_exec_state;
+
+	uint8_t *sc_buf;
+	size_t sc_bufpos;
+	size_t sc_buflen;
+
+	uint32_t sc_c_bits;
+	bool sc_expecting_interrupt;
+};
+
+static void	bsciic_exec_func_idle(struct bsciic_softc * const);
+static void	bsciic_exec_func_send_addr(struct bsciic_softc * const);
+static void	bsciic_exec_func_send_cmd(struct bsciic_softc * const);
+static void	bsciic_exec_func_send_data(struct bsciic_softc * const);
+static void	bsciic_exec_func_recv_data(struct bsciic_softc * const);
+static void	bsciic_exec_func_done(struct bsciic_softc * const);
+static void	bsciic_exec_func_error(struct bsciic_softc * const);
+
+const struct {
+	void			(*func)(struct bsciic_softc * const);
+	uint32_t		c_bits;
+	uint32_t		s_bits;
+} bsciic_exec_state_data[] = {
+	[BSC_EXEC_STATE_IDLE] = {
+		.func = bsciic_exec_func_idle,
+	},
+	[BSC_EXEC_STATE_SEND_ADDR] = {
+		.func = bsciic_exec_func_send_addr,
+	},
+	[BSC_EXEC_STATE_SEND_CMD] = {
+		.func = bsciic_exec_func_send_cmd,
+		.c_bits = BSC_C_INTT,
+		.s_bits = BSC_S_TXW,
+	},
+	[BSC_EXEC_STATE_SEND_DATA] = {
+		.func = bsciic_exec_func_send_data,
+		.c_bits = BSC_C_INTT,
+		.s_bits = BSC_S_TXW,
+	},
+	[BSC_EXEC_STATE_RECV_DATA] = {
+		.func = bsciic_exec_func_recv_data,
+		.c_bits = BSC_C_READ | BSC_C_INTR,
+		.s_bits = BSC_S_RXR,
+	},
+	[BSC_EXEC_STATE_DONE] = {
+		.func = bsciic_exec_func_done,
+	},
+	[BSC_EXEC_STATE_ERROR] = {
+		.func = bsciic_exec_func_error,
+	},
 };
 
 static int bsciic_match(device_t, cfdata_t, void *);
 static void bsciic_attach(device_t, device_t, void *);
 
-void bsciic_dump_regs(struct bsciic_softc * const);
-
 static int  bsciic_acquire_bus(void *, int);
 static void bsciic_release_bus(void *, int);
 static int  bsciic_exec(void *, i2c_op_t, 

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

2019-12-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Dec 22 12:21:45 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Add brcm,bcm2711 as an alias for brcm,bcm2838


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.26 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.27
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.26	Sat Sep 28 07:39:30 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Sun Dec 22 12:21:45 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.26 2019/09/28 07:39:30 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.27 2019/12/22 12:21:45 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.26 2019/09/28 07:39:30 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.27 2019/12/22 12:21:45 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1516,4 +1516,5 @@ static const struct arm_platform bcm2838
 ARM_PLATFORM(bcm2836, "brcm,bcm2836", _platform);
 ARM_PLATFORM(bcm2837, "brcm,bcm2837", _platform);
 ARM_PLATFORM(bcm2838, "brcm,bcm2838", _platform);
+ARM_PLATFORM(bcm2711, "brcm,bcm2711", _platform);
 #endif



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

2019-05-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri May 10 08:28:50 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c

Log Message:
Take a lead from sys/dev/gpio/gpio.c:gpio_intr_str and report edge vs
level. etc interrupt type.

>From yarl-baudig


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.11 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.12
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.11	Sun Mar  3 16:29:00 2019
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Fri May 10 08:28:50 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.11 2019/03/03 16:29:00 skrll Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.12 2019/05/10 08:28:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013, 2014, 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.11 2019/03/03 16:29:00 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.12 2019/05/10 08:28:50 skrll Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -671,16 +671,40 @@ bcmgpio_fdt_intrstr(device_t dev, u_int 
 {
 
 	/* 1st cell is the GPIO number */
-	/* 3rd cell is flags */
+	/* 2nd cell is flags */
 	if (!specifier)
 		return (false);
 	const u_int bank = be32toh(specifier[0]) / 32;
 	const u_int pin = be32toh(specifier[0]) % 32;
+	const u_int type = be32toh(specifier[1]) & 0xf;
+	char const* typestr;
 
 	if (bank >= BCMGPIO_NBANKS)
 		return (false);
+	switch (type) {
+	case FDT_INTR_TYPE_DOUBLE_EDGE:
+		typestr = "double edge";
+		break;
+	case FDT_INTR_TYPE_POS_EDGE:
+		typestr = "positive edge";
+		break;
+	case FDT_INTR_TYPE_NEG_EDGE:
+		typestr = "negative edge";
+		break;
+	case FDT_INTR_TYPE_HIGH_LEVEL:
+		typestr = "high level";
+		break;
+	case FDT_INTR_TYPE_LOW_LEVEL:
+		typestr = "low level";
+		break;
+	default:
+		aprint_error_dev(dev, "%s: unsupported irq type 0x%x\n",
+		__func__, type);
+
+		return (false);
+	}
 
-	snprintf(buf, buflen, "GPIO %u", (bank * 32) + pin);
+	snprintf(buf, buflen, "GPIO %u (%s)", (bank * 32) + pin, typestr);
 
 	return (true);
 }



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

2019-04-01 Thread Tetsuya Isaki
Module Name:src
Committed By:   isaki
Date:   Tue Apr  2 03:52:17 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c

Log Message:
Fix indent.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.12 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.12	Mon Sep  3 16:29:23 2018
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Tue Apr  2 03:52:17 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.12 2018/09/03 16:29:23 riastradh Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.13 2019/04/02 03:52:17 isaki Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.12 2018/09/03 16:29:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.13 2019/04/02 03:52:17 isaki Exp $");
 
 #include 
 #include 
@@ -486,7 +486,7 @@ vcaudio_worker(void *priv)
 		msg.u.write.cookie = intrarg;
 		msg.u.write.silence = 0;
 
-		block = (uint8_t *)sc->sc_pstart + sc->sc_ppos;
+		block = (uint8_t *)sc->sc_pstart + sc->sc_ppos;
 		resid = count;
 		off = 0;
 
@@ -521,7 +521,7 @@ vcaudio_worker(void *priv)
 			sc->sc_ppos = 0;
 
 		if (!sc->sc_started) {
-		++sc->sc_pblkcnt;
+			++sc->sc_pblkcnt;
 
 			if (sc->sc_pblkcnt == VCAUDIO_PREFILLCOUNT) {
 



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

2019-03-26 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Wed Mar 27 05:47:50 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Fix to show counters of "bcm2836 pic" by "intrctl list" correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.19 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.20
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.19	Fri Mar  1 14:53:12 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Wed Mar 27 05:47:50 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.19 2019/03/01 14:53:12 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.20 2019/03/27 05:47:50 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.19 2019/03/01 14:53:12 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.20 2019/03/27 05:47:50 ryo Exp $");
 
 #define _INTR_PRIVATE
 
@@ -673,6 +673,14 @@ bcm2836mp_intr_init(void *priv, struct c
 
 #if defined(MULTIPROCESSOR)
 	pic->pic_cpus = ci->ci_kcpuset;
+
+	/*
+	 * Append "#n" to avoid duplication of .pic_name[]
+	 * It should be a unique id for intr_get_source()
+	 */
+	char suffix[sizeof("#0")];
+	snprintf(suffix, sizeof(suffix), "#%lu", cpuid);
+	strlcat(pic->pic_name, suffix, sizeof(pic->pic_name));
 #endif
 	pic_add(pic, BCM2836_INT_BASECPUN(cpuid));
 



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

2019-03-03 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Mar  3 16:29:00 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.10 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.11
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.10	Thu Feb  7 21:16:35 2019
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Sun Mar  3 16:29:00 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.10 2019/02/07 21:16:35 mlelstv Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.11 2019/03/03 16:29:00 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2013, 2014, 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.10 2019/02/07 21:16:35 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.11 2019/03/03 16:29:00 skrll Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -414,7 +414,7 @@ bcmgpio_intr(void *arg)
 			if (!mpsafe)
 KERNEL_UNLOCK_ONE(curlwp);
 		}
-		
+
 		/*
 		 * Now that all of the handlers have been called,
 		 * we can clear the indicators for any level-triggered
@@ -450,7 +450,7 @@ bmcgpio_intr_enable(struct bcmgpio_softc
 	/* Can't have HIGH and LOW together. */
 	if (has_level == (BCMGPIO_INTR_HIGH_LEVEL|BCMGPIO_INTR_LOW_LEVEL))
 		return (NULL);
-	
+
 	/* Can't have EDGE and LEVEL together. */
 	if (has_edge && has_level)
 		return (NULL);



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

2019-03-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Mar  1 14:53:12 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Handle processor private interrupts better and add support for the PMU
interrupt.

Thanks to jmcneill for review and suggestions.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.18 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.19
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.18	Fri Mar  1 08:05:46 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Fri Mar  1 14:53:12 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.18 2019/03/01 08:05:46 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.19 2019/03/01 14:53:12 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.18 2019/03/01 08:05:46 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.19 2019/03/01 14:53:12 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -40,6 +40,8 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_intr
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 
 #include 
@@ -146,6 +148,20 @@ static struct fdtbus_interrupt_controlle
 	.intrstr = bcm2836mp_icu_fdt_intrstr
 };
 
+struct bcm2836mp_interrupt {
+	bool bi_done;
+	TAILQ_ENTRY(bcm2836mp_interrupt) bi_next;
+	int bi_irq;
+	int bi_ipl;
+	int bi_flags;
+	int (*bi_func)(void *);
+	void *bi_arg;
+	void *bi_ihs[BCM2836_NCPUS];
+};
+
+static TAILQ_HEAD(, bcm2836mp_interrupt) bcm2836mp_interrupts =
+TAILQ_HEAD_INITIALIZER(bcm2836mp_interrupts);
+
 struct bcm2835icu_softc {
 	device_t		sc_dev;
 	bus_space_tag_t		sc_iot;
@@ -450,20 +466,19 @@ bcm2835_icu_fdt_intrstr(device_t dev, u_
 }
 
 #define	BCM2836MP_TIMER_IRQS	__BITS(3,0)
-#define	BCM2836MP_MAILBOX_IRQS	__BITS(4,4)
-
-#define	BCM2836MP_ALL_IRQS	(BCM2836MP_TIMER_IRQS | BCM2836MP_MAILBOX_IRQS)
+#define	BCM2836MP_MAILBOX_IRQS	__BITS(4,7)
+#define	BCM2836MP_GPU_IRQ	__BIT(8)
+#define	BCM2836MP_PMU_IRQ	__BIT(9)
+#define	BCM2836MP_ALL_IRQS	(BCM2836MP_TIMER_IRQS | BCM2836MP_MAILBOX_IRQS | BCM2836MP_GPU_IRQ | BCM2836MP_PMU_IRQ)
 
 static void
 bcm2836mp_pic_unblock_irqs(struct pic_softc *pic, size_t irqbase,
 uint32_t irq_mask)
 {
-	struct cpu_info * const ci = curcpu();
-	const cpuid_t cpuid = ci->ci_core_id;
 	const bus_space_tag_t iot = bcml1icu_sc->sc_iot;
 	const bus_space_handle_t ioh = bcml1icu_sc->sc_ioh;
+	const cpuid_t cpuid = pic - _pic[0];
 
-	KASSERT(pic == _pic[cpuid]);
 	KASSERT(irqbase == 0);
 
 	if (irq_mask & BCM2836MP_TIMER_IRQS) {
@@ -492,6 +507,12 @@ bcm2836mp_pic_unblock_irqs(struct pic_so
 		BCM2836_LOCAL_MAILBOX_IRQ_CONTROL_SIZE,
 		BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE);
 	}
+	if (irq_mask & BCM2836MP_PMU_IRQ) {
+		bus_space_write_4(iot, ioh, BCM2836_LOCAL_PM_ROUTING_SET,
+		__BIT(cpuid));
+		bus_space_barrier(iot, ioh, BCM2836_LOCAL_PM_ROUTING_SET, 4,
+		BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE);
+	}
 
 	return;
 }
@@ -500,12 +521,10 @@ static void
 bcm2836mp_pic_block_irqs(struct pic_softc *pic, size_t irqbase,
 uint32_t irq_mask)
 {
-	struct cpu_info * const ci = curcpu();
-	const cpuid_t cpuid = ci->ci_core_id;
 	const bus_space_tag_t iot = bcml1icu_sc->sc_iot;
 	const bus_space_handle_t ioh = bcml1icu_sc->sc_ioh;
+	const cpuid_t cpuid = pic - _pic[0];
 
-	KASSERT(pic == _pic[cpuid]);
 	KASSERT(irqbase == 0);
 
 	if (irq_mask & BCM2836MP_TIMER_IRQS) {
@@ -526,6 +545,10 @@ bcm2836mp_pic_block_irqs(struct pic_soft
 		BCM2836_LOCAL_MAILBOX_IRQ_CONTROLN(cpuid),
 		val);
 	}
+	if (irq_mask & BCM2836MP_PMU_IRQ) {
+		bus_space_write_4(iot, ioh, BCM2836_LOCAL_PM_ROUTING_CLR,
+		 __BIT(cpuid));
+	}
 
 	bcm2835_barrier();
 	return;
@@ -656,14 +679,18 @@ bcm2836mp_intr_init(void *priv, struct c
 #if defined(MULTIPROCESSOR)
 	intr_establish(BCM2836_INT_MAILBOX0_CPUN(cpuid), IPL_HIGH,
 	IST_LEVEL | IST_MPSAFE, bcm2836mp_ipi_handler, NULL);
-#endif
-	/* clock interrupt will attach with gtmr */
-	if (cpuid == 0)
-		return;
-#if defined(SOC_BCM2836)
-	intr_establish(BCM2836_INT_CNTVIRQ_CPUN(cpuid), IPL_CLOCK,
-	IST_LEVEL | IST_MPSAFE, gtmr_intr, NULL);
 
+	struct bcm2836mp_interrupt *bip;
+	TAILQ_FOREACH(bip, _interrupts, bi_next) {
+		if (bip->bi_done)
+			continue;
+
+		const int irq = BCM2836_INT_BASECPUN(cpuid) + bip->bi_irq;
+		void *ih = intr_establish(irq, bip->bi_ipl,
+		IST_LEVEL | bip->bi_flags, bip->bi_func, bip->bi_arg);
+
+		bip->bi_ihs[cpuid] = ih;
+	}
 #endif
 }
 
@@ -672,7 +699,7 @@ bcm2836mp_icu_fdt_decode_irq(u_int *spec
 {
 	if (!specifier)
 		return -1;
-	return be32toh(specifier[0]) + BCM2836_INT_LOCALBASE;
+	return be32toh(specifier[0]);
 }
 
 static void *
@@ -680,19 +707,95 @@ 

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

2019-03-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Fri Mar  1 08:05:46 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Sprinkle static


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.17 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.18
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.17	Sun Feb 10 08:39:48 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Fri Mar  1 08:05:46 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.17 2019/02/10 08:39:48 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.18 2019/03/01 08:05:46 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.17 2019/02/10 08:39:48 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.18 2019/03/01 08:05:46 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -108,7 +108,7 @@ static struct pic_ops bcm2835_picops = {
 	.pic_set_priority = bcm2835_set_priority,
 };
 
-struct pic_softc bcm2835_pic = {
+static struct pic_softc bcm2835_pic = {
 	.pic_ops = _picops,
 	.pic_maxsources = BCM2835_NIRQ,
 	.pic_name = "bcm2835 pic",
@@ -126,7 +126,7 @@ static struct pic_ops bcm2836mp_picops =
 #endif
 };
 
-struct pic_softc bcm2836mp_pic[BCM2836_NCPUS] = {
+static struct pic_softc bcm2836mp_pic[BCM2836_NCPUS] = {
 	[0 ... BCM2836_NCPUS - 1] = {
 		.pic_ops = _picops,
 		.pic_maxsources = BCM2836_NIRQPERCPU,



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

2019-02-10 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Feb 10 08:39:48 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Add some more interrupt source names


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.16 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.17
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.16	Thu Jan  3 10:26:41 2019
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Sun Feb 10 08:39:48 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.16 2019/01/03 10:26:41 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.17 2019/02/10 08:39:48 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.16 2019/01/03 10:26:41 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.17 2019/02/10 08:39:48 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -192,6 +192,7 @@ static const char * const bcm2835_source
 static const char * const bcm2836mp_sources[BCM2836_NIRQPERCPU] = {
 	"cntpsirq",	"cntpnsirq",	"cnthpirq",	"cntvirq",
 	"mailbox0",	"mailbox1",	"mailbox2",	"mailbox3",
+	"gpu",		"pmu"
 };
 
 #define	BCM2836_INTBIT_GPUPENDING	__BIT(8)



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

2019-02-07 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Thu Feb  7 21:16:35 UTC 2019

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c

Log Message:
Support configuration of alternate functions.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.9 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.10
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.9	Sat Jan 26 14:38:29 2019
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Thu Feb  7 21:16:35 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.9 2019/01/26 14:38:29 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.10 2019/02/07 21:16:35 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2013, 2014, 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.9 2019/01/26 14:38:29 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.10 2019/02/07 21:16:35 mlelstv Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -288,7 +288,10 @@ bcmgpio_attach(device_t parent, device_t
 			sc->sc_gpio_pins[pin].pin_caps = GPIO_PIN_INPUT |
 GPIO_PIN_OUTPUT |
 GPIO_PIN_PUSHPULL | GPIO_PIN_TRISTATE |
-GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN;
+GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN |
+GPIO_PIN_ALT0 | GPIO_PIN_ALT1 |
+GPIO_PIN_ALT2 | GPIO_PIN_ALT3 |
+GPIO_PIN_ALT4 | GPIO_PIN_ALT5;
 			sc->sc_gpio_pins[pin].pin_intrcaps =
 GPIO_INTR_POS_EDGE |
 GPIO_INTR_NEG_EDGE |
@@ -299,11 +302,11 @@ bcmgpio_attach(device_t parent, device_t
 			/* read initial state */
 			sc->sc_gpio_pins[pin].pin_state =
 bcm2835gpio_gpio_pin_read(sc, pin);
-			DPRINTF(1, ("%s: attach pin %d\n", device_xname(sc->sc_dev), pin));
+			aprint_debug_dev(sc->sc_dev, "attach pin %d\n", pin);
 		} else {
 			sc->sc_gpio_pins[pin].pin_caps = 0;
 			sc->sc_gpio_pins[pin].pin_state = 0;
-  			DPRINTF(1, ("%s: skip pin %d - func = 0x%x\n", device_xname(sc->sc_dev), pin, func));
+			aprint_debug_dev(sc->sc_dev, "skip pin %d - func = %x\n", pin, func);
 		}
 	}
 
@@ -329,7 +332,7 @@ bcmgpio_attach(device_t parent, device_t
 			MIN((bank * 32) + 31, BCMGPIO_MAXPINS),
 			intrstr);
 		} else {
-			aprint_normal_dev(self,
+			aprint_error_dev(self,
 			"failed to establish interrupt for pins %d..%d\n",
 			bank * 32,
 			MIN((bank * 32) + 31, BCMGPIO_MAXPINS));
@@ -787,17 +790,49 @@ bcm2835gpio_gpio_pin_ctl(void *arg, int 
 {
 	struct bcmgpio_softc *sc = arg;
 	uint32_t cmd;
+	uint32_t altmask = GPIO_PIN_ALT0 | GPIO_PIN_ALT1 |
+	   GPIO_PIN_ALT2 | GPIO_PIN_ALT3 |
+	   GPIO_PIN_ALT4 | GPIO_PIN_ALT5;
 
 	DPRINTF(2, ("%s: gpio_ctl pin %d flags 0x%x\n", device_xname(sc->sc_dev), pin, flags));
 
 	mutex_enter(>sc_lock);
 	if (flags & (GPIO_PIN_OUTPUT|GPIO_PIN_INPUT)) {
-		if ((flags & GPIO_PIN_INPUT) || !(flags & GPIO_PIN_OUTPUT)) {
+		if ((flags & GPIO_PIN_INPUT) != 0) {
 			/* for safety INPUT will overide output */
 			bcm283x_pin_setfunc(sc, pin, BCM2835_GPIO_IN);
 		} else {
 			bcm283x_pin_setfunc(sc, pin, BCM2835_GPIO_OUT);
 		}
+	} else if ((flags & altmask) != 0) {
+		u_int func;
+
+		switch (flags & altmask) {
+		case GPIO_PIN_ALT0:
+			func = BCM2835_GPIO_ALT0;
+			break;
+		case GPIO_PIN_ALT1:
+			func = BCM2835_GPIO_ALT1;
+			break;
+		case GPIO_PIN_ALT2:
+			func = BCM2835_GPIO_ALT2;
+			break;
+		case GPIO_PIN_ALT3:
+			func = BCM2835_GPIO_ALT3;
+			break;
+		case GPIO_PIN_ALT4:
+			func = BCM2835_GPIO_ALT4;
+			break;
+		case GPIO_PIN_ALT5:
+			func = BCM2835_GPIO_ALT5;
+			break;
+		default:
+			/* ignored below */
+			func = BCM2835_GPIO_IN;
+			break;
+		}
+		if (func != BCM2835_GPIO_IN)
+			bcm283x_pin_setfunc(sc, pin, func);
 	}
 
 	if (flags & (GPIO_PIN_PULLUP|GPIO_PIN_PULLDOWN)) {



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

2018-10-19 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Sat Oct 20 05:53:22 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
- fix AP spinup on bcm283x
- "brcm,bcm2836-smp" is a enable-method for only 32bit bcm2836.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.20 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.21
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.20	Thu Oct 18 09:01:52 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Sat Oct 20 05:53:22 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.20 2018/10/18 09:01:52 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.21 2018/10/20 05:53:22 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.20 2018/10/18 09:01:52 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.21 2018/10/20 05:53:22 ryo Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -729,6 +729,8 @@ static void
 bcm2836_mpstart(void)
 {
 #ifdef MULTIPROCESSOR
+#ifdef __arm__
+	/* implementation dependent string "brcm,bcm2836-smp" for ARM 32-bit */
 	const char *method;
 
 	const int cpus = OF_finddevice("/cpus");
@@ -738,7 +740,6 @@ bcm2836_mpstart(void)
 		return;
 	}
 
-	/* implementation dependent string "brcm,bcm2836-smp" for ARM 32-bit */
 	method = fdtbus_get_string(cpus, "enable-method");
 	if ((method != NULL) && (strcmp(method, "brcm,bcm2836-smp") == 0)) {
 		arm_cpu_max = RPI_CPU_MAX;
@@ -772,9 +773,10 @@ bcm2836_mpstart(void)
 		}
 		return;
 	}
+#endif /* __arm__ */
 
 	/* try enable-method each cpus */
-	arm_fdt_cpu_bootstrap();
+	arm_fdt_cpu_mpstart();
 #endif /* MULTIPROCESSOR */
 }
 
@@ -1183,6 +1185,7 @@ bcm2836_platform_bootstrap(void)
 
 #ifdef MULTIPROCESSOR
 	arm_cpu_max = RPI_CPU_MAX;
+	arm_fdt_cpu_bootstrap();
 #endif
 }
 #endif



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

2018-09-28 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Fri Sep 28 13:24:02 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c

Log Message:
Fix previous; follow the binding spec for this device when decoding
interrupt specifiers.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.7 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.8
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.7	Sat May 19 14:02:10 2018
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Fri Sep 28 13:24:02 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.7 2018/05/19 14:02:10 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.8 2018/09/28 13:24:02 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013, 2014, 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.7 2018/05/19 14:02:10 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.8 2018/09/28 13:24:02 jmcneill Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -560,12 +560,11 @@ bcmgpio_fdt_intr_establish(device_t dev,
 		return (NULL);
 	}
 
-	/* 1st cell is the bank */
-	/* 2nd cell is the pin */
-	/* 3rd cell is flags */
-	const u_int bank = be32toh(specifier[0]);
-	const u_int pin = be32toh(specifier[1]);
-	const u_int type = be32toh(specifier[2]) & 0xf;
+	/* 1st cell is the GPIO number */
+	/* 2nd cell is flags */
+	const u_int bank = be32toh(specifier[0]) / 32;
+	const u_int pin = be32toh(specifier[0]) % 32;
+	const u_int type = be32toh(specifier[1]) & 0xf;
 
 	switch (type) {
 	case 0x1:
@@ -668,19 +667,16 @@ static bool
 bcmgpio_fdt_intrstr(device_t dev, u_int *specifier, char *buf, size_t buflen)
 {
 
-	/* 1st cell is the bank */
-	/* 2nd cell is the pin */
+	/* 1st cell is the GPIO number */
 	/* 3rd cell is flags */
 	if (!specifier)
 		return (false);
-	const u_int bank = be32toh(specifier[0]);
-	const u_int pin = be32toh(specifier[1]);
+	const u_int bank = be32toh(specifier[0]) / 32;
+	const u_int pin = be32toh(specifier[0]) % 32;
 
 	if (bank >= BCMGPIO_NBANKS)
 		return (false);
-	if (pin >= 32)
-		return (false);
-	
+
 	snprintf(buf, buflen, "GPIO %u", (bank * 32) + pin);
 
 	return (true);



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

2018-08-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Aug 28 14:57:04 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Fix arm non-MULTIPROCESSOR build for RPI2


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.15 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.16
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.15	Sun Aug 26 18:15:49 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Aug 28 14:57:03 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.15 2018/08/26 18:15:49 ryo Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.16 2018/08/28 14:57:03 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.15 2018/08/26 18:15:49 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.16 2018/08/28 14:57:03 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -799,6 +799,7 @@ bcm2836_bootstrap(void)
 		/* Wake up AP in case firmware has placed it in WFE state */
 		__asm __volatile("sev" ::: "memory");
 
+#ifdef MULTIPROCESSOR
 		/* Wait for APs to start */
 		for (int loop = 0; loop < 16; loop++) {
 			membar_consumer();
@@ -806,6 +807,7 @@ bcm2836_bootstrap(void)
 break;
 			gtmr_delay(1);
 		}
+#endif
 	}
 #endif
 



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

2018-08-25 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sat Aug 25 20:55:15 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Set mac-address property to mue(4).


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.13 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.14
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.13	Tue Aug 21 08:45:17 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Sat Aug 25 20:55:15 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.13 2018/08/21 08:45:17 rin Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.14 2018/08/25 20:55:15 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.13 2018/08/21 08:45:17 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.14 2018/08/25 20:55:15 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -1317,7 +1317,7 @@ bcm283x_platform_device_register(device_
 		booted_device = dev;
 	}
 #endif
-	if (device_is_a(dev, "usmsc") &&
+	if ((device_is_a(dev, "usmsc") || device_is_a(dev, "mue")) &&
 	vcprop_tag_success_p(_macaddr.tag)) {
 		const uint8_t enaddr[ETHER_ADDR_LEN] = {
 		 (vb.vbt_macaddr.addr >> 0) & 0xff,



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

2018-08-21 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Tue Aug 21 08:45:17 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
Correctly report memory size, not clock rate when VERBOSE_INIT_ARM.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.12 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.13
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.12	Fri Aug 10 04:44:15 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Aug 21 08:45:17 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.12 2018/08/10 04:44:15 rin Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.13 2018/08/21 08:45:17 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.12 2018/08/10 04:44:15 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.13 2018/08/21 08:45:17 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -663,10 +663,9 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 		curcpu()->ci_data.cpu_cc_freq = vb.vbt_armclockrate.rate;
 
 #ifdef VERBOSE_INIT_ARM
-	if (vcprop_tag_success_p(_memory.tag)) {
-		printf("%s: memory size  %d\n", __func__,
-		vb.vbt_armclockrate.rate);
-	}
+	if (vcprop_tag_success_p(_memory.tag))
+		printf("%s: memory size  %zu\n", __func__,
+		bcm283x_memorysize);
 	if (vcprop_tag_success_p(_armclockrate.tag))
 		printf("%s: arm clock%d\n", __func__,
 		vb.vbt_armclockrate.rate);



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

2018-08-19 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Sun Aug 19 09:18:48 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c bcm2835_mbox.c

Log Message:
Clean up leftover when converting intr_establish() to fdtbus_intr_establish().
The latter accept only flags 0 or FDT_INTR_MPSAFE. For both cases, it add
IST_LEVEL flag for underlying intr_establish() function.

OK skrll


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/broadcom/bcm2835_emmc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_mbox.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.32 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.33
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.32	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sun Aug 19 09:18:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.32 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.33 2018/08/19 09:18:48 rin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.32 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.33 2018/08/19 09:18:48 rin Exp $");
 
 #include "bcmdmac.h"
 
@@ -174,7 +174,7 @@ bcmemmc_attach(device_t parent, device_t
 		return;
 	}
 
-	sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_SDMMC, IST_LEVEL,
+	sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_SDMMC, 0,
 	sdhc_intr, >sc);
 
 	if (sc->sc_ih == NULL) {

Index: src/sys/arch/arm/broadcom/bcm2835_mbox.c
diff -u src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.12 src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_mbox.c:1.12	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_mbox.c	Sun Aug 19 09:18:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_mbox.c,v 1.12 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm2835_mbox.c,v 1.13 2018/08/19 09:18:48 rin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.12 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_mbox.c,v 1.13 2018/08/19 09:18:48 rin Exp $");
 
 #include 
 #include 
@@ -120,7 +120,7 @@ bcmmbox_attach(device_t parent, device_t
 		return;
 	}
 
-	sc->sc_intrh = fdtbus_intr_establish(phandle, 0, IPL_VM, IST_LEVEL,
+	sc->sc_intrh = fdtbus_intr_establish(phandle, 0, IPL_VM, 0,
 	bcmmbox_intr, sc);
 	if (sc->sc_intrh == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt %s\n",



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

2018-08-09 Thread Rin Okuyama
Module Name:src
Committed By:   rin
Date:   Fri Aug 10 04:44:16 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
* Convert bus address to physical address in xxx_bs_mmap(), as done in
  xxx_bs_map().

* Reuse bs_map and bs_mmap in arm_generic_bs_tag in order to
  - set pmap flags properly for aarch64
  - dedup codes

OK ryo


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.11 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.12
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.11	Sun Aug  5 14:02:35 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Fri Aug 10 04:44:15 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.11 2018/08/05 14:02:35 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.12 2018/08/10 04:44:15 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.11 2018/08/05 14:02:35 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.12 2018/08/10 04:44:15 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -134,125 +134,83 @@ struct bus_space bcm2835_a4x_bs_tag;
 struct bus_space bcm2836_bs_tag;
 struct bus_space bcm2836_a4x_bs_tag;
 
-int bcm283x_bs_map(void *, bus_addr_t, bus_size_t, int, bus_space_handle_t *);
-paddr_t bcm283x_bs_mmap(void *, bus_addr_t, off_t, int, int);
-paddr_t bcm283x_a4x_bs_mmap(void *, bus_addr_t, off_t, int, int);
+static paddr_t bcm2835_bus_to_phys(bus_addr_t);
+static paddr_t bcm2836_bus_to_phys(bus_addr_t);
 
-int
-bcm283x_bs_map(void *t, bus_addr_t ba, bus_size_t size, int flag,
-bus_space_handle_t *bshp)
+static paddr_t
+bcm2835_bus_to_phys(bus_addr_t ba)
 {
-	u_long startpa, endpa, pa;
-	vaddr_t va;
-
-	/* Convert BA to PA */
-	pa = ba & ~BCM2835_BUSADDR_CACHE_MASK;
 
-	startpa = trunc_page(pa);
-	endpa = round_page(pa + size);
-
-	/* XXX use extent manager to check duplicate mapping */
-
-	va = uvm_km_alloc(kernel_map, endpa - startpa, 0,
-	UVM_KMF_VAONLY | UVM_KMF_NOWAIT | UVM_KMF_COLORMATCH);
-	if (!va)
-		return ENOMEM;
-
-	*bshp = (bus_space_handle_t)(va + (pa - startpa));
-
-	int pmapflags;
-	if (flag & BUS_SPACE_MAP_PREFETCHABLE)
-		pmapflags = PMAP_WRITE_COMBINE;
-	else if (flag & BUS_SPACE_MAP_CACHEABLE)
-		pmapflags = 0;
-	else
-		pmapflags = PMAP_NOCACHE;
-	for (pa = startpa; pa < endpa; pa += PAGE_SIZE, va += PAGE_SIZE) {
-		pmap_kenter_pa(va, pa, VM_PROT_READ | VM_PROT_WRITE, pmapflags);
-	}
-	pmap_update(pmap_kernel());
+	/* Attempt to find the PA device mapping */
+	if (ba >= BCM2835_PERIPHERALS_BASE_BUS &&
+	ba < BCM2835_PERIPHERALS_BASE_BUS + BCM2835_PERIPHERALS_SIZE)
+		return BCM2835_PERIPHERALS_BUS_TO_PHYS(ba);
 
-	return 0;
+	return ba & ~BCM2835_BUSADDR_CACHE_MASK;
 }
 
-paddr_t
-bcm283x_bs_mmap(void *t, bus_addr_t bpa, off_t offset, int prot, int flags)
+static paddr_t
+bcm2836_bus_to_phys(bus_addr_t ba)
 {
-	/* Convert BA to PA */
-	const paddr_t pa = bpa & ~BCM2835_BUSADDR_CACHE_MASK;
-	paddr_t bus_flags = 0;
-
-	if (flags & BUS_SPACE_MAP_PREFETCHABLE)
-		bus_flags |= ARM_MMAP_WRITECOMBINE;
-
-	return arm_btop(pa + offset) | bus_flags;
-}
 
-paddr_t
-bcm283x_a4x_bs_mmap(void *t, bus_addr_t bpa, off_t offset, int prot, int flags)
-{
-	/* Convert BA to PA */
-	const paddr_t pa = bpa & ~BCM2835_BUSADDR_CACHE_MASK;
-	paddr_t bus_flags = 0;
+	/* Attempt to find the PA device mapping */
+	if (ba >= BCM2835_PERIPHERALS_BASE_BUS &&
+	ba < BCM2835_PERIPHERALS_BASE_BUS + BCM2835_PERIPHERALS_SIZE)
+		return BCM2836_PERIPHERALS_BUS_TO_PHYS(ba);
 
-	if (flags & BUS_SPACE_MAP_PREFETCHABLE)
-		bus_flags |= ARM_MMAP_WRITECOMBINE;
+	if (ba >= BCM2836_ARM_LOCAL_BASE &&
+	ba < BCM2836_ARM_LOCAL_BASE + BCM2836_ARM_LOCAL_SIZE)
+		return ba;
 
-	return arm_btop(pa + 4 * offset) | bus_flags;
+	return ba & ~BCM2835_BUSADDR_CACHE_MASK;
 }
 
 int
 bcm2835_bs_map(void *t, bus_addr_t ba, bus_size_t size, int flag,
 bus_space_handle_t *bshp)
 {
-	const struct pmap_devmap *pd;
-	bool match = false;
-	u_long pa;
+	const paddr_t pa = bcm2835_bus_to_phys(ba);
 
-	/* Attempt to find the PA device mapping */
-	if (ba >= BCM2835_PERIPHERALS_BASE_BUS &&
-	ba < BCM2835_PERIPHERALS_BASE_BUS + BCM2835_PERIPHERALS_SIZE) {
-		match = true;
-		pa = BCM2835_PERIPHERALS_BUS_TO_PHYS(ba);
-	}
+	return bus_space_map(_generic_bs_tag, pa, size, flag, bshp);
+}
 
-	if (match && (pd = pmap_devmap_find_pa(pa, size)) != NULL) {
-		/* Device was statically mapped. */
-		*bshp = pd->pd_va + (pa - pd->pd_pa);
-		return 0;
-	}
+paddr_t
+bcm2835_bs_mmap(void *t, bus_addr_t ba, off_t offset, int prot, int flags)
+{
+	const paddr_t pa = bcm2835_bus_to_phys(ba);
 
-	return bcm283x_bs_map(t, 

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

2018-07-09 Thread Ryo Shimizu
Module Name:src
Committed By:   ryo
Date:   Mon Jul  9 06:21:46 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
hatch secondary processors (aarch64)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.6 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.7
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.6	Wed Jun 27 11:12:14 2018
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Jul  9 06:21:46 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.6 2018/06/27 11:12:14 ryo Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.7 2018/07/09 06:21:46 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.6 2018/06/27 11:12:14 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.7 2018/07/09 06:21:46 ryo Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -774,18 +774,51 @@ bcm2836_bootstrap(void)
 {
 #define RPI_CPU_MAX	4
 
-#ifdef MULTIPROCESSOR
-	extern int cortex_mmuinfo;
+#ifdef VERBOSE_INIT_ARM
+#define DPRINTF(...)	printf(__VA_ARGS__)
+#else
+#define DPRINTF(...)
+#endif
 
+#ifdef MULTIPROCESSOR
 	arm_cpu_max = RPI_CPU_MAX;
+	DPRINTF("%s: %d cpus present\n", __func__, arm_cpu_max);
+#ifdef __arm__
+	extern int cortex_mmuinfo;
 	cortex_mmuinfo = armreg_ttbr_read();
-#ifdef VERBOSE_INIT_ARM
-	printf("%s: %d cpus present\n", __func__, arm_cpu_max);
-	printf("%s: cortex_mmuinfo %x\n", __func__, cortex_mmuinfo);
+	DPRINTF("%s: cortex_mmuinfo %x\n", __func__, cortex_mmuinfo);
 #endif
+#endif /* MULTIPROCESSOR */
+
+#ifdef __aarch64__
+	/*
+	 * XXX: use psci_fdt_bootstrap()
+	 */
+	extern void aarch64_mpstart(void);
+	for (int i = 1; i < RPI_CPU_MAX; i++) {
+		/*
+		 * Reference:
+		 *   armstubs/armstub8.S
+		 *   in https://github.com/raspberrypi/tools
+		 */
+		volatile uint64_t *cpu_release_addr;
+#define RPI3_ARMSTUB8_SPINADDR_BASE	0x00d8
+		cpu_release_addr =
+		AARCH64_PA_TO_KVA(RPI3_ARMSTUB8_SPINADDR_BASE + i * 8);
+		*cpu_release_addr = aarch64_kern_vtophys(aarch64_mpstart);
+
+		/* need flush cache. secondary processors are cache disabled */
+		cpu_dcache_wb_range(cpu_release_addr, sizeof(cpu_release_addr));
+		__asm __volatile("sev" ::: "memory");
+
+#if defined(VERBOSE_INIT_ARM) && defined(EARLYCONS)
+		/* wait secondary processor's debug output */
+		gtmr_delay(10);
 #endif
+	}
+#endif /* __aarch64__ */
 
-#ifndef __aarch64__
+#ifdef __arm__
 	/*
 	 * Even if no options MULTIPROCESSOR,
 	 * It is need to initialize the secondary CPU,
@@ -803,6 +836,7 @@ bcm2836_bootstrap(void)
 		(uint32_t)cortex_mpstart);
 	}
 #endif
+
 #ifdef MULTIPROCESSOR
 	/* Wake up AP in case firmware has placed it in WFE state */
 	__asm __volatile("sev" ::: "memory");



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

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

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc.c

Log Message:
Use fdtbus_attach_i2cbus


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_bsc.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/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.12 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.12	Thu Jun  7 05:07:28 2018
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Sun Jul  1 21:23:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.12 2018/06/07 05:07:28 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.13 2018/07/01 21:23:16 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2012 Jonathan A. Kollasch
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.12 2018/06/07 05:07:28 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.13 2018/07/01 21:23:16 jmcneill Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_kernhist.h"
@@ -102,9 +102,6 @@ bsciic_attach(device_t parent, device_t 
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
 	prop_dictionary_t prop = device_properties(self);
-	prop_dictionary_t devs;
-	uint32_t address_cells;
-	struct i2cbus_attach_args iba;
 	bool disable = false;
 
 	static ONCE_DECL(control);
@@ -172,20 +169,7 @@ bsciic_attach(device_t parent, device_t 
 	sc->sc_i2c.ic_release_bus = bsciic_release_bus;
 	sc->sc_i2c.ic_exec = bsciic_exec;
 
-	devs = prop_dictionary_create();
-	if (of_getprop_uint32(phandle, "#address-cells", _cells))
-		address_cells = 1;
-
-	of_enter_i2c_devs(devs, phandle, address_cells * 4, 0);
-
-	memset(, 0, sizeof(iba));
-	iba.iba_tag = >sc_i2c;
-	iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices");
-	if (iba.iba_child_devices)
-		prop_object_retain(iba.iba_child_devices);
-	prop_object_release(devs);
-
-	config_found_ia(self, "i2cbus", , iicbus_print);
+	fdtbus_attach_i2cbus(self, phandle, >sc_i2c, iicbus_print);
 }
 
 void



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

2018-06-06 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Thu Jun  7 05:07:28 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc.c

Log Message:
A minimal change to prevent the Raspberry Pi i2c driver from
looping forever if the command buffer and data buffer are both
NULL.  XXX This driver needs an overhaul.

Also, preemptively return an error if we get a 10-bit address,
because we don't yet handle them correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm2835_bsc.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/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.11 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.12
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.11	Wed May  9 02:53:00 2018
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Thu Jun  7 05:07:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.11 2018/05/09 02:53:00 thorpej Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.12 2018/06/07 05:07:28 thorpej Exp $	*/
 
 /*
  * Copyright (c) 2012 Jonathan A. Kollasch
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.11 2018/05/09 02:53:00 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.12 2018/06/07 05:07:28 thorpej Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_kernhist.h"
@@ -242,8 +242,15 @@ bsciic_exec(void *v, i2c_op_t op, i2c_ad
 	size_t len;
 	size_t pos;
 	int error = 0;
+	int whichbuf = 0;
 	const bool isread = I2C_OP_READ_P(op);
 
+	/*
+	 * XXX We don't do 10-bit addressing correctly yet.
+	 */
+	if (addr > 0x7f)
+		return (ENOTSUP);
+
 	flags |= I2C_F_POLL;
 
 #if 0
@@ -312,10 +319,13 @@ flood_again:
 	KERNHIST_LOG(bsciichist, "flood bot %#jx %ju",
 	(uintptr_t)buf, len, 0, 0);
 
-	if (buf == cmdbuf && !isread) {
+	if (whichbuf == 0 && !isread) {
+		KASSERT(buf == cmdbuf);
+		whichbuf++;
 		buf = databuf;
 		len = datalen;
-		goto flood_again;
+		if (len)
+			goto flood_again;
 	}
 
 	do {



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

2018-05-19 Thread Jason R Thorpe
Module Name:src
Committed By:   thorpej
Date:   Sat May 19 14:02:10 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c

Log Message:
Add support for interrupts on GPIO pins.  We support both FDT-driven
interrupt registration as well as the new GPIO interrupt interface.

Based on initial work by Brad Spencer.
PR kern/51676


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.6 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.7
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.6	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Sat May 19 14:02:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.6 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.7 2018/05/19 14:02:10 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2013, 2014, 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.6 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.7 2018/05/19 14:02:10 thorpej Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -46,6 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include 
@@ -66,6 +67,29 @@ int bcm2835gpiodebug = 3;
 
 #define	BCMGPIO_MAXPINS	54
 
+struct bcmgpio_eint {
+	 int			(*eint_func)(void *);
+	 void			*eint_arg;
+	 int			eint_flags;
+	 int			eint_bank;
+	 int			eint_num;
+};
+
+#define	BCMGPIO_INTR_POS_EDGE	0x01
+#define	BCMGPIO_INTR_NEG_EDGE	0x02
+#define	BCMGPIO_INTR_HIGH_LEVEL	0x04
+#define	BCMGPIO_INTR_LOW_LEVEL	0x08
+#define	BCMGPIO_INTR_MPSAFE	0x10
+
+struct bcmgpio_softc;
+struct bcmgpio_bank {
+	struct bcmgpio_softc	*sc_bcm;
+	void			*sc_ih;
+	struct bcmgpio_eint	sc_eint[32];
+	int			sc_bankno;
+};
+#define	BCMGPIO_NBANKS	2
+
 struct bcmgpio_softc {
 	device_t		sc_dev;
 	bus_space_tag_t		sc_iot;
@@ -74,6 +98,9 @@ struct bcmgpio_softc {
 
 	kmutex_t		sc_lock;
 	gpio_pin_t		sc_gpio_pins[BCMGPIO_MAXPINS];
+
+	/* For interrupt support. */
+	struct bcmgpio_bank	sc_banks[BCMGPIO_NBANKS];
 };
 
 struct bcmgpio_pin {
@@ -90,6 +117,13 @@ static int	bcm2835gpio_gpio_pin_read(voi
 static void	bcm2835gpio_gpio_pin_write(void *, int, int);
 static void	bcm2835gpio_gpio_pin_ctl(void *, int, int);
 
+static void *	bcmgpio_gpio_intr_establish(void *, int, int, int,
+	int (*)(void *), void *);
+static void	bcmgpio_gpio_intr_disestablish(void *, void *);
+static bool	bcmgpio_gpio_intrstr(void *, int, int, char *, size_t);
+
+static int	bcmgpio_intr(void *);
+
 u_int		bcm283x_pin_getfunc(const struct bcmgpio_softc * const, u_int);
 void		bcm283x_pin_setfunc(const struct bcmgpio_softc * const, u_int,
 		u_int);
@@ -110,6 +144,17 @@ static struct fdtbus_gpio_controller_fun
 	.write = bcmgpio_fdt_write
 };
 
+static void *	bcmgpio_fdt_intr_establish(device_t, u_int *, int, int,
+		int (*func)(void *), void *);
+static void	bcmgpio_fdt_intr_disestablish(device_t, void *);
+static bool	bcmgpio_fdt_intrstr(device_t, u_int *, char *, size_t);
+
+static struct fdtbus_interrupt_controller_func bcmgpio_fdt_intrfuncs = {
+	.establish = bcmgpio_fdt_intr_establish,
+	.disestablish = bcmgpio_fdt_intr_disestablish,
+	.intrstr = bcmgpio_fdt_intrstr,
+};
+
 CFATTACH_DECL_NEW(bcmgpio, sizeof(struct bcmgpio_softc),
 bcmgpio_match, bcmgpio_attach, NULL, NULL);
 
@@ -208,6 +253,7 @@ bcmgpio_attach(device_t parent, device_t
 	u_int func;
 	int error;
 	int pin;
+	int bank;
 
 	const int phandle = faa->faa_phandle;
 	if (fdtbus_get_reg(phandle, 0, , ) != 0) {
@@ -238,10 +284,18 @@ bcmgpio_attach(device_t parent, device_t
 
 		if (func == BCM2835_GPIO_IN ||
 		func == BCM2835_GPIO_OUT) {
+			/* XXX TRISTATE?  Really? */
 			sc->sc_gpio_pins[pin].pin_caps = GPIO_PIN_INPUT |
 GPIO_PIN_OUTPUT |
 GPIO_PIN_PUSHPULL | GPIO_PIN_TRISTATE |
 GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN;
+			sc->sc_gpio_pins[pin].pin_intrcaps =
+GPIO_INTR_POS_EDGE |
+GPIO_INTR_NEG_EDGE |
+GPIO_INTR_DOUBLE_EDGE |
+GPIO_INTR_HIGH_LEVEL |
+GPIO_INTR_LOW_LEVEL |
+GPIO_INTR_MPSAFE;
 			/* read initial state */
 			sc->sc_gpio_pins[pin].pin_state =
 bcm2835gpio_gpio_pin_read(sc, pin);
@@ -253,19 +307,33 @@ bcmgpio_attach(device_t parent, device_t
 		}
 	}
 
-	/* create controller tag */
-	sc->sc_gpio_gc.gp_cookie = sc;
-	sc->sc_gpio_gc.gp_pin_read = bcm2835gpio_gpio_pin_read;
-	sc->sc_gpio_gc.gp_pin_write = bcm2835gpio_gpio_pin_write;
-	sc->sc_gpio_gc.gp_pin_ctl = bcm2835gpio_gpio_pin_ctl;
+	/* Initialize interrupts. */
+	for (bank = 0; bank < BCMGPIO_NBANKS; bank++) {
+		char intrstr[128];
 
-	gba.gba_gc = >sc_gpio_gc;
-	for (pin = 0; pin < BCMGPIO_MAXPINS;) {
-		const int npins = MIN(BCMGPIO_MAXPINS - pin, 32);
-		

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

2018-03-03 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Mar  3 16:03:38 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc.c

Log Message:
bcm2835_bsc: use fdt to enumerate i2c child devices

>From jmcneill@


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm2835_bsc.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/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.9 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.10
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.9	Thu Dec 28 22:42:36 2017
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Sat Mar  3 16:03:38 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.9 2017/12/28 22:42:36 christos Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.10 2018/03/03 16:03:38 skrll Exp $	*/
 
 /*
  * Copyright (c) 2012 Jonathan A. Kollasch
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.9 2017/12/28 22:42:36 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.10 2018/03/03 16:03:38 skrll Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_kernhist.h"
@@ -102,6 +102,8 @@ bsciic_attach(device_t parent, device_t 
 	struct fdt_attach_args * const faa = aux;
 	const int phandle = faa->faa_phandle;
 	prop_dictionary_t prop = device_properties(self);
+	prop_dictionary_t devs;
+	uint32_t address_cells;
 	struct i2cbus_attach_args iba;
 	bool disable = false;
 
@@ -170,10 +172,21 @@ bsciic_attach(device_t parent, device_t 
 	sc->sc_i2c.ic_release_bus = bsciic_release_bus;
 	sc->sc_i2c.ic_exec = bsciic_exec;
 
-	memset(, 0, sizeof(iba));
+	devs = prop_dictionary_create();
+	if (of_getprop_uint32(phandle, "#address-cells", _cells))
+		address_cells = 1;
+
+	of_enter_i2c_devs(devs, phandle, address_cells * 4, 0);
 
+	memset(, 0, sizeof(iba));
 	iba.iba_tag = >sc_i2c;
-	iba.iba_type = 0;
+	iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices");
+	if (iba.iba_child_devices)
+		prop_object_retain(iba.iba_child_devices);
+	else
+		iba.iba_child_devices = prop_array_create();
+	prop_object_release(devs);
+
 	config_found_ia(self, "i2cbus", , iicbus_print);
 }
 



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

2018-01-22 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Jan 22 13:23:56 UTC 2018

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_space.c

Log Message:
Pass PMAP_WRITE_COMBINE as appropriate in bcm283x_bs_map.

RPI2 FB console now updates properly again


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/broadcom/bcm2835_space.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/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.14 src/sys/arch/arm/broadcom/bcm2835_space.c:1.15
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.14	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Mon Jan 22 13:23:56 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.14 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm2835_space.c,v 1.15 2018/01/22 13:23:56 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.14 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.15 2018/01/22 13:23:56 skrll Exp $");
 
 #include 
 #include 
@@ -533,6 +533,7 @@ bcm283x_bs_map(void *t, bus_addr_t ba, b
 bus_space_handle_t *bshp)
 {
 	u_long startpa, endpa, pa;
+	int pmapflags;
 	vaddr_t va;
 
 	/* Convert BA to PA */
@@ -550,10 +551,13 @@ bcm283x_bs_map(void *t, bus_addr_t ba, b
 
 	*bshp = (bus_space_handle_t)(va + (pa - startpa));
 
-	const int pmapflags =
-	(flag & (BUS_SPACE_MAP_CACHEABLE|BUS_SPACE_MAP_PREFETCHABLE))
-		? 0
-		: PMAP_NOCACHE;
+	if (flag & BUS_SPACE_MAP_PREFETCHABLE)
+		pmapflags = PMAP_WRITE_COMBINE;
+	else if (flag & BUS_SPACE_MAP_CACHEABLE)
+		pmapflags = 0;
+	else
+		pmapflags = PMAP_NOCACHE;
+
 	for (pa = startpa; pa < endpa; pa += PAGE_SIZE, va += PAGE_SIZE) {
 		pmap_kenter_pa(va, pa, VM_PROT_READ | VM_PROT_WRITE, pmapflags);
 	}



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

2017-12-28 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Thu Dec 28 22:42:36 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc.c

Log Message:
PR/52848: Brad Spencer: Comment out KASSERT, length 0 appears to be valid.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/broadcom/bcm2835_bsc.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/broadcom/bcm2835_bsc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.8 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.9
--- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.8	Sun Dec 10 16:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_bsc.c	Thu Dec 28 17:42:36 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_bsc.c,v 1.8 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm2835_bsc.c,v 1.9 2017/12/28 22:42:36 christos Exp $	*/
 
 /*
  * Copyright (c) 2012 Jonathan A. Kollasch
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.8 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.9 2017/12/28 22:42:36 christos Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_kernhist.h"
@@ -331,7 +331,9 @@ only_read:
 	dlen = datalen;
 
 	dlen = __SHIFTIN(dlen, BSC_DLEN_DLEN);
+#if 0
 	KASSERT(dlen >= 1);
+#endif
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BSC_DLEN, dlen);
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BSC_A, a);
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh, BSC_C, c | BSC_C_ST);



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

2017-12-20 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 20 14:51:40 UTC 2017

Removed Files:
src/sys/arch/arm/broadcom: bcm2835_pm.c bcm2835_pmvar.h

Log Message:
G/C


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r0 src/sys/arch/arm/broadcom/bcm2835_pm.c
cvs rdiff -u -r1.2 -r0 src/sys/arch/arm/broadcom/bcm2835_pmvar.h

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



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

2017-12-20 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Wed Dec 20 14:35:12 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm283x_platform.c

Log Message:
G/C


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm283x_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/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.1 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.2
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.1	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Wed Dec 20 14:35:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.1 2017/12/10 21:38:26 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.2 2017/12/20 14:35:12 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.1 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.2 2017/12/20 14:35:12 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -130,14 +130,6 @@ bs_protos(generic_armv4);
 bs_protos(a4x);
 bs_protos(bs_notimpl);
 
-#if 0
-#if __ARMEB__
-#define NSWAP(n)	n ## _swap
-#else
-#define NSWAP(n)	n
-#endif
-#endif
-
 struct arm32_dma_range bcm2835_dma_ranges[] = {
 	[0] = {
 		.dr_sysbase = 0,



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

2017-11-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Nov 28 08:39:31 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_space.c

Log Message:
Sync with armv7_generic_space.c

- BE support (probably not needed)
- a4x subreagion/mmap support
- fix some a4x stream methods
- add UVM_KMF_COLORMATCH in bs_map when allocating KVA
- support BUS_SPACE_MAP_PREFETCHABLE


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_space.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/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.12 src/sys/arch/arm/broadcom/bcm2835_space.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.12	Mon Nov 27 17:27:37 2017
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Tue Nov 28 08:39:31 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.12 2017/11/27 17:27:37 skrll Exp $	*/
+/*	$NetBSD: bcm2835_space.c,v 1.13 2017/11/28 08:39:31 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.12 2017/11/27 17:27:37 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.13 2017/11/28 08:39:31 skrll Exp $");
 
 #include 
 #include 
@@ -51,6 +51,12 @@ bs_protos(generic_armv4);
 bs_protos(a4x);
 bs_protos(bs_notimpl);
 
+#if __ARMEB__
+#define NSWAP(n)	n ## _swap
+#else
+#define NSWAP(n)	n
+#endif
+
 struct bus_space bcm2835_bs_tag = {
 	/* cookie */
 	(void *) 0,
@@ -75,38 +81,38 @@ struct bus_space bcm2835_bs_tag = {
 
 	/* read (single) */
 	generic_bs_r_1,
-	generic_armv4_bs_r_2,
-	generic_bs_r_4,
+	NSWAP(generic_armv4_bs_r_2),
+	NSWAP(generic_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	generic_bs_rm_1,
-	generic_armv4_bs_rm_2,
-	generic_bs_rm_4,
+	NSWAP(generic_armv4_bs_rm_2),
+	NSWAP(generic_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
 	generic_bs_rr_1,
-	generic_armv4_bs_rr_2,
-	generic_bs_rr_4,
+	NSWAP(generic_armv4_bs_rr_2),
+	NSWAP(generic_bs_rr_4),
 	bs_notimpl_bs_rr_8,
 
 	/* write (single) */
 	generic_bs_w_1,
-	generic_armv4_bs_w_2,
-	generic_bs_w_4,
+	NSWAP(generic_armv4_bs_w_2),
+	NSWAP(generic_bs_w_4),
 	bs_notimpl_bs_w_8,
 
 	/* write multiple */
 	generic_bs_wm_1,
-	generic_armv4_bs_wm_2,
-	generic_bs_wm_4,
+	NSWAP(generic_armv4_bs_wm_2),
+	NSWAP(generic_bs_wm_4),
 	bs_notimpl_bs_wm_8,
 
 	/* write region */
 	generic_bs_wr_1,
-	generic_armv4_bs_wr_2,
-	generic_bs_wr_4,
+	NSWAP(generic_armv4_bs_wr_2),
+	NSWAP(generic_bs_wr_4),
 	bs_notimpl_bs_wr_8,
 
 	/* set multiple */
@@ -117,8 +123,8 @@ struct bus_space bcm2835_bs_tag = {
 
 	/* set region */
 	generic_bs_sr_1,
-	generic_armv4_bs_sr_2,
-	bs_notimpl_bs_sr_4,
+	NSWAP(generic_armv4_bs_sr_2),
+	NSWAP(generic_bs_sr_4),
 	bs_notimpl_bs_sr_8,
 
 	/* copy */
@@ -130,38 +136,38 @@ struct bus_space bcm2835_bs_tag = {
 #ifdef __BUS_SPACE_HAS_STREAM_METHODS
 	/* read (single) */
 	generic_bs_r_1,
-	generic_armv4_bs_r_2,
-	generic_bs_r_4,
+	NSWAP(generic_armv4_bs_r_2),
+	NSWAP(generic_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	generic_bs_rm_1,
-	generic_armv4_bs_rm_2,
-	generic_bs_rm_4,
+	NSWAP(generic_armv4_bs_rm_2),
+	NSWAP(generic_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
 	generic_bs_rr_1,
-	generic_armv4_bs_rr_2,
-	generic_bs_rr_4,
+	NSWAP(generic_armv4_bs_rr_2),
+	NSWAP(generic_bs_rr_4),
 	bs_notimpl_bs_rr_8,
 
 	/* write (single) */
 	generic_bs_w_1,
-	generic_armv4_bs_w_2,
-	generic_bs_w_4,
+	NSWAP(generic_armv4_bs_w_2),
+	NSWAP(generic_bs_w_4),
 	bs_notimpl_bs_w_8,
 
 	/* write multiple */
 	generic_bs_wm_1,
-	generic_armv4_bs_wm_2,
-	generic_bs_wm_4,
+	NSWAP(generic_armv4_bs_wm_2),
+	NSWAP(generic_bs_wm_4),
 	bs_notimpl_bs_wm_8,
 
 	/* write region */
 	generic_bs_wr_1,
-	generic_armv4_bs_wr_2,
-	generic_bs_wr_4,
+	NSWAP(generic_armv4_bs_wr_2),
+	NSWAP(generic_bs_wr_4),
 	bs_notimpl_bs_wr_8,
 #endif
 };
@@ -173,7 +179,7 @@ struct bus_space bcm2835_a4x_bs_tag = {
 	/* mapping/unmapping */
 	bcm2835_bs_map,
 	bcm2835_bs_unmap,
-	bcm2835_bs_subregion,
+	bcm2835_a4x_bs_subregion,
 
 	/* allocation/deallocation */
 	bcm2835_bs_alloc,	/* not implemented */
@@ -183,21 +189,21 @@ struct bus_space bcm2835_a4x_bs_tag = {
 	bcm2835_bs_vaddr,
 
 	/* mmap */
-	bs_notimpl_bs_mmap,
+	bcm2835_a4x_bs_mmap,
 
 	/* barrier */
 	bcm2835_bs_barrier,
 
 	/* read (single) */
 	a4x_bs_r_1,
-	a4x_bs_r_2,
-	a4x_bs_r_4,
+	NSWAP(a4x_bs_r_2),
+	NSWAP(a4x_bs_r_4),
 	bs_notimpl_bs_r_8,
 
 	/* read multiple */
 	a4x_bs_rm_1,
-	a4x_bs_rm_2,
-	a4x_bs_rm_4,
+	NSWAP(a4x_bs_rm_2),
+	NSWAP(a4x_bs_rm_4),
 	bs_notimpl_bs_rm_8,
 
 	/* read region */
@@ -208,15 +214,16 @@ struct bus_space bcm2835_a4x_bs_tag = {
 
 	/* write (single) */
 	a4x_bs_w_1,
-	a4x_bs_w_2,
-	a4x_bs_w_4,
+	NSWAP(a4x_bs_w_2),
+	NSWAP(a4x_bs_w_4),
 	bs_notimpl_bs_w_8,
 
 	/* write multiple */
 	a4x_bs_wm_1,
-	a4x_bs_wm_2,
-	a4x_bs_wm_4,
+	

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

2017-11-27 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Mon Nov 27 17:27:37 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_space.c

Log Message:
KNF


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm2835_space.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/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.11 src/sys/arch/arm/broadcom/bcm2835_space.c:1.12
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.11	Thu Nov  9 21:37:52 2017
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Mon Nov 27 17:27:37 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.11 2017/11/09 21:37:52 skrll Exp $	*/
+/*	$NetBSD: bcm2835_space.c,v 1.12 2017/11/27 17:27:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.11 2017/11/09 21:37:52 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.12 2017/11/27 17:27:37 skrll Exp $");
 
 #include 
 #include 
@@ -364,7 +364,7 @@ bcm2835_bs_subregion(void *t, bus_space_
 {
 
 	*nbshp = bsh + offset;
-	return (0);
+	return 0;
 }
 
 void
@@ -393,7 +393,7 @@ bcm2835_bs_mmap(void *t, bus_addr_t ba, 
 	if (flags & BUS_SPACE_MAP_PREFETCHABLE)
 		bus_flags |= ARM32_MMAP_WRITECOMBINE;
 
-	return (arm_btop(pa + offset) | bus_flags);
+	return arm_btop(pa + offset) | bus_flags;
 }
 
 int



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

2017-11-09 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Nov  9 21:37:52 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c bcm2835_space.c

Log Message:
Trailing whitespace


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm2835_gpio.c
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_space.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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.4 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.5
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.4	Thu Sep 21 19:28:14 2017
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Thu Nov  9 21:37:52 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.4 2017/09/21 19:28:14 skrll Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.5 2017/11/09 21:37:52 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.4 2017/09/21 19:28:14 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.5 2017/11/09 21:37:52 skrll Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -107,12 +107,12 @@ bcmgpio_attach(device_t parent, device_t
 	u_int func;
 	int error;
 #endif
-	
+
 	sc->sc_dev = self;
-	
+
 #if NGPIO > 0
 	if (device_unit(sc->sc_dev) > 1) {
-		aprint_naive(" NO GPIO\n");	
+		aprint_naive(" NO GPIO\n");
 		aprint_normal(": NO GPIO\n");
 		return;
 	} else if (device_unit(sc->sc_dev) == 1) {
@@ -122,8 +122,8 @@ bcmgpio_attach(device_t parent, device_t
 		maxpin = 31;
 		minpin = 0;
 	}
-	
-	aprint_naive("\n");	
+
+	aprint_naive("\n");
 	aprint_normal(": GPIO [%d...%d]\n", minpin, maxpin);
 
 	sc->sc_iot = aaa->aaa_iot;
@@ -137,13 +137,13 @@ bcmgpio_attach(device_t parent, device_t
 
 	for (pin = minpin; pin <= maxpin; pin++) {
 	int epin = pin - minpin;
-	
+
 	sc->sc_gpio_pins[epin].pin_num = epin;
 		/*
 		 * find out pins still available for GPIO
 		 */
 		func = bcm2835gpio_function_read(pin);
-		
+
 		if (func == BCM2835_GPIO_IN ||
 		func == BCM2835_GPIO_OUT) {
 	sc->sc_gpio_pins[epin].pin_caps = GPIO_PIN_INPUT |
@@ -160,13 +160,13 @@ bcmgpio_attach(device_t parent, device_t
   			DPRINTF(1, ("%s: skip pin %d - func = 0x%x\n", device_xname(sc->sc_dev), pin, func));
 		}
 	}
-	
+
 	/* create controller tag */
 	sc->sc_gpio_gc.gp_cookie = sc;
 	sc->sc_gpio_gc.gp_pin_read = bcm2835gpio_gpio_pin_read;
 	sc->sc_gpio_gc.gp_pin_write = bcm2835gpio_gpio_pin_write;
 	sc->sc_gpio_gc.gp_pin_ctl = bcm2835gpio_gpio_pin_ctl;
-	
+
 	gba.gba_gc = >sc_gpio_gc;
 	gba.gba_pins = sc->sc_gpio_pins;
 	gba.gba_npins = maxpin - minpin + 1;
@@ -190,7 +190,7 @@ bcm2835gpio_gpio_pin_read(void *arg, int
 	if (device_unit(sc->sc_dev) > 1) {
 		return 0;
 	}
-	
+
 	val = bus_space_read_4(sc->sc_iot, sc->sc_ioh,
 		BCM2835_GPIO_GPLEV(epin / BCM2835_GPIO_GPLEV_PINS_PER_REGISTER));
 
@@ -198,7 +198,7 @@ bcm2835gpio_gpio_pin_read(void *arg, int
 		GPIO_PIN_HIGH : GPIO_PIN_LOW;
 
 	DPRINTF(2, ("%s: gpio_read pin %d->%d\n", device_xname(sc->sc_dev), epin, (res == GPIO_PIN_HIGH)));
-	
+
 	return res;
 }
 
@@ -208,17 +208,17 @@ bcm2835gpio_gpio_pin_write(void *arg, in
 	struct bcmgpio_softc *sc = arg;
 	int epin = pin + device_unit(sc->sc_dev) * 32;
 	bus_size_t reg;
-	
+
 	if (device_unit(sc->sc_dev) > 1) {
 		return;
 	}
-	
+
 	if (value == GPIO_PIN_HIGH) {
 		reg = BCM2835_GPIO_GPSET(epin / BCM2835_GPIO_GPSET_PINS_PER_REGISTER);
 	} else {
 		reg = BCM2835_GPIO_GPCLR(epin / BCM2835_GPIO_GPCLR_PINS_PER_REGISTER);
 	}
-	
+
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh,
 		reg, 1 << (epin % BCM2835_GPIO_GPSET_PINS_PER_REGISTER));
 	DPRINTF(2, ("%s: gpio_write pin %d<-%d\n", device_xname(sc->sc_dev), epin, (value == GPIO_PIN_HIGH)));
@@ -230,11 +230,11 @@ bcm2835gpio_gpio_pin_ctl(void *arg, int 
 	struct bcmgpio_softc *sc = arg;
 	uint32_t cmd;
 	int epin = pin + device_unit(sc->sc_dev) * 32;
-	
+
 	if (device_unit(sc->sc_dev) > 1) {
 		return;
 	}
-	
+
 	DPRINTF(2, ("%s: gpio_ctl pin %d flags 0x%x\n", device_xname(sc->sc_dev), epin, flags));
 
 	if (flags & (GPIO_PIN_OUTPUT|GPIO_PIN_INPUT)) {
@@ -264,7 +264,7 @@ bcm2835gpio_gpio_pin_ctl(void *arg, int 
 	delay(1); /* wait 150 cycles */
 	/* reset control signal and clock */
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh,
-		BCM2835_GPIO_GPPUD, BCM2835_GPIO_GPPUD_PULLOFF);	
+		BCM2835_GPIO_GPPUD, BCM2835_GPIO_GPPUD_PULLOFF);
 	bus_space_write_4(sc->sc_iot, sc->sc_ioh,
 		BCM2835_GPIO_GPPUDCLK(device_unit(sc->sc_dev)),
 		0);

Index: src/sys/arch/arm/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.10 src/sys/arch/arm/broadcom/bcm2835_space.c:1.11
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.10	Tue Feb  2 13:55:50 2016
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Thu Nov  9 21:37:52 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.10 2016/02/02 13:55:50 skrll 

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

2017-10-23 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Mon Oct 23 09:23:25 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm53xx_eth.c

Log Message:
 If error occured in bcmeth_ccb_attach(), free resources and return.


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/broadcom/bcm53xx_eth.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/broadcom/bcm53xx_eth.c
diff -u src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.29 src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.30
--- src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.29	Thu Dec 15 09:28:02 2016
+++ src/sys/arch/arm/broadcom/bcm53xx_eth.c	Mon Oct 23 09:23:25 2017
@@ -35,7 +35,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.29 2016/12/15 09:28:02 ozaki-r Exp $");
+__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.30 2017/10/23 09:23:25 msaitoh Exp $");
 
 #include 
 #include 
@@ -321,45 +321,52 @@ bcmeth_ccb_attach(device_t parent, devic
 	error = bcmeth_rxq_attach(sc, >sc_rxq, 0);
 	if (error) {
 		aprint_error(": failed to init rxq: %d\n", error);
-		return;
+		goto fail_1;
 	}
 
 	error = bcmeth_txq_attach(sc, >sc_txq, 0);
 	if (error) {
 		aprint_error(": failed to init txq: %d\n", error);
-		return;
+		goto fail_1;
 	}
 
 	error = bcmeth_mapcache_create(sc, >sc_rx_mapcache, 
 	BCMETH_MAXRXMBUFS, MCLBYTES, BCMETH_NRXSEGS);
 	if (error) {
 		aprint_error(": failed to allocate rx dmamaps: %d\n", error);
-		return;
+		goto fail_1;
 	}
 
 	error = bcmeth_mapcache_create(sc, >sc_tx_mapcache, 
 	BCMETH_MAXTXMBUFS, MCLBYTES, BCMETH_NTXSEGS);
 	if (error) {
 		aprint_error(": failed to allocate tx dmamaps: %d\n", error);
-		return;
+		goto fail_1;
 	}
 
 	error = workqueue_create(>sc_workq, xname, bcmeth_worker, sc,
 	(PRI_USER + MAXPRI_USER) / 2, IPL_NET, WQ_MPSAFE|WQ_PERCPU);
 	if (error) {
 		aprint_error(": failed to create workqueue: %d\n", error);
-		return;
+		goto fail_2;
 	}
 
 	sc->sc_soft_ih = softint_establish(SOFTINT_MPSAFE | SOFTINT_NET,
 	bcmeth_soft_intr, sc);
 
+	if (sc->sc_ih == NULL) {
+		aprint_error_dev(self, "failed to establish interrupt %d\n",
+		 loc->loc_intrs[0]);
+		goto fail_3;
+	}
+
 	sc->sc_ih = intr_establish(loc->loc_intrs[0], IPL_VM, IST_LEVEL,
 	bcmeth_intr, sc);
 
 	if (sc->sc_ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt %d\n",
 		 loc->loc_intrs[0]);
+		goto fail_4;
 	} else {
 		aprint_normal_dev(self, "interrupting on irq %d\n",
 		 loc->loc_intrs[0]);
@@ -401,7 +408,12 @@ bcmeth_ccb_attach(device_t parent, devic
 	/*
 	 * Attach the interface.
 	 */
-	if_initialize(ifp);
+	error = if_initialize(ifp);
+	if (error != 0) {
+		aprint_error_dev(sc->sc_dev, "if_initialize failed(%d)\n",
+		error);
+		goto fail_5;
+	}
 	ether_ifattach(ifp, sc->sc_enaddr);
 	if_register(ifp);
 
@@ -419,6 +431,20 @@ bcmeth_ccb_attach(device_t parent, devic
 	evcnt_attach_dynamic(>sc_ev_rx_badmagic_hi, EVCNT_TYPE_MISC,
 	NULL, xname, "rx badmagic hi");
 #endif
+
+	return;
+
+fail_5:
+	ifmedia_removeall(>sc_media);
+fail_4:
+	intr_disestablish(sc->sc_ih);
+fail_3:
+	softint_disestablish(sc->sc_soft_ih);
+fail_2:	
+	workqueue_destroy(sc->sc_workq);
+fail_1:	
+	mutex_obj_free(sc->sc_lock);
+	mutex_obj_free(sc->sc_hwlock);
 }
 
 static int



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

2017-10-18 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Oct 19 05:45:37 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_cm.h bcm2835_pwm.h

Log Message:
Fix RCSIds


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_cm.h \
src/sys/arch/arm/broadcom/bcm2835_pwm.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/broadcom/bcm2835_cm.h
diff -u src/sys/arch/arm/broadcom/bcm2835_cm.h:1.1 src/sys/arch/arm/broadcom/bcm2835_cm.h:1.2
--- src/sys/arch/arm/broadcom/bcm2835_cm.h:1.1	Sat Nov 21 07:41:29 2015
+++ src/sys/arch/arm/broadcom/bcm2835_cm.h	Thu Oct 19 05:45:37 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: */
+/*	$NetBSD: bcm2835_cm.h,v 1.2 2017/10/19 05:45:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
Index: src/sys/arch/arm/broadcom/bcm2835_pwm.h
diff -u src/sys/arch/arm/broadcom/bcm2835_pwm.h:1.1 src/sys/arch/arm/broadcom/bcm2835_pwm.h:1.2
--- src/sys/arch/arm/broadcom/bcm2835_pwm.h:1.1	Sat Nov 21 07:41:29 2015
+++ src/sys/arch/arm/broadcom/bcm2835_pwm.h	Thu Oct 19 05:45:37 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: */
+/*	$NetBSD: bcm2835_pwm.h,v 1.2 2017/10/19 05:45:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.



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

2017-10-15 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sun Oct 15 09:33:25 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Simplify array initialisation


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.12 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.12	Sun Jul 30 16:54:36 2017
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Sun Oct 15 09:33:25 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.12 2017/07/30 16:54:36 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.13 2017/10/15 09:33:25 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.12 2017/07/30 16:54:36 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.13 2017/10/15 09:33:25 skrll Exp $");
 
 #define _INTR_PRIVATE
 
@@ -105,26 +105,11 @@ static struct pic_ops bcm2836mp_picops =
 };
 
 struct pic_softc bcm2836mp_pic[BCM2836_NCPUS] = {
-	[0] = {
+	[0 ... BCM2836_NCPUS - 1] = {
 		.pic_ops = _picops,
 		.pic_maxsources = BCM2836_NIRQPERCPU,
 		.pic_name = "bcm2836 pic",
-	},
-	[1] = {
-		.pic_ops = _picops,
-		.pic_maxsources = BCM2836_NIRQPERCPU,
-		.pic_name = "bcm2836 pic",
-	},
-	[2] = {
-		.pic_ops = _picops,
-		.pic_maxsources = BCM2836_NIRQPERCPU,
-		.pic_name = "bcm2836 pic",
-	},
-	[3] = {
-		.pic_ops = _picops,
-		.pic_maxsources = BCM2836_NIRQPERCPU,
-		.pic_name = "bcm2836 pic",
-	},
+	}
 };
 #endif
 
@@ -293,7 +278,6 @@ bcm2835_pic_find_pending_irqs(struct pic
 	if (armirq) {
 		ipl |= pic_mark_pending_sources(pic,
 		BCM2835_INT_BASICBASE - BCM2835_INT_BASE, armirq);
-
 	}
 
 	if (gpu0irq || (bpending & BCM2835_INTBIT_PENDING1)) {



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

2017-09-21 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Sep 21 19:28:14 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_gpio.c bcm2835_tmr.c

Log Message:
spaces to tabs


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_gpio.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/broadcom/bcm2835_tmr.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/broadcom/bcm2835_gpio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.3 src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.4
--- src/sys/arch/arm/broadcom/bcm2835_gpio.c:1.3	Tue Feb  2 13:55:50 2016
+++ src/sys/arch/arm/broadcom/bcm2835_gpio.c	Thu Sep 21 19:28:14 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_gpio.c,v 1.3 2016/02/02 13:55:50 skrll Exp $	*/
+/*	$NetBSD: bcm2835_gpio.c,v 1.4 2017/09/21 19:28:14 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.3 2016/02/02 13:55:50 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_gpio.c,v 1.4 2017/09/21 19:28:14 skrll Exp $");
 
 /*
  * Driver for BCM2835 GPIO
@@ -154,12 +154,12 @@ bcmgpio_attach(device_t parent, device_t
 			sc->sc_gpio_pins[epin].pin_state =
 bcm2835gpio_gpio_pin_read(sc, epin);
 			DPRINTF(1, ("%s: attach pin %d\n", device_xname(sc->sc_dev), pin));
-} else {
+		} else {
 	sc->sc_gpio_pins[epin].pin_caps = 0;
 			sc->sc_gpio_pins[epin].pin_state = 0;
   			DPRINTF(1, ("%s: skip pin %d - func = 0x%x\n", device_xname(sc->sc_dev), pin, func));
-}
-}
+		}
+	}
 	
 	/* create controller tag */
 	sc->sc_gpio_gc.gp_cookie = sc;
@@ -241,7 +241,7 @@ bcm2835gpio_gpio_pin_ctl(void *arg, int 
 		if ((flags & GPIO_PIN_INPUT) || !(flags & GPIO_PIN_OUTPUT)) {
 			/* for safety INPUT will overide output */
 	bcm2835gpio_function_select(epin, BCM2835_GPIO_IN);
-} else {
+		} else {
 	bcm2835gpio_function_select(epin, BCM2835_GPIO_OUT);
 		}
 	}

Index: src/sys/arch/arm/broadcom/bcm2835_tmr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.7 src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.8
--- src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.7	Wed Jul 29 14:22:49 2015
+++ src/sys/arch/arm/broadcom/bcm2835_tmr.c	Thu Sep 21 19:28:14 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_tmr.c,v 1.7 2015/07/29 14:22:49 skrll Exp $	*/
+/*	$NetBSD: bcm2835_tmr.c,v 1.8 2017/09/21 19:28:14 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_tmr.c,v 1.7 2015/07/29 14:22:49 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_tmr.c,v 1.8 2017/09/21 19:28:14 skrll Exp $");
 
 #include 
 #include 
@@ -105,7 +105,7 @@ bcmtmr_match(device_t parent, cfdata_t m
 static void
 bcmtmr_attach(device_t parent, device_t self, void *aux)
 {
-struct bcm2835tmr_softc *sc = device_private(self);
+	struct bcm2835tmr_softc *sc = device_private(self);
  	struct amba_attach_args *aaa = aux;
 
 	aprint_naive("\n");



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

2017-07-31 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Jul 31 23:54:19 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_com.c

Log Message:
mark ISR as mpsafe, detect when this is the console


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_com.c
diff -u src/sys/arch/arm/broadcom/bcm2835_com.c:1.2 src/sys/arch/arm/broadcom/bcm2835_com.c:1.3
--- src/sys/arch/arm/broadcom/bcm2835_com.c:1.2	Mon Jul 31 00:51:20 2017
+++ src/sys/arch/arm/broadcom/bcm2835_com.c	Mon Jul 31 23:54:19 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_com.c,v 1.2 2017/07/31 00:51:20 jmcneill Exp $ */
+/* $NetBSD: bcm2835_com.c,v 1.3 2017/07/31 23:54:19 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.2 2017/07/31 00:51:20 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.3 2017/07/31 23:54:19 jmcneill Exp $");
 
 #include 
 #include 
@@ -77,7 +77,8 @@ bcm_com_attach(device_t parent, device_t
 	}
 	sc->sc_frequency *= 2;
 
-	if (bus_space_map(bst, aaa->aaa_addr, aaa->aaa_size, 0, ) != 0) {
+	if (com_is_console(bst, aaa->aaa_addr, ) == 0 &&
+	bus_space_map(bst, aaa->aaa_addr, aaa->aaa_size, 0, ) != 0) {
 		aprint_error(": can't map device\n");
 		return;
 	}
@@ -87,7 +88,8 @@ bcm_com_attach(device_t parent, device_t
 	com_attach_subr(sc);
 	aprint_naive("\n");
 
-	ih = intr_establish(aaa->aaa_intr, IPL_SERIAL, IST_LEVEL, comintr, sc);
+	ih = intr_establish(aaa->aaa_intr, IPL_SERIAL, IST_LEVEL | IST_MPSAFE,
+	comintr, sc);
 	if (ih == NULL) {
 		aprint_error_dev(self, "failed to establish interrupt %d\n",
 		aaa->aaa_intr);



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

2017-07-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Jul 31 00:51:20 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_com.c

Log Message:
Set the correct com type


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_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/broadcom/bcm2835_com.c
diff -u src/sys/arch/arm/broadcom/bcm2835_com.c:1.1 src/sys/arch/arm/broadcom/bcm2835_com.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_com.c:1.1	Sun Jul 30 23:48:32 2017
+++ src/sys/arch/arm/broadcom/bcm2835_com.c	Mon Jul 31 00:51:20 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_com.c,v 1.1 2017/07/30 23:48:32 jmcneill Exp $ */
+/* $NetBSD: bcm2835_com.c,v 1.2 2017/07/31 00:51:20 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.1 2017/07/30 23:48:32 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_com.c,v 1.2 2017/07/31 00:51:20 jmcneill Exp $");
 
 #include 
 #include 
@@ -68,7 +68,7 @@ bcm_com_attach(device_t parent, device_t
 	void *ih;
 
 	sc->sc_dev = self;
-	sc->sc_type = COM_TYPE_NORMAL;
+	sc->sc_type = COM_TYPE_BCMAUXUART;
 
 	prop_dictionary_get_uint32(dict, "frequency", >sc_frequency);
 	if (sc->sc_frequency == 0) {



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

2017-07-30 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Jul 30 23:47:58 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_sdhost.c

Log Message:
Cleanup debug messages


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_sdhost.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/broadcom/bcm2835_sdhost.c
diff -u src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.1 src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_sdhost.c:1.1	Sun Jul 30 16:54:36 2017
+++ src/sys/arch/arm/broadcom/bcm2835_sdhost.c	Sun Jul 30 23:47:58 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_sdhost.c,v 1.1 2017/07/30 16:54:36 jmcneill Exp $ */
+/* $NetBSD: bcm2835_sdhost.c,v 1.2 2017/07/30 23:47:58 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.1 2017/07/30 16:54:36 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_sdhost.c,v 1.2 2017/07/30 23:47:58 jmcneill Exp $");
 
 #include 
 #include 
@@ -114,8 +114,6 @@ static void	sdhost_exec_command(sdmmc_ch
 static void	sdhost_card_enable_intr(sdmmc_chipset_handle_t, int);
 static void	sdhost_card_intr_ack(sdmmc_chipset_handle_t);
 
-void		sdhost_dump_regs(void);
-
 static struct sdmmc_chip_functions sdhost_chip_functions = {
 	.host_reset = sdhost_host_reset,
 	.host_ocr = sdhost_host_ocr,
@@ -203,15 +201,13 @@ sdhost_attach(device_t parent, device_t 
 	aprint_naive("\n");
 	aprint_normal(": SD HOST controller\n");
 
-sdhost_dump_regs();
-
 	prop_dictionary_get_uint32(dict, "frequency", >sc_rate);
 	if (sc->sc_rate == 0) {
 		aprint_error_dev(self, "couldn't get clock frequency\n");
 		return;
 	}
 
-	aprint_normal_dev(self, "ref freq %u Hz\n", sc->sc_rate);
+	aprint_debug_dev(self, "ref freq %u Hz\n", sc->sc_rate);
 
 	if (sdhost_dma_setup(sc) != 0) {
 		aprint_error_dev(self, "failed to setup DMA\n");
@@ -705,28 +701,3 @@ static void
 sdhost_card_intr_ack(sdmmc_chipset_handle_t sch)
 {
 }
-
-void
-sdhost_dump_regs(void)
-{
-	device_t dev = device_find_by_driver_unit("sdhost", 0);
-	if (dev == NULL)
-		return;
-	struct sdhost_softc * const sc = device_private(dev);
-
-	device_printf(dev, "SDCMD  = %08x\n", SDHOST_READ(sc, SDCMD));
-	device_printf(dev, "SDARG  = %08x\n", SDHOST_READ(sc, SDARG));
-	device_printf(dev, "SDTOUT = %08x\n", SDHOST_READ(sc, SDTOUT));
-	device_printf(dev, "SDCDIV = %08x\n", SDHOST_READ(sc, SDCDIV));
-	device_printf(dev, "SDRSP0 = %08x\n", SDHOST_READ(sc, SDRSP0));
-	device_printf(dev, "SDRSP1 = %08x\n", SDHOST_READ(sc, SDRSP1));
-	device_printf(dev, "SDRSP2 = %08x\n", SDHOST_READ(sc, SDRSP2));
-	device_printf(dev, "SDRSP3 = %08x\n", SDHOST_READ(sc, SDRSP3));
-	device_printf(dev, "SDHSTS = %08x\n", SDHOST_READ(sc, SDHSTS));
-	device_printf(dev, "SDVDD  = %08x\n", SDHOST_READ(sc, SDVDD));
-	device_printf(dev, "SDEDM  = %08x\n", SDHOST_READ(sc, SDEDM));
-	device_printf(dev, "SDHCFG = %08x\n", SDHOST_READ(sc, SDHCFG));
-	device_printf(dev, "SDHBCT = %08x\n", SDHOST_READ(sc, SDHBCT));
-	device_printf(dev, "SDDATA = \n");
-	device_printf(dev, "SDHBLC = %08x\n", SDHOST_READ(sc, SDHBLC));
-}



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

2017-06-22 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Thu Jun 22 13:13:51 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Disable SDR50 support, it is not reliable on these boards.


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.29 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.30
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.29	Tue Feb  2 13:55:50 2016
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Thu Jun 22 13:13:51 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.29 2016/02/02 13:55:50 skrll Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.30 2017/06/22 13:13:51 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.29 2016/02/02 13:55:50 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_emmc.c,v 1.30 2017/06/22 13:13:51 jmcneill Exp $");
 
 #include "bcmdmac.h"
 
@@ -117,7 +117,6 @@ bcmemmc_attach(device_t parent, device_t
 	sc->sc.sc_flags |= SDHC_FLAG_NO_HS_BIT;
 	sc->sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_HIGH_SPEED_SUPP |
 	(SDHC_MAX_BLK_LEN_1024 << SDHC_MAX_BLK_LEN_SHIFT);
-	sc->sc.sc_caps2 = SDHC_SDR50_SUPP;
 
 	sc->sc.sc_host = sc->sc_hosts;
 	sc->sc.sc_clkbase = 5;	/* Default to 50MHz */



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

2017-01-07 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Jan  8 05:05:27 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm53xx_rng.c

Log Message:
fix typo


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm53xx_rng.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/broadcom/bcm53xx_rng.c
diff -u src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.9 src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.10
--- src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.9	Sun Jan  8 00:04:45 2017
+++ src/sys/arch/arm/broadcom/bcm53xx_rng.c	Sun Jan  8 00:05:27 2017
@@ -33,7 +33,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.9 2017/01/08 05:04:45 christos Exp $");
+__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.10 2017/01/08 05:05:27 christos Exp $");
 
 #include 
 #include 
@@ -170,7 +170,7 @@ bcmrng_empty(struct bcmrng_softc *sc)
 		return 0;
 	}
 	if (nwords > __arraycount(data))
-		nords = __arraycount(data);
+		nwords = __arraycount(data);
 
 	bcmrng_read_multi_4(sc, RNG_DATA, data, nwords);
 



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

2017-01-07 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sun Jan  8 05:04:45 UTC 2017

Modified Files:
src/sys/arch/arm/broadcom: bcm53xx_rng.c

Log Message:
Limit number of words we read..


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/broadcom/bcm53xx_rng.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/broadcom/bcm53xx_rng.c
diff -u src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.8 src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.9
--- src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.8	Mon Apr 13 17:18:40 2015
+++ src/sys/arch/arm/broadcom/bcm53xx_rng.c	Sun Jan  8 00:04:45 2017
@@ -33,7 +33,7 @@
 
 #include 
 
-__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.8 2015/04/13 21:18:40 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.9 2017/01/08 05:04:45 christos Exp $");
 
 #include 
 #include 
@@ -163,13 +163,14 @@ size_t
 bcmrng_empty(struct bcmrng_softc *sc)
 {
 	mutex_enter(sc->sc_lock);
+	uint32_t data[128];
 	size_t nwords = __SHIFTOUT(bcmrng_read_4(sc, RNG_STATUS), RNG_VAL);
 	if (nwords == 0) {
 		mutex_exit(sc->sc_lock);
 		return 0;
 	}
-
-	uint32_t data[nwords];
+	if (nwords > __arraycount(data))
+		nords = __arraycount(data);
 
 	bcmrng_read_multi_4(sc, RNG_DATA, data, nwords);
 



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

2016-10-14 Thread Nathanial Sloss
Module Name:src
Committed By:   nat
Date:   Fri Oct 14 20:29:45 UTC 2016

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c

Log Message:
Only run interrupt during playback.

OK skrll@


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.10 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.11
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.10	Tue Jul 28 21:24:43 2015
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Fri Oct 14 20:29:45 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.10 2015/07/28 21:24:43 skrll Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.11 2016/10/14 20:29:45 nat Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill 
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.10 2015/07/28 21:24:43 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.11 2016/10/14 20:29:45 nat Exp $");
 
 #include 
 #include 
@@ -436,7 +436,7 @@ vcaudio_service_callback(void *priv, con
 sched = true;
 			}
 
-			if (sched) {
+			if (sched && sc->sc_pint) {
 intr(intrarg);
 sc->sc_abytes += sc->sc_pblksize;
 cv_signal(>sc_datacv);



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

2015-12-19 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Dec 19 08:27:01 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_space.c

Log Message:
Fix up bus_space_map for latest RPI firmware which now passes the FB
address in the mailbox properties as a bus address.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/broadcom/bcm2835_space.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/broadcom/bcm2835_space.c
diff -u src/sys/arch/arm/broadcom/bcm2835_space.c:1.8 src/sys/arch/arm/broadcom/bcm2835_space.c:1.9
--- src/sys/arch/arm/broadcom/bcm2835_space.c:1.8	Sat Feb 28 09:34:34 2015
+++ src/sys/arch/arm/broadcom/bcm2835_space.c	Sat Dec 19 08:27:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_space.c,v 1.8 2015/02/28 09:34:34 skrll Exp $	*/
+/*	$NetBSD: bcm2835_space.c,v 1.9 2015/12/19 08:27:01 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.8 2015/02/28 09:34:34 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.9 2015/12/19 08:27:01 skrll Exp $");
 
 #include 
 #include 
@@ -292,18 +292,17 @@ bcm2835_bs_map(void *t, bus_addr_t ba, b
 	int pmap_flags;
 
 
-#if defined(BCM2836)
+	/* Attempt to find the PA device mapping */
 	pa = ba;
-#else
-	pa = ba & ~BCM2835_BUSADDR_CACHE_MASK;
-#endif
-	/* this does device addresses */
-	if ((pd = pmap_devmap_find_pa(pa, size)) != NULL) {
+	if ((pd = pmap_devmap_find_pa(ba, size)) != NULL) {
 		/* Device was statically mapped. */
 		*bshp = pd->pd_va + (pa - pd->pd_pa);
 		return 0;
 	}
 
+	/* Now assume bus address so convert to PA */
+	pa = ba & ~BCM2835_BUSADDR_CACHE_MASK;
+
 	startpa = trunc_page(pa);
 	endpa = round_page(pa + size);
 



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

2015-12-17 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Thu Dec 17 08:31:50 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835reg.h

Log Message:
Provide all the BCM2836_INT_CNT*_CPUN helper macros

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.16 src/sys/arch/arm/broadcom/bcm2835reg.h:1.17
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.16	Sat Nov 21 07:41:29 2015
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Thu Dec 17 08:31:50 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.16 2015/11/21 07:41:29 mlelstv Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.17 2015/12/17 08:31:50 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -155,7 +155,10 @@
 #define	BCM2836_INT_TIMER		11
 #define	BCM2836_INT_NLOCAL		12
 
+#define	BCM2836_INT_CNTPSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPSIRQ)
+#define	BCM2836_INT_CNTPNSIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTPNSIRQ)
 #define	BCM2836_INT_CNTVIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTVIRQ)
+#define	BCM2836_INT_CNTHPIRQ_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_CNTHPIRQ)
 #define	BCM2836_INT_MAILBOX0_CPUN(n)	(BCM2836_INT_BASECPUN(n) + BCM2836_INT_MAILBOX0)
 #else
 #define	BCM2835_INT_BASE		0



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

2015-11-20 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sat Nov 21 07:41:29 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_obio.c bcm2835reg.h files.bcm2835
Added Files:
src/sys/arch/arm/broadcom: bcm2835_cm.c bcm2835_cm.h bcm2835_pwm.c
bcm2835_pwm.h

Log Message:
Add drivers to access the clock manager and pulse width modulator.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/broadcom/bcm2835_cm.c \
src/sys/arch/arm/broadcom/bcm2835_cm.h \
src/sys/arch/arm/broadcom/bcm2835_pwm.c \
src/sys/arch/arm/broadcom/bcm2835_pwm.h
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/broadcom/bcm2835_obio.c \
src/sys/arch/arm/broadcom/files.bcm2835
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/broadcom/bcm2835reg.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/broadcom/bcm2835_obio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_obio.c:1.25 src/sys/arch/arm/broadcom/bcm2835_obio.c:1.26
--- src/sys/arch/arm/broadcom/bcm2835_obio.c:1.25	Sun Apr 12 17:32:39 2015
+++ src/sys/arch/arm/broadcom/bcm2835_obio.c	Sat Nov 21 07:41:29 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_obio.c,v 1.25 2015/04/12 17:32:39 skrll Exp $	*/
+/*	$NetBSD: bcm2835_obio.c,v 1.26 2015/11/21 07:41:29 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_obio.c,v 1.25 2015/04/12 17:32:39 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_obio.c,v 1.26 2015/11/21 07:41:29 mlelstv Exp $");
 
 #include "locators.h"
 #include "obio.h"
@@ -194,6 +194,20 @@ static const struct ambadev_locators bcm
 		.ad_intr = -1,
 	},
 	{
+		/* Clock Manager */
+		.ad_name = "bcmcm",
+		.ad_addr = BCM2835_CM_BASE,
+		.ad_size = BCM2835_CM_SIZE,
+		.ad_intr = -1,
+	},
+	{
+		/* PWM Controller */
+		.ad_name = "bcmpwm",
+		.ad_addr = BCM2835_PWM_BASE,
+		.ad_size = BCM2835_PWM_SIZE,
+		.ad_intr = -1,
+	},
+	{
 		/* Terminator */
 		.ad_name = NULL,
 	}
Index: src/sys/arch/arm/broadcom/files.bcm2835
diff -u src/sys/arch/arm/broadcom/files.bcm2835:1.25 src/sys/arch/arm/broadcom/files.bcm2835:1.26
--- src/sys/arch/arm/broadcom/files.bcm2835:1.25	Fri Mar 13 22:48:41 2015
+++ src/sys/arch/arm/broadcom/files.bcm2835	Sat Nov 21 07:41:29 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.bcm2835,v 1.25 2015/03/13 22:48:41 jmcneill Exp $
+#	$NetBSD: files.bcm2835,v 1.26 2015/11/21 07:41:29 mlelstv Exp $
 #
 # Configuration info for Broadcom BCM2835 ARM Peripherals
 #
@@ -100,3 +100,14 @@ file	arch/arm/broadcom/bcm2835_vcaudio.c
 device	bcmgpio: gpiobus
 attach	bcmgpio at obio
 file	arch/arm/broadcom/bcm2835_gpio.c
+
+# Clock Manager (BCM2835_CM_BASE)
+device	bcmcm
+attach	bcmcm at obio with bcmcm_amba
+file	arch/arm/broadcom/bcm2835_cm.c		bcmcm		needs-flag
+
+# PWM Controller (BCM2835_PWM_BASE)
+device	bcmpwm
+attach	bcmpwm at obio with bcmpwm_amba
+file	arch/arm/broadcom/bcm2835_pwm.c		bcmpwm		needs-flag
+

Index: src/sys/arch/arm/broadcom/bcm2835reg.h
diff -u src/sys/arch/arm/broadcom/bcm2835reg.h:1.15 src/sys/arch/arm/broadcom/bcm2835reg.h:1.16
--- src/sys/arch/arm/broadcom/bcm2835reg.h:1.15	Sun Apr 12 17:32:39 2015
+++ src/sys/arch/arm/broadcom/bcm2835reg.h	Sat Nov 21 07:41:29 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835reg.h,v 1.15 2015/04/12 17:32:39 skrll Exp $	*/
+/*	$NetBSD: bcm2835reg.h,v 1.16 2015/11/21 07:41:29 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -54,12 +54,14 @@
 #define	BCM2835_DMA0_BASE	(BCM2835_PERIPHERALS_BASE + 0x7000)
 #define	BCM2835_ARM_BASE	(BCM2835_PERIPHERALS_BASE + 0xB000)
 #define	BCM2835_PM_BASE		(BCM2835_PERIPHERALS_BASE + 0x0010)
+#define	BCM2835_CM_BASE  	(BCM2835_PERIPHERALS_BASE + 0x00101000)
 #define	BCM2835_RNG_BASE	(BCM2835_PERIPHERALS_BASE + 0x00104000)
 #define	BCM2835_GPIO_BASE	(BCM2835_PERIPHERALS_BASE + 0x0020)
 #define	BCM2835_UART0_BASE	(BCM2835_PERIPHERALS_BASE + 0x00201000)
 #define	BCM2835_PCM_BASE	(BCM2835_PERIPHERALS_BASE + 0x00203000)
 #define	BCM2835_SPI0_BASE	(BCM2835_PERIPHERALS_BASE + 0x00204000)
 #define	BCM2835_BSC0_BASE	(BCM2835_PERIPHERALS_BASE + 0x00205000)
+#define	BCM2835_PWM_BASE	(BCM2835_PERIPHERALS_BASE + 0x0020C000)
 #define	BCM2835_BSCSPISLV_BASE	(BCM2835_PERIPHERALS_BASE + 0x00214000)
 #define	BCM2835_AUX_BASE	(BCM2835_PERIPHERALS_BASE + 0x00215000)
 #define	BCM2835_EMMC_BASE	(BCM2835_PERIPHERALS_BASE + 0x0030)
@@ -72,12 +74,14 @@
 #define	BCM2835_DMA0_SIZE	0x1000
 #define	BCM2835_ARM_SIZE	0x1000
 #define	BCM2835_PM_SIZE		0x1000
+#define	BCM2835_CM_SIZE		0xa8
 #define	BCM2835_RNG_SIZE	0x1000
 #define	BCM2835_GPIO_SIZE	0x1000
 #define	BCM2835_UART0_SIZE	0x90
 #define	BCM2835_PCM_SIZE	0x1000
 #define	BCM2835_SPI0_SIZE	0x1000
 #define	BCM2835_BSC_SIZE	0x1000
+#define	BCM2835_PWM_SIZE	0x28
 #define	BCM2835_AUX_SIZE	0x1000
 #define	BCM2835_EMMC_SIZE	0x1000
 #define	BCM2835_USB_SIZE	0x2

Added 

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

2015-08-09 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sun Aug  9 13:07:47 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_dmac.c

Log Message:
Make the DMA halt procedure follow better the documentation.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_dmac.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/broadcom/bcm2835_dmac.c
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.13 src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.13	Sun Aug  9 13:06:44 2015
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.c	Sun Aug  9 13:07:47 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.c,v 1.13 2015/08/09 13:06:44 mlelstv Exp $ */
+/* $NetBSD: bcm2835_dmac.c,v 1.14 2015/08/09 13:07:47 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill jmcne...@invisible.ca
@@ -29,7 +29,7 @@
 #include opt_ddb.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.13 2015/08/09 13:06:44 mlelstv Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.14 2015/08/09 13:07:47 mlelstv Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -237,9 +237,9 @@ bcm_dmac_free(struct bcm_dmac_channel *c
 
 	bcm_dmac_halt(ch);
 
+	/* reset chip */
 	val = DMAC_READ(sc, DMAC_CS(ch-ch_index));
 	val |= DMAC_CS_RESET;
-	val |= DMAC_CS_ABORT;
 	val = ~DMAC_CS_ACTIVE;
 	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), val);
 
@@ -279,9 +279,21 @@ void
 bcm_dmac_halt(struct bcm_dmac_channel *ch)
 {
 	struct bcm_dmac_softc *sc = ch-ch_sc;
+	uint32_t val;
+
+	/* pause DMA */
+	val = DMAC_READ(sc, DMAC_CS(ch-ch_index));
+	val = ~DMAC_CS_ACTIVE;
+	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), val);
+
+	/* wait for paused state ? */
 
-	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), DMAC_CS_RESET|DMAC_CS_ABORT);
-	bcm_dmac_set_conblk_addr(ch, 0);
+	/* end descriptor chain */
+	DMAC_WRITE(sc, DMAC_NEXTCONBK(ch-ch_index), 0);
+
+	/* resume DMA that then stops */
+	val |= DMAC_CS_ACTIVE | DMAC_CS_ABORT;
+	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), val);
 }
 
 #if defined(DDB)



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

2015-08-09 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sun Aug  9 13:06:44 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_dmac.c bcm2835_dmac.h bcm2835_emmc.c

Log Message:
Invoke callback routine for all DMA interrupts.
Pass status and error bits to callback instead of filtering them early.
Adjust the current only callback routine in the EMMC driver.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_dmac.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_dmac.h
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_dmac.c
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.12 src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.13
--- src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.12	Sun Aug  2 16:46:12 2015
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.c	Sun Aug  9 13:06:44 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.c,v 1.12 2015/08/02 16:46:12 jmcneill Exp $ */
+/* $NetBSD: bcm2835_dmac.c,v 1.13 2015/08/09 13:06:44 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill jmcne...@invisible.ca
@@ -29,7 +29,7 @@
 #include opt_ddb.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.12 2015/08/02 16:46:12 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.13 2015/08/09 13:06:44 mlelstv Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -53,7 +53,7 @@ struct bcm_dmac_channel {
 	struct bcm_dmac_softc *ch_sc;
 	void *ch_ih;
 	uint8_t ch_index;
-	void (*ch_callback)(void *);
+	void (*ch_callback)(uint32_t, uint32_t, void *);
 	void *ch_callbackarg;
 	uint32_t ch_debug;
 };
@@ -165,23 +165,26 @@ bcm_dmac_intr(void *priv)
 {
 	struct bcm_dmac_channel *ch = priv;
 	struct bcm_dmac_softc *sc = ch-ch_sc;
-	uint32_t cs;
+	uint32_t cs, ce;
 
 	cs = DMAC_READ(sc, DMAC_CS(ch-ch_index));
-	if (!(cs  DMAC_CS_INTMASK))
-		return 0;
-
 	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), cs);
+	cs = DMAC_CS_INT | DMAC_CS_END | DMAC_CS_ERROR;
+
+	ce = DMAC_READ(sc, DMAC_DEBUG(ch-ch_index));
+	ce = DMAC_DEBUG_READ_ERROR | DMAC_DEBUG_FIFO_ERROR
+	| DMAC_DEBUG_READ_LAST_NOT_SET_ERROR;
+	DMAC_WRITE(sc, DMAC_DEBUG(ch-ch_index), ce);
 
 	if (ch-ch_callback)
-		ch-ch_callback(ch-ch_callbackarg);
+		ch-ch_callback(cs, ce, ch-ch_callbackarg);
 
 	return 1;
 }
 
 struct bcm_dmac_channel *
-bcm_dmac_alloc(enum bcm_dmac_type type, int ipl, void (*cb)(void *),
-void *cbarg)
+bcm_dmac_alloc(enum bcm_dmac_type type, int ipl,
+void (*cb)(uint32_t, uint32_t, void *), void *cbarg)
 {
 	struct bcm_dmac_softc *sc;
 	struct bcm_dmac_channel *ch = NULL;

Index: src/sys/arch/arm/broadcom/bcm2835_dmac.h
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.3 src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.4
--- src/sys/arch/arm/broadcom/bcm2835_dmac.h:1.3	Fri Sep 12 19:33:45 2014
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.h	Sun Aug  9 13:06:44 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.h,v 1.3 2014/09/12 19:33:45 jakllsch Exp $ */
+/* $NetBSD: bcm2835_dmac.h,v 1.4 2015/08/09 13:06:44 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill jmcne...@invisible.ca
@@ -102,7 +102,7 @@ enum bcm_dmac_type {
 struct bcm_dmac_channel;
 
 struct bcm_dmac_channel *bcm_dmac_alloc(enum bcm_dmac_type, int,
-	void (*)(void *), void *);
+void (*)(uint32_t, uint32_t, void *), void *);
 void bcm_dmac_free(struct bcm_dmac_channel *);
 void bcm_dmac_set_conblk_addr(struct bcm_dmac_channel *, bus_addr_t);
 int bcm_dmac_transfer(struct bcm_dmac_channel *);

Index: src/sys/arch/arm/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.27 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.28
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.27	Sun Aug  9 13:03:10 2015
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sun Aug  9 13:06:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.27 2015/08/09 13:03:10 mlelstv Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.28 2015/08/09 13:06:44 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.27 2015/08/09 13:03:10 mlelstv Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.28 2015/08/09 13:06:44 mlelstv Exp $);
 
 #include bcmdmac.h
 
@@ -82,7 +82,7 @@ static void bcmemmc_attach(device_t, dev
 static void bcmemmc_attach_i(device_t);
 #if NBCMDMAC  0
 static int bcmemmc_xfer_data_dma(struct sdhc_softc *, struct sdmmc_command *);
-static void bcmemmc_dma_done(void *);
+static void bcmemmc_dma_done(uint32_t, uint32_t, void *);
 #endif
 
 CFATTACH_DECL_NEW(bcmemmc, sizeof(struct bcmemmc_softc),
@@ -331,14 +331,19 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 }
 
 static void
-bcmemmc_dma_done(void *arg)
+bcmemmc_dma_done(uint32_t status, uint32_t error, void *arg)
 {
 	struct bcmemmc_softc * const sc = arg;
 

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

2015-08-09 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sun Aug  9 13:03:11 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
Handle error when setting DMA transfer.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.26 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.27
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.26	Mon Aug  3 10:27:32 2015
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sun Aug  9 13:03:10 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.26 2015/08/03 10:27:32 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.27 2015/08/09 13:03:10 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.26 2015/08/03 10:27:32 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.27 2015/08/09 13:03:10 mlelstv Exp $);
 
 #include bcmdmac.h
 
@@ -309,7 +309,10 @@ bcmemmc_xfer_data_dma(struct sdhc_softc 
 	sc-sc_state = EMMC_DMA_STATE_BUSY;
 	bcm_dmac_set_conblk_addr(sc-sc_dmac,
 	sc-sc_dmamap-dm_segs[0].ds_addr);
-	bcm_dmac_transfer(sc-sc_dmac);
+	error = bcm_dmac_transfer(sc-sc_dmac);
+	if (error)
+		return error;
+
 	while (sc-sc_state == EMMC_DMA_STATE_BUSY) {
 		error = cv_timedwait(sc-sc_cv, plock, hz * 10);
 		if (error == EWOULDBLOCK) {



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

2015-08-03 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Aug  3 10:27:32 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
DDR50 and SDR104 don't seem to be stable here, so disable them


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.25 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.26
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.25	Sun Aug  2 22:09:43 2015
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Mon Aug  3 10:27:32 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.25 2015/08/02 22:09:43 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.26 2015/08/03 10:27:32 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.25 2015/08/02 22:09:43 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.26 2015/08/03 10:27:32 jmcneill Exp $);
 
 #include bcmdmac.h
 
@@ -116,10 +116,9 @@ bcmemmc_attach(device_t parent, device_t
 	sc-sc.sc_flags |= SDHC_FLAG_32BIT_ACCESS;
 	sc-sc.sc_flags |= SDHC_FLAG_HOSTCAPS;
 	sc-sc.sc_flags |= SDHC_FLAG_NO_HS_BIT;
-	sc-sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_VOLTAGE_SUPP_1_8V |
-	SDHC_HIGH_SPEED_SUPP |
+	sc-sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_HIGH_SPEED_SUPP |
 	(SDHC_MAX_BLK_LEN_1024  SDHC_MAX_BLK_LEN_SHIFT);
-	sc-sc.sc_caps2 = SDHC_SDR50_SUPP | SDHC_SDR104_SUPP | SDHC_DDR50_SUPP;
+	sc-sc.sc_caps2 = SDHC_SDR50_SUPP;
 
 	sc-sc.sc_host = sc-sc_hosts;
 	sc-sc.sc_clkbase = 5;	/* Default to 50MHz */



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

2015-08-02 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  2 16:46:12 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_dmac.c

Log Message:
When halting a channel, abort the current DMA CB and reset the channel
before stopping DMA.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/broadcom/bcm2835_dmac.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/broadcom/bcm2835_dmac.c
diff -u src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.11 src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.12
--- src/sys/arch/arm/broadcom/bcm2835_dmac.c:1.11	Wed Jul 29 14:22:49 2015
+++ src/sys/arch/arm/broadcom/bcm2835_dmac.c	Sun Aug  2 16:46:12 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_dmac.c,v 1.11 2015/07/29 14:22:49 skrll Exp $ */
+/* $NetBSD: bcm2835_dmac.c,v 1.12 2015/08/02 16:46:12 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill jmcne...@invisible.ca
@@ -29,7 +29,7 @@
 #include opt_ddb.h
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.11 2015/07/29 14:22:49 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_dmac.c,v 1.12 2015/08/02 16:46:12 jmcneill Exp $);
 
 #include sys/param.h
 #include sys/bus.h
@@ -275,6 +275,9 @@ bcm_dmac_transfer(struct bcm_dmac_channe
 void
 bcm_dmac_halt(struct bcm_dmac_channel *ch)
 {
+	struct bcm_dmac_softc *sc = ch-ch_sc;
+
+	DMAC_WRITE(sc, DMAC_CS(ch-ch_index), DMAC_CS_RESET|DMAC_CS_ABORT);
 	bcm_dmac_set_conblk_addr(ch, 0);
 }
 



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

2015-08-02 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sun Aug  2 22:09:43 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_emmc.c

Log Message:
enable UHS support


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/broadcom/bcm2835_emmc.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/broadcom/bcm2835_emmc.c
diff -u src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.24 src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.25
--- src/sys/arch/arm/broadcom/bcm2835_emmc.c:1.24	Fri Jul 31 15:00:07 2015
+++ src/sys/arch/arm/broadcom/bcm2835_emmc.c	Sun Aug  2 22:09:43 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_emmc.c,v 1.24 2015/07/31 15:00:07 jmcneill Exp $	*/
+/*	$NetBSD: bcm2835_emmc.c,v 1.25 2015/08/02 22:09:43 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.24 2015/07/31 15:00:07 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_emmc.c,v 1.25 2015/08/02 22:09:43 jmcneill Exp $);
 
 #include bcmdmac.h
 
@@ -116,8 +116,10 @@ bcmemmc_attach(device_t parent, device_t
 	sc-sc.sc_flags |= SDHC_FLAG_32BIT_ACCESS;
 	sc-sc.sc_flags |= SDHC_FLAG_HOSTCAPS;
 	sc-sc.sc_flags |= SDHC_FLAG_NO_HS_BIT;
-	sc-sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_HIGH_SPEED_SUPP |
+	sc-sc.sc_caps = SDHC_VOLTAGE_SUPP_3_3V | SDHC_VOLTAGE_SUPP_1_8V |
+	SDHC_HIGH_SPEED_SUPP |
 	(SDHC_MAX_BLK_LEN_1024  SDHC_MAX_BLK_LEN_SHIFT);
+	sc-sc.sc_caps2 = SDHC_SDR50_SUPP | SDHC_SDR104_SUPP | SDHC_DDR50_SUPP;
 
 	sc-sc.sc_host = sc-sc_hosts;
 	sc-sc.sc_clkbase = 5;	/* Default to 50MHz */



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

2015-08-01 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Sat Aug  1 14:18:00 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_intr.c

Log Message:
Call the correct ipi handlers for IPI_AST and IPI_KPREEMPT


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_intr.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/broadcom/bcm2835_intr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_intr.c:1.10 src/sys/arch/arm/broadcom/bcm2835_intr.c:1.11
--- src/sys/arch/arm/broadcom/bcm2835_intr.c:1.10	Sat Jul 25 08:43:41 2015
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c	Sat Aug  1 14:18:00 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_intr.c,v 1.10 2015/07/25 08:43:41 skrll Exp $	*/
+/*	$NetBSD: bcm2835_intr.c,v 1.11 2015/08/01 14:18:00 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012, 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_intr.c,v 1.10 2015/07/25 08:43:41 skrll Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_intr.c,v 1.11 2015/08/01 14:18:00 skrll Exp $);
 
 #define _INTR_PRIVATE
 
@@ -492,12 +492,16 @@ bcm2836mp_ipi_handler(void *priv)
 		const u_int ipi = bit - 1;
 		switch (ipi) {
 		case IPI_AST:
+			pic_ipi_ast(priv);
+			break;
 		case IPI_NOP:
+			pic_ipi_nop(priv);
+			break;
 #ifdef __HAVE_PREEMPTION
 		case IPI_KPREEMPT:
-#endif
-			pic_ipi_nop(priv);
+			pic_ipi_kpreempt(priv);
 			break;
+#endif
 		case IPI_XCALL:
 			pic_ipi_xcall(priv);
 			break;



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

2015-07-28 Thread Nick Hudson
Module Name:src
Committed By:   skrll
Date:   Tue Jul 28 21:24:43 UTC 2015

Modified Files:
src/sys/arch/arm/broadcom: bcm2835_vcaudio.c

Log Message:
Reduce latency a bit. From nat@


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/broadcom/bcm2835_vcaudio.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/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.9 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.10
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.9	Sun Mar 15 18:31:29 2015
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Tue Jul 28 21:24:43 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.9 2015/03/15 18:31:29 jmcneill Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.10 2015/07/28 21:24:43 skrll Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill jmcne...@invisible.ca
@@ -31,7 +31,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: bcm2835_vcaudio.c,v 1.9 2015/03/15 18:31:29 jmcneill Exp $);
+__KERNEL_RCSID(0, $NetBSD: bcm2835_vcaudio.c,v 1.10 2015/07/28 21:24:43 skrll Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -81,20 +81,22 @@ enum vcaudio_dest {
 	VCAUDIO_DEST_HDMI = 2,
 };
 
-
 /*
- * Standard message size is 4000 bytes and VCHIQ can accept 16 messages.
+ * Maximum message size is 4000 bytes and VCHIQ can accept 16 messages.
  *
  * 4000 bytes of 16bit 48kHz stereo is approximately 21ms.
  *
  * We get complete messages at ~10ms intervals.
  *
- * Setting blocksize to 2 x 4000 means that we send approx 42ms of audio. We
- * prefill by two blocks before starting audio meaning we have 83ms of latency.
+ * Setting blocksize to 4 x 1600 means that we send approx 33ms of audio. We
+ * prefill by two blocks before starting audio meaning we have 50ms of latency.
+ * 
+ * Six messages of 1600 bytes was chosen working back from a desired latency of
+ * 50ms.
  */
 
-#define VCAUDIO_MSGSIZE		4000
-#define VCAUDIO_NUMMSGS		2
+#define VCAUDIO_MSGSIZE		1600
+#define VCAUDIO_NUMMSGS		4
 #define VCAUDIO_BLOCKSIZE	(VCAUDIO_MSGSIZE * VCAUDIO_NUMMSGS)
 #define VCAUDIO_BUFFERSIZE	128000
 #define VCAUDIO_PREFILLCOUNT	2



  1   2   3   >