From 45597fb1818d7270892f027fc68d81766872b8c6 Mon Sep 17 00:00:00 2001 From: Markus Pfeiffer Date: Mon, 6 Jan 2014 21:51:37 +0000 Subject: [PATCH] Sync ehci.c with FreeBSD --- sys/bus/u4b/controller/ehci.c | 46 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/sys/bus/u4b/controller/ehci.c b/sys/bus/u4b/controller/ehci.c index 0f5728d06e..dbbd5f8428 100644 --- a/sys/bus/u4b/controller/ehci.c +++ b/sys/bus/u4b/controller/ehci.c @@ -110,12 +110,12 @@ static void ehci_dump_sqh(ehci_softc_t *sc, ehci_qh_t *sqh); #define EHCI_INTR_ENDPT 1 -extern struct usb_bus_methods ehci_bus_methods; -extern struct usb_pipe_methods ehci_device_bulk_methods; -extern struct usb_pipe_methods ehci_device_ctrl_methods; -extern struct usb_pipe_methods ehci_device_intr_methods; -extern struct usb_pipe_methods ehci_device_isoc_fs_methods; -extern struct usb_pipe_methods ehci_device_isoc_hs_methods; +static const struct usb_bus_methods ehci_bus_methods; +static const struct usb_pipe_methods ehci_device_bulk_methods; +static const struct usb_pipe_methods ehci_device_ctrl_methods; +static const struct usb_pipe_methods ehci_device_intr_methods; +static const struct usb_pipe_methods ehci_device_isoc_fs_methods; +static const struct usb_pipe_methods ehci_device_isoc_hs_methods; static void ehci_do_poll(struct usb_bus *); static void ehci_device_done(struct usb_xfer *, usb_error_t); @@ -250,7 +250,7 @@ ehci_init_sub(struct ehci_softc *sc) DPRINTF("HCC uses 64-bit structures\n"); /* MUST clear segment register if 64 bit capable */ - EWRITE4(sc, EHCI_CTRLDSSEGMENT, 0); + EOWRITE4(sc, EHCI_CTRLDSSEGMENT, 0); } usbd_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res); @@ -1266,7 +1266,7 @@ done: static uint8_t ehci_check_transfer(struct usb_xfer *xfer) { - struct usb_pipe_methods *methods = xfer->endpoint->methods; + const struct usb_pipe_methods *methods = xfer->endpoint->methods; ehci_softc_t *sc = EHCI_BUS2SC(xfer->xroot->bus); uint32_t status; @@ -1747,7 +1747,7 @@ static void ehci_setup_standard_chain(struct usb_xfer *xfer, ehci_qh_t **qh_last) { struct ehci_std_temp temp; - struct usb_pipe_methods *methods; + const struct usb_pipe_methods *methods; ehci_qh_t *qh; ehci_qtd_t *td; uint32_t qh_endp; @@ -2155,7 +2155,7 @@ ehci_isoc_hs_done(ehci_softc_t *sc, struct usb_xfer *xfer) static void ehci_device_done(struct usb_xfer *xfer, usb_error_t error) { - struct usb_pipe_methods *methods = xfer->endpoint->methods; + const struct usb_pipe_methods *methods = xfer->endpoint->methods; ehci_softc_t *sc = EHCI_BUS2SC(xfer->xroot->bus); USB_BUS_LOCK_ASSERT(&sc->sc_bus); @@ -2249,7 +2249,7 @@ ehci_device_bulk_start(struct usb_xfer *xfer) EOWRITE4(sc, EHCI_USBCMD, temp | EHCI_CMD_IAAD); } -struct usb_pipe_methods ehci_device_bulk_methods = +static const struct usb_pipe_methods ehci_device_bulk_methods = { .open = ehci_device_bulk_open, .close = ehci_device_bulk_close, @@ -2290,7 +2290,7 @@ ehci_device_ctrl_start(struct usb_xfer *xfer) ehci_transfer_intr_enqueue(xfer); } -struct usb_pipe_methods ehci_device_ctrl_methods = +static const struct usb_pipe_methods ehci_device_ctrl_methods = { .open = ehci_device_ctrl_open, .close = ehci_device_ctrl_close, @@ -2371,7 +2371,7 @@ ehci_device_intr_start(struct usb_xfer *xfer) ehci_transfer_intr_enqueue(xfer); } -struct usb_pipe_methods ehci_device_intr_methods = +static const struct usb_pipe_methods ehci_device_intr_methods = { .open = ehci_device_intr_open, .close = ehci_device_intr_close, @@ -2535,15 +2535,17 @@ ehci_device_isoc_fs_enter(struct usb_xfer *xfer) #endif *plen = xfer->max_frame_size; } + /* allocate a slot */ sa = usbd_fs_isoc_schedule_alloc_slot(xfer, - xfer->isoc_time_complete - nframes -1); + xfer->isoc_time_complete - nframes - 1); if(sa == 255) { /* * Schedule is FULL, set length to zero: */ + *plen = 0; sa = USB_FS_ISOC_UFRAME_MAX - 1; } @@ -2661,7 +2663,7 @@ ehci_device_isoc_fs_start(struct usb_xfer *xfer) ehci_transfer_intr_enqueue(xfer); } -struct usb_pipe_methods ehci_device_isoc_fs_methods = +static const struct usb_pipe_methods ehci_device_isoc_fs_methods = { .open = ehci_device_isoc_fs_open, .close = ehci_device_isoc_fs_close, @@ -2941,7 +2943,7 @@ ehci_device_isoc_hs_start(struct usb_xfer *xfer) ehci_transfer_intr_enqueue(xfer); } -struct usb_pipe_methods ehci_device_isoc_hs_methods = +static const struct usb_pipe_methods ehci_device_isoc_hs_methods = { .open = ehci_device_isoc_hs_open, .close = ehci_device_isoc_hs_close, @@ -3365,7 +3367,7 @@ ehci_roothub_exec(struct usb_device *udev, /* Wait for reset to complete. */ usb_pause_mtx(&sc->sc_bus.bus_lock, - USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY)); + USB_MS_TO_TICKS(usb_port_root_reset_delay)); /* Terminate reset sequence. */ if (!(sc->sc_flags & EHCI_SCFLG_NORESTERM)) @@ -3697,10 +3699,6 @@ ehci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc, edesc->bEndpointAddress, udev->flags.usb_mode, sc->sc_addr); - if (udev->flags.usb_mode != USB_MODE_HOST) { - /* not supported */ - return; - } if (udev->device_index != sc->sc_addr) { if ((udev->speed != USB_SPEED_HIGH) && @@ -3752,7 +3750,7 @@ ehci_device_resume(struct usb_device *udev) { ehci_softc_t *sc = EHCI_BUS2SC(udev->bus); struct usb_xfer *xfer; - struct usb_pipe_methods *methods; + const struct usb_pipe_methods *methods; DPRINTF("\n"); @@ -3786,7 +3784,7 @@ ehci_device_suspend(struct usb_device *udev) { ehci_softc_t *sc = EHCI_BUS2SC(udev->bus); struct usb_xfer *xfer; - struct usb_pipe_methods *methods; + const struct usb_pipe_methods *methods; DPRINTF("\n"); @@ -3865,7 +3863,7 @@ ehci_set_hw_power(struct usb_bus *bus) return; } -struct usb_bus_methods ehci_bus_methods = +static const struct usb_bus_methods ehci_bus_methods = { .endpoint_init = ehci_ep_init, .xfer_setup = ehci_xfer_setup, -- 2.11.4.GIT