FreeBSD kernel usb device Code
cp2112.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/condvar.h>
#include <sys/bus.h>
#include <sys/gpio.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/sdt.h>
#include <sys/sx.h>
#include <dev/gpio/gpiobusvar.h>
#include <dev/iicbus/iiconf.h>
#include <dev/iicbus/iicbus.h>
#include "iicbus_if.h"
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbhid.h>
#include "usbdevs.h"
#include <dev/usb/usb_debug.h>
Include dependency graph for cp2112.c:

Go to the source code of this file.

Data Structures

struct  version_request
 
struct  gpio_get_req
 
struct  gpio_set_req
 
struct  gpio_config_req
 
struct  i2c_xfer_status_req
 
struct  i2c_xfer_status_resp
 
struct  i2c_data_read_force_send_req
 
struct  i2c_data_read_resp
 
struct  i2c_write_read_req
 
struct  i2c_read_req
 
struct  i2c_write_req
 
struct  i2c_cfg_req
 
struct  cp2112_softc
 
struct  cp2112gpio_softc
 
struct  cp2112iic_softc
 

Macros

#define USB_DEBUG_VAR   usb_debug
 
#define SIZEOF_FIELD(_s, _f)   sizeof(((struct _s *)NULL)->_f)
 
#define CP2112GPIO_LOCK(sc)   sx_xlock(&sc->gpio_lock)
 
#define CP2112GPIO_UNLOCK(sc)   sx_xunlock(&sc->gpio_lock)
 
#define CP2112GPIO_LOCKED(sc)   sx_assert(&sc->gpio_lock, SX_XLOCKED)
 
#define CP2112_PART_NUM   0x0c
 
#define CP2112_GPIO_COUNT   8
 
#define CP2112_REPORT_SIZE   64
 
#define CP2112_REQ_RESET   0x1
 
#define CP2112_REQ_GPIO_CFG   0x2
 
#define CP2112_REQ_GPIO_GET   0x3
 
#define CP2112_REQ_GPIO_SET   0x4
 
#define CP2112_REQ_VERSION   0x5
 
#define CP2112_REQ_SMB_CFG   0x6
 
#define CP2112_REQ_SMB_READ   0x10
 
#define CP2112_REQ_SMB_WRITE_READ   0x11
 
#define CP2112_REQ_SMB_READ_FORCE_SEND   0x12
 
#define CP2112_REQ_SMB_READ_RESPONSE   0x13
 
#define CP2112_REQ_SMB_WRITE   0x14
 
#define CP2112_REQ_SMB_XFER_STATUS_REQ   0x15
 
#define CP2112_REQ_SMB_XFER_STATUS_RESP   0x16
 
#define CP2112_REQ_SMB_CANCEL   0x17
 
#define CP2112_REQ_LOCK   0x20
 
#define CP2112_REQ_USB_CFG   0x21
 
#define CP2112_IIC_MAX_READ_LEN   512
 
#define CP2112_IIC_REPSTART_VER   2 /* Erratum CP2112_E10. */
 
#define CP2112_GPIO_SPEC_CLK7   1 /* Pin 7 is clock output. */
 
#define CP2112_GPIO_SPEC_TX0   2 /* Pin 0 pulses on USB TX. */
 
#define CP2112_GPIO_SPEC_RX1   4 /* Pin 1 pulses on USB RX. */
 
#define CP2112_IIC_STATUS0_IDLE   0
 
#define CP2112_IIC_STATUS0_BUSY   1
 
#define CP2112_IIC_STATUS0_CMP   2
 
#define CP2112_IIC_STATUS0_ERROR   3
 
#define CP2112_IIC_STATUS1_TIMEOUT_NACK   0
 
#define CP2112_IIC_STATUS1_TIMEOUT_BUS   1
 
#define CP2112_IIC_STATUS1_ARB_LOST   2
 

Enumerations

enum  cp2112_out_mode { OUT_OD , OUT_PP , OUT_KEEP }
 
enum  { CP2112_INTR_OUT = 0 , CP2112_INTR_IN , CP2112_N_TRANSFER }
 

