FreeBSD kernel usb device Code
atmegadci.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/atmegadci.h>
Include dependency graph for atmegadci.c:

Go to the source code of this file.

Macros

#define USB_DEBUG_VAR   atmegadci_debug
 
#define ATMEGA_BUS2SC(bus)    __containerof(bus, struct atmegadci_softc, sc_bus)
 
#define ATMEGA_PC2SC(pc)    ATMEGA_BUS2SC(USB_DMATAG_TO_XROOT((pc)->tag_parent)->bus)
 
#define ATMEGA_INTR_ENDPT   1
 
#define HSETW(ptr, val)   ptr = { (uint8_t)(val), (uint8_t)((val) >> 8) }
 
#define STRING_VENDOR    "A\0T\0M\0E\0G\0A"
 
#define STRING_PRODUCT    "D\0C\0I\0 \0R\0o\0o\0t\0 \0H\0U\0B"
 

Functions

static void atmegadci_device_done (struct usb_xfer *, usb_error_t)
 
static void atmegadci_do_poll (struct usb_bus *)
 
static void atmegadci_standard_done (struct usb_xfer *)
 
static void atmegadci_root_intr (struct atmegadci_softc *sc)
 
static void atmegadci_get_hw_ep_profile (struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr)
 
static void atmegadci_clocks_on (struct atmegadci_softc *sc)
 
static void atmegadci_clocks_off (struct atmegadci_softc *sc)
 
static void atmegadci_pull_up (struct atmegadci_softc *sc)
 
static void atmegadci_pull_down (struct atmegadci_softc *sc)
 
static void atmegadci_wakeup_peer (struct atmegadci_softc *sc)
 
static void atmegadci_set_address (struct atmegadci_softc *sc, uint8_t addr)
 
static uint8_t atmegadci_setup_rx (struct atmegadci_td *td)
 
static uint8_t atmegadci_data_rx (struct atmegadci_td *td)
 
static uint8_t atmegadci_data_tx (struct atmegadci_td *td)
 
static uint8_t atmegadci_data_tx_sync (struct atmegadci_td *td)
 
static uint8_t atmegadci_xfer_do_fifo (struct usb_xfer *xfer)
 
static void atmegadci_interrupt_poll (struct atmegadci_softc *sc)
 
static void atmegadci_vbus_interrupt (struct atmegadci_softc *sc, uint8_t is_on)
 
void atmegadci_interrupt (struct atmegadci_softc *sc)
 
static void atmegadci_setup_standard_chain_sub (struct atmegadci_std_temp *temp)
 
static void atmegadci_setup_standard_chain (struct usb_xfer *xfer)
 
static void atmegadci_timeout (void *arg)
 
static void atmegadci_start_standard_chain (struct usb_xfer *xfer)
 
static usb_error_t atmegadci_standard_done_sub (struct usb_xfer *xfer)
 
static void atmegadci_xfer_stall (struct usb_xfer *xfer)
 
static void atmegadci_set_stall (struct usb_device *udev, struct usb_endpoint *ep, uint8_t *did_stall)
 
static void atmegadci_clear_stall_sub (struct atmegadci_softc *sc, uint8_t ep_no, uint8_t ep_type, uint8_t ep_dir)
 
static void atmegadci_clear_stall (struct usb_device *udev, struct usb_endpoint *ep)
 
usb_error_t atmegadci_init (struct atmegadci_softc *sc)
 
void atmegadci_uninit (struct atmegadci_softc *sc)
 
static void atmegadci_suspend (struct atmegadci_softc *sc)
 
static void atmegadci_resume (struct atmegadci_softc *sc)
 
static void atmegadci_device_non_isoc_open (struct usb_xfer *xfer)
 
static void atmegadci_device_non_isoc_close (struct usb_xfer *xfer)
 
static void atmegadci_device_non_isoc_enter (struct usb_xfer *xfer)
 
static void atmegadci_device_non_isoc_start (struct usb_xfer *xfer)
 
static void atmegadci_device_isoc_fs_open (struct usb_xfer *xfer)
 
