Date: Mon, 30 Jun 2008 15:32:02 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 144367 for review Message-ID: <200806301532.m5UFW2aA080423@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=144367 Change 144367 by hselasky@hselasky_laptop001 on 2008/06/30 15:31:28 The USB Controller module is complete. - Mostly symbol renaming. "s/usbd_|usb_/usb2/g" (scripted) - Device ID tables have been converted into new format. (scripted) Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/at91dci_atmelarm.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2_pci.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_atmelarm.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2_pci.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2_pci.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_bus.h#1 add .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/usb2_controller.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/controller/uss820dci_pccard.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_compat_linux.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_core.h#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dynamic.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dynamic.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_handle_request.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.c#4 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_hub.h#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.c#3 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_transfer.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_defs.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_standard.h#3 edit .. //depot/projects/usb/src/sys/modules/usb2/controller/Makefile#2 edit .. //depot/projects/usb/src/sys/modules/usb2/core/Makefile#3 edit .. //depot/projects/usb/src/sys/modules/usb2/ethernet/Makefile#3 edit .. //depot/projects/usb/src/sys/modules/usb2/wlan/Makefile#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/controller/at91dci.c#2 (text+ko) ==== @@ -1,9 +1,8 @@ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/usb/at9100_dci.c $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/at91dci.c $"); /*- - * Copyright (c) 2007 Hans Petter Selasky <hselasky@freebsd.org> - * All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -45,69 +44,70 @@ * endpoints, Function-address and more. */ -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/endian.h> -#include <sys/queue.h> -#include <sys/lock.h> -#include <sys/malloc.h> +#include <dev/usb2/include/usb2_standard.h> +#include <dev/usb2/include/usb2_mfunc.h> +#include <dev/usb2/include/usb2_revision.h> +#include <dev/usb2/include/usb2_error.h> +#include <dev/usb2/include/usb2_defs.h> + +#define USB_DEBUG_VAR at91dcidebug +#define usb2_config_td_cc at91dci_config_copy +#define usb2_config_td_softc at91dci_softc -#define usbd_config_td_cc at9100_dci_config_copy -#define usbd_config_td_softc at9100_dci_softc +#include <dev/usb2/core/usb2_core.h> +#include <dev/usb2/core/usb2_debug.h> +#include <dev/usb2/core/usb2_busdma.h> +#include <dev/usb2/core/usb2_process.h> +#include <dev/usb2/core/usb2_config_td.h> +#include <dev/usb2/core/usb2_sw_transfer.h> +#include <dev/usb2/core/usb2_transfer.h> +#include <dev/usb2/core/usb2_device.h> +#include <dev/usb2/core/usb2_hub.h> +#include <dev/usb2/core/usb2_util.h> -#include <dev/usb/usb_port.h> -#include <dev/usb/usb.h> -#include <dev/usb/usb_subr.h> -#include <dev/usb/at9100_dci.h> +#include <dev/usb2/controller/usb2_controller.h> +#include <dev/usb2/controller/usb2_bus.h> +#include <dev/usb2/controller/at91dci.h> #define AT9100_DCI_BUS2SC(bus) \ - ((struct at9100_dci_softc *)(((uint8_t *)(bus)) - \ - POINTER_TO_UNSIGNED(&(((struct at9100_dci_softc *)0)->sc_bus)))) + ((struct at91dci_softc *)(((uint8_t *)(bus)) - \ + USB_P2U(&(((struct at91dci_softc *)0)->sc_bus)))) #define AT9100_DCI_PC2SC(pc) \ AT9100_DCI_BUS2SC((pc)->tag_parent->info->bus) #ifdef USB_DEBUG -#define DPRINTFN(n,fmt,...) do { \ - if (at9100_dcidebug > (n)) { \ - printf("%s: " fmt, __FUNCTION__,## __VA_ARGS__); \ - } \ -} while (0) +static int at91dcidebug = 0; -static int at9100_dcidebug = 0; - -SYSCTL_NODE(_hw_usb, OID_AUTO, at9100_dci, CTLFLAG_RW, 0, "USB at9100_dci"); -SYSCTL_INT(_hw_usb_at9100_dci, OID_AUTO, debug, CTLFLAG_RW, - &at9100_dcidebug, 0, "at9100_dci debug level"); -#else -#define DPRINTFN(...) do { } while (0) +SYSCTL_NODE(_hw_usb2, OID_AUTO, at91dci, CTLFLAG_RW, 0, "USB at91dci"); +SYSCTL_INT(_hw_usb2_at91dci, OID_AUTO, debug, CTLFLAG_RW, + &at91dcidebug, 0, "at91dci debug level"); #endif #define AT9100_DCI_INTR_ENDPT 1 /* prototypes */ -struct usbd_bus_methods at9100_dci_bus_methods; -struct usbd_pipe_methods at9100_dci_device_bulk_methods; -struct usbd_pipe_methods at9100_dci_device_ctrl_methods; -struct usbd_pipe_methods at9100_dci_device_intr_methods; -struct usbd_pipe_methods at9100_dci_device_isoc_fs_methods; -struct usbd_pipe_methods at9100_dci_root_ctrl_methods; -struct usbd_pipe_methods at9100_dci_root_intr_methods; +struct usb2_bus_methods at91dci_bus_methods; +struct usb2_pipe_methods at91dci_device_bulk_methods; +struct usb2_pipe_methods at91dci_device_ctrl_methods; +struct usb2_pipe_methods at91dci_device_intr_methods; +struct usb2_pipe_methods at91dci_device_isoc_fs_methods; +struct usb2_pipe_methods at91dci_root_ctrl_methods; +struct usb2_pipe_methods at91dci_root_intr_methods; -static at9100_dci_cmd_t at9100_dci_setup_rx; -static at9100_dci_cmd_t at9100_dci_data_rx; -static at9100_dci_cmd_t at9100_dci_data_tx; -static at9100_dci_cmd_t at9100_dci_data_tx_sync; -static void at9100_dci_device_done(struct usbd_xfer *xfer, usbd_status_t error); -static void at9100_dci_do_poll(struct usbd_bus *bus); -static void at9100_dci_root_ctrl_poll(struct at9100_dci_softc *sc); -static void at9100_dci_standard_done(struct usbd_xfer *xfer); +static at91dci_cmd_t at91dci_setup_rx; +static at91dci_cmd_t at91dci_data_rx; +static at91dci_cmd_t at91dci_data_tx; +static at91dci_cmd_t at91dci_data_tx_sync; +static void at91dci_device_done(struct usb2_xfer *xfer, usb2_error_t error); +static void at91dci_do_poll(struct usb2_bus *bus); +static void at91dci_root_ctrl_poll(struct at91dci_softc *sc); +static void at91dci_standard_done(struct usb2_xfer *xfer); -static usbd_std_root_transfer_func_t at9100_dci_root_intr_done; -static usbd_std_root_transfer_func_t at9100_dci_root_ctrl_done; -static usbd_config_td_command_t at9100_dci_root_ctrl_task; +static usb2_sw_transfer_func_t at91dci_root_intr_done; +static usb2_sw_transfer_func_t at91dci_root_ctrl_done; +static usb2_config_td_command_t at91dci_root_ctrl_task; /* * NOTE: Some of the bits in the CSR register have inverse meaning so @@ -128,8 +128,8 @@ * Here is a list of what the chip supports. * Probably it supports more than listed here! */ -static const struct usbd_hw_ep_profile - at9100_dci_ep_profile[AT91_UDP_EP_MAX] = { +static const struct usb2_hw_ep_profile + at91dci_ep_profile[AT91_UDP_EP_MAX] = { [0] = { .max_frame_size = 8, @@ -187,11 +187,11 @@ }; static void -at9100_dci_get_hw_ep_profile(struct usbd_device *udev, - const struct usbd_hw_ep_profile **ppf, uint8_t ep_addr) +at91dci_get_hw_ep_profile(struct usb2_device *udev, + const struct usb2_hw_ep_profile **ppf, uint8_t ep_addr) { if (ep_addr < AT91_UDP_EP_MAX) { - *ppf = (at9100_dci_ep_profile + ep_addr); + *ppf = (at91dci_ep_profile + ep_addr); } else { *ppf = NULL; } @@ -199,12 +199,12 @@ } static void -at9100_dci_clocks_on(struct at9100_dci_softc *sc) +at91dci_clocks_on(struct at91dci_softc *sc) { if (sc->sc_flags.clocks_off && sc->sc_flags.port_powered) { - DPRINTFN(4, "\n"); + DPRINTF(4, "\n"); if (sc->sc_clocks_on) { (sc->sc_clocks_on) (sc->sc_clocks_arg); @@ -218,11 +218,11 @@ } static void -at9100_dci_clocks_off(struct at9100_dci_softc *sc) +at91dci_clocks_off(struct at91dci_softc *sc) { if (!sc->sc_flags.clocks_off) { - DPRINTFN(4, "\n"); + DPRINTF(4, "\n"); /* disable Transceiver */ AT91_UDP_WRITE_4(sc, AT91_UDP_TXVC, AT91_UDP_TXVC_DIS); @@ -236,7 +236,7 @@ } static void -at9100_dci_pull_up(struct at9100_dci_softc *sc) +at91dci_pull_up(struct at91dci_softc *sc) { /* pullup D+, if possible */ @@ -249,7 +249,7 @@ } static void -at9100_dci_pull_down(struct at9100_dci_softc *sc) +at91dci_pull_down(struct at91dci_softc *sc) { /* pulldown D+, if possible */ @@ -261,7 +261,7 @@ } static void -at9100_dci_wakeup_peer(struct at9100_dci_softc *sc) +at91dci_wakeup_peer(struct at91dci_softc *sc) { uint32_t temp; @@ -279,12 +279,12 @@ } static void -at9100_dci_rem_wakeup_set(struct usbd_device *udev, uint8_t is_on) +at91dci_rem_wakeup_set(struct usb2_device *udev, uint8_t is_on) { - struct at9100_dci_softc *sc; + struct at91dci_softc *sc; uint32_t temp; - DPRINTFN(4, "is_on=%u\n", is_on); + DPRINTF(4, "is_on=%u\n", is_on); mtx_assert(&(udev->bus->mtx), MA_OWNED); @@ -304,9 +304,9 @@ } static void -at9100_dci_set_address(struct at9100_dci_softc *sc, uint8_t addr) +at91dci_set_address(struct at91dci_softc *sc, uint8_t addr) { - DPRINTFN(4, "addr=%d\n", addr); + DPRINTF(4, "addr=%d\n", addr); AT91_UDP_WRITE_4(sc, AT91_UDP_FADDR, addr | AT91_UDP_FADDR_EN); @@ -315,10 +315,10 @@ } static uint8_t -at9100_dci_setup_rx(struct at9100_dci_td *td) +at91dci_setup_rx(struct at91dci_td *td) { - struct at9100_dci_softc *sc; - usb_device_request_t req; + struct at91dci_softc *sc; + struct usb2_device_request req; uint32_t csr; uint32_t temp; uint16_t count; @@ -327,7 +327,7 @@ csr = bus_space_read_4(td->io_tag, td->io_hdl, td->status_reg); - DPRINTFN(4, "csr=0x%08x rem=%u\n", csr, td->remainder); + DPRINTF(4, "csr=0x%08x rem=%u\n", csr, td->remainder); temp = csr; temp &= (AT91_UDP_CSR_RX_DATA_BK0 | @@ -339,7 +339,7 @@ if (!(csr & AT91_UDP_CSR_RXSETUP)) { /* abort any ongoing transfer */ if (!td->did_stall) { - DPRINTFN(4, "stalling\n"); + DPRINTF(4, "stalling\n"); temp |= AT91_UDP_CSR_FORCESTALL; td->did_stall = 1; } @@ -350,12 +350,12 @@ /* verify data length */ if (count != td->remainder) { - DPRINTFN(-1, "Invalid SETUP packet " + DPRINTF(-1, "Invalid SETUP packet " "length, %d bytes\n", count); goto not_complete; } if (count != sizeof(req)) { - DPRINTFN(-1, "Unsupported SETUP packet " + DPRINTF(-1, "Unsupported SETUP packet " "length, %d bytes\n", count); goto not_complete; } @@ -364,7 +364,7 @@ td->fifo_reg, (void *)&req, sizeof(req)); /* copy data into real buffer */ - usbd_copy_in(td->pc, 0, &req, sizeof(req)); + usb2_copy_in(td->pc, 0, &req, sizeof(req)); td->offset = sizeof(req); td->remainder = 0; @@ -396,7 +396,7 @@ not_complete: /* clear interrupts, if any */ if (temp) { - DPRINTFN(4, "clearing 0x%08x\n", temp); + DPRINTF(4, "clearing 0x%08x\n", temp); AT91_CSR_ACK(csr, temp); bus_space_write_4(td->io_tag, td->io_hdl, td->status_reg, csr); @@ -406,9 +406,9 @@ } static uint8_t -at9100_dci_data_rx(struct at9100_dci_td *td) +at91dci_data_rx(struct at91dci_td *td) { - struct usbd_page_search buf_res; + struct usb2_page_search buf_res; uint32_t csr; uint32_t temp; uint16_t count; @@ -424,7 +424,7 @@ csr = bus_space_read_4(td->io_tag, td->io_hdl, td->status_reg); - DPRINTFN(4, "csr=0x%08x rem=%u\n", csr, td->remainder); + DPRINTF(4, "csr=0x%08x rem=%u\n", csr, td->remainder); if (csr & AT91_UDP_CSR_RXSETUP) { if (td->remainder == 0) { @@ -432,7 +432,7 @@ * We are actually complete and have * received the next SETUP */ - DPRINTFN(4, "faking complete\n"); + DPRINTF(4, "faking complete\n"); return (0); /* complete */ } /* @@ -478,7 +478,7 @@ return (0); /* we are complete */ } while (count > 0) { - usbd_get_page(td->pc, td->offset, &buf_res); + usb2_get_page(td->pc, td->offset, &buf_res); /* get correct length */ if (buf_res.length > count) { @@ -533,9 +533,9 @@ } static uint8_t -at9100_dci_data_tx(struct at9100_dci_td *td) +at91dci_data_tx(struct at91dci_td *td) { - struct usbd_page_search buf_res; + struct usb2_page_search buf_res; uint32_t csr; uint32_t temp; uint16_t count; @@ -549,7 +549,7 @@ csr = bus_space_read_4(td->io_tag, td->io_hdl, td->status_reg); - DPRINTFN(4, "csr=0x%08x rem=%u\n", csr, td->remainder); + DPRINTF(4, "csr=0x%08x rem=%u\n", csr, td->remainder); if (csr & AT91_UDP_CSR_RXSETUP) { /* @@ -585,7 +585,7 @@ } while (count > 0) { - usbd_get_page(td->pc, td->offset, &buf_res); + usb2_get_page(td->pc, td->offset, &buf_res); /* get correct length */ if (buf_res.length > count) { @@ -620,9 +620,9 @@ } static uint8_t -at9100_dci_data_tx_sync(struct at9100_dci_td *td) +at91dci_data_tx_sync(struct at91dci_td *td) { - struct at9100_dci_softc *sc; + struct at91dci_softc *sc; uint32_t csr; uint32_t temp; @@ -634,10 +634,10 @@ csr = bus_space_read_4(td->io_tag, td->io_hdl, td->status_reg); - DPRINTFN(4, "csr=0x%08x\n", csr); + DPRINTF(4, "csr=0x%08x\n", csr); if (csr & AT91_UDP_CSR_RXSETUP) { - DPRINTFN(4, "faking complete\n"); + DPRINTF(4, "faking complete\n"); /* Race condition */ return (0); /* complete */ } @@ -659,7 +659,7 @@ * setting the address and that is to write the new * address before clearing TXCOMP: */ - at9100_dci_set_address(sc, sc->sc_dv_addr); + at91dci_set_address(sc, sc->sc_dv_addr); } /* write command */ AT91_CSR_ACK(csr, temp); @@ -679,13 +679,13 @@ } static uint8_t -at9100_dci_xfer_do_fifo(struct usbd_xfer *xfer) +at91dci_xfer_do_fifo(struct usb2_xfer *xfer) { - struct at9100_dci_softc *sc; - struct at9100_dci_td *td; + struct at91dci_softc *sc; + struct at91dci_td *td; uint8_t temp; - DPRINTFN(8, "\n"); + DPRINTF(8, "\n"); td = xfer->td_transfer_cache; while (1) { @@ -722,7 +722,7 @@ return (1); /* not complete */ done: - sc = xfer->usb_sc; + sc = xfer->usb2_sc; temp = (xfer->endpoint & UE_ADDR); /* update FIFO bank flag and multi buffer */ @@ -734,32 +734,32 @@ /* compute all actual lengths */ - at9100_dci_standard_done(xfer); + at91dci_standard_done(xfer); return (0); /* complete */ } static void -at9100_dci_interrupt_poll(struct at9100_dci_softc *sc) +at91dci_interrupt_poll(struct at91dci_softc *sc) { - struct usbd_xfer *xfer; + struct usb2_xfer *xfer; - LIST_FOREACH(xfer, &sc->sc_bus.intr_list_head, interrupt_list) { - if (!at9100_dci_xfer_do_fifo(xfer)) { - /* queue callback for execution */ - usbd_callback_wrapper(xfer, NULL, - USBD_CONTEXT_CALLBACK); +repeat: + TAILQ_FOREACH(xfer, &(sc->sc_bus.intr_q.head), wait_entry) { + if (!at91dci_xfer_do_fifo(xfer)) { + /* queue has been modified */ + goto repeat; } } return; } static void -at9100_dci_vbus_interrupt(struct usbd_bus *bus, uint8_t is_on) +at91dci_vbus_interrupt(struct usb2_bus *bus, uint8_t is_on) { - struct at9100_dci_softc *sc = AT9100_DCI_BUS2SC(bus); + struct at91dci_softc *sc = AT9100_DCI_BUS2SC(bus); - DPRINTFN(4, "vbus = %u\n", is_on); + DPRINTF(4, "vbus = %u\n", is_on); mtx_lock(&(sc->sc_bus.mtx)); if (is_on) { @@ -768,8 +768,8 @@ /* complete root HUB interrupt endpoint */ - usbd_std_root_transfer(&(sc->sc_root_intr), - &at9100_dci_root_intr_done); + usb2_sw_transfer(&(sc->sc_root_intr), + &at91dci_root_intr_done); } } else { if (sc->sc_flags.status_vbus) { @@ -781,8 +781,8 @@ /* complete root HUB interrupt endpoint */ - usbd_std_root_transfer(&(sc->sc_root_intr), - &at9100_dci_root_intr_done); + usb2_sw_transfer(&(sc->sc_root_intr), + &at91dci_root_intr_done); } } @@ -792,7 +792,7 @@ } void -at9100_dci_interrupt(struct at9100_dci_softc *sc) +at91dci_interrupt(struct at91dci_softc *sc) { uint32_t status; @@ -813,7 +813,7 @@ if (status & AT91_UDP_INT_BUS) { - DPRINTFN(4, "real bus interrupt 0x%08x\n", status); + DPRINTF(4, "real bus interrupt 0x%08x\n", status); if (status & AT91_UDP_INT_END_BR) { @@ -863,16 +863,16 @@ } /* complete root HUB interrupt endpoint */ - usbd_std_root_transfer(&(sc->sc_root_intr), - &at9100_dci_root_intr_done); + usb2_sw_transfer(&(sc->sc_root_intr), + &at91dci_root_intr_done); } /* check for any endpoint interrupts */ if (status & AT91_UDP_INT_EPS) { - DPRINTFN(4, "real endpoint interrupt 0x%08x\n", status); + DPRINTF(4, "real endpoint interrupt 0x%08x\n", status); - at9100_dci_interrupt_poll(sc); + at91dci_interrupt_poll(sc); } mtx_unlock(&(sc->sc_bus.mtx)); @@ -880,9 +880,9 @@ } static void -at9100_dci_setup_standard_chain_sub(struct at9100_std_temp *temp) +at91dci_setup_standard_chain_sub(struct at91dci_std_temp *temp) { - struct at9100_dci_td *td; + struct at91dci_td *td; /* get current Transfer Descriptor */ td = temp->td_next; @@ -905,18 +905,18 @@ } static void -at9100_dci_setup_standard_chain(struct usbd_xfer *xfer) +at91dci_setup_standard_chain(struct usb2_xfer *xfer) { - struct at9100_std_temp temp; - struct at9100_dci_softc *sc; - struct at9100_dci_td *td; + struct at91dci_std_temp temp; + struct at91dci_softc *sc; + struct at91dci_td *td; uint32_t x; uint8_t need_sync; uint8_t ep_no; - DPRINTFN(8, "addr=%d endpt=%d sumlen=%d speed=%d\n", + DPRINTF(8, "addr=%d endpt=%d sumlen=%d speed=%d\n", xfer->address, UE_GET_ADDR(xfer->endpoint), - xfer->sumlen, usbd_get_speed(xfer->udev)); + xfer->sumlen, usb2_get_speed(xfer->udev)); temp.max_frame_size = xfer->max_frame_size; @@ -931,7 +931,7 @@ temp.setup_alt_next = xfer->flags_int.short_frames_ok; temp.offset = 0; - sc = xfer->usb_sc; + sc = xfer->usb2_sc; ep_no = (xfer->endpoint & UE_ADDR); /* check if we should prepend a setup message */ @@ -939,12 +939,12 @@ if (xfer->flags_int.control_xfr) { if (xfer->flags_int.control_hdr) { - temp.func = &at9100_dci_setup_rx; + temp.func = &at91dci_setup_rx; temp.len = xfer->frlengths[0]; temp.pc = xfer->frbuffers + 0; temp.short_pkt = temp.len ? 1 : 0; - at9100_dci_setup_standard_chain_sub(&temp); + at91dci_setup_standard_chain_sub(&temp); } x = 1; } else { @@ -953,10 +953,10 @@ if (x != xfer->nframes) { if (xfer->endpoint & UE_DIR_IN) { - temp.func = &at9100_dci_data_tx; + temp.func = &at91dci_data_tx; need_sync = 1; } else { - temp.func = &at9100_dci_data_rx; + temp.func = &at91dci_data_rx; need_sync = 0; } @@ -990,7 +990,7 @@ temp.short_pkt = (xfer->flags.force_short_xfer) ? 0 : 1; } - at9100_dci_setup_standard_chain_sub(&temp); + at91dci_setup_standard_chain_sub(&temp); if (xfer->flags_int.isochronous_xfr) { temp.offset += temp.len; @@ -1007,11 +1007,11 @@ if (need_sync && !xfer->flags_int.isochronous_xfr) { /* we need a SYNC point after TX */ - temp.func = &at9100_dci_data_tx_sync; + temp.func = &at91dci_data_tx_sync; temp.len = 0; temp.short_pkt = 0; - at9100_dci_setup_standard_chain_sub(&temp); + at91dci_setup_standard_chain_sub(&temp); } /* check if we should append a status stage */ @@ -1023,23 +1023,23 @@ * endpoint direction. */ if (xfer->endpoint & UE_DIR_IN) { - temp.func = &at9100_dci_data_rx; + temp.func = &at91dci_data_rx; need_sync = 0; } else { - temp.func = &at9100_dci_data_tx; + temp.func = &at91dci_data_tx; need_sync = 1; } temp.len = 0; temp.short_pkt = 0; - at9100_dci_setup_standard_chain_sub(&temp); + at91dci_setup_standard_chain_sub(&temp); if (need_sync) { /* we need a SYNC point after TX */ - temp.func = &at9100_dci_data_tx_sync; + temp.func = &at91dci_data_tx_sync; temp.len = 0; temp.short_pkt = 0; - at9100_dci_setup_standard_chain_sub(&temp); + at91dci_setup_standard_chain_sub(&temp); } } /* must have at least one frame! */ @@ -1055,34 +1055,32 @@ } static void -at9100_dci_timeout(struct usbd_xfer *xfer) +at91dci_timeout(void *arg) { - struct at9100_dci_softc *sc = xfer->usb_sc; + struct usb2_xfer *xfer = arg; + struct at91dci_softc *sc = xfer->usb2_sc; - DPRINTFN(0, "xfer=%p\n", xfer); + DPRINTF(0, "xfer=%p\n", xfer); mtx_assert(&sc->sc_bus.mtx, MA_OWNED); /* transfer is transferred */ - at9100_dci_device_done(xfer, USBD_ERR_TIMEOUT); + at91dci_device_done(xfer, USB_ERR_TIMEOUT); - /* queue callback for execution */ - usbd_callback_wrapper(xfer, NULL, USBD_CONTEXT_CALLBACK); - mtx_unlock(&sc->sc_bus.mtx); return; } static void -at9100_dci_start_standard_chain(struct usbd_xfer *xfer) +at91dci_start_standard_chain(struct usb2_xfer *xfer) { - DPRINTFN(8, "\n"); + DPRINTF(8, "\n"); /* poll one time */ - if (at9100_dci_xfer_do_fifo(xfer)) { + if (at91dci_xfer_do_fifo(xfer)) { - struct at9100_dci_softc *sc = xfer->usb_sc; + struct at91dci_softc *sc = xfer->usb2_sc; uint8_t ep_no = xfer->endpoint & UE_ADDR; /* @@ -1092,42 +1090,34 @@ */ AT91_UDP_WRITE_4(sc, AT91_UDP_IER, AT91_UDP_INT_EP(ep_no)); - DPRINTFN(14, "enable interrupts on endpoint %d\n", ep_no); + DPRINTF(14, "enable interrupts on endpoint %d\n", ep_no); - /* queue up transfer on interrupt list */ - usbd_transfer_intr_enqueue(xfer); + /* put transfer on interrupt queue */ + usb2_transfer_enqueue(&(xfer->udev->bus->intr_q), xfer); - /* setup a timeout, if any */ - if (xfer->timeout && (!xfer->flags.use_polling)) { - usb_callout_reset(&xfer->timeout_handle, - USBD_MS_TO_TICKS(xfer->timeout), - (void *)&at9100_dci_timeout, xfer); + /* start timeout, if any */ + if (xfer->timeout != 0) { + usb2_transfer_timeout_ms(xfer, + &at91dci_timeout, xfer->timeout); } - } else { - /* - * The USB transfer is complete. Queue callback for - * execution: - */ - usbd_callback_wrapper(xfer, NULL, - USBD_CONTEXT_CALLBACK); } return; } static void -at9100_dci_root_intr_done(struct usbd_xfer *xfer, - struct usbd_std_root_transfer *std) +at91dci_root_intr_done(struct usb2_xfer *xfer, + struct usb2_sw_transfer *std) { - struct at9100_dci_softc *sc = xfer->usb_sc; + struct at91dci_softc *sc = xfer->usb2_sc; - DPRINTFN(8, "\n"); + DPRINTF(8, "\n"); mtx_assert(&sc->sc_bus.mtx, MA_OWNED); - if (std->state != USBD_STD_ROOT_TR_PRE_DATA) { - if (std->state == USBD_STD_ROOT_TR_PRE_CALLBACK) { + if (std->state != USB_SW_TR_PRE_DATA) { + if (std->state == USB_SW_TR_PRE_CALLBACK) { /* transfer transferred */ - at9100_dci_device_done(xfer, std->err); + at91dci_device_done(xfer, std->err); } goto done; } @@ -1142,14 +1132,14 @@ return; } -static usbd_status_t -at9100_dci_standard_done_sub(struct usbd_xfer *xfer) +static usb2_error_t +at91dci_standard_done_sub(struct usb2_xfer *xfer) { - struct at9100_dci_td *td; + struct at91dci_td *td; uint32_t len; uint8_t error; - DPRINTFN(8, "\n"); + DPRINTF(8, "\n"); td = xfer->td_transfer_cache; @@ -1203,15 +1193,15 @@ xfer->td_transfer_cache = td; return (error ? - USBD_ERR_STALLED : USBD_ERR_NORMAL_COMPLETION); + USB_ERR_STALLED : USB_ERR_NORMAL_COMPLETION); } static void -at9100_dci_standard_done(struct usbd_xfer *xfer) +at91dci_standard_done(struct usb2_xfer *xfer) { - usbd_status_t err = 0; + usb2_error_t err = 0; - DPRINTFN(12, "xfer=%p pipe=%p transfer done\n", + DPRINTF(12, "xfer=%p pipe=%p transfer done\n", xfer, xfer->pipe); /* reset scanner */ @@ -1222,7 +1212,7 @@ if (xfer->flags_int.control_hdr) { - err = at9100_dci_standard_done_sub(xfer); + err = at91dci_standard_done_sub(xfer); } xfer->aframes = 1; @@ -1232,7 +1222,7 @@ } while (xfer->aframes != xfer->nframes) { - err = at9100_dci_standard_done_sub(xfer); + err = at91dci_standard_done_sub(xfer); xfer->aframes++; if (xfer->td_transfer_cache == NULL) { @@ -1243,58 +1233,58 @@ if (xfer->flags_int.control_xfr && !xfer->flags_int.control_act) { - err = at9100_dci_standard_done_sub(xfer); + err = at91dci_standard_done_sub(xfer); } done: - at9100_dci_device_done(xfer, err); + at91dci_device_done(xfer, err); return; } /*------------------------------------------------------------------------* - * at9100_dci_device_done + * at91dci_device_done * * NOTE: this function can be called more than one time on the * same USB transfer! *------------------------------------------------------------------------*/ static void -at9100_dci_device_done(struct usbd_xfer *xfer, usbd_status_t error) +at91dci_device_done(struct usb2_xfer *xfer, usb2_error_t error) { - struct at9100_dci_softc *sc = xfer->usb_sc; + struct at91dci_softc *sc = xfer->usb2_sc; uint8_t ep_no; mtx_assert(&sc->sc_bus.mtx, MA_OWNED); - DPRINTFN(1, "xfer=%p, pipe=%p, error=%d\n", + DPRINTF(1, "xfer=%p, pipe=%p, error=%d\n", xfer, xfer->pipe, error); - if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) { + if (xfer->flags_int.usb2_mode == USB_MODE_DEVICE) { ep_no = (xfer->endpoint & UE_ADDR); /* disable endpoint interrupt */ AT91_UDP_WRITE_4(sc, AT91_UDP_IDR, AT91_UDP_INT_EP(ep_no)); - DPRINTFN(14, "disable interrupts on endpoint %d\n", ep_no); + DPRINTF(14, "disable interrupts on endpoint %d\n", ep_no); } /* dequeue transfer and start next transfer */ - usbd_transfer_dequeue(xfer, error); + usb2_transfer_done(xfer, error); return; } static void -at9100_dci_set_stall(struct usbd_device *udev, struct usbd_xfer *xfer, - struct usbd_pipe *pipe) +at91dci_set_stall(struct usb2_device *udev, struct usb2_xfer *xfer, + struct usb2_pipe *pipe) { - struct at9100_dci_softc *sc; + struct at91dci_softc *sc; uint32_t csr_val; uint8_t csr_reg; mtx_assert(&(udev->bus->mtx), MA_OWNED); - DPRINTFN(4, "pipe=%p\n", pipe); + DPRINTF(4, "pipe=%p\n", pipe); if (xfer) { /* cancel any ongoing transfers */ - at9100_dci_device_done(xfer, USBD_ERR_STALLED); + at91dci_device_done(xfer, USB_ERR_STALLED); } /* set FORCESTALL */ sc = AT9100_DCI_BUS2SC(udev->bus); @@ -1307,10 +1297,10 @@ } static void -at9100_dci_clear_stall_sub(struct at9100_dci_softc *sc, uint8_t ep_no, +at91dci_clear_stall_sub(struct at91dci_softc *sc, uint8_t ep_no, uint8_t ep_type, uint8_t ep_dir) { - const struct usbd_hw_ep_profile *pf; + const struct usb2_hw_ep_profile *pf; uint32_t csr_val; uint32_t temp; uint8_t csr_reg; @@ -1331,7 +1321,7 @@ AT91_UDP_WRITE_4(sc, csr_reg, csr_val); /* get endpoint profile */ - at9100_dci_get_hw_ep_profile(NULL, &pf, ep_no); + at91dci_get_hw_ep_profile(NULL, &pf, ep_no); /* reset FIFO */ AT91_UDP_WRITE_4(sc, AT91_UDP_RST, AT91_UDP_RST_EP(ep_no)); @@ -1405,17 +1395,17 @@ } static void -at9100_dci_clear_stall(struct usbd_device *udev, struct usbd_pipe *pipe) +at91dci_clear_stall(struct usb2_device *udev, struct usb2_pipe *pipe) { - struct at9100_dci_softc *sc; - usb_endpoint_descriptor_t *ed; + struct at91dci_softc *sc; + struct usb2_endpoint_descriptor *ed; - DPRINTFN(4, "pipe=%p\n", pipe); + DPRINTF(4, "pipe=%p\n", pipe); mtx_assert(&(udev->bus->mtx), MA_OWNED); /* check mode */ - if (udev->flags.usb_mode != USB_MODE_DEVICE) { + if (udev->flags.usb2_mode != USB_MODE_DEVICE) { /* not supported */ return; } @@ -1426,24 +1416,24 @@ ed = pipe->edesc; /* reset endpoint */ - at9100_dci_clear_stall_sub(sc, + at91dci_clear_stall_sub(sc, (ed->bEndpointAddress & UE_ADDR), (ed->bmAttributes & UE_XFERTYPE), >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200806301532.m5UFW2aA080423>