Functions

 __FBSDID ("$FreeBSD$")
 
static int cp2112_detach (device_t dev)
 
static int cp2112gpio_detach (device_t dev)
 
static int cp2112iic_detach (device_t dev)
 
static int cp2112_get_report (device_t dev, uint8_t id, void *data, uint16_t len)
 
static int cp2112_set_report (device_t dev, uint8_t id, void *data, uint16_t len)
 
static int cp2112_probe (device_t dev)
 
static int cp2112_attach (device_t dev)
 
static int cp2112_gpio_read_pin (device_t dev, uint32_t pin_num, bool *on)
 
static int cp2112_gpio_write_pin (device_t dev, uint32_t pin_num, bool on)
 
static int cp2112_gpio_configure_write_pin (device_t dev, uint32_t pin_num, bool output, enum cp2112_out_mode *mode)
 
static device_t cp2112_gpio_get_bus (device_t dev)
 
static int cp2112_gpio_pin_max (device_t dev, int *maxpin)
 
static int cp2112_gpio_pin_set (device_t dev, uint32_t pin_num, uint32_t pin_value)
 
static int cp2112_gpio_pin_get (device_t dev, uint32_t pin_num, uint32_t *pin_value)
 
static int cp2112_gpio_pin_toggle (device_t dev, uint32_t pin_num)
 
static int cp2112_gpio_pin_getcaps (device_t dev, uint32_t pin_num, uint32_t *caps)
 
static int cp2112_gpio_pin_getflags (device_t dev, uint32_t pin_num, uint32_t *flags)
 
static int cp2112_gpio_pin_getname (device_t dev, uint32_t pin_num, char *name)
 
static int cp2112_gpio_pin_setflags (device_t dev, uint32_t pin_num, uint32_t flags)
 
static int cp2112gpio_probe (device_t dev)
 
static int cp2112gpio_attach (device_t dev)
 
static void cp2112iic_intr_write_callback (struct usb_xfer *xfer, usb_error_t error)
 
static void cp2112iic_intr_read_callback (struct usb_xfer *xfer, usb_error_t error)
 
static int cp2112iic_send_req (struct cp2112iic_softc *sc, const void *data, uint16_t len)
 
static int cp2112iic_req_resp (struct cp2112iic_softc *sc, const void *req_data, uint16_t req_len, void *resp_data, uint16_t resp_len)
 
static int cp2112iic_check_req_status (struct cp2112iic_softc *sc)
 
static int cp2112iic_read_data (struct cp2112iic_softc *sc, void *data, uint16_t in_len, uint16_t *out_len)
 
static int cp2112iic_transfer (device_t dev, struct iic_msg *msgs, uint32_t nmsgs)
 
static int cp2112iic_reset (device_t dev, u_char speed, u_char addr, u_char *oldaddr)
 
static int cp2112iic_probe (device_t dev)
 
static int cp2112iic_attach (device_t dev)
 
 DRIVER_MODULE (cp2112hid, uhub, cp2112hid_driver, cp2112hid_devclass, NULL, NULL)
 
 MODULE_DEPEND (cp2112hid, usb, 1, 1, 1)
 
 MODULE_VERSION (cp2112hid, 1)
 
 USB_PNP_HOST_INFO (cp2112_devs)
 
 DRIVER_MODULE (cp2112gpio, cp2112hid, cp2112gpio_driver, cp2112gpio_devclass, NULL, NULL)
 
 MODULE_DEPEND (cp2112gpio, cp2112hid, 1, 1, 1)
 
 MODULE_DEPEND (cp2112gpio, gpiobus, 1, 1, 1)
 
 MODULE_VERSION (cp2112gpio, 1)
 
 DRIVER_MODULE (cp2112iic, cp2112hid, cp2112iic_driver, cp2112iic_devclass, NULL, NULL)
 
 MODULE_DEPEND (cp2112iic, cp2112hid, 1, 1, 1)
 
 MODULE_DEPEND (cp2112iic, iicbus, IICBUS_MINVER, IICBUS_PREFVER, IICBUS_MAXVER)
 
 MODULE_VERSION (cp2112iic, 1)
 

