Module Name:    src
Committed By:   marty
Date:           Sun Dec 27 02:54:13 UTC 2015

Modified Files:
        src/sys/arch/arm/samsung: files.exynos
        src/sys/arch/evbarm/conf: EXYNOS
Added Files:
        src/sys/arch/arm/samsung: exynos_ehci.c exynos_ohci.c exynos_usb3.c
            exynos_usbphy.c
Removed Files:
        src/sys/arch/arm/samsung: exynos_usb.c

Log Message:
XU4 USB snapshot: Reorganize source files

This is just a skeleton,  not a set of drivers, but the pieces are now
more or less in the right places.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/samsung/exynos_ehci.c \
    src/sys/arch/arm/samsung/exynos_ohci.c \
    src/sys/arch/arm/samsung/exynos_usb3.c \
    src/sys/arch/arm/samsung/exynos_usbphy.c
cvs rdiff -u -r1.15 -r0 src/sys/arch/arm/samsung/exynos_usb.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/samsung/files.exynos
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/evbarm/conf/EXYNOS

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

Modified files:

Index: src/sys/arch/arm/samsung/files.exynos
diff -u src/sys/arch/arm/samsung/files.exynos:1.19 src/sys/arch/arm/samsung/files.exynos:1.20
--- src/sys/arch/arm/samsung/files.exynos:1.19	Sat Dec 26 23:13:50 2015
+++ src/sys/arch/arm/samsung/files.exynos	Sun Dec 27 02:54:12 2015
@@ -1,4 +1,4 @@
-#	$NetBSD: files.exynos,v 1.19 2015/12/26 23:13:50 jmcneill Exp $
+#	$NetBSD: files.exynos,v 1.20 2015/12/27 02:54:12 marty Exp $
 #
 # Configuration info for Samsung Exynos SoC ARM Peripherals
 #
@@ -87,12 +87,24 @@ attach  exyopctl at fdt with exynos_pinc
 file	arch/arm/samsung/exynos_pinctrl.c	exynos_pinctrl needs-flag
 file	arch/arm/samsung/exynos_gpio.c		exynos_pinctrl needs-flag
 
-# USB2 Host Controller (EHCI/OHCI)
-device	exyousb { } : fdtbus
-attach	exyousb at fdt with exyo_usb
-attach	ohci at exyousb with ohci_exyousb
-attach	ehci at exyousb with ehci_exyousb
-file	arch/arm/samsung/exynos_usb.c		exyo_usb
+# USB2 phy
+device  exyousbphy
+attach  exyousbphy at fdt with exynos_usbphy
+file    arch/arm/samsung/exynos_usbphy.c	exynos_usbphy
+
+# USB2 Host Controller (OHCI)
+attach	ohci at fdt with exynos_ohci
+file	arch/arm/samsung/exynos_ohci.c		exynos_ohci
+
+#USB 2 Host Controller (EHCI)
+attach	ehci at fdt with exynos_ehci
+file	arch/arm/samsung/exynos_ehci.c		exynos_ehci
+
+# USB3 Host Controller (xHCI)
+device	exyousb : fdtbus
+attach	exyousb at fdt with exynos_usb
+attach  xhci at fdt
+file	arch/arm/samsung/exynos_usb3.c		exynos_usb
 
 # SD/MMC Host Controller
 attach	dwcmmc at fdt with exynos_dwcmmc

Index: src/sys/arch/evbarm/conf/EXYNOS
diff -u src/sys/arch/evbarm/conf/EXYNOS:1.7 src/sys/arch/evbarm/conf/EXYNOS:1.8
--- src/sys/arch/evbarm/conf/EXYNOS:1.7	Sat Dec 26 23:14:08 2015
+++ src/sys/arch/evbarm/conf/EXYNOS	Sun Dec 27 02:54:13 2015
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: EXYNOS,v 1.7 2015/12/26 23:14:08 jmcneill Exp $
+#	$NetBSD: EXYNOS,v 1.8 2015/12/27 02:54:13 marty Exp $
 #
 #	ODROID-XU -- ODROID-XU4 Exynos5422 based kernel
 #
