FreeBSD kernel usb device Code
uss820dci.c File Reference
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
#include <sys/queue.h>
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/sx.h>
#include <sys/unistd.h>
#include <sys/callout.h>
#include <sys/malloc.h>
#include <sys/priv.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usb_core.h>
#include <dev/usb/usb_debug.h>
#include <dev/usb/usb_busdma.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/usb_transfer.h>
#include <dev/usb/usb_device.h>
#include <dev/usb/usb_hub.h>
#include <dev/usb/usb_util.h>
#include <dev/usb/usb_controller.h>
#include <dev/usb/usb_bus.h>
#include <dev/usb/controller/uss820dci.h>
Include dependency graph for uss820dci.c:

Go to the source code of this file.

Macros

#define USB_DEBUG_VAR   uss820dcidebug
 
#define USS820_DCI_BUS2SC(bus)    __containerof(bus, struct uss820dci_softc, sc_bus)
 
#define USS820_DCI_PC2SC(pc)    USS820_DCI_BUS2SC(USB_DMATAG_TO_XROOT((pc)->tag_parent)->bus)
 
#define USS820_DCI_THREAD_IRQ    (USS820_SSR_SUSPEND | USS820_SSR_RESUME | USS820_SSR_RESET)
 
#define USS820_DCI_INTR_ENDPT   1
 
#define HSETW(ptr, val)   ptr = { (uint8_t)(val), (uint8_t)((val) >> 8) }
 
#define STRING_VENDOR    "A\0G\0E\0R\0E"
 
#define STRING_PRODUCT    "D\0C\0I\0 \0R\0o\0o\0t\0 \0H\0U\0B"
 

Functions

static void uss820dci_device_done (struct usb_xfer *, usb_error_t)
 
static void uss820dci_do_poll (struct usb_bus *)
 
static void uss820dci_standard_done (struct usb_xfer *)
 
static void uss820dci_intr_set (struct usb_xfer *, uint8_t)
 
static void uss820dci_update_shared_1 (struct uss820dci_softc *, uint8_t, uint8_t, uint8_t)
 
static void uss820dci_root_intr (struct uss820dci_softc *)
 
static void uss820dci_get_hw_ep_profile (struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr)
 
static void uss820dci_pull_up (struct uss820dci_softc *sc)
 
static void uss820dci_pull_down (struct uss820dci_softc *sc)
 
static void uss820dci_wakeup_peer (struct uss820dci_softc *sc)
 
static void uss820dci_set_address (struct uss820dci_softc *sc, uint8_t addr)
 
static uint8_t uss820dci_setup_rx (struct uss820dci_softc *sc, struct uss820dci_td *td)
 
static uint8_t uss820dci_data_rx (struct uss820dci_softc *sc, struct uss820dci_td *td)
 
static uint8_t uss820dci_data_tx (struct uss820dci_softc *sc, struct uss820dci_td *td)
 
static uint8_t uss820dci_data_tx_sync (struct uss820dci_softc *sc, struct uss820dci_td *td)
 
static void uss820dci_xfer_do_fifo (struct usb_xfer *xfer)
 
static uint8_t uss820dci_xfer_do_complete (struct usb_xfer *xfer)
 
static void uss820dci_interrupt_poll_locked (struct uss820dci_softc *sc)
 
static void uss820dci_interrupt_complete_locked (struct uss820dci_softc *sc)
 
static void uss820dci_wait_suspend (struct uss820dci_softc *sc, uint8_t on)
 
int uss820dci_filter_interrupt (void *arg)
 
void uss820dci_interrupt (void *arg)
 
static void uss820dci_setup_standard_chain_sub (struct uss820_std_temp *temp)
 
static void uss820dci_setup_standard_chain (struct usb_xfer *xfer)
 
static void uss820dci_timeout (void *arg)
 
static void uss820dci_start_standard_chain (struct usb_xfer *xfer)
 
static usb_error_t uss820dci_standard_done_sub (struct usb_xfer *xfer)
 
static void uss820dci_xfer_stall (struct usb_xfer *xfer)
 
static void uss820dci_set_stall (struct usb_device *udev, struct usb_endpoint *ep, uint8_t *did_stall)
 
static void uss820dci_clear_stall_sub (struct uss820dci_softc *sc, uint8_t ep_no, uint8_t ep_type, uint8_t ep_dir)
 