Variables

struct version_request __packed
 
static const STRUCT_USB_HOST_ID cp2112_devs []
 
static const struct usb_config cp2112iic_config [CP2112_N_TRANSFER]
 
static device_method_t cp2112hid_methods []
 
static driver_t cp2112hid_driver
 
static devclass_t cp2112hid_devclass
 
static device_method_t cp2112gpio_methods []
 
static driver_t cp2112gpio_driver
 
static devclass_t cp2112gpio_devclass
 
static device_method_t cp2112iic_methods []
 
static driver_t cp2112iic_driver
 
static devclass_t cp2112iic_devclass
 

Macro Definition Documentation

◆ CP2112_GPIO_COUNT

#define CP2112_GPIO_COUNT   8

Definition at line 76 of file cp2112.c.

◆ CP2112_GPIO_SPEC_CLK7

#define CP2112_GPIO_SPEC_CLK7   1 /* Pin 7 is clock output. */

Definition at line 101 of file cp2112.c.

◆ CP2112_GPIO_SPEC_RX1

#define CP2112_GPIO_SPEC_RX1   4 /* Pin 1 pulses on USB RX. */

Definition at line 103 of file cp2112.c.

◆ CP2112_GPIO_SPEC_TX0

#define CP2112_GPIO_SPEC_TX0   2 /* Pin 0 pulses on USB TX. */

Definition at line 102 of file cp2112.c.

◆ CP2112_IIC_MAX_READ_LEN

#define CP2112_IIC_MAX_READ_LEN   512

Definition at line 98 of file cp2112.c.

◆ CP2112_IIC_REPSTART_VER

#define CP2112_IIC_REPSTART_VER   2 /* Erratum CP2112_E10. */

Definition at line 99 of file cp2112.c.

◆ CP2112_IIC_STATUS0_BUSY

#define CP2112_IIC_STATUS0_BUSY   1

Definition at line 106 of file cp2112.c.

◆ CP2112_IIC_STATUS0_CMP

#define CP2112_IIC_STATUS0_CMP   2

Definition at line 107 of file cp2112.c.

◆ CP2112_IIC_STATUS0_ERROR

#define CP2112_IIC_STATUS0_ERROR   3

Definition at line 108 of file cp2112.c.

◆ CP2112_IIC_STATUS0_IDLE

#define CP2112_IIC_STATUS0_IDLE   0

Definition at line 105 of file cp2112.c.

◆ CP2112_IIC_STATUS1_ARB_LOST

#define CP2112_IIC_STATUS1_ARB_LOST   2

Definition at line 112 of file cp2112.c.

◆ CP2112_IIC_STATUS1_TIMEOUT_BUS

#define CP2112_IIC_STATUS1_TIMEOUT_BUS   1

Definition at line 111 of file cp2112.c.

◆ CP2112_IIC_STATUS1_TIMEOUT_NACK

#define CP2112_IIC_STATUS1_TIMEOUT_NACK   0

Definition at line 110 of file cp2112.c.

◆ CP2112_PART_NUM

#define CP2112_PART_NUM   0x0c

Definition at line 75 of file cp2112.c.

◆ CP2112_REPORT_SIZE

#define CP2112_REPORT_SIZE   64

Definition at line 77 of file cp2112.c.

◆ CP2112_REQ_GPIO_CFG

#define CP2112_REQ_GPIO_CFG   0x2

Definition at line 80 of file cp2112.c.

◆ CP2112_REQ_GPIO_GET

#define CP2112_REQ_GPIO_GET   0x3

Definition at line 81 of file cp2112.c.

◆ CP2112_REQ_GPIO_SET

#define CP2112_REQ_GPIO_SET   0x4

Definition at line 82 of file cp2112.c.

◆ CP2112_REQ_LOCK

#define CP2112_REQ_LOCK   0x20

Definition at line 95 of file cp2112.c.

◆ CP2112_REQ_RESET

#define CP2112_REQ_RESET   0x1

Definition at line 79 of file cp2112.c.

◆ CP2112_REQ_SMB_CANCEL

