FreeBSD kernel usb device Code
urio.c File Reference
#include <sys/cdefs.h>
#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 <sys/conf.h>
#include <sys/fcntl.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include "usbdevs.h"
#include <dev/usb/usb_ioctl.h>
#include <dev/usb/usb_generic.h>
#include <dev/usb/usb_debug.h>
#include <dev/usb/storage/rio500_usb.h>
Include dependency graph for urio.c:

Go to the source code of this file.

Data Structures

struct  urio_softc
 

Macros

#define USB_DEBUG_VAR   urio_debug
 
#define URIO_T_WR   0
 
#define URIO_T_RD   1
 
#define URIO_T_WR_CS   2
 
#define URIO_T_RD_CS   3
 
#define URIO_T_MAX   4
 
#define URIO_BSIZE   (1<<12) /* bytes */
 
#define URIO_IFQ_MAXLEN   2 /* units */
 
#define URIO_FLAG_READ_STALL   0x01 /* read transfer stalled */
 
#define URIO_FLAG_WRITE_STALL   0x02 /* write transfer stalled */
 

Functions

 __FBSDID ("$FreeBSD$")
 
 DRIVER_MODULE (urio, uhub, urio_driver, urio_devclass, NULL, 0)
 
 MODULE_DEPEND (urio, usb, 1, 1, 1)
 
 MODULE_VERSION (urio, 1)
 
 USB_PNP_HOST_INFO (urio_devs)
 
static int urio_probe (device_t dev)
 
static int urio_attach (device_t dev)
 
static void urio_write_callback (struct usb_xfer *xfer, usb_error_t error)
 
static void urio_write_clear_stall_callback (struct usb_xfer *xfer, usb_error_t error)
 
static void urio_read_callback (struct usb_xfer *xfer, usb_error_t error)
 
static void urio_read_clear_stall_callback (struct usb_xfer *xfer, usb_error_t error)
 
static void urio_start_read (struct usb_fifo *fifo)
 
static void urio_stop_read (struct usb_fifo *fifo)
 
static void urio_start_write (struct usb_fifo *fifo)
 
static void urio_stop_write (struct usb_fifo *fifo)
 
static int urio_open (struct usb_fifo *fifo, int fflags)
 
static void urio_close (struct usb_fifo *fifo, int fflags)
 
static int urio_ioctl (struct usb_fifo *fifo, u_long cmd, void *addr, int fflags)
 
static int urio_detach (device_t dev)
 

Variables

static device_probe_t urio_probe
 
static device_attach_t urio_attach
 
static device_detach_t urio_detach
 
static usb_callback_t urio_write_callback
 
static usb_callback_t urio_write_clear_stall_callback
 
static usb_callback_t urio_read_callback
 
static usb_callback_t urio_read_clear_stall_callback
 
static usb_fifo_close_t urio_close
 
static usb_fifo_cmd_t urio_start_read
 
static usb_fifo_cmd_t urio_start_write
 
static usb_fifo_cmd_t urio_stop_read
 
static usb_fifo_cmd_t urio_stop_write
 
static usb_fifo_ioctl_t urio_ioctl
 
static usb_fifo_open_t urio_open
 
static struct usb_fifo_methods urio_fifo_methods
 
static const struct usb_config urio_config [URIO_T_MAX]
 
static devclass_t urio_devclass
 
static device_method_t urio_methods []
 
static driver_t urio_driver
 
static const STRUCT_USB_HOST_ID urio_devs []
 

Macro Definition Documentation

◆ URIO_BSIZE

#define URIO_BSIZE   (1<<12) /* bytes */

Definition at line 96 of file urio.c.

◆ URIO_FLAG_READ_STALL

#define URIO_FLAG_READ_STALL   0x01 /* read transfer stalled */

Definition at line 107 of file urio.c.

◆ URIO_FLAG_WRITE_STALL

#define URIO_FLAG_WRITE_STALL   0x02 /* write transfer stalled */

Definition at line 108 of file urio.c.

◆ URIO_IFQ_MAXLEN

#define URIO_IFQ_MAXLEN   2 /* units */

Definition at line 97 of file urio.c.

◆ URIO_T_MAX

#define URIO_T_MAX   4