static void uss820dci_clear_stall (struct usb_device *udev, struct usb_endpoint *ep)
 
usb_error_t uss820dci_init (struct uss820dci_softc *sc)
 
void uss820dci_uninit (struct uss820dci_softc *sc)
 
static void uss820dci_suspend (struct uss820dci_softc *sc)
 
static void uss820dci_resume (struct uss820dci_softc *sc)
 
static void uss820dci_device_bulk_open (struct usb_xfer *xfer)
 
static void uss820dci_device_bulk_close (struct usb_xfer *xfer)
 
static void uss820dci_device_bulk_enter (struct usb_xfer *xfer)
 
static void uss820dci_device_bulk_start (struct usb_xfer *xfer)
 
static void uss820dci_device_ctrl_open (struct usb_xfer *xfer)
 
static void uss820dci_device_ctrl_close (struct usb_xfer *xfer)
 
static void uss820dci_device_ctrl_enter (struct usb_xfer *xfer)
 
static void uss820dci_device_ctrl_start (struct usb_xfer *xfer)
 
static void uss820dci_device_intr_open (struct usb_xfer *xfer)
 
static void uss820dci_device_intr_close (struct usb_xfer *xfer)
 
static void uss820dci_device_intr_enter (struct usb_xfer *xfer)
 
static void uss820dci_device_intr_start (struct usb_xfer *xfer)
 
static void uss820dci_device_isoc_fs_open (struct usb_xfer *xfer)
 
static void uss820dci_device_isoc_fs_close (struct usb_xfer *xfer)
 
static void uss820dci_device_isoc_fs_enter (struct usb_xfer *xfer)
 
static void uss820dci_device_isoc_fs_start (struct usb_xfer *xfer)
 
 USB_MAKE_STRING_DESC (STRING_VENDOR, uss820dci_vendor)
 
 USB_MAKE_STRING_DESC (STRING_PRODUCT, uss820dci_product)
 
static usb_error_t uss820dci_roothub_exec (struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength)
 
static void uss820dci_xfer_setup (struct usb_setup_params *parm)
 
static void uss820dci_xfer_unsetup (struct usb_xfer *xfer)
 
static void uss820dci_ep_init (struct usb_device *udev, struct usb_endpoint_descriptor *edesc, struct usb_endpoint *ep)
 
static void uss820dci_set_hw_power_sleep (struct usb_bus *bus, uint32_t state)
 

Variables

static const struct usb_bus_methods uss820dci_bus_methods
 
static const struct usb_pipe_methods uss820dci_device_bulk_methods
 
static const struct usb_pipe_methods uss820dci_device_ctrl_methods
 
static const struct usb_pipe_methods uss820dci_device_intr_methods
 
static const struct usb_pipe_methods uss820dci_device_isoc_fs_methods
 
static uss820dci_cmd_t uss820dci_setup_rx
 
static uss820dci_cmd_t uss820dci_data_rx
 
static uss820dci_cmd_t uss820dci_data_tx
 
static uss820dci_cmd_t uss820dci_data_tx_sync
 
static const struct usb_hw_ep_profile uss820dci_ep_profile []
 
static const struct usb_device_descriptor uss820dci_devd
 
static const struct usb_device_qualifier uss820dci_odevd
 
static const struct uss820dci_config_desc uss820dci_confd
 
static const struct usb_hub_descriptor_min uss820dci_hubd
 

Macro Definition Documentation

◆ HSETW

#define HSETW (   ptr,
  val 
)    ptr = { (uint8_t)(val), (uint8_t)((val) >> 8) }

Definition at line 1800 of file uss820dci.c.

◆ STRING_PRODUCT

#define STRING_PRODUCT    "D\0C\0I\0 \0R\0o\0o\0t\0 \0H\0U\0B"

Definition at line 1815 of file uss820dci.c.

◆ STRING_VENDOR

#define STRING_VENDOR    "A\0G\0E\0R\0E"

Definition at line 1812 of file uss820dci.c.

◆ USB_DEBUG_VAR

#define USB_DEBUG_VAR   uss820dcidebug

Definition at line 62 of file uss820dci.c.

◆ USS820_DCI_BUS2SC

#define USS820_DCI_BUS2SC (   bus)     __containerof(bus, struct uss820dci_softc, sc_bus)

Definition at line 79 of file uss820dci.c.

◆ USS820_DCI_INTR_ENDPT

#define USS820_DCI_INTR_ENDPT   1