#define CP2112_REQ_SMB_CANCEL   0x17

Definition at line 93 of file cp2112.c.

◆ CP2112_REQ_SMB_CFG

#define CP2112_REQ_SMB_CFG   0x6

Definition at line 84 of file cp2112.c.

◆ CP2112_REQ_SMB_READ

#define CP2112_REQ_SMB_READ   0x10

Definition at line 86 of file cp2112.c.

◆ CP2112_REQ_SMB_READ_FORCE_SEND

#define CP2112_REQ_SMB_READ_FORCE_SEND   0x12

Definition at line 88 of file cp2112.c.

◆ CP2112_REQ_SMB_READ_RESPONSE

#define CP2112_REQ_SMB_READ_RESPONSE   0x13

Definition at line 89 of file cp2112.c.

◆ CP2112_REQ_SMB_WRITE

#define CP2112_REQ_SMB_WRITE   0x14

Definition at line 90 of file cp2112.c.

◆ CP2112_REQ_SMB_WRITE_READ

#define CP2112_REQ_SMB_WRITE_READ   0x11

Definition at line 87 of file cp2112.c.

◆ CP2112_REQ_SMB_XFER_STATUS_REQ

#define CP2112_REQ_SMB_XFER_STATUS_REQ   0x15

Definition at line 91 of file cp2112.c.

◆ CP2112_REQ_SMB_XFER_STATUS_RESP

#define CP2112_REQ_SMB_XFER_STATUS_RESP   0x16

Definition at line 92 of file cp2112.c.

◆ CP2112_REQ_USB_CFG

#define CP2112_REQ_USB_CFG   0x21

Definition at line 96 of file cp2112.c.

◆ CP2112_REQ_VERSION

#define CP2112_REQ_VERSION   0x5

Definition at line 83 of file cp2112.c.

◆ CP2112GPIO_LOCK

#define CP2112GPIO_LOCK (   sc)    sx_xlock(&sc->gpio_lock)

Definition at line 71 of file cp2112.c.

◆ CP2112GPIO_LOCKED

#define CP2112GPIO_LOCKED (   sc)    sx_assert(&sc->gpio_lock, SX_XLOCKED)

Definition at line 73 of file cp2112.c.

◆ CP2112GPIO_UNLOCK

#define CP2112GPIO_UNLOCK (   sc)    sx_xunlock(&sc->gpio_lock)

Definition at line 72 of file cp2112.c.

◆ SIZEOF_FIELD

#define SIZEOF_FIELD (   _s,
  _f 
)    sizeof(((struct _s *)NULL)->_f)

Definition at line 69 of file cp2112.c.

◆ USB_DEBUG_VAR

#define USB_DEBUG_VAR   usb_debug

Definition at line 66 of file cp2112.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
CP2112_INTR_OUT 
CP2112_INTR_IN 
CP2112_N_TRANSFER 

Definition at line 214 of file cp2112.c.

◆ cp2112_out_mode

Enumerator
OUT_OD 
OUT_PP 
OUT_KEEP 

Definition at line 208 of file cp2112.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ cp2112_attach()

◆ cp2112_detach()

static int cp2112_detach ( device_t  dev)
static

Definition at line 362 of file cp2112.c.

References dev.

Referenced by cp2112_attach().

Here is the caller graph for this function:

◆ cp2112_get_report()

static int cp2112_get_report ( device_t  dev,
uint8_t  id,
void *  data,
uint16_t  len 
)
static

Definition at line 268 of file cp2112.c.

References data, dev, len, cp2112_softc::sc_iface_index, cp2112_softc::sc_udev, UHID_FEATURE_REPORT, and usbd_req_get_report().

Referenced by cp2112_attach(), cp2112_gpio_configure_write_pin(), cp2112_gpio_read_pin(), cp2112gpio_attach(), and cp2112iic_reset().

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

◆ cp2112_gpio_configure_write_pin()

static int cp2112_gpio_configure_write_pin ( device_t  dev,
uint32_t  pin_num,
bool  output,
enum cp2112_out_mode mode 
)
static

Definition at line 418 of file cp2112.c.