@@ -238,15 +238,20 @@ exyopctl1	at fdt?
 exyopctl2	at fdt?
 exyopctl3	at fdt?
 exyopctl4	at fdt?
-#gpio*		at exyogpio?
+gpio*		at gpiobus?
 
-# On-board USB
-exyousb*	at fdt?
-ohci*		at exyousb?
-ehci*		at exyousb?
+# On-board USB 2.0
+exyousbphy*	at fdt?
+ohci*		at fdt?
+ehci*		at fdt?
 usb*		at ohci?
 usb*		at ehci?
 
+# On-board USB 3.0
+exyousb*       at fdt?
+#xhci*	       at fdt?
+#usb*	       at xhci?
+
 # I2C devices
 exyoi2c0	at fdt?
 exyoi2c1	at fdt?

Added files:

Index: src/sys/arch/arm/samsung/exynos_ehci.c
diff -u /dev/null src/sys/arch/arm/samsung/exynos_ehci.c:1.1
--- /dev/null	Sun Dec 27 02:54:13 2015
+++ src/sys/arch/arm/samsung/exynos_ehci.c	Sun Dec 27 02:54:12 2015
@@ -0,0 +1,124 @@
+/*	$NetBSD: exynos_ehci.c,v 1.1 2015/12/27 02:54:12 marty Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Reinoud Zandijk.
+ *
+ * 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 "locators.h"
+#include "ohci.h"
+#include "ehci.h"
+
+#include <sys/cdefs.h>
+
+__KERNEL_RCSID(1, "$NetBSD: exynos_ehci.c,v 1.1 2015/12/27 02:54:12 marty Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/intr.h>
+#include <sys/bus.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/queue.h>
+#include <sys/kmem.h>
+#include <sys/gpio.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
+#include <dev/usb/usb_mem.h>
+
+#include <dev/usb/ehcireg.h>
+#include <dev/usb/ehcivar.h>
+
+#include <arm/samsung/exynos_reg.h>
+#include <arm/samsung/exynos_var.h>
+
+#include <dev/fdt/fdtvar.h>
+
+static int	exynos_ehci_match(device_t, cfdata_t, void *);
+static void	exynos_ehci_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(exynos_ehci, sizeof(struct ehci_softc),
+    exynos_ehci_match, exynos_ehci_attach, NULL, NULL);
+
+
+static int
+exynos_ehci_match(device_t parent, cfdata_t cf, void *aux)
+{
+	const char * const compatible[] = { "samsung,exynos5-ehci",
+					    NULL };
+	struct fdt_attach_args * const faa = aux;
+	return of_match_compatible(faa->faa_phandle, compatible);
+}
+
+
+static void
+exynos_ehci_attach(device_t parent, device_t self, void *aux)
+{
+	struct ehci_softc *sc = device_private(self);
+	struct fdt_attach_args * const faa = aux;
+	bus_addr_t addr;
+	bus_size_t size;
+	int error;
+	int r;
+
+	if (fdtbus_get_reg(faa->faa_phandle, 0, &addr, &size) != 0) {
+		aprint_error(": couldn't get registers\n");
+		return;
+	}
+
+	sc->sc_dev = self;
+	sc->iot = faa->faa_bst;
+	sc->sc_size = size;
+	sc->sc_bus.dmatag = faa->faa_dmat;
+	sc->sc_bus.hci_private = sc;
+	sc->sc_bus.usbrev = USBREV_2_0;
+	sc->sc_ncomp = 0;
+	strlcpy(sc->sc_vendor, "exynos", sizeof(sc->sc_vendor));
+
+	error = bus_space_map(sc->iot, addr, size, 0, &sc->ioh);
+	if (error) {
+		aprint_error(": couldn't map %#llx: %d",
+			     (uint64_t)addr, error);
+		return;
+	}
+
+
+	aprint_naive(": EHCI USB controller\n");
+	aprint_normal(": EHCI NOT IMPLEMENTED\n");
+
+	/* attach */
+	r = ehci_init(sc);
+	if (r != USBD_NORMAL_COMPLETION) {
+		aprint_error_dev(self, "init failed, error = %d\n", r);
+		/* disable : TBD */
+		return;
+	}
+	sc->sc_child = config_found(self, &sc->sc_bus, usbctlprint);
+}
Index: src/sys/arch/arm/samsung/exynos_ohci.c
diff -u /dev/null src/sys/arch/arm/samsung/exynos_ohci.c:1.1
--- /dev/null	Sun Dec 27 02:54:13 2015
+++ src/sys/arch/arm/samsung/exynos_ohci.c	Sun Dec 27 02:54:12 2015
@@ -0,0 +1,121 @@
+/*	$NetBSD: exynos_ohci.c,v 1.1 2015/12/27 02:54:12 marty Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Reinoud Zandijk.
+ *
+ * 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 "locators.h"
+#include "ohci.h"
+#include "ehci.h"
+
+#include <sys/cdefs.h>
+
+__KERNEL_RCSID(1, "$NetBSD: exynos_ohci.c,v 1.1 2015/12/27 02:54:12 marty Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/intr.h>
+#include <sys/bus.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/queue.h>
+#include <sys/kmem.h>
+#include <sys/gpio.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
+#include <dev/usb/usb_mem.h>
+
+#include <dev/usb/ohcireg.h>
+#include <dev/usb/ohcivar.h>
+
+#include <arm/samsung/exynos_reg.h>
+#include <arm/samsung/exynos_var.h>
+
+#include <dev/fdt/fdtvar.h>
+
+static int	exynos_ohci_match(device_t, cfdata_t, void *);
+static void	exynos_ohci_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(exynos_ohci, sizeof(struct ohci_softc),
+    exynos_ohci_match, exynos_ohci_attach, NULL, NULL);
+
+
+static int
+exynos_ohci_match(device_t parent, cfdata_t cf, void *aux)
+{
+	const char * const compatible[] = { "samsung,exynos5-ohci",
+					    NULL };
+	struct fdt_attach_args * const faa = aux;
+	return of_match_compatible(faa->faa_phandle, compatible);
+}
+
+
+static void
+exynos_ohci_attach(device_t parent, device_t self, void *aux)
+{
+	struct ohci_softc *sc = device_private(self);
+	struct fdt_attach_args * const faa = aux;
+	bus_addr_t addr;
+	bus_size_t size;
+	int error;
+	int r;
+
+	if (fdtbus_get_reg(faa->faa_phandle, 0, &addr, &size) != 0) {
+		aprint_error(": couldn't get registers\n");
+		return;
+	}
+
+	sc->sc_dev = self;
+	sc->iot = faa->faa_bst;
+	sc->sc_size = size;
+	sc->sc_bus.dmatag = faa->faa_dmat;
+	sc->sc_bus.hci_private = sc;
+
+	error = bus_space_map(sc->iot, addr, size, 0, &sc->ioh);
+	if (error) {
+		aprint_error(": couldn't map %#llx: %d",
+			     (uint64_t)addr, error);
+		return;
+	}
+
+	aprint_naive(": OHCI USB controller\n");
+	aprint_normal(": OHCI NOT IMPLEMENTED\n");
+
+	/* attach */
+	r = ohci_init(sc);
+	if (r != USBD_NORMAL_COMPLETION) {
+		aprint_error_dev(self, "init failed, error = %d\n", r);
+		/* disable : TBD */
+		return;
+	}
+	sc->sc_child = config_found(self, &sc->sc_bus, usbctlprint);
+}
+
Index: src/sys/arch/arm/samsung/exynos_usb3.c
diff -u /dev/null src/sys/arch/arm/samsung/exynos_usb3.c:1.1
--- /dev/null	Sun Dec 27 02:54:13 2015
+++ src/sys/arch/arm/samsung/exynos_usb3.c	Sun Dec 27 02:54:12 2015
@@ -0,0 +1,180 @@
+/*	$NetBSD: exynos_usb3.c,v 1.1 2015/12/27 02:54:12 marty Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Reinoud Zandijk.
+ *
+ * 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 "locators.h"
+#include "ohci.h"
+#include "ehci.h"
+
+#include <sys/cdefs.h>
+
+__KERNEL_RCSID(1, "$NetBSD: exynos_usb3.c,v 1.1 2015/12/27 02:54:12 marty Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/intr.h>
+#include <sys/bus.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/queue.h>
+#include <sys/kmem.h>
+#include <sys/gpio.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
+#include <dev/usb/usb_mem.h>
+
+#include <arm/samsung/exynos_reg.h>
+#include <arm/samsung/exynos_var.h>
+
+#include <dev/fdt/fdtvar.h>
+
+struct exynos_usb_softc {
+	device_t	 sc_self;
+
+	/* keep our tags here */
+	bus_dma_tag_t	 sc_dmat;
+	bus_space_tag_t  sc_bst;
+
+	bus_space_handle_t sc_bsh;
+
+	int		 sc_irq;
+	void		*sc_intrh;
+} exynos_usb_sc;
+
+
+struct exynos_usb_attach_args {
+	const char *name;
+};
+
+
+/* forwards */
+//static int exynos_usb_intr(void *arg);
+
+
+static int	exynos_usb_match(device_t, cfdata_t, void *);
+static void	exynos_usb_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(exynos_usb, 0,
+    exynos_usb_match, exynos_usb_attach, NULL, NULL);
+
+
+static int
+exynos_usb_match(device_t parent, cfdata_t cf, void *aux)
+{
+	const char * const compatible[] = { "samsung,exynos5-dwusb3",
+					    NULL };
+	struct fdt_attach_args * const faa = aux;
+	return of_match_compatible(faa->faa_phandle, compatible);
+}
+
+
+static void
+exynos_usb_attach(device_t parent, device_t self, void *aux)
+{
+	struct exynos_usb_softc * const sc = &exynos_usb_sc;
+	struct fdt_attach_args *const faa = aux;
+	bus_addr_t addr;
+	bus_size_t size;
+	int error;
+
+	if (fdtbus_get_reg(faa->faa_phandle, 0, &addr, &size) != 0) {
+		aprint_error(": couldn't get registers\n");
+		return;
+	}
+
+	sc->sc_self = self;
+//	sc->sc_irq  = loc->loc_intr;
+
+	/* get our bushandles */
+	sc->sc_bst  = faa->faa_bst;
+//	sc->sc_dmat = exyoaa->exyo_dmat;
+//	sc->sc_dmat = exyoaa->exyo_coherent_dmat;
+
+	error = bus_space_map(sc->sc_bst, addr, size, 0, &sc->sc_bsh);
+	if (error) {
+		aprint_error(": couldn't map %#llx: %d",
+			     (uint64_t)addr, error);
+		return;
+	}
+
+	aprint_normal(" @ 0x%08x: USB -  NOT IMPLEMENTED", (uint)addr);
+
+	aprint_naive("\n");
+	aprint_normal("\n");
+
+	/* power up USB subsystem */
+//	exynos_usb_soc_powerup();
+
+	/* init USB phys */
+//	exynos_usb_phy_init(sc->sc_usb2phy_bsh);
+
+#if 0
+	/* claim shared interrupt for OHCI/EHCI */
+	sc->sc_intrh = intr_establish(sc->sc_irq,
+		IPL_USB, IST_LEVEL, exynos_usb_intr, sc);
+	if (!sc->sc_intrh) {
+		aprint_error(": unable to establish interrupt at irq %d\n",
+			sc->sc_irq);
+		/* disable? TBD */
+		return;
+	}
+#endif
+	aprint_normal_dev(sc->sc_self, "USB host NOT IMPLEMENTED\n");
+}
+
+#if 0
+static int
+exynos_usb_intr(void *arg)
+{
+	struct exynos_usb_softc *sc = (struct exynos_usb_softc *) arg;
+	void *private;
+	int ret = 0;
+
+#if NEHCI > 0
+	private = device_private(sc->sc_ehci_dev);
+	if (private)
+		ret = ehci_intr(private);
+#endif
+	/* XXX should we always deliver to ohci even if ehci takes it? */
+//	if (ret)
+//		return ret;
+#if NOHCI > 0
+	private = device_private(sc->sc_ohci_dev);
+	if (private)
+		ret = ohci_intr(private);
+#endif
+
+	return ret;
+}
+#endif
+
Index: src/sys/arch/arm/samsung/exynos_usbphy.c
diff -u /dev/null src/sys/arch/arm/samsung/exynos_usbphy.c:1.1
--- /dev/null	Sun Dec 27 02:54:13 2015
+++ src/sys/arch/arm/samsung/exynos_usbphy.c	Sun Dec 27 02:54:12 2015
@@ -0,0 +1,109 @@
+/*	$NetBSD: exynos_usbphy.c,v 1.1 2015/12/27 02:54:12 marty Exp $	*/
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Reinoud Zandijk.
+ *
+ * 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 "locators.h"
+#include "ohci.h"
+#include "ehci.h"
+
+#include <sys/cdefs.h>
+
+__KERNEL_RCSID(1, "$NetBSD: exynos_usbphy.c,v 1.1 2015/12/27 02:54:12 marty Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/intr.h>
+#include <sys/bus.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/queue.h>
+#include <sys/kmem.h>
+#include <sys/gpio.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
+#include <dev/usb/usb_mem.h>
+
+#include <arm/samsung/exynos_reg.h>
+#include <arm/samsung/exynos_var.h>
+
+#include <dev/fdt/fdtvar.h>
+
+struct exynos_usbphy_softc {
+	device_t	 sc_dev;
+	bus_space_tag_t  sc_bst;
+	bus_space_handle_t sc_bsh;
+};
+
+static int	exynos_usbphy_match(device_t, cfdata_t, void *);
+static void	exynos_usbphy_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(exynos_usbphy, sizeof(struct exynos_usbphy_softc),
+    exynos_usbphy_match, exynos_usbphy_attach, NULL, NULL);
+
+
+static int
+exynos_usbphy_match(device_t parent, cfdata_t cf, void *aux)
+{
+	const char * const compatible[] = { "samsung,exynos5-usb2phy",
+					    NULL };
+	struct fdt_attach_args * const faa = aux;
+	return of_match_compatible(faa->faa_phandle, compatible);
+}
+
+
+static void
+exynos_usbphy_attach(device_t parent, device_t self, void *aux)
+{
+	struct exynos_usbphy_softc *sc = device_private(self);
+	struct fdt_attach_args * const faa = aux;
+	bus_addr_t addr;
+	bus_size_t size;
+	int error;
+
+	if (fdtbus_get_reg(faa->faa_phandle, 0, &addr, &size) != 0) {
+		aprint_error(": couldn't get registers\n");
+		return;
+	}
+
+	sc->sc_dev = self;
+	sc->sc_bst = faa->faa_bst;
+
+	error = bus_space_map(sc->sc_bst, addr, size, 0, &sc->sc_bsh);
+	if (error) {
+		aprint_error(": couldn't map %#llx: %d",
+			     (uint64_t)addr, error);
+		return;
+	}
+
+	aprint_normal(": USB 2 PHY NOT IMPLEMENTED\n");
+}

Reply via email to