Definition at line 97 of file uss820dci.c.

◆ USS820_DCI_PC2SC

#define USS820_DCI_PC2SC (   pc)     USS820_DCI_BUS2SC(USB_DMATAG_TO_XROOT((pc)->tag_parent)->bus)

Definition at line 82 of file uss820dci.c.

◆ USS820_DCI_THREAD_IRQ

#define USS820_DCI_THREAD_IRQ    (USS820_SSR_SUSPEND | USS820_SSR_RESUME | USS820_SSR_RESET)

Definition at line 85 of file uss820dci.c.

Function Documentation

◆ USB_MAKE_STRING_DESC() [1/2]

USB_MAKE_STRING_DESC ( STRING_PRODUCT  ,
uss820dci_product   
)

◆ USB_MAKE_STRING_DESC() [2/2]

USB_MAKE_STRING_DESC ( STRING_VENDOR  ,
uss820dci_vendor   
)

◆ uss820dci_clear_stall()

◆ uss820dci_clear_stall_sub()

static void uss820dci_clear_stall_sub ( struct uss820dci_softc sc,
uint8_t  ep_no,
uint8_t  ep_type,
uint8_t  ep_dir 
)
static

◆ uss820dci_data_rx()

◆ uss820dci_data_tx()

◆ uss820dci_data_tx_sync()

◆ uss820dci_device_bulk_close()

static void uss820dci_device_bulk_close ( struct usb_xfer xfer)
static

Definition at line 1588 of file uss820dci.c.

References USB_ERR_CANCELLED, and uss820dci_device_done().

Here is the call graph for this function:

◆ uss820dci_device_bulk_enter()

static void uss820dci_device_bulk_enter ( struct usb_xfer xfer)
static

Definition at line 1594 of file uss820dci.c.

◆ uss820dci_device_bulk_open()

static void uss820dci_device_bulk_open ( struct usb_xfer xfer)
static

Definition at line 1582 of file uss820dci.c.

◆ uss820dci_device_bulk_start()

static void uss820dci_device_bulk_start ( struct usb_xfer xfer)
static

Definition at line 1600 of file uss820dci.c.

References uss820dci_setup_standard_chain(), and uss820dci_start_standard_chain().

Here is the call graph for this function:

◆ uss820dci_device_ctrl_close()

static void uss820dci_device_ctrl_close ( struct usb_xfer xfer)
static

Definition at line 1625 of file uss820dci.c.

References USB_ERR_CANCELLED, and uss820dci_device_done().

Here is the call graph for this function:

◆ uss820dci_device_ctrl_enter()

static void uss820dci_device_ctrl_enter ( struct usb_xfer xfer)
static

Definition at line 1631 of file uss820dci.c.

◆ uss820dci_device_ctrl_open()

static void uss820dci_device_ctrl_open ( struct usb_xfer xfer)
static

Definition at line 1619 of file uss820dci.c.

◆ uss820dci_device_ctrl_start()

static void uss820dci_device_ctrl_start ( struct usb_xfer xfer)
static

Definition at line 1637 of file uss820dci.c.

References uss820dci_setup_standard_chain(), and uss820dci_start_standard_chain().

Here is the call graph for this function:

◆ uss820dci_device_done()

◆ uss820dci_device_intr_close()

static void uss820dci_device_intr_close ( struct usb_xfer xfer)
static

Definition at line 1662 of file uss820dci.c.

References USB_ERR_CANCELLED, and uss820dci_device_done().

Here is the call graph for this function:

◆ uss820dci_device_intr_enter()

static void uss820dci_device_intr_enter ( struct usb_xfer xfer)
static

Definition at line 1668 of file uss820dci.c.

◆ uss820dci_device_intr_open()

static void uss820dci_device_intr_open ( struct usb_xfer xfer)
static

Definition at line 1656 of file uss820dci.c.

◆ uss820dci_device_intr_start()

static void uss820dci_device_intr_start ( struct usb_xfer xfer)
static

Definition at line 1674 of file uss820dci.c.

References uss820dci_setup_standard_chain(), and uss820dci_start_standard_chain().

Here is the call graph for this function:

◆ uss820dci_device_isoc_fs_close()

static void uss820dci_device_isoc_fs_close ( struct usb_xfer xfer)
static

Definition at line 1699 of file uss820dci.c.

References USB_ERR_CANCELLED, and uss820dci_device_done().