References cp2112_get_report(), CP2112_REQ_GPIO_CFG, cp2112_set_report(), CP2112GPIO_LOCKED, data, dev, OUT_OD, and OUT_PP.

Referenced by cp2112_gpio_pin_setflags().

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

◆ cp2112_gpio_get_bus()

static device_t cp2112_gpio_get_bus ( device_t  dev)
static

Definition at line 484 of file cp2112.c.

References cp2112gpio_softc::busdev, and dev.

◆ cp2112_gpio_pin_get()

static int cp2112_gpio_pin_get ( device_t  dev,
uint32_t  pin_num,
uint32_t *  pin_value 
)
static

Definition at line 518 of file cp2112.c.

References CP2112_GPIO_COUNT, cp2112_gpio_read_pin(), CP2112GPIO_LOCK, CP2112GPIO_UNLOCK, and dev.

Here is the call graph for this function:

◆ cp2112_gpio_pin_getcaps()

static int cp2112_gpio_pin_getcaps ( device_t  dev,
uint32_t  pin_num,
uint32_t *  caps 
)
static

◆ cp2112_gpio_pin_getflags()

static int cp2112_gpio_pin_getflags ( device_t  dev,
uint32_t  pin_num,
uint32_t *  flags 
)
static

◆ cp2112_gpio_pin_getname()

static int cp2112_gpio_pin_getname ( device_t  dev,
uint32_t  pin_num,
char *  name 
)
static

◆ cp2112_gpio_pin_max()

static int cp2112_gpio_pin_max ( device_t  dev,
int *  maxpin 
)
static

Definition at line 493 of file cp2112.c.

References CP2112_GPIO_COUNT.

◆ cp2112_gpio_pin_set()

static int cp2112_gpio_pin_set ( device_t  dev,
uint32_t  pin_num,
uint32_t  pin_value 
)
static

Definition at line 501 of file cp2112.c.

References CP2112_GPIO_COUNT, cp2112_gpio_write_pin(), CP2112GPIO_LOCK, CP2112GPIO_UNLOCK, and dev.

Here is the call graph for this function:

◆ cp2112_gpio_pin_setflags()

static int cp2112_gpio_pin_setflags ( device_t  dev,
uint32_t  pin_num,
uint32_t  flags 
)
static

◆ cp2112_gpio_pin_toggle()

static int cp2112_gpio_pin_toggle ( device_t  dev,
uint32_t  pin_num 
)
static

Definition at line 538 of file cp2112.c.

References CP2112_GPIO_COUNT, cp2112_gpio_read_pin(), cp2112_gpio_write_pin(), CP2112GPIO_LOCK, CP2112GPIO_UNLOCK, and dev.

Here is the call graph for this function:

◆ cp2112_gpio_read_pin()

static int cp2112_gpio_read_pin ( device_t  dev,
uint32_t  pin_num,
bool *  on 
)
static

Definition at line 374 of file cp2112.c.

References cp2112_get_report(), CP2112_REQ_GPIO_GET, CP2112GPIO_LOCKED, data, and dev.

Referenced by cp2112_gpio_pin_get(), cp2112_gpio_pin_toggle(), and cp2112_gpio_write_pin().

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

◆ cp2112_gpio_write_pin()

static int cp2112_gpio_write_pin ( device_t  dev,
uint32_t  pin_num,
bool  on 
)
static

Definition at line 393 of file cp2112.c.

References cp2112_gpio_read_pin(), CP2112_REQ_GPIO_SET, cp2112_set_report(), CP2112GPIO_LOCKED, data, and dev.

Referenced by cp2112_gpio_pin_set(), and cp2112_gpio_pin_toggle().

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

◆ cp2112_probe()

static int cp2112_probe ( device_t  dev)
static

Definition at line 293 of file cp2112.c.

References usbd_lookup_info::bInterfaceClass, cp2112_devs, dev, usb_attach_arg::info, UICLASS_HID, usb_attach_arg::usb_mode, USB_MODE_HOST, and usbd_lookup_id_by_uaa().

Here is the call graph for this function:

◆ cp2112_set_report()