static void atmegadci_device_isoc_fs_close (struct usb_xfer *xfer)
 
static void atmegadci_device_isoc_fs_enter (struct usb_xfer *xfer)
 
static void atmegadci_device_isoc_fs_start (struct usb_xfer *xfer)
 
 USB_MAKE_STRING_DESC (STRING_VENDOR, atmegadci_vendor)
 
 USB_MAKE_STRING_DESC (STRING_PRODUCT, atmegadci_product)
 
static usb_error_t atmegadci_roothub_exec (struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength)
 
static void atmegadci_xfer_setup (struct usb_setup_params *parm)
 
static void atmegadci_xfer_unsetup (struct usb_xfer *xfer)
 
static void atmegadci_ep_init (struct usb_device *udev, struct usb_endpoint_descriptor *edesc, struct usb_endpoint *ep)
 
static void atmegadci_set_hw_power_sleep (struct usb_bus *bus, uint32_t state)
 

Variables

static const struct usb_bus_methods atmegadci_bus_methods
 
static const struct usb_pipe_methods atmegadci_device_non_isoc_methods
 
static const struct usb_pipe_methods atmegadci_device_isoc_fs_methods
 
static atmegadci_cmd_t atmegadci_setup_rx
 
static atmegadci_cmd_t atmegadci_data_rx
 
static atmegadci_cmd_t atmegadci_data_tx
 
static atmegadci_cmd_t atmegadci_data_tx_sync
 
static const struct usb_hw_ep_profile atmegadci_ep_profile [2]
 
static const struct usb_device_descriptor atmegadci_devd
 
static const struct atmegadci_config_desc atmegadci_confd
 
static const struct usb_hub_descriptor_min atmegadci_hubd
 

Macro Definition Documentation

◆ ATMEGA_BUS2SC

#define ATMEGA_BUS2SC (   bus)     __containerof(bus, struct atmegadci_softc, sc_bus)

Definition at line 81 of file atmegadci.c.

◆ ATMEGA_INTR_ENDPT

#define ATMEGA_INTR_ENDPT   1

Definition at line 96 of file atmegadci.c.

◆ ATMEGA_PC2SC

#define ATMEGA_PC2SC (   pc)     ATMEGA_BUS2SC(USB_DMATAG_TO_XROOT((pc)->tag_parent)->bus)

Definition at line 84 of file atmegadci.c.

◆ HSETW

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

Definition at line 1505 of file atmegadci.c.

◆ STRING_PRODUCT

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

Definition at line 1520 of file atmegadci.c.

◆ STRING_VENDOR

#define STRING_VENDOR    "A\0T\0M\0E\0G\0A"

Definition at line 1517 of file atmegadci.c.

◆ USB_DEBUG_VAR

#define USB_DEBUG_VAR   atmegadci_debug

Definition at line 64 of file atmegadci.c.

Function Documentation

◆ atmegadci_clear_stall()

◆ atmegadci_clear_stall_sub()

◆ atmegadci_clocks_off()

◆ atmegadci_clocks_on()

static void atmegadci_clocks_on ( struct atmegadci_softc sc)
static

◆ atmegadci_data_rx()

◆ atmegadci_data_tx()

◆ atmegadci_data_tx_sync()

static uint8_t atmegadci_data_tx_sync ( struct atmegadci_td td)
static

◆ atmegadci_device_done()

◆ atmegadci_device_isoc_fs_close()

static void atmegadci_device_isoc_fs_close ( struct usb_xfer xfer)
static

Definition at line 1414 of file atmegadci.c.

References atmegadci_device_done(), and USB_ERR_CANCELLED.

Here is the call graph for this function:

◆ atmegadci_device_isoc_fs_enter()

static void atmegadci_device_isoc_fs_enter ( struct usb_xfer xfer)
static

◆ atmegadci_device_isoc_fs_open()

static void atmegadci_device_isoc_fs_open ( struct usb_xfer xfer)
static

Definition at line 1408 of file atmegadci.c.