Here is the call graph for this function:

◆ uss820dci_device_isoc_fs_enter()

static void uss820dci_device_isoc_fs_enter ( struct usb_xfer xfer)
static

◆ uss820dci_device_isoc_fs_open()

static void uss820dci_device_isoc_fs_open ( struct usb_xfer xfer)
static

Definition at line 1693 of file uss820dci.c.

◆ uss820dci_device_isoc_fs_start()

static void uss820dci_device_isoc_fs_start ( struct usb_xfer xfer)
static

Definition at line 1726 of file uss820dci.c.

References uss820dci_start_standard_chain().

Here is the call graph for this function:

◆ uss820dci_do_poll()

static void uss820dci_do_poll ( struct usb_bus bus)
static

Definition at line 1566 of file uss820dci.c.

References bus, uss820dci_softc::sc_bus, USB_BUS_LOCK, USB_BUS_SPIN_LOCK, USB_BUS_SPIN_UNLOCK, USB_BUS_UNLOCK, USS820_DCI_BUS2SC, uss820dci_interrupt_complete_locked(), and uss820dci_interrupt_poll_locked().

Referenced by uss820dci_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_ep_init()

◆ uss820dci_filter_interrupt()

int uss820dci_filter_interrupt ( void *  arg)

◆ uss820dci_get_hw_ep_profile()

static void uss820dci_get_hw_ep_profile ( struct usb_device udev,
const struct usb_hw_ep_profile **  ppf,
uint8_t  ep_addr 
)
static

Definition at line 178 of file uss820dci.c.

References uss820dci_ep_profile.

Referenced by uss820dci_init(), and uss820dci_xfer_setup().

Here is the caller graph for this function:

◆ uss820dci_init()

◆ uss820dci_interrupt()

◆ uss820dci_interrupt_complete_locked()

static void uss820dci_interrupt_complete_locked ( struct uss820dci_softc sc)
static

Definition at line 718 of file uss820dci.c.

References usb_bus::intr_q, uss820dci_softc::sc_bus, and uss820dci_xfer_do_complete().

Referenced by uss820dci_do_poll(), and uss820dci_interrupt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_interrupt_poll_locked()

static void uss820dci_interrupt_poll_locked ( struct uss820dci_softc sc)
static

Definition at line 709 of file uss820dci.c.

References usb_bus::intr_q, uss820dci_softc::sc_bus, and uss820dci_xfer_do_fifo().

Referenced by uss820dci_do_poll(), and uss820dci_filter_interrupt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_intr_set()

static void uss820dci_intr_set ( struct usb_xfer xfer,
uint8_t  set 
)
static

◆ uss820dci_pull_down()

static void uss820dci_pull_down ( struct uss820dci_softc sc)
static

Definition at line 214 of file uss820dci.c.

References uss820_flags::d_pulled_up, DPRINTF, uss820dci_softc::sc_flags, USS820_MCSR, USS820_READ_1, and USS820_WRITE_1.

Referenced by uss820dci_init(), uss820dci_roothub_exec(), and uss820dci_uninit().

Here is the caller graph for this function:

◆ uss820dci_pull_up()

static void uss820dci_pull_up ( struct uss820dci_softc sc)
static

Definition at line 195 of file uss820dci.c.

References uss820_flags::d_pulled_up, DPRINTF, uss820_flags::port_powered, uss820dci_softc::sc_flags, USS820_MCSR, USS820_MCSR_DPEN, USS820_READ_1, and USS820_WRITE_1.

Referenced by uss820dci_roothub_exec().

Here is the caller graph for this function:

◆ uss820dci_resume()

static void uss820dci_resume ( struct uss820dci_softc sc)
static

Definition at line 1560 of file uss820dci.c.

Referenced by uss820dci_set_hw_power_sleep().

Here is the caller graph for this function:

◆ uss820dci_root_intr()

static void uss820dci_root_intr ( struct uss820dci_softc sc)
static

Definition at line 1102 of file uss820dci.c.

References uss820dci_softc::sc_bus, uss820dci_softc::sc_hub_idata, uhub_root_intr(), and USB_BUS_LOCK_ASSERT.

Referenced by uss820dci_interrupt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_roothub_exec()

static usb_error_t uss820dci_roothub_exec ( struct usb_device udev,
struct usb_device_request req,
const void **  pptr,
uint16_t *  plength 
)
static

