include/linux/usb/usbio.h

Source file repositories/reference/linux-study-clean/include/linux/usb/usbio.h

File Facts

System
Linux kernel
Corpus path
include/linux/usb/usbio.h
Extension
.h
Size
4208 bytes
Lines
178
Domain
Core OS
Bucket
Core Kernel Interface
Inferred role
Core OS: implementation source
Status
source implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

struct usbio_packet_header {
	u8 type;
	u8 cmd;
	u8 flags;
} __packed;

/* USBIO Control Transfer Packet */
struct usbio_ctrl_packet {
	struct usbio_packet_header header;
	u8 len;
	u8 data[] __counted_by(len);
} __packed;

/* USBIO Bulk Transfer Packet */
struct usbio_bulk_packet {
	struct usbio_packet_header header;
	__le16 len;
	u8 data[] __counted_by(len);
} __packed;

/* USBIO GPIO commands */
enum usbio_gpio_cmd {
	USBIO_GPIOCMD_DEINIT,
	USBIO_GPIOCMD_INIT,
	USBIO_GPIOCMD_READ,
	USBIO_GPIOCMD_WRITE,
	USBIO_GPIOCMD_END
};

/* USBIO GPIO config */
enum usbio_gpio_pincfg {
	USBIO_GPIO_PINCFG_DEFAULT,
	USBIO_GPIO_PINCFG_PULLUP,
	USBIO_GPIO_PINCFG_PULLDOWN,
	USBIO_GPIO_PINCFG_PUSHPULL
};

#define USBIO_GPIO_PINCFG_SHIFT		2
#define USBIO_GPIO_PINCFG_MASK		(0x3 << USBIO_GPIO_PINCFG_SHIFT)
#define USBIO_GPIO_SET_PINCFG(pincfg) \
	(((pincfg) << USBIO_GPIO_PINCFG_SHIFT) & USBIO_GPIO_PINCFG_MASK)

enum usbio_gpio_pinmode {
	USBIO_GPIO_PINMOD_INVAL,
	USBIO_GPIO_PINMOD_INPUT,
	USBIO_GPIO_PINMOD_OUTPUT,
	USBIO_GPIO_PINMOD_MAXVAL
};

#define USBIO_GPIO_PINMOD_MASK		0x3
#define USBIO_GPIO_SET_PINMOD(pin)	(pin & USBIO_GPIO_PINMOD_MASK)

/*************************
 * USBIO GPIO Controller *
 *************************/

#define USBIO_MAX_GPIOBANKS		5
#define USBIO_GPIOSPERBANK		32

struct usbio_gpio_bank_desc {
	u8 id;
	u8 pins;
	__le32 bmap;
} __packed;

struct usbio_gpio_init {
	u8 bankid;
	u8 config;
	u8 pincount;
	u8 pin;
} __packed;

struct usbio_gpio_rw {
	u8 bankid;
	u8 pincount;
	u8 pin;
	__le32 value;
} __packed;

/* USBIO I2C commands */
enum usbio_i2c_cmd {
	USBIO_I2CCMD_UNINIT,
	USBIO_I2CCMD_INIT,
	USBIO_I2CCMD_READ,
	USBIO_I2CCMD_WRITE,
	USBIO_I2CCMD_END
};

/************************
 * USBIO I2C Controller *

Annotation

Implementation Notes