◆ atmegadci_device_isoc_fs_start()

static void atmegadci_device_isoc_fs_start ( struct usb_xfer xfer)
static

Definition at line 1443 of file atmegadci.c.

References atmegadci_start_standard_chain().

Here is the call graph for this function:

◆ atmegadci_device_non_isoc_close()

static void atmegadci_device_non_isoc_close ( struct usb_xfer xfer)
static

Definition at line 1377 of file atmegadci.c.

References atmegadci_device_done(), and USB_ERR_CANCELLED.

Here is the call graph for this function:

◆ atmegadci_device_non_isoc_enter()

static void atmegadci_device_non_isoc_enter ( struct usb_xfer xfer)
static

Definition at line 1383 of file atmegadci.c.

◆ atmegadci_device_non_isoc_open()

static void atmegadci_device_non_isoc_open ( struct usb_xfer xfer)
static

Definition at line 1371 of file atmegadci.c.

◆ atmegadci_device_non_isoc_start()

static void atmegadci_device_non_isoc_start ( struct usb_xfer xfer)
static

Definition at line 1389 of file atmegadci.c.

References atmegadci_setup_standard_chain(), and atmegadci_start_standard_chain().

Here is the call graph for this function:

◆ atmegadci_do_poll()

static void atmegadci_do_poll ( struct usb_bus bus)
static

Definition at line 1356 of file atmegadci.c.

References ATMEGA_BUS2SC, atmegadci_interrupt_poll(), bus, atmegadci_softc::sc_bus, USB_BUS_LOCK, and USB_BUS_UNLOCK.

Referenced by atmegadci_init().

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

◆ atmegadci_ep_init()

◆ atmegadci_get_hw_ep_profile()

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

Definition at line 137 of file atmegadci.c.

References ATMEGA_EP_MAX, and atmegadci_ep_profile.

Referenced by atmegadci_xfer_setup().

Here is the caller graph for this function:

◆ atmegadci_init()

◆ atmegadci_interrupt()

◆ atmegadci_interrupt_poll()

static void atmegadci_interrupt_poll ( struct atmegadci_softc sc)
static

Definition at line 614 of file atmegadci.c.

References atmegadci_xfer_do_fifo(), usb_bus::intr_q, and atmegadci_softc::sc_bus.

Referenced by atmegadci_do_poll(), and atmegadci_interrupt().

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

◆ atmegadci_pull_down()

static void atmegadci_pull_down ( struct atmegadci_softc sc)
static

Definition at line 203 of file atmegadci.c.

References ATMEGA_UDCON, ATMEGA_UDCON_DETACH, ATMEGA_WRITE_1, atmegadci_flags::d_pulled_up, and atmegadci_softc::sc_flags.

Referenced by atmegadci_roothub_exec(), and atmegadci_uninit().

Here is the caller graph for this function:

◆ atmegadci_pull_up()

static void atmegadci_pull_up ( struct atmegadci_softc sc)
static

Definition at line 191 of file atmegadci.c.

References ATMEGA_UDCON, ATMEGA_WRITE_1, atmegadci_flags::d_pulled_up, atmegadci_flags::port_powered, and atmegadci_softc::sc_flags.

Referenced by atmegadci_roothub_exec().

Here is the caller graph for this function:

◆ atmegadci_resume()

static void atmegadci_resume ( struct atmegadci_softc sc)
static

Definition at line 1350 of file atmegadci.c.

Referenced by atmegadci_set_hw_power_sleep().

Here is the caller graph for this function:

◆ atmegadci_root_intr()

static void atmegadci_root_intr ( struct atmegadci_softc sc)
static

Definition at line 953 of file atmegadci.c.

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

Referenced by atmegadci_interrupt(), and atmegadci_vbus_interrupt().

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

◆ atmegadci_roothub_exec()

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

Definition at line 1527 of file atmegadci.c.