Definition at line 1822 of file uss820dci.c.

References usb_device::bus, uss820_flags::change_connect, uss820_flags::change_suspend, index, len, uss820_flags::port_enabled, uss820_flags::port_powered, pptr, uss820_hub_temp::ps, req, uss820dci_softc::sc_bus, uss820dci_softc::sc_conf, uss820dci_softc::sc_flags, uss820dci_softc::sc_hub_temp, uss820dci_softc::sc_rt_addr, uss820_flags::status_bus_reset, uss820_flags::status_suspend, uss820_flags::status_vbus, UDESC_CONFIG, UDESC_DEVICE, UDESC_DEVICE_QUALIFIER, UDESC_STRING, UDS_SELF_POWERED, UF_DEVICE_REMOTE_WAKEUP, UF_ENDPOINT_HALT, UGETW, UHF_C_PORT_CONNECTION, UHF_C_PORT_ENABLE, UHF_C_PORT_OVER_CURRENT, UHF_C_PORT_RESET, UHF_C_PORT_SUSPEND, UHF_PORT_ENABLE, UHF_PORT_INDICATOR, UHF_PORT_POWER, UHF_PORT_RESET, UHF_PORT_SUSPEND, UHF_PORT_TEST, UPS_C_CONNECT_STATUS, UPS_C_SUSPEND, UPS_CURRENT_CONNECT_STATUS, UPS_PORT_ENABLED, UPS_PORT_MODE_DEVICE, UPS_PORT_POWER, UPS_SUSPEND, UR_CLEAR_FEATURE, UR_CLEAR_TT_BUFFER, UR_GET_CONFIG, UR_GET_DESCRIPTOR, UR_GET_INTERFACE, UR_GET_STATUS, UR_GET_TT_STATE, UR_RESET_TT, UR_SET_ADDRESS, UR_SET_CONFIG, UR_SET_DESCRIPTOR, UR_SET_FEATURE, UR_SET_INTERFACE, UR_STOP_TT, UR_SYNCH_FRAME, USB_BUS_LOCK_ASSERT, USB_ERR_IOERROR, USB_ERR_STALLED, usb_string_lang_en, USETW, USS820_DCI_BUS2SC, uss820dci_confd, uss820dci_devd, uss820dci_hubd, uss820dci_odevd, uss820dci_pull_down(), uss820dci_pull_up(), uss820dci_wakeup_peer(), UT_READ_CLASS_DEVICE, UT_READ_CLASS_INTERFACE, UT_READ_CLASS_OTHER, UT_READ_DEVICE, UT_READ_ENDPOINT, UT_READ_INTERFACE, UT_READ_VENDOR_INTERFACE, UT_WRITE_CLASS_DEVICE, UT_WRITE_CLASS_INTERFACE, UT_WRITE_CLASS_OTHER, UT_WRITE_DEVICE, UT_WRITE_ENDPOINT, UT_WRITE_INTERFACE, UT_WRITE_VENDOR_INTERFACE, value, usb_port_status::wPortChange, usb_port_status::wPortStatus, and uss820_hub_temp::wValue.

Here is the call graph for this function:

◆ uss820dci_set_address()

static void uss820dci_set_address ( struct uss820dci_softc sc,
uint8_t  addr 
)
static

Definition at line 241 of file uss820dci.c.

References addr, USS820_FADDR, and USS820_WRITE_1.

Referenced by uss820dci_data_tx_sync().

Here is the caller graph for this function:

◆ uss820dci_set_hw_power_sleep()

static void uss820dci_set_hw_power_sleep ( struct usb_bus bus,
uint32_t  state 
)
static

Definition at line 2357 of file uss820dci.c.

References bus, state, USB_HW_POWER_RESUME, USB_HW_POWER_SHUTDOWN, USB_HW_POWER_SUSPEND, USS820_DCI_BUS2SC, uss820dci_resume(), uss820dci_suspend(), and uss820dci_uninit().

Here is the call graph for this function:

◆ uss820dci_set_stall()

◆ uss820dci_setup_rx()

◆ uss820dci_setup_standard_chain()

◆ uss820dci_setup_standard_chain_sub()

◆ uss820dci_standard_done()

static void uss820dci_standard_done ( struct usb_xfer xfer)
static

◆ uss820dci_standard_done_sub()

◆ uss820dci_start_standard_chain()

◆ uss820dci_suspend()

