svn commit: r183866 - head/sys/dev/usb
Attilio Rao
attilio at freebsd.org
Tue Oct 14 20:45:13 UTC 2008
2008/10/14, Rafal Jaworowski <raj at freebsd.org>:
> Author: raj
> Date: Tue Oct 14 07:05:20 2008
> New Revision: 183866
> URL: http://svn.freebsd.org/changeset/base/183866
>
> Log:
> Mbus attachment for USB EHCI integrated controller on Marvell chips.
>
> This includes workarounds required for the ehci(4) to handle some non-standard
> behaviour of these devices.
>
> Obtained from: Marvell, Semihalf
>
> Added:
> head/sys/dev/usb/ehci_mbus.c (contents, props changed)
> Modified:
> head/sys/dev/usb/ehci.c
> head/sys/dev/usb/ehcivar.h
>
> Modified: head/sys/dev/usb/ehci.c
> ==============================================================================
> --- head/sys/dev/usb/ehci.c Tue Oct 14 04:09:33 2008 (r183865)
> +++ head/sys/dev/usb/ehci.c Tue Oct 14 07:05:20 2008 (r183866)
> @@ -351,8 +351,12 @@ ehci_hcreset(ehci_softc_t *sc)
> for (i = 0; i < 100; i++) {
> usb_delay_ms(&sc->sc_bus, 1);
> hcr = EOREAD4(sc, EHCI_USBCMD) & EHCI_CMD_HCRESET;
> - if (!hcr)
> + if (!hcr) {
> + if (sc->sc_flags & EHCI_SCFLG_SETMODE)
> + EOWRITE4(sc, 0x68, 0x3);
> +
> return (USBD_NORMAL_COMPLETION);
> + }
> }
> printf("%s: reset timeout\n", device_get_nameunit(sc->sc_bus.bdev));
> return (USBD_IOERROR);
> @@ -2194,7 +2198,18 @@ ehci_root_ctrl_start(usbd_xfer_handle xf
> v = EOREAD4(sc, EHCI_PORTSC(index));
> DPRINTFN(8,("ehci_root_ctrl_start: port status=0x%04x\n",
> v));
> +
> i = UPS_HIGH_SPEED;
> +
> + if (sc->sc_flags & EHCI_SCFLG_FORCESPEED) {
> + if ((v & 0xc000000) == 0x8000000)
> + i = UPS_HIGH_SPEED;
> + else if ((v & 0xc000000) == 0x4000000)
> + i = UPS_LOW_SPEED;
> + else
> + i = 0;
> + }
> +
> if (v & EHCI_PS_CS) i |= UPS_CURRENT_CONNECT_STATUS;
> if (v & EHCI_PS_PE) i |= UPS_PORT_ENABLED;
> if (v & EHCI_PS_SUSP) i |= UPS_SUSPEND;
> @@ -2249,7 +2264,11 @@ ehci_root_ctrl_start(usbd_xfer_handle xf
> goto ret;
> }
> /* Terminate reset sequence. */
> - EOWRITE4(sc, port, v);
> + if (sc->sc_flags & EHCI_SCFLG_NORESTERM)
> + ;
> + else
> + EOWRITE4(sc, port, v);
> +
> /* Wait for HC to complete reset. */
> usb_delay_ms(&sc->sc_bus, EHCI_PORT_RESET_COMPLETE);
> if (sc->sc_dying) {
>
> Added: head/sys/dev/usb/ehci_mbus.c
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ head/sys/dev/usb/ehci_mbus.c Tue Oct 14 07:05:20 2008 (r183866)
> @@ -0,0 +1,318 @@
> +/*-
> + * Copyright (C) 2008 MARVELL INTERNATIONAL LTD.
> + * All rights reserved.
> + *
> + * Developed by Semihalf.
> + *
> + * 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.
> + * 3. Neither the name of MARVELL nor the names of contributors
> + * may be used to endorse or promote products derived from this software
> + * without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY AUTHOR 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 AUTHOR 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.
> + */
> +
> +/*
> + * MBus attachment driver for the USB Enhanced Host Controller.
> + */
> +
> +#include <sys/cdefs.h>
> +__FBSDID("$FreeBSD$");
> +
> +#include "opt_bus.h"
> +
> +#include <sys/param.h>
> +#include <sys/systm.h>
> +#include <sys/kernel.h>
> +#include <sys/module.h>
> +#include <sys/lock.h>
> +#include <sys/mutex.h>
> +#include <sys/bus.h>
> +#include <sys/queue.h>
> +#include <sys/lockmgr.h>
Why this includes lockmgr?
I don't think it needs.
Thanks,
Attilio
--
Peace can only be achieved by understanding - A. Einstein
More information about the svn-src-head
mailing list