Definition at line 94 of file urio.c.

◆ URIO_T_RD

#define URIO_T_RD   1

Definition at line 91 of file urio.c.

◆ URIO_T_RD_CS

#define URIO_T_RD_CS   3

Definition at line 93 of file urio.c.

◆ URIO_T_WR

#define URIO_T_WR   0

Definition at line 90 of file urio.c.

◆ URIO_T_WR_CS

#define URIO_T_WR_CS   2

Definition at line 92 of file urio.c.

◆ USB_DEBUG_VAR

#define USB_DEBUG_VAR   urio_debug

Definition at line 76 of file urio.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ DRIVER_MODULE()

DRIVER_MODULE ( urio  ,
uhub  ,
urio_driver  ,
urio_devclass  ,
NULL  ,
 
)

◆ MODULE_DEPEND()

MODULE_DEPEND ( urio  ,
usb  ,
,
,
 
)

◆ MODULE_VERSION()

MODULE_VERSION ( urio  ,
 
)

◆ urio_attach()

◆ urio_close()

static void urio_close ( struct usb_fifo fifo,
int  fflags 
)
static

Definition at line 425 of file urio.c.

References usb_fifo_free_buffer().

Here is the call graph for this function:

◆ urio_detach()

static int urio_detach ( device_t  dev)
static

Definition at line 485 of file urio.c.

References dev, DPRINTF, urio_softc::sc_fifo, urio_softc::sc_mtx, urio_softc::sc_xfer, URIO_T_MAX, usb_fifo_detach(), and usbd_transfer_unsetup().

Here is the call graph for this function:

◆ urio_ioctl()

◆ urio_open()

static int urio_open ( struct usb_fifo fifo,
int  fflags 
)
static

◆ urio_probe()

static int urio_probe ( device_t  dev)
static

◆ urio_read_callback()

◆ urio_read_clear_stall_callback()

static void urio_read_clear_stall_callback ( struct usb_xfer xfer,
usb_error_t  error 
)
static

Definition at line 348 of file urio.c.

References DPRINTF, urio_softc::sc_flags, urio_softc::sc_xfer, URIO_T_RD, usbd_clear_stall_callback(), usbd_transfer_start(), and usbd_xfer_softc().

Here is the call graph for this function:

◆ urio_start_read()

static void urio_start_read ( struct usb_fifo fifo)
static

Definition at line 361 of file urio.c.

References urio_softc::sc_xfer, URIO_T_RD, usb_fifo_softc(), and usbd_transfer_start().

Here is the call graph for this function:

◆ urio_start_write()

static void urio_start_write ( struct usb_fifo fifo)
static

Definition at line 378 of file urio.c.

References urio_softc::sc_xfer, URIO_T_WR, usb_fifo_softc(), and usbd_transfer_start().

Here is the call graph for this function:

◆ urio_stop_read()

static void urio_stop_read ( struct usb_fifo fifo)
static

Definition at line 369 of file urio.c.

References urio_softc::sc_xfer, URIO_T_RD, URIO_T_RD_CS, usb_fifo_softc(), and usbd_transfer_stop().

Here is the call graph for this function:

◆ urio_stop_write()

static void urio_stop_write ( struct usb_fifo fifo)
static

Definition at line 386 of file urio.c.

References urio_softc::sc_xfer, URIO_T_WR, URIO_T_WR_CS, usb_fifo_softc(), and usbd_transfer_stop().

Here is the call graph for this function:

◆ urio_write_callback()

◆ urio_write_clear_stall_callback()

static void urio_write_clear_stall_callback ( struct usb_xfer xfer,
usb_error_t  error 
)
static

Definition at line 299 of file urio.c.

References DPRINTF, urio_softc::sc_flags, urio_softc::sc_xfer, URIO_T_WR, usbd_clear_stall_callback(), usbd_transfer_start(), and usbd_xfer_softc().

Here is the call graph for this function:

◆ USB_PNP_HOST_INFO()

USB_PNP_HOST_INFO ( urio_devs  )

Variable Documentation

◆ urio_attach

device_attach_t urio_attach
static

Definition at line 116 of file urio.c.

◆ urio_close

usb_fifo_close_t urio_close
static