References ATMEGA_BUS2SC, ATMEGA_READ_1, ATMEGA_UECFG0X, ATMEGA_UECFG0X_EPTYPE0, ATMEGA_UECFG1X, ATMEGA_UECFG1X_ALLOC, ATMEGA_UECFG1X_EPBK0, ATMEGA_UECFG1X_EPSIZE, ATMEGA_UECONX, ATMEGA_UECONX_EPEN, ATMEGA_UECONX_STALLRQ, ATMEGA_UENUM, ATMEGA_UERST, ATMEGA_UERST_MASK, ATMEGA_UESTA0X, ATMEGA_UESTA0X_CFGOK, ATMEGA_WRITE_1, atmegadci_clocks_off(), atmegadci_clocks_on(), atmegadci_confd, atmegadci_devd, atmegadci_hubd, atmegadci_pull_down(), atmegadci_pull_up(), atmegadci_wakeup_peer(), usb_bus::bdev, usb_device::bus, atmegadci_flags::change_connect, atmegadci_flags::change_suspend, index, len, atmegadci_flags::port_enabled, atmegadci_flags::port_powered, pptr, atmegadci_hub_temp::ps, req, atmegadci_softc::sc_bus, atmegadci_softc::sc_conf, atmegadci_softc::sc_flags, atmegadci_softc::sc_hub_temp, atmegadci_softc::sc_rt_addr, atmegadci_flags::status_bus_reset, atmegadci_flags::status_suspend, atmegadci_flags::status_vbus, UDESC_CONFIG, UDESC_DEVICE, 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, 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 atmegadci_hub_temp::wValue.

Here is the call graph for this function:

◆ atmegadci_set_address()

static void atmegadci_set_address ( struct atmegadci_softc sc,
uint8_t  addr 
)
static

Definition at line 233 of file atmegadci.c.

References addr, ATMEGA_UDADDR, ATMEGA_UDADDR_ADDEN, and ATMEGA_WRITE_1.

Referenced by atmegadci_data_tx_sync().

Here is the caller graph for this function:

◆ atmegadci_set_hw_power_sleep()

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

Definition at line 2068 of file atmegadci.c.

References ATMEGA_BUS2SC, atmegadci_resume(), atmegadci_suspend(), atmegadci_uninit(), bus, state, USB_HW_POWER_RESUME, USB_HW_POWER_SHUTDOWN, and USB_HW_POWER_SUSPEND.

Here is the call graph for this function:

◆ atmegadci_set_stall()

static void atmegadci_set_stall ( struct usb_device udev,
struct usb_endpoint ep,
uint8_t *  did_stall 
)
static

◆ atmegadci_setup_rx()

◆ atmegadci_setup_standard_chain()

◆ atmegadci_setup_standard_chain_sub()

◆ atmegadci_standard_done()

static void atmegadci_standard_done ( struct usb_xfer xfer)
static

◆ atmegadci_standard_done_sub()

◆ atmegadci_start_standard_chain()

static void atmegadci_start_standard_chain ( struct usb_xfer xfer)
static

Definition at line 935 of file atmegadci.c.

References atmegadci_timeout(), atmegadci_xfer_do_fifo(), usb_xfer_root::bus, usb_bus::intr_q, usb_xfer::timeout, usbd_transfer_enqueue(), usbd_transfer_timeout_ms(), and usb_xfer::xroot.

Referenced by atmegadci_device_isoc_fs_start(), and atmegadci_device_non_isoc_start().

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

◆ atmegadci_suspend()

static void atmegadci_suspend ( struct atmegadci_softc sc)
static

Definition at line 1344 of file atmegadci.c.

Referenced by atmegadci_set_hw_power_sleep().

Here is the caller graph for this function:

◆ atmegadci_timeout()

static void atmegadci_timeout ( void *  arg)
static

Definition at line 922 of file atmegadci.c.

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

Referenced by atmegadci_start_standard_chain().

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

◆ atmegadci_uninit()

◆ atmegadci_vbus_interrupt()

static void atmegadci_vbus_interrupt ( struct atmegadci_softc sc,
uint8_t  is_on 
)
static

Definition at line 628 of file atmegadci.c.