static void uss820dci_suspend ( struct uss820dci_softc sc)
static

Definition at line 1554 of file uss820dci.c.

Referenced by uss820dci_set_hw_power_sleep().

Here is the caller graph for this function:

◆ uss820dci_timeout()

static void uss820dci_timeout ( void *  arg)
static

Definition at line 1018 of file uss820dci.c.

References usb_xfer_root::bus, DPRINTF, USB_BUS_LOCK_ASSERT, USB_ERR_TIMEOUT, uss820dci_device_done(), and usb_xfer::xroot.

Referenced by uss820dci_start_standard_chain().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_uninit()

◆ uss820dci_update_shared_1()

static void uss820dci_update_shared_1 ( struct uss820dci_softc sc,
uint8_t  reg,
uint8_t  keep_mask,
uint8_t  set_mask 
)
static

◆ uss820dci_wait_suspend()

static void uss820dci_wait_suspend ( struct uss820dci_softc sc,
uint8_t  on 
)
static

Definition at line 729 of file uss820dci.c.

References USS820_READ_1, USS820_SCR, USS820_SCR_IE_SUSP, USS820_SCRATCH, USS820_SCRATCH_IE_RESUME, and USS820_WRITE_1.

Referenced by uss820dci_interrupt().

Here is the caller graph for this function:

◆ uss820dci_wakeup_peer()

static void uss820dci_wakeup_peer ( struct uss820dci_softc sc)
static

Definition at line 232 of file uss820dci.c.

References uss820dci_softc::sc_flags, and uss820_flags::status_suspend.

Referenced by uss820dci_roothub_exec().

Here is the caller graph for this function:

◆ uss820dci_xfer_do_complete()

static uint8_t uss820dci_xfer_do_complete ( struct usb_xfer xfer)
static

Definition at line 693 of file uss820dci.c.

References usb_xfer::td_transfer_cache, and uss820dci_standard_done().

Referenced by uss820dci_interrupt_complete_locked(), and uss820dci_start_standard_chain().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ uss820dci_xfer_do_fifo()

static void uss820dci_xfer_do_fifo ( struct usb_xfer xfer)
static

◆ uss820dci_xfer_setup()

◆ uss820dci_xfer_stall()

static void uss820dci_xfer_stall ( struct usb_xfer xfer)
static

Definition at line 1247 of file uss820dci.c.

References USB_ERR_STALLED, and uss820dci_device_done().

Here is the call graph for this function:

◆ uss820dci_xfer_unsetup()

static void uss820dci_xfer_unsetup ( struct usb_xfer xfer)
static

Definition at line 2315 of file uss820dci.c.

Variable Documentation

◆ uss820dci_bus_methods

static const struct usb_bus_methods uss820dci_bus_methods
static
Initial value:
=
{
.endpoint_init = &uss820dci_ep_init,
.xfer_setup = &uss820dci_xfer_setup,
.xfer_unsetup = &uss820dci_xfer_unsetup,
.get_hw_ep_profile = &uss820dci_get_hw_ep_profile,
.xfer_stall = &uss820dci_xfer_stall,
.set_stall = &uss820dci_set_stall,
.clear_stall = &uss820dci_clear_stall,
.roothub_exec = &uss820dci_roothub_exec,
.xfer_poll = &uss820dci_do_poll,
.set_hw_power_sleep = uss820dci_set_hw_power_sleep,
}
static void uss820dci_xfer_stall(struct usb_xfer *xfer)
Definition: uss820dci.c:1247
static void uss820dci_clear_stall(struct usb_device *udev, struct usb_endpoint *ep)
Definition: uss820dci.c:1341
static void uss820dci_set_stall(struct usb_device *udev, struct usb_endpoint *ep, uint8_t *did_stall)
Definition: uss820dci.c:1253
static void uss820dci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc, struct usb_endpoint *ep)
Definition: uss820dci.c:2321
static void uss820dci_do_poll(struct usb_bus *)
Definition: uss820dci.c:1566
static usb_error_t uss820dci_roothub_exec(struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength)
Definition: uss820dci.c:1822
static void uss820dci_xfer_setup(struct usb_setup_params *parm)
Definition: uss820dci.c:2217
static void uss820dci_get_hw_ep_profile(struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr)
Definition: uss820dci.c:178
static void uss820dci_xfer_unsetup(struct usb_xfer *xfer)
Definition: uss820dci.c:2315
static void uss820dci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
Definition: uss820dci.c:2357