static int cp2112_set_report ( device_t  dev,
uint8_t  id,
void *  data,
uint16_t  len 
)
static

Definition at line 280 of file cp2112.c.

References data, dev, len, cp2112_softc::sc_iface_index, cp2112_softc::sc_udev, UHID_FEATURE_REPORT, and usbd_req_set_report().

Referenced by cp2112_gpio_configure_write_pin(), cp2112_gpio_write_pin(), and cp2112iic_reset().

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

◆ cp2112gpio_attach()

◆ cp2112gpio_detach()

static int cp2112gpio_detach ( device_t  dev)
static

Definition at line 740 of file cp2112.c.

References cp2112gpio_softc::busdev, dev, and cp2112gpio_softc::gpio_lock.

Referenced by cp2112gpio_attach().

Here is the caller graph for this function:

◆ cp2112gpio_probe()

static int cp2112gpio_probe ( device_t  dev)
static

Definition at line 674 of file cp2112.c.

References dev.

◆ cp2112iic_attach()

◆ cp2112iic_check_req_status()

◆ cp2112iic_detach()

static int cp2112iic_detach ( device_t  dev)
static

Definition at line 1357 of file cp2112.c.

References CP2112_INTR_IN, cp2112iic_config, cp2112iic_softc::cv, cp2112iic_softc::dev, cp2112iic_softc::io, cp2112iic_softc::lock, usbd_transfer_stop(), usbd_transfer_unsetup(), and cp2112iic_softc::xfers.

Referenced by cp2112iic_attach().

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

◆ cp2112iic_intr_read_callback()

◆ cp2112iic_intr_write_callback()

◆ cp2112iic_probe()

static int cp2112iic_probe ( device_t  dev)
static

Definition at line 1307 of file cp2112.c.

References cp2112iic_softc::dev.

◆ cp2112iic_read_data()

static int cp2112iic_read_data ( struct cp2112iic_softc sc,
void *  data,
uint16_t  in_len,
uint16_t *  out_len 
)
static

◆ cp2112iic_req_resp()

static int cp2112iic_req_resp ( struct cp2112iic_softc sc,
const void *  req_data,
uint16_t  req_len,
void *  resp_data,
uint16_t  resp_len 
)
static

Definition at line 920 of file cp2112.c.

References cp2112iic_send_req(), cp2112iic_softc::cv, cp2112iic_softc::data, cp2112iic_softc::done, cp2112iic_softc::error, cp2112iic_softc::in, cp2112iic_softc::io, cp2112iic_softc::len, and cp2112iic_softc::lock.

Referenced by cp2112iic_check_req_status(), and cp2112iic_read_data().

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

◆ cp2112iic_reset()

static int cp2112iic_reset ( device_t  dev,
u_char  speed,
u_char  addr,
u_char *  oldaddr 
)
static

◆ cp2112iic_send_req()

static int cp2112iic_send_req ( struct cp2112iic_softc sc,
const void *  data,
uint16_t  len 
)
static

◆ cp2112iic_transfer()

static int cp2112iic_transfer ( device_t  dev,
struct iic_msg *  msgs,
uint32_t  nmsgs 
)
static

◆ DRIVER_MODULE() [1/3]

DRIVER_MODULE ( cp2112gpio  ,
cp2112hid  ,
cp2112gpio_driver  ,
cp2112gpio_devclass  ,
NULL  ,
NULL   
)

◆ DRIVER_MODULE() [2/3]

DRIVER_MODULE ( cp2112hid  ,
uhub  ,
cp2112hid_driver  ,
cp2112hid_devclass  ,
NULL  ,
NULL   
)

◆ DRIVER_MODULE() [3/3]

DRIVER_MODULE ( cp2112iic  ,
cp2112hid  ,
cp2112iic_driver  ,
cp2112iic_devclass  ,
NULL  ,
NULL   
)

◆ MODULE_DEPEND() [1/5]

MODULE_DEPEND ( cp2112gpio  ,
cp2112hid  ,
,
,
 
)

◆ MODULE_DEPEND() [2/5]

