usb
Vitis Drivers API Documentation
|
This file contains the constants, type definitions, variables and function prototypes used in the mass storage application.
MODIFICATION HISTORY:
Ver Who Date Changes
1.00a hvm 2/12/07 First release 1.01a hvm 10/2/08 The variables IntLba in Lba and IntBlockCount in BlockCount are declared as volatile. 2.00a hvm 03/12/09 Modified the RAMDISKSECTORS constant value from 0x4000 to 0x400 as this would reduce the code size and the example can run in a smaller memory systems. 3.02a hvm 08/16/10 Updated with the little endian support changes. 4.00a hvm 10/25/10 Updated with DmaIntrHandler function prototype. Updated INQUIRY command with pad values. 4.00a hvm 06/01/11 Modified the USB Mass Storage Command Status Wrapper structure. The union for Signature is removed and only the array definition of Signature is retained. CR611761 fix. 4.00a hvm 06/24/11 Updated the INQUIRY command fourth parameter value to 0. CR614794 4.01a hvm 08/11/11 Updated the RamDisk variable to have a 32 bit address alignment. 4.01a hvm 09/14/11 Fixed the compilation issue at the RamDisk variable declaration. CR625055. 5.6 pm 07/05/23 Added support for system device-tree flow.
Macros | |
#define | EP_CONTROL 0 |
Control Endpoint. More... | |
#define | EP_ISOCHRONOUS 1 |
Isochronous Endpoint. More... | |
#define | EP_BULK 2 |
Bulk Endpoint. More... | |
#define | EP_INTERRUPT 3 |
Interrupt Endpoint. More... | |
Functions | |
void | InitUsbInterface (XUsb *InstancePtr) |
This is the USB initialization function. More... | |
void | UsbIfIntrHandler (void *CallBackRef, u32 IntrStatus) |
This function is the interrupt handler for the USB mass storage device application. More... | |
void | Ep0IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
This function is the interrupt handler for the USB End point Zero events. More... | |
void | Ep1IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
This function is the interrupt handler for the USB End point one events. More... | |
void | Ep2IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
This function is the interrupt handler for the USB End point two events. More... | |
void | ProcessRxCmd (XUsb *InstancePtr) |
This function processes mass storage specific commands and sends the required response. More... | |
void | Read10 (XUsb *InstancePtr, PUSBCBW pCmdBlock, PUSBCSW pStatusBlock) |
This function implements the transmission of data from the device to the READ request from the USB Host. More... | |
void | Write10 (XUsb *InstancePtr, PUSBCBW pCmdBlock, PUSBCSW pStatusBlock) |
This function implements the reception of data in the USB device for the write request from the USB Host. More... | |
void | MassStorageReset (XUsb *InstancePtr) |
This routine is called when a RESET class command is received. More... | |
void | GetMaxLUN (XUsb *InstancePtr) |
This routine is called when a GETMAXLUN class command is received. More... | |
#define EP_BULK 2 |
Bulk Endpoint.
#define EP_CONTROL 0 |
Control Endpoint.
#define EP_INTERRUPT 3 |
Interrupt Endpoint.
#define EP_ISOCHRONOUS 1 |
Isochronous Endpoint.
void Ep0IntrHandler | ( | void * | CallBackRef, |
u8 | EpNum, | ||
u32 | IntrStatus | ||
) |
This function is the interrupt handler for the USB End point Zero events.
CallBackRef | is the callback reference passed from the interrupt. handler, which in our case is a pointer to the driver instance. |
EpNum | is the end point number. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB End point Zero events.
CallBackRef | is the callback reference passed from the caller function, which in our case is a pointer to the driver instance. |
EpNum | is the end point number. |
IntrStatus | is a bit mask indicating pending interrupts. |
References XUsb_Config::BaseAddress, Chapter9(), XUsb::Config, XUsb::EndPointOffset, EP0ProcessInToken(), EP0ProcessOutToken(), GetMaxLUN(), MassStorageReset(), XUSB_BUFFREADY_EP0_BUFF_MASK, XUSB_BUFFREADY_OFFSET, XUSB_EP_CFG_DATA_TOGGLE_MASK, XUsb_EpStall(), XUsb_IntrEnable(), XUsb_ReadReg, XUSB_STATUS_DISCONNECT_MASK, XUSB_STATUS_FIFO_BUFF_FREE_MASK, XUSB_STATUS_FIFO_BUFF_RDY_MASK, XUSB_STATUS_RESET_MASK, XUSB_STATUS_SETUP_PACKET_MASK, XUSB_STATUS_SUSPEND_MASK, and XUsb_WriteReg.
Referenced by main(), UsbKbdExample(), and UsbMouseExample().
void Ep1IntrHandler | ( | void * | CallBackRef, |
u8 | EpNum, | ||
u32 | IntrStatus | ||
) |
This function is the interrupt handler for the USB End point one events.
CallBackRef | is the callback reference passed from the interrupt handler, which in our case is a pointer to the driver instance. |
EpNum | is the end point number. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB End point one events.
CallBackRef | is the callback reference passed from the caller function, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
References XUsb_Config::BaseAddress, XUsb_EpConfig::Buffer0Count, XUsb_EpConfig::Buffer0Ready, XUsb_EpConfig::Buffer1Count, XUsb_EpConfig::Buffer1Ready, XUsb::Config, XUsb_DeviceConfig::CurrentSpeed, XUsb::DeviceConfig, XUsb_Config::DmaEnabled, XUsb::EndPointOffset, XUsb_DeviceConfig::Ep, ReadTransfer(), XUSB_BUFFREADY_EP1_BUFF1_MASK, XUSB_BUFFREADY_EP1_BUFF2_MASK, XUSB_DMA_DMASR_BUSY, XUSB_DMA_STATUS_OFFSET, XUSB_EP_BUF0COUNT_OFFSET, XUSB_EP_BUF1COUNT_OFFSET, XUSB_EP_HIGH_SPEED, XUsb_EpDataSend(), and XUsb_ReadReg.
Referenced by main(), UsbKbdExample(), and UsbMouseExample().
void Ep2IntrHandler | ( | void * | CallBackRef, |
u8 | EpNum, | ||
u32 | IntrStatus | ||
) |
This function is the interrupt handler for the USB End point two events.
CallBackRef | is the callback reference passed from the interrupt handler, which in our case is a pointer to the driver instance. |
EpNum | is the end point number. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB End point two events.
CallBackRef | is the callback reference passed from the caller function, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
References XUsb_Config::BaseAddress, XUsb_EpConfig::Buffer0Ready, XUsb_EpConfig::Buffer1Ready, XUsb::Config, XUsb::DeviceConfig, XUsb_Config::DmaEnabled, XUsb_DeviceConfig::Ep, WriteTransfer(), XUSB_BUFFREADY_EP2_BUFF1_MASK, XUSB_BUFFREADY_EP2_BUFF2_MASK, XUSB_DMA_DMASR_BUSY, XUSB_DMA_STATUS_OFFSET, XUsb_EpDataRecv(), XUsb_EpDataSend(), XUsb_ReadReg, and XUSB_STATUS_OFFSET.
Referenced by main().
void GetMaxLUN | ( | XUsb * | InstancePtr | ) |
This routine is called when a GETMAXLUN class command is received.
InstancePtr | is a pointer to the XUsb instance of the controller. |
References XUsb_Config::BaseAddress, XUsb_EpConfig::Buffer0Ready, XUsb::Config, XUsb::DeviceConfig, XUsb::EndPointOffset, XUsb_DeviceConfig::Ep, XUsb_EpConfig::RamBase, XUSB_BUFFREADY_OFFSET, XUSB_EP_BUF0COUNT_OFFSET, and XUsb_WriteReg.
Referenced by Ep0IntrHandler().
void InitUsbInterface | ( | XUsb * | InstancePtr | ) |
This is the USB initialization function.
This example initializes the device for Mass Storage Application. The following configuration is done.
InstancePtr | is a pointer to the XUsb instance. |
This is the USB initialization function.
The following is the configuration.
InstancePtr | is a pointer to the XUsb instance. |
This example initializes the device for Microphone Application. The following configuration is done.
InstancePtr | is a pointer to the XUsb instance. |
This example initializes the USB device for USB mouse example. The following configuration is done.
InstancePtr | is a pointer to the XUsb instance. |
References XUsb_Config::BaseAddress, XUsb_EpConfig::Buffer0Ready, XUsb_EpConfig::Buffer1Ready, XUsb::Config, XUsb::DeviceConfig, XUsb_DeviceConfig::Ep, XUsb_EpConfig::EpType, XUsb_DeviceConfig::NumEndpoints, XUsb_EpConfig::OutIn, XUsb_EpConfig::RamBase, XUsb_EpConfig::Size, XUsb_DeviceConfig::Status, XUSB_BUFFREADY_OFFSET, XUsb_ConfigureDevice(), XUSB_EP_DIRECTION_IN, XUSB_EP_DIRECTION_OUT, XUsb_EpEnable(), XUSB_RESET, XUSB_STATUS_EP_BUFF2_SHIFT, and XUsb_WriteReg.
void MassStorageReset | ( | XUsb * | InstancePtr | ) |
This routine is called when a RESET class command is received.
InstancePtr | is a pointer to the XUsb instance of the controller. |
References SetupControlWriteStatusStage().
Referenced by Ep0IntrHandler().
void ProcessRxCmd | ( | XUsb * | InstancePtr | ) |
This function processes mass storage specific commands and sends the required response.
InstancePtr | is a pointer to the XUsb instance. |
References XUsb_Config::BaseAddress, XUsb::Config, XUsb::DeviceConfig, XUsb_Config::DmaEnabled, Read10(), XUsb_DeviceConfig::Status, Write10(), XUSB_DISCONNECTED, XUSB_DMA_DMASR_BUSY, XUSB_DMA_STATUS_OFFSET, XUsb_EpDataSend(), and XUsb_ReadReg.
Referenced by DmaIntrHandler(), and main().
void Read10 | ( | XUsb * | InstancePtr, |
PUSBCBW | pCmdBlock, | ||
PUSBCSW | pStatusBlock | ||
) |
This function implements the transmission of data from the device to the READ request from the USB Host.
InstancePtr | is a pointer to the XUsb instance. |
pCmdBlock | is a pointer to the Mass Storage Command Block wrapper. |
pStatusBlock | is a pointer to the Mass Storage Status wrapper. |
References XUsb_Config::BaseAddress, XUsb::Config, XUsb_DeviceConfig::CurrentSpeed, XUsb::DeviceConfig, XUsb_Config::DmaEnabled, XUsb_DeviceConfig::Status, XUSB_DISCONNECTED, XUSB_DMA_DMASR_BUSY, XUSB_DMA_STATUS_OFFSET, XUSB_EP_HIGH_SPEED, XUsb_EpDataSend(), and XUsb_ReadReg.
Referenced by ProcessRxCmd().
void UsbIfIntrHandler | ( | void * | CallBackRef, |
u32 | IntrStatus | ||
) |
This function is the interrupt handler for the USB mass storage device application.
CallBackRef | is the callback reference passed from the interrupt handler, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB mass storage device application.
CallBackRef | is the callback reference passed from the interrupt handler, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB mass storage device application.
CallBackRef | is the callback reference passed from the interrupt handler, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
This function is the interrupt handler for the USB mass storage device application.
CallBackRef | is the callback reference passed from to the function, which in our case is a pointer to the driver instance. |
IntrStatus | is a bit mask indicating pending interrupts. |
References XUsb_Config::BaseAddress, XUsb::Config, XUsb_DeviceConfig::CurrentConfiguration, XUsb::DeviceConfig, InitUsbInterface(), XUsb_DeviceConfig::Status, XUsb_IntrDisable(), XUsb_IntrEnable(), XUSB_RESET, XUsb_SetDeviceAddress(), XUsb_Start(), XUSB_STATUS_DISCONNECT_MASK, XUSB_STATUS_RESET_MASK, XUSB_STATUS_SUSPEND_MASK, XUsb_Stop(), and XUsb_WriteReg.
Referenced by main(), UsbKbdExample(), and UsbMouseExample().
void Write10 | ( | XUsb * | InstancePtr, |
PUSBCBW | pCmdBlock, | ||
PUSBCSW | pStatusBlock | ||
) |
This function implements the reception of data in the USB device for the write request from the USB Host.
InstancePtr | is a pointer to the XUsb instance. |
pCmdBlock | is a pointer to the Mass Storage Command Block wrapper. |
pStatusBlock | is a pointer to the Mass Storage Status wrapper. |
References XUsb_Config::BaseAddress, XUsb::Config, XUsb_DeviceConfig::CurrentSpeed, XUsb::DeviceConfig, XUsb_Config::DmaEnabled, XUsb_DeviceConfig::Status, XUSB_DISCONNECTED, XUSB_DMA_DMASR_BUSY, XUSB_DMA_STATUS_OFFSET, XUSB_EP_HIGH_SPEED, XUsb_EpDataRecv(), and XUsb_ReadReg.
Referenced by ProcessRxCmd().