Definition at line 101 of file uss820dci.c.

Referenced by uss820dci_init().

◆ uss820dci_confd

const struct uss820dci_config_desc uss820dci_confd
static
Initial value:
= {
.confd = {
.bLength = sizeof(struct usb_config_descriptor),
.wTotalLength[0] = sizeof(uss820dci_confd),
.bMaxPower = 0,
},
.ifcd = {
.bLength = sizeof(struct usb_interface_descriptor),
.bNumEndpoints = 1,
.bInterfaceClass = UICLASS_HUB,
.bInterfaceSubClass = UISUBCLASS_HUB,
.bInterfaceProtocol = 0,
},
.endpd = {
.bLength = sizeof(struct usb_endpoint_descriptor),
.bEndpointAddress = (UE_DIR_IN | USS820_DCI_INTR_ENDPT),
.wMaxPacketSize[0] = 8,
.bInterval = 255,
},
}
uByte bDescriptorType
Definition: usb.h:387
uByte bNumInterface
Definition: usb.h:389
uByte bmAttributes
Definition: usb.h:393
uByte iConfiguration
Definition: usb.h:392
uByte bConfigurationValue
Definition: usb.h:390
uByte bDescriptorType
Definition: usb.h:527
uWord wMaxPacketSize
Definition: usb.h:558
#define UE_INTERRUPT
Definition: usb.h:544
#define UC_SELF_POWERED
Definition: usb.h:395
#define UISUBCLASS_HUB
Definition: usb.h:480
#define UDESC_CONFIG
Definition: usb.h:196
#define UDESC_ENDPOINT
Definition: usb.h:200
#define UE_DIR_IN
Definition: usb.h:531
#define UICLASS_HUB
Definition: usb.h:479
#define UDESC_INTERFACE
Definition: usb.h:199
#define USS820_DCI_INTR_ENDPT
Definition: uss820dci.c:97
static const struct uss820dci_config_desc uss820dci_confd
Definition: uss820dci.c:1771

Definition at line 1771 of file uss820dci.c.

Referenced by uss820dci_roothub_exec().

◆ uss820dci_data_rx

uss820dci_cmd_t uss820dci_data_rx
static

Definition at line 108 of file uss820dci.c.

Referenced by uss820dci_setup_standard_chain().

◆ uss820dci_data_tx

uss820dci_cmd_t uss820dci_data_tx
static

Definition at line 109 of file uss820dci.c.

Referenced by uss820dci_setup_standard_chain().

◆ uss820dci_data_tx_sync

uss820dci_cmd_t uss820dci_data_tx_sync
static

Definition at line 110 of file uss820dci.c.

Referenced by uss820dci_setup_standard_chain().

◆ uss820dci_devd

const struct usb_device_descriptor uss820dci_devd
static
Initial value:
= {
.bLength = sizeof(struct usb_device_descriptor),
.bcdUSB = {0x00, 0x02},
.bDeviceClass = UDCLASS_HUB,
.bDeviceSubClass = UDSUBCLASS_HUB,
.bDeviceProtocol = UDPROTO_FSHUB,
.bMaxPacketSize = 64,
.bcdDevice = {0x00, 0x01},
.iManufacturer = 1,
.iProduct = 2,
.bNumConfigurations = 1,
}
uByte bDescriptorType
Definition: usb.h:290
#define UDSUBCLASS_HUB
Definition: usb.h:374
#define UDCLASS_HUB
Definition: usb.h:373
#define UDESC_DEVICE
Definition: usb.h:195
#define UDPROTO_FSHUB
Definition: usb.h:375

Definition at line 1746 of file uss820dci.c.

Referenced by uss820dci_roothub_exec().

◆ uss820dci_device_bulk_methods

static const struct usb_pipe_methods uss820dci_device_bulk_methods
static
Initial value:
=
{
}
static void uss820dci_device_bulk_open(struct usb_xfer *xfer)
Definition: uss820dci.c:1582
static void uss820dci_device_bulk_start(struct usb_xfer *xfer)
Definition: uss820dci.c:1600
static void uss820dci_device_bulk_enter(struct usb_xfer *xfer)
Definition: uss820dci.c:1594
static void uss820dci_device_bulk_close(struct usb_xfer *xfer)
Definition: uss820dci.c:1588

Definition at line 102 of file uss820dci.c.

