// SPDX-License-Identifier: GPL-2.0 /* * Wireless USB Wire Adapter constants and structures. * * Copyright (C) 2005-2006 Intel Corporation. * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * * * FIXME: docs * FIXME: organize properly, group logically * * All the event structures are defined in uwb/spec.h, as they are * common to the WHCI and WUSB radio control interfaces. * * References: * [WUSB] Wireless Universal Serial Bus Specification, revision 1.0, ch8 */ #ifndef __LINUX_USB_WUSB_WA_H #define __LINUX_USB_WUSB_WA_H /** * Radio Command Request for the Radio Control Interface * * Radio Control Interface command and event codes are the same as * WHCI, and listed in include/linux/uwb.h:UWB_RC_{CMD,EVT}_* */ enum { WA_EXEC_RC_CMD = 40, /* Radio Control command Request */ }; /* Wireless Adapter Requests ([WUSB] table 8-51) */ enum { WUSB_REQ_ADD_MMC_IE = 20, WUSB_REQ_REMOVE_MMC_IE = 21, WUSB_REQ_SET_NUM_DNTS = 22, WUSB_REQ_SET_CLUSTER_ID = 23, WUSB_REQ_SET_DEV_INFO = 24, WUSB_REQ_GET_TIME = 25, WUSB_REQ_SET_STREAM_IDX = 26, WUSB_REQ_SET_WUSB_MAS = 27, WUSB_REQ_CHAN_STOP = 28, }; /* Wireless Adapter WUSB Channel Time types ([WUSB] table 8-52) */ enum { WUSB_TIME_ADJ = 0, WUSB_TIME_BPST = 1, WUSB_TIME_WUSB = 2, }; enum { WA_ENABLE = 0x01, WA_RESET = 0x02, RPIPE_PAUSE = 0x1, RPIPE_STALL = 0x2, }; /* Responses from Get Status request ([WUSB] section 8.3.1.6) */ enum { WA_STATUS_ENABLED = 0x01, WA_STATUS_RESETTING = 0x02 }; enum rpipe_crs { RPIPE_CRS_CTL = 0x01, RPIPE_CRS_ISO = 0x02, RPIPE_CRS_BULK = 0x04, RPIPE_CRS_INTR = 0x08 }; /** * RPipe descriptor ([WUSB] section 8.5.2.11) * * FIXME: explain rpipes */ struct usb_rpipe_descriptor { u8 bLength; u8 bDescriptorType; __le16 wRPipeIndex; __le16 wRequests; __le16 wBlocks; /* rw if 0 */ __le16 wMaxPacketSize; /* rw */ union { u8 dwa_bHSHubAddress; /* rw: DWA. */ u8 hwa_bMaxBurst; /* rw: HWA. */ }; union { u8 dwa_bHSHubPort; /* rw: DWA. */ u8 hwa_bDeviceInfoIndex; /* rw: HWA. */ }; u8 bSpeed; /* rw: xfer rate 'enum uwb_phy_rate' */ union { u8 dwa_bDeviceAddress; /* rw: DWA Target device address. */ u8 hwa_reserved; /* rw: HWA. */ }; u8 bEndpointAddress; /* rw: Target EP address */ u8 bDataSequence; /* ro: Current Data sequence */ __le32 dwCurrentWindow; /* ro */ u8 bMaxDataSequence; /* ro?: max supported seq */ u8 bInterval; /* rw: */ u8 bOverTheAirInterval; /* rw: */ u8 bmAttribute; /* ro? */ u8 bmCharacteristics; /* ro? enum rpipe_attr, supported xsactions */ u8 bmRetryOptions; /* rw? */ __le16 wNumTransactionErrors; /* rw */ } __attribute__ ((packed)); /** * Wire Adapter Notification types ([WUSB] sections 8.4.5 & 8.5.4) * * These are the notifications coming on the notification endpoint of * an HWA and a DWA. */ enum wa_notif_type { DWA_NOTIF_RWAKE = 0x91, DWA_NOTIF_PORTSTATUS = 0x92, WA_NOTIF_TRANSFER = 0x93, HWA_NOTIF_BPST_ADJ = 0x94, HWA_NOTIF_DN = 0x95, }; /** * Wire Adapter notification header * * Notifications coming from a wire adapter use a common header * defined in [WUSB] sections 8.4.5 & 8.5.4. */ struct wa_notif_hdr { u8 bLength; u8 bNotifyType; /* enum wa_notif_type */ } __packed; /** * HWA DN Received notification [(WUSB] section 8.5.4.2) * * The DNData is specified in WUSB1.0[7.6]. For each device * notification we received, we just need to dispatch it. * * @dndata: this is really an array of notifications, but all start * with the same header. */ struct hwa_notif_dn { struct wa_notif_hdr hdr; u8 bSourceDeviceAddr; /* from errata 2005/07 */ u8 bmAttributes; struct wusb_dn_hdr dndata[]; } __packed; /* [WUSB] section 8.3.3 */ enum wa_xfer_type { WA_XFER_TYPE_CTL = 0x80, WA_XFER_TYPE_BI = 0x81, /* bulk/interrupt */ WA_XFER_TYPE_ISO = 0x82, WA_XFER_RESULT = 0x83, WA_XFER_ABORT = 0x84, WA_XFER_ISO_PACKET_INFO = 0xA0, WA_XFER_ISO_PACKET_STATUS = 0xA1, }; /* [WUSB] section 8.3.3 */ struct wa_xfer_hdr { u8 bLength; /* 0x18 */ u8 bRequestType; /* 0x80 WA_REQUEST_TYPE_CTL */ __le16 wRPipe; /* RPipe index */ __le32 dwTransferID; /* Host-assigned ID */ __le32 dwTransferLength; /* Length of data to xfer */ u8 bTransferSegment; } __packed; struct wa_xfer_ctl { struct wa_xfer_hdr hdr; u8 bmAttribute; __le16 wReserved; struct usb_ctrlrequest baSetupData; } __packed; struct wa_xfer_bi { struct wa_xfer_hdr hdr; u8 bReserved; __le16 wReserved; } __packed; /* [WUSB] section 8.5.5 */ struct wa_xfer_hwaiso { struct wa_xfer_hdr hdr; u8 bReserved; __le16 wPresentationTime; __le32 dwNumOfPackets; } __packed; struct wa_xfer_packet_info_hwaiso { __le16 wLength; u8 bPacketType; u8 bReserved; __le16 PacketLength[0]; } __packed; struct wa_xfer_packet_status_len_hwaiso { __le16 PacketLength; __le16 PacketStatus; } __packed; struct wa_xfer_packet_status_hwaiso { __le16 wLength; u8 bPacketType; u8 bReserved; struct wa_xfer_packet_status_len_hwaiso PacketStatus[0]; } __packed; /* [WUSB] section 8.3.3.5 */ struct wa_xfer_abort { u8 bLength; u8 bRequestType; __le16 wRPipe; /* RPipe index */ __le32 dwTransferID; /* Host-assigned ID */ } __packed; /** * WA Transfer Complete notification ([WUSB] section 8.3.3.3) * */ struct wa_notif_xfer { struct wa_notif_hdr hdr; u8 bEndpoint; u8 Reserved; } __packed; /** Transfer result basic codes [WUSB] table 8-15 */ enum { WA_XFER_STATUS_SUCCESS, WA_XFER_STATUS_HALTED, WA_XFER_STATUS_DATA_BUFFER_ERROR, WA_XFER_STATUS_BABBLE, WA_XFER_RESERVED, WA_XFER_STATUS_NOT_FOUND, WA_XFER_STATUS_INSUFFICIENT_RESOURCE, WA_XFER_STATUS_TRANSACTION_ERROR, WA_XFER_STATUS_ABORTED, WA_XFER_STATUS_RPIPE_NOT_READY, WA_XFER_INVALID_FORMAT, WA_XFER_UNEXPECTED_SEGMENT_NUMBER, WA_XFER_STATUS_RPIPE_TYPE_MISMATCH, }; /** [WUSB] section 8.3.3.4 */ struct wa_xfer_result { struct wa_notif_hdr hdr; __le32 dwTransferID; __le32 dwTransferLength; u8 bTransferSegment; u8 bTransferStatus; __le32 dwNumOfPackets; } __packed; /** * Wire Adapter Class Descriptor ([WUSB] section 8.5.2.7). * * NOTE: u16 fields are read Little Endian from the hardware. * * @bNumPorts is the original max number of devices that the host can * connect; we might chop this so the stack can handle * it. In case you need to access it, use wusbhc->ports_max * if it is a Wireless USB WA. */ struct usb_wa_descriptor { u8 bLength; u8 bDescriptorType; __le16 bcdWAVersion; u8 bNumPorts; /* don't use!! */ u8 bmAttributes; /* Reserved == 0 */ __le16 wNumRPipes; __le16 wRPipeMaxBlock; u8 bRPipeBlockSize; u8 bPwrOn2PwrGood; u8 bNumMMCIEs; u8 DeviceRemovable; /* FIXME: in DWA this is up to 16 bytes */ } __packed; /** * HWA Device Information Buffer (WUSB1.0[T8.54]) */ struct hwa_dev_info { u8 bmDeviceAvailability[32]; /* FIXME: ignored for now */ u8 bDeviceAddress; __le16 wPHYRates; u8 bmDeviceAttribute; } __packed; #endif /* #ifndef __LINUX_USB_WUSB_WA_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
association.h | File | 4.59 KB | 0644 |
|
atmel_usba_udc.h | File | 421 B | 0644 |
|
audio-v2.h | File | 13.17 KB | 0644 |
|
audio.h | File | 1.23 KB | 0644 |
|
c67x00.h | File | 1.82 KB | 0644 |
|
cdc-wdm.h | File | 651 B | 0644 |
|
cdc.h | File | 1.48 KB | 0644 |
|
cdc_ncm.h | File | 5.56 KB | 0644 |
|
ch9.h | File | 2.5 KB | 0644 |
|
chipidea.h | File | 2.77 KB | 0644 |
|
composite.h | File | 25.17 KB | 0644 |
|
ehci-dbgp.h | File | 2.05 KB | 0644 |
|
ehci_def.h | File | 7.89 KB | 0644 |
|
ehci_pdriver.h | File | 2.31 KB | 0644 |
|
ezusb.h | File | 286 B | 0644 |
|
functionfs.h | File | 151 B | 0644 |
|
g_hid.h | File | 1.13 KB | 0644 |
|
gadget.h | File | 32.65 KB | 0644 |
|
gadget_configfs.h | File | 2.94 KB | 0644 |
|
gpio_vbus.h | File | 1.13 KB | 0644 |
|
hcd.h | File | 25.93 KB | 0644 |
|
input.h | File | 716 B | 0644 |
|
iowarrior.h | File | 1.34 KB | 0644 |
|
irda.h | File | 3.76 KB | 0644 |
|
isp116x.h | File | 1.13 KB | 0644 |
|
isp1301.h | File | 2.38 KB | 0644 |
|
isp1362.h | File | 1.59 KB | 0644 |
|
isp1760.h | File | 633 B | 0644 |
|
m66592.h | File | 1.41 KB | 0644 |
|
musb-ux500.h | File | 899 B | 0644 |
|
musb.h | File | 4.59 KB | 0644 |
|
net2280.h | File | 23.55 KB | 0644 |
|
of.h | File | 1.46 KB | 0644 |
|
ohci_pdriver.h | File | 1.71 KB | 0644 |
|
otg-fsm.h | File | 8.61 KB | 0644 |
|
otg.h | File | 3.01 KB | 0644 |
|
pd.h | File | 8.98 KB | 0644 |
|
pd_bdo.h | File | 1011 B | 0644 |
|
pd_vdo.h | File | 7.58 KB | 0644 |
|
phy.h | File | 9.25 KB | 0644 |
|
phy_companion.h | File | 1.17 KB | 0644 |
|
quirks.h | File | 2.34 KB | 0644 |
|
r8a66597.h | File | 17.65 KB | 0644 |
|
renesas_usbhs.h | File | 4.76 KB | 0644 |
|
rndis_host.h | File | 5.94 KB | 0644 |
|
samsung_usb_phy.h | File | 530 B | 0644 |
|
serial.h | File | 17.12 KB | 0644 |
|
sl811.h | File | 838 B | 0644 |
|
storage.h | File | 2.58 KB | 0644 |
|
tcpm.h | File | 6.46 KB | 0644 |
|
tegra_usb_phy.h | File | 2.38 KB | 0644 |
|
tilegx.h | File | 983 B | 0644 |
|
typec.h | File | 7.04 KB | 0644 |
|
uas.h | File | 2.07 KB | 0644 |
|
ulpi.h | File | 1.99 KB | 0644 |
|
usb338x.h | File | 7.63 KB | 0644 |
|
usb_phy_generic.h | File | 892 B | 0644 |
|
usbnet.h | File | 10.01 KB | 0644 |
|
wusb-wa.h | File | 7.5 KB | 0644 |
|
wusb.h | File | 9.92 KB | 0644 |
|
xhci-dbgp.h | File | 825 B | 0644 |
|