MODULE_DEPEND ( cp2112gpio  ,
gpiobus  ,
,
,
 
)

◆ MODULE_DEPEND() [3/5]

MODULE_DEPEND ( cp2112hid  ,
usb  ,
,
,
 
)

◆ MODULE_DEPEND() [4/5]

MODULE_DEPEND ( cp2112iic  ,
cp2112hid  ,
,
,
 
)

◆ MODULE_DEPEND() [5/5]

MODULE_DEPEND ( cp2112iic  ,
iicbus  ,
IICBUS_MINVER  ,
IICBUS_PREFVER  ,
IICBUS_MAXVER   
)

◆ MODULE_VERSION() [1/3]

MODULE_VERSION ( cp2112gpio  ,
 
)

◆ MODULE_VERSION() [2/3]

MODULE_VERSION ( cp2112hid  ,
 
)

◆ MODULE_VERSION() [3/3]

MODULE_VERSION ( cp2112iic  ,
 
)

◆ USB_PNP_HOST_INFO()

USB_PNP_HOST_INFO ( cp2112_devs  )

Variable Documentation

◆ __packed

◆ cp2112_devs

const STRUCT_USB_HOST_ID cp2112_devs[]
static
Initial value:
= {
{ USB_VP(USB_VENDOR_SILABS, USB_PRODUCT_SILABS_CP2112) },
{ USB_VP(0x1009, USB_PRODUCT_SILABS_CP2112) },
}
#define USB_VP(vend, prod)
Definition: usbdi.h:364

Definition at line 262 of file cp2112.c.

Referenced by cp2112_probe().

◆ cp2112gpio_devclass

devclass_t cp2112gpio_devclass
static

Definition at line 1426 of file cp2112.c.

◆ cp2112gpio_driver

driver_t cp2112gpio_driver
static
Initial value:
= {
.name = "gpio",
.methods = cp2112gpio_methods,
.size = sizeof(struct cp2112gpio_softc),
}
static device_method_t cp2112gpio_methods[]
Definition: cp2112.c:1400

Definition at line 1420 of file cp2112.c.

◆ cp2112gpio_methods

device_method_t cp2112gpio_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, cp2112gpio_probe),
DEVMETHOD(device_attach, cp2112gpio_attach),
DEVMETHOD(device_detach, cp2112gpio_detach),
DEVMETHOD(gpio_get_bus, cp2112_gpio_get_bus),
DEVMETHOD(gpio_pin_max, cp2112_gpio_pin_max),
DEVMETHOD(gpio_pin_get, cp2112_gpio_pin_get),
DEVMETHOD(gpio_pin_set, cp2112_gpio_pin_set),
DEVMETHOD(gpio_pin_toggle, cp2112_gpio_pin_toggle),
DEVMETHOD(gpio_pin_getname, cp2112_gpio_pin_getname),
DEVMETHOD(gpio_pin_getcaps, cp2112_gpio_pin_getcaps),
DEVMETHOD(gpio_pin_getflags, cp2112_gpio_pin_getflags),
DEVMETHOD(gpio_pin_setflags, cp2112_gpio_pin_setflags),
DEVMETHOD_END
}
static int cp2112_gpio_pin_getname(device_t dev, uint32_t pin_num, char *name)
Definition: cp2112.c:590
static int cp2112_gpio_pin_getcaps(device_t dev, uint32_t pin_num, uint32_t *caps)
Definition: cp2112.c:558
static int cp2112_gpio_pin_set(device_t dev, uint32_t pin_num, uint32_t pin_value)
Definition: cp2112.c:501
static int cp2112gpio_probe(device_t dev)
Definition: cp2112.c:674
static int cp2112gpio_detach(device_t dev)
Definition: cp2112.c:740
static device_t cp2112_gpio_get_bus(device_t dev)
Definition: cp2112.c:484
static int cp2112_gpio_pin_toggle(device_t dev, uint32_t pin_num)
Definition: cp2112.c:538
static int cp2112_gpio_pin_get(device_t dev, uint32_t pin_num, uint32_t *pin_value)
Definition: cp2112.c:518
static int cp2112_gpio_pin_max(device_t dev, int *maxpin)
Definition: cp2112.c:493
static int cp2112gpio_attach(device_t dev)
Definition: cp2112.c:681
static int cp2112_gpio_pin_getflags(device_t dev, uint32_t pin_num, uint32_t *flags)
Definition: cp2112.c:574
static int cp2112_gpio_pin_setflags(device_t dev, uint32_t pin_num, uint32_t flags)
Definition: cp2112.c:606