References atmegadci_root_intr(), atmegadci_flags::change_connect, atmegadci_flags::change_suspend, atmegadci_softc::sc_flags, atmegadci_flags::status_bus_reset, atmegadci_flags::status_suspend, and atmegadci_flags::status_vbus.

Referenced by atmegadci_init(), and atmegadci_interrupt().

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

◆ atmegadci_wakeup_peer()

static void atmegadci_wakeup_peer ( struct atmegadci_softc sc)
static

Definition at line 214 of file atmegadci.c.

References ATMEGA_READ_1, ATMEGA_UDCON, ATMEGA_UDCON_RMWKUP, ATMEGA_WRITE_1, usb_bus::bus_mtx, atmegadci_softc::sc_bus, atmegadci_softc::sc_flags, atmegadci_flags::status_suspend, and usb_pause_mtx().

Referenced by atmegadci_roothub_exec().

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

◆ atmegadci_xfer_do_fifo()

static uint8_t atmegadci_xfer_do_fifo ( struct usb_xfer xfer)
static

Definition at line 571 of file atmegadci.c.

References atmegadci_standard_done(), atmegadci_td::func, usb_xfer::td_transfer_cache, and usb_xfer::td_transfer_last.

Referenced by atmegadci_interrupt_poll(), and atmegadci_start_standard_chain().

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

◆ atmegadci_xfer_setup()

◆ atmegadci_xfer_stall()

static void atmegadci_xfer_stall ( struct usb_xfer xfer)
static

Definition at line 1103 of file atmegadci.c.

References atmegadci_device_done(), and USB_ERR_STALLED.

Here is the call graph for this function:

◆ atmegadci_xfer_unsetup()

static void atmegadci_xfer_unsetup ( struct usb_xfer xfer)
static

Definition at line 2039 of file atmegadci.c.

◆ USB_MAKE_STRING_DESC() [1/2]

USB_MAKE_STRING_DESC ( STRING_PRODUCT  ,
atmegadci_product   
)

◆ USB_MAKE_STRING_DESC() [2/2]

USB_MAKE_STRING_DESC ( STRING_VENDOR  ,
atmegadci_vendor   
)

Variable Documentation

◆ atmegadci_bus_methods

static const struct usb_bus_methods atmegadci_bus_methods
static
Initial value:
=
{
.endpoint_init = &atmegadci_ep_init,
.xfer_setup = &atmegadci_xfer_setup,
.xfer_unsetup = &atmegadci_xfer_unsetup,
.get_hw_ep_profile = &atmegadci_get_hw_ep_profile,
.xfer_stall = &atmegadci_xfer_stall,
.set_stall = &atmegadci_set_stall,
.clear_stall = &atmegadci_clear_stall,
.roothub_exec = &atmegadci_roothub_exec,
.xfer_poll = &atmegadci_do_poll,
.set_hw_power_sleep = &atmegadci_set_hw_power_sleep,
}
static void atmegadci_xfer_unsetup(struct usb_xfer *xfer)
Definition: atmegadci.c:2039
static void atmegadci_xfer_setup(struct usb_setup_params *parm)
Definition: atmegadci.c:1956
static void atmegadci_set_stall(struct usb_device *udev, struct usb_endpoint *ep, uint8_t *did_stall)
Definition: atmegadci.c:1109
static void atmegadci_set_hw_power_sleep(struct usb_bus *bus, uint32_t state)
Definition: atmegadci.c:2068
static usb_error_t atmegadci_roothub_exec(struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength)
Definition: atmegadci.c:1527
static void atmegadci_clear_stall(struct usb_device *udev, struct usb_endpoint *ep)
Definition: atmegadci.c:1191
static void atmegadci_get_hw_ep_profile(struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr)
Definition: atmegadci.c:137
static void atmegadci_do_poll(struct usb_bus *)
Definition: atmegadci.c:1356
static void atmegadci_xfer_stall(struct usb_xfer *xfer)
Definition: atmegadci.c:1103
static void atmegadci_ep_init(struct usb_device *udev, struct usb_endpoint_descriptor *edesc, struct usb_endpoint *ep)
Definition: atmegadci.c:2045