Definition at line 124 of file urio.c.

◆ urio_config

const struct usb_config urio_config[URIO_T_MAX]
static

Definition at line 143 of file urio.c.

Referenced by urio_attach().

◆ urio_detach

device_detach_t urio_detach
static

Definition at line 117 of file urio.c.

Referenced by urio_attach().

◆ urio_devclass

devclass_t urio_devclass
static

Definition at line 183 of file urio.c.

◆ urio_devs

const STRUCT_USB_HOST_ID urio_devs[]
static
Initial value:
= {
{USB_VPI(USB_VENDOR_DIAMOND2, USB_PRODUCT_DIAMOND2_RIO600USB, 0)},
{USB_VPI(USB_VENDOR_DIAMOND2, USB_PRODUCT_DIAMOND2_RIO800USB, 0)},
}
#define USB_PRODUCT_DIAMOND_RIO500USB
Definition: rio500_usb.h:30
#define USB_VENDOR_DIAMOND
Definition: rio500_usb.h:27
#define USB_VPI(vend, prod, info)
Definition: usbdi.h:367

Definition at line 200 of file urio.c.

Referenced by urio_probe().

◆ urio_driver

driver_t urio_driver
static
Initial value:
= {
.name = "urio",
.methods = urio_methods,
.size = sizeof(struct urio_softc),
}
static device_method_t urio_methods[]
Definition: urio.c:185

Definition at line 194 of file urio.c.

◆ urio_fifo_methods

struct usb_fifo_methods urio_fifo_methods
static
Initial value:
= {
.f_close = &urio_close,
.f_ioctl = &urio_ioctl,
.f_open = &urio_open,
.f_start_read = &urio_start_read,
.f_start_write = &urio_start_write,
.f_stop_read = &urio_stop_read,
.f_stop_write = &urio_stop_write,
.basename[0] = "urio",
}
static usb_fifo_cmd_t urio_start_write
Definition: urio.c:126
static usb_fifo_open_t urio_open
Definition: urio.c:130
static usb_fifo_cmd_t urio_stop_read
Definition: urio.c:127
static usb_fifo_ioctl_t urio_ioctl
Definition: urio.c:129
static usb_fifo_cmd_t urio_stop_write
Definition: urio.c:128
static usb_fifo_cmd_t urio_start_read
Definition: urio.c:125
static usb_fifo_close_t urio_close
Definition: urio.c:124

Definition at line 132 of file urio.c.

Referenced by urio_attach().

◆ urio_ioctl

usb_fifo_ioctl_t urio_ioctl
static

Definition at line 129 of file urio.c.

◆ urio_methods

device_method_t urio_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, urio_probe),
DEVMETHOD(device_attach, urio_attach),
DEVMETHOD(device_detach, urio_detach),
DEVMETHOD_END
}
static device_probe_t urio_probe
Definition: urio.c:115
static device_detach_t urio_detach
Definition: urio.c:117
static device_attach_t urio_attach
Definition: urio.c:116

Definition at line 185 of file urio.c.

◆ urio_open

usb_fifo_open_t urio_open
static

Definition at line 130 of file urio.c.

◆ urio_probe

device_probe_t urio_probe
static

Definition at line 115 of file urio.c.

◆ urio_read_callback

usb_callback_t urio_read_callback
static

Definition at line 121 of file urio.c.

◆ urio_read_clear_stall_callback

usb_callback_t urio_read_clear_stall_callback
static

Definition at line 122 of file urio.c.

◆ urio_start_read

usb_fifo_cmd_t urio_start_read
static

Definition at line 125 of file urio.c.

◆ urio_start_write

usb_fifo_cmd_t urio_start_write
static

Definition at line 126 of file urio.c.

◆ urio_stop_read

usb_fifo_cmd_t urio_stop_read
static

Definition at line 127 of file urio.c.

◆ urio_stop_write

usb_fifo_cmd_t urio_stop_write
static

Definition at line 128 of file urio.c.

◆ urio_write_callback

usb_callback_t urio_write_callback
static

Definition at line 119 of file urio.c.

◆ urio_write_clear_stall_callback

usb_callback_t urio_write_clear_stall_callback
static

Definition at line 120 of file urio.c.