Definition at line 1400 of file cp2112.c.

◆ cp2112hid_devclass

devclass_t cp2112hid_devclass
static

Definition at line 1393 of file cp2112.c.

◆ cp2112hid_driver

driver_t cp2112hid_driver
static
Initial value:
= {
.name = "cp2112hid",
.methods = cp2112hid_methods,
.size = sizeof(struct cp2112_softc),
}
static device_method_t cp2112hid_methods[]
Definition: cp2112.c:1379

Definition at line 1387 of file cp2112.c.

◆ cp2112hid_methods

device_method_t cp2112hid_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, cp2112_probe),
DEVMETHOD(device_attach, cp2112_attach),
DEVMETHOD(device_detach, cp2112_detach),
DEVMETHOD_END
}
static int cp2112_attach(device_t dev)
Definition: cp2112.c:309
static int cp2112_detach(device_t dev)
Definition: cp2112.c:362
static int cp2112_probe(device_t dev)
Definition: cp2112.c:293

Definition at line 1379 of file cp2112.c.

◆ cp2112iic_config

const struct usb_config cp2112iic_config[CP2112_N_TRANSFER]
static
Initial value:
= {
.type = UE_INTERRUPT,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_OUT,
.flags = { .pipe_bof = 1, .no_pipe_ok = 1, },
.bufsize = 0,
},
.type = UE_INTERRUPT,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_IN,
.flags = { .pipe_bof = 1, .short_xfer_ok = 1, },
.bufsize = 0,
},
}
static void cp2112iic_intr_read_callback(struct usb_xfer *xfer, usb_error_t error)
Definition: cp2112.c:790
static void cp2112iic_intr_write_callback(struct usb_xfer *xfer, usb_error_t error)
Definition: cp2112.c:752
@ CP2112_INTR_IN
Definition: cp2112.c:216
@ CP2112_INTR_OUT
Definition: cp2112.c:215
#define UE_INTERRUPT
Definition: usb.h:544
#define UE_ADDR_ANY
Definition: usb.h:537
#define UE_DIR_IN
Definition: usb.h:531
#define UE_DIR_OUT
Definition: usb.h:532

Definition at line 868 of file cp2112.c.

Referenced by cp2112iic_attach(), and cp2112iic_detach().

◆ cp2112iic_devclass

devclass_t cp2112iic_devclass
static

Definition at line 1453 of file cp2112.c.

◆ cp2112iic_driver

driver_t cp2112iic_driver
static
Initial value:
= {
"iichb",
sizeof(struct cp2112iic_softc)
}
static device_method_t cp2112iic_methods[]
Definition: cp2112.c:1433

Definition at line 1447 of file cp2112.c.

◆ cp2112iic_methods

device_method_t cp2112iic_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, cp2112iic_probe),
DEVMETHOD(device_attach, cp2112iic_attach),
DEVMETHOD(device_detach, cp2112iic_detach),
DEVMETHOD(iicbus_transfer, cp2112iic_transfer),
DEVMETHOD(iicbus_reset, cp2112iic_reset),
DEVMETHOD(iicbus_callback, iicbus_null_callback),
DEVMETHOD_END
}
static int cp2112iic_attach(device_t dev)
Definition: cp2112.c:1314
static int cp2112iic_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr)
Definition: cp2112.c:1241
static int cp2112iic_probe(device_t dev)
Definition: cp2112.c:1307
static int cp2112iic_detach(device_t dev)
Definition: cp2112.c:1357
static int cp2112iic_transfer(device_t dev, struct iic_msg *msgs, uint32_t nmsgs)
Definition: cp2112.c:1084

Definition at line 1433 of file cp2112.c.