Definition at line 100 of file atmegadci.c.

Referenced by atmegadci_init().

◆ atmegadci_confd

const struct atmegadci_config_desc atmegadci_confd
static
Initial value:
= {
.confd = {
.bLength = sizeof(struct usb_config_descriptor),
.wTotalLength[0] = sizeof(atmegadci_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 | ATMEGA_INTR_ENDPT),
.wMaxPacketSize[0] = 8,
.bInterval = 255,
},
}
static const struct atmegadci_config_desc atmegadci_confd
Definition: atmegadci.c:1477
#define ATMEGA_INTR_ENDPT
Definition: atmegadci.c:96
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

Definition at line 1477 of file atmegadci.c.

Referenced by atmegadci_roothub_exec().

◆ atmegadci_data_rx

atmegadci_cmd_t atmegadci_data_rx
static

Definition at line 105 of file atmegadci.c.

Referenced by atmegadci_setup_standard_chain().

◆ atmegadci_data_tx

atmegadci_cmd_t atmegadci_data_tx
static

Definition at line 106 of file atmegadci.c.

Referenced by atmegadci_setup_standard_chain().

◆ atmegadci_data_tx_sync

atmegadci_cmd_t atmegadci_data_tx_sync
static

Definition at line 107 of file atmegadci.c.

Referenced by atmegadci_setup_standard_chain().

◆ atmegadci_devd

const struct usb_device_descriptor atmegadci_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 1463 of file atmegadci.c.

Referenced by atmegadci_roothub_exec().

◆ atmegadci_device_isoc_fs_methods

static const struct usb_pipe_methods atmegadci_device_isoc_fs_methods
static
Initial value:
=
{
}
static void atmegadci_device_isoc_fs_close(struct usb_xfer *xfer)
Definition: atmegadci.c:1414
static void atmegadci_device_isoc_fs_start(struct usb_xfer *xfer)
Definition: atmegadci.c:1443
static void atmegadci_device_isoc_fs_open(struct usb_xfer *xfer)
Definition: atmegadci.c:1408
static void atmegadci_device_isoc_fs_enter(struct usb_xfer *xfer)
Definition: atmegadci.c:1420

Definition at line 102 of file atmegadci.c.

Referenced by atmegadci_ep_init().

◆ atmegadci_device_non_isoc_methods

static const struct usb_pipe_methods atmegadci_device_non_isoc_methods
static
Initial value:
=
{
}
static void atmegadci_device_non_isoc_enter(struct usb_xfer *xfer)
Definition: atmegadci.c:1383
static void atmegadci_device_non_isoc_close(struct usb_xfer *xfer)
Definition: atmegadci.c:1377
static void atmegadci_device_non_isoc_start(struct usb_xfer *xfer)
Definition: atmegadci.c:1389
static void atmegadci_device_non_isoc_open(struct usb_xfer *xfer)
Definition: atmegadci.c:1371

Definition at line 101 of file atmegadci.c.

Referenced by atmegadci_ep_init().

◆ atmegadci_ep_profile

const struct usb_hw_ep_profile atmegadci_ep_profile[2]
static
Initial value:
= {
[0] = {
.max_in_frame_size = 64,
.max_out_frame_size = 64,
.is_simplex = 1,
.support_control = 1,
},
[1] = {
.max_in_frame_size = 64,
.max_out_frame_size = 64,
.is_simplex = 1,
.support_bulk = 1,
.support_interrupt = 1,
.support_isochronous = 1,
.support_in = 1,
.support_out = 1,
},
}

Definition at line 117 of file atmegadci.c.

Referenced by atmegadci_get_hw_ep_profile().

◆ atmegadci_hubd

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

Definition at line 1507 of file atmegadci.c.

Referenced by atmegadci_roothub_exec().

◆ atmegadci_setup_rx

atmegadci_cmd_t atmegadci_setup_rx
static

Definition at line 104 of file atmegadci.c.

Referenced by atmegadci_setup_standard_chain().