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"); +}