Referenced by uss820dci_ep_init(), and uss820dci_xfer_setup().

◆ uss820dci_device_ctrl_methods

static const struct usb_pipe_methods uss820dci_device_ctrl_methods
static
Initial value:
=
{
}
static void uss820dci_device_ctrl_start(struct usb_xfer *xfer)
Definition: uss820dci.c:1637
static void uss820dci_device_ctrl_enter(struct usb_xfer *xfer)
Definition: uss820dci.c:1631
static void uss820dci_device_ctrl_close(struct usb_xfer *xfer)
Definition: uss820dci.c:1625
static void uss820dci_device_ctrl_open(struct usb_xfer *xfer)
Definition: uss820dci.c:1619

Definition at line 103 of file uss820dci.c.

Referenced by uss820dci_ep_init(), and uss820dci_xfer_setup().

◆ uss820dci_device_intr_methods

static const struct usb_pipe_methods uss820dci_device_intr_methods
static
Initial value:
=
{
}
static void uss820dci_device_intr_open(struct usb_xfer *xfer)
Definition: uss820dci.c:1656
static void uss820dci_device_intr_enter(struct usb_xfer *xfer)
Definition: uss820dci.c:1668
static void uss820dci_device_intr_start(struct usb_xfer *xfer)
Definition: uss820dci.c:1674
static void uss820dci_device_intr_close(struct usb_xfer *xfer)
Definition: uss820dci.c:1662

Definition at line 104 of file uss820dci.c.

Referenced by uss820dci_ep_init(), and uss820dci_xfer_setup().

◆ uss820dci_device_isoc_fs_methods

static const struct usb_pipe_methods uss820dci_device_isoc_fs_methods
static
Initial value:
=
{
}
static void uss820dci_device_isoc_fs_open(struct usb_xfer *xfer)
Definition: uss820dci.c:1693
static void uss820dci_device_isoc_fs_start(struct usb_xfer *xfer)
Definition: uss820dci.c:1726
static void uss820dci_device_isoc_fs_close(struct usb_xfer *xfer)
Definition: uss820dci.c:1699
static void uss820dci_device_isoc_fs_enter(struct usb_xfer *xfer)
Definition: uss820dci.c:1705

Definition at line 105 of file uss820dci.c.

Referenced by uss820dci_ep_init(), and uss820dci_xfer_setup().

◆ uss820dci_ep_profile

const struct usb_hw_ep_profile uss820dci_ep_profile[]
static

Definition at line 125 of file uss820dci.c.

Referenced by uss820dci_get_hw_ep_profile().

◆ uss820dci_hubd

const struct usb_hub_descriptor_min uss820dci_hubd
static
Initial value:
= {
.bDescLength = sizeof(uss820dci_hubd),
.bDescriptorType = UDESC_HUB,
.bNbrPorts = 1,
HSETW(.wHubCharacteristics, (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL)),
.bPwrOn2PwrGood = 50,
.bHubContrCurrent = 0,
.DeviceRemovable = {0},
}
#define UDESC_HUB
Definition: usb.h:214
#define UHD_OC_INDIVIDUAL
Definition: usb.h:614
#define UHD_PWR_NO_SWITCH
Definition: usb.h:610
static const struct usb_hub_descriptor_min uss820dci_hubd
Definition: uss820dci.c:1802
#define HSETW(ptr, val)
Definition: uss820dci.c:1800

Definition at line 1802 of file uss820dci.c.

Referenced by uss820dci_roothub_exec().

◆ uss820dci_odevd

const struct usb_device_qualifier uss820dci_odevd
static
Initial value:
= {
.bLength = sizeof(struct usb_device_qualifier),
.bcdUSB = {0x00, 0x02},
.bDeviceClass = UDCLASS_HUB,
.bDeviceSubClass = UDSUBCLASS_HUB,
.bDeviceProtocol = UDPROTO_FSHUB,
.bMaxPacketSize0 = 0,
.bNumConfigurations = 0,
}
uByte bDescriptorType
Definition: usb.h:660
#define UDESC_DEVICE_QUALIFIER
Definition: usb.h:201

Definition at line 1760 of file uss820dci.c.

Referenced by uss820dci_roothub_exec().

◆ uss820dci_setup_rx

uss820dci_cmd_t uss820dci_setup_rx
static

Definition at line 107 of file uss820dci.c.

Referenced by uss820dci_setup_standard_chain().