drivers/usb/serial/io_ionsp.h
Source file repositories/reference/linux-study-clean/drivers/usb/serial/io_ionsp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/usb/serial/io_ionsp.h- Extension
.h- Size
- 14332 bytes
- Lines
- 452
- Domain
- Driver Families
- Bucket
- drivers/usb
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
struct int_status_pkt
Annotated Snippet
struct int_status_pkt {
__u16 RxBytesAvail; // Additional bytes available to
// be read from Bulk IN pipe
__u16 TxCredits[MAX_RS232_PORTS]; // Additional space available in
// given port's TxBuffer
};
#define GET_INT_STATUS_SIZE(NumPorts) (sizeof(__u16) + (sizeof(__u16) * (NumPorts)))
//
// Define cmd/status header values and macros to extract them.
//
// Data: 0LLLLPPP LLLLLLLL
// Cmd/Stat: 1ccccPPP CCCCCCCC
#define IOSP_DATA_HDR_SIZE 2
#define IOSP_CMD_HDR_SIZE 2
#define IOSP_MAX_DATA_LENGTH 0x0FFF // 12 bits -> 4K
#define IOSP_PORT_MASK 0x07 // Mask to isolate port number
#define IOSP_CMD_STAT_BIT 0x80 // If set, this is command/status header
#define IS_CMD_STAT_HDR(Byte1) ((Byte1) & IOSP_CMD_STAT_BIT)
#define IS_DATA_HDR(Byte1) (!IS_CMD_STAT_HDR(Byte1))
#define IOSP_GET_HDR_PORT(Byte1) ((__u8) ((Byte1) & IOSP_PORT_MASK))
#define IOSP_GET_HDR_DATA_LEN(Byte1, Byte2) ((__u16) (((__u16)((Byte1) & 0x78)) << 5) | (Byte2))
#define IOSP_GET_STATUS_CODE(Byte1) ((__u8) (((Byte1) & 0x78) >> 3))
//
// These macros build the 1st and 2nd bytes for a data header
//
#define IOSP_BUILD_DATA_HDR1(Port, Len) ((__u8) (((Port) | ((__u8) (((__u16) (Len)) >> 5) & 0x78))))
#define IOSP_BUILD_DATA_HDR2(Port, Len) ((__u8) (Len))
//
// These macros build the 1st and 2nd bytes for a command header
//
#define IOSP_BUILD_CMD_HDR1(Port, Cmd) ((__u8) (IOSP_CMD_STAT_BIT | (Port) | ((__u8) ((Cmd) << 3))))
//--------------------------------------------------------------
//
// Define values for commands and command parameters
// (sent from Host to Edgeport)
//
// 1ccccPPP P1P1P1P1 [ P2P2P2P2P2 ]...
//
// cccc: 00-07 2-byte commands. Write UART register 0-7 with
// value in P1. See 16650.H for definitions of
// UART register numbers and contents.
//
// 08-0B 3-byte commands: ==== P1 ==== ==== P2 ====
// 08 available for expansion
// 09 1-param commands Command Code Param
// 0A available for expansion
// 0B available for expansion
//
// 0C-0D 4-byte commands. P1 = extended cmd and P2,P3 = params
// Currently unimplemented.
//
// 0E-0F N-byte commands: P1 = num bytes after P1 (ie, TotalLen - 2)
// P2 = extended cmd, P3..Pn = parameters.
// Currently unimplemented.
//
#define IOSP_WRITE_UART_REG(n) ((n) & 0x07) // UartReg[ n ] := P1
// Register numbers and contents
// defined in 16554.H.
// 0x08 // Available for expansion.
#define IOSP_EXT_CMD 0x09 // P1 = Command code (defined below)
// P2 = Parameter
//
// Extended Command values, used with IOSP_EXT_CMD, may
// or may not use parameter P2.
//
#define IOSP_CMD_OPEN_PORT 0x00 // Enable ints, init UART. (NO PARAM)
#define IOSP_CMD_CLOSE_PORT 0x01 // Disable ints, flush buffers. (NO PARAM)
#define IOSP_CMD_CHASE_PORT 0x02 // Wait for Edgeport TX buffers to empty. (NO PARAM)
Annotation
- Detected declarations: `struct int_status_pkt`.
- Atlas domain: Driver Families / drivers/usb.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.