pub const USB_MAX_TX_FIFOS: u32 = 6;
pub const USB_MAX_CH_NUM: u32 = 12;
pub const USB_MAX_EP_NUM: u32 = 6;
pub const USBFS_CORE_ID: u32 = 0;
pub const USBHS_CORE_ID: u32 = 1;
pub const USBHS_PHY_EMBED: u32 = 0;
pub const USBHS_PHY_EXT: u32 = 1;
pub const USB_MAX_EP0_SIZE: u32 = 64;
pub const DEVICE_MODE: u32 = 0;
pub const HOST_MODE: u32 = 1;
pub const DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: u32 = 0;
pub const DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ: u32 = 2;
pub const DSTS_ENUMSPD_LS_PHY_6MHZ: u32 = 4;
pub const DSTS_ENUMSPD_FS_PHY_48MHZ: u32 = 6;
pub const EP_TYPE_CTRL: u32 = 0;
pub const EP_TYPE_ISOC: u32 = 1;
pub const EP_TYPE_BULK: u32 = 2;
pub const EP_TYPE_INTR: u32 = 3;
pub const EP_TYPE_MSK: u32 = 3;
pub const PRTSPD_FULL_SPEED: u32 = 1;
pub const PRTSPD_LOW_SPEED: u32 = 2;
pub const HCFG_30_60_MHZ: u32 = 0;
pub const HCFG_48_MHZ: u32 = 1;
pub const HCFG_6_MHZ: u32 = 2;
pub const USB_EP_TX_DIS: u32 = 0;
pub const USB_EP_TX_STALL: u32 = 16;
pub const USB_EP_TX_NAK: u32 = 32;
pub const USB_EP_TX_VALID: u32 = 48;
pub const USB_EP_RX_DIS: u32 = 0;
pub const USB_EP_RX_STALL: u32 = 4096;
pub const USB_EP_RX_NAK: u32 = 8192;
pub const USB_EP_RX_VALID: u32 = 12288;
pub const USB_OK: u32 = 0;
pub const USB_ERROR: u32 = 1;
pub const USB_FRAME_INTERVAL_80: u32 = 0;
pub const USB_FRAME_INTERVAL_85: u32 = 2048;
pub const USB_FRAME_INTERVAL_90: u32 = 4096;
pub const USB_FRAME_INTERVAL_95: u32 = 6144;
#[doc = " @}\n/\n/*******************************************************************************\n Global type definitions ('typedef')\n/\n/**\n @defgroup USB_Global_Types USB Global Types\n @{"]
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_GREGS {
pub GVBUSCFG: u32,
pub Reserved04: u32,
pub GAHBCFG: u32,
pub GUSBCFG: u32,
pub GRSTCTL: u32,
pub GINTSTS: u32,
pub GINTMSK: u32,
pub GRXSTSR: u32,
pub GRXSTSP: u32,
pub GRXFSIZ: u32,
pub HNPTXFSIZ: u32,
pub HNPTXSTS: u32,
pub Reserved30: [u32; 3usize],
pub CID: u32,
pub Reserved40: [u32; 5usize],
pub GLPMCFG: u32,
pub Reserved58: [u32; 42usize],
pub HPTXFSIZ: u32,
pub DIEPTXF: [u32; 6usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_DREGS {
pub DCFG: u32,
pub DCTL: u32,
pub DSTS: u32,
pub Reserved0C: u32,
pub DIEPMSK: u32,
pub DOEPMSK: u32,
pub DAINT: u32,
pub DAINTMSK: u32,
pub Reserved20: [u32; 4usize],
pub DTHRCTL: u32,
pub DIEPEMPMSK: u32,
pub DEACHINT: u32,
pub DEACHINTMSK: u32,
pub Reserved40: u32,
pub DIEPEACHMSK1: u32,
pub Reserved48: [u32; 15usize],
pub DOEPEACHMSK1: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_INEPREGS {
pub DIEPCTL: u32,
pub Reserved04: u32,
pub DIEPINT: u32,
pub Reserved0C: u32,
pub DIEPTSIZ: u32,
pub DIEPDMA: u32,
pub DTXFSTS: u32,
pub Reserved18: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_OUTEPREGS {
pub DOEPCTL: u32,
pub Reserved04: u32,
pub DOEPINT: u32,
pub Reserved0C: u32,
pub DOEPTSIZ: u32,
pub DOEPDMA: u32,
pub Reserved18: [u32; 2usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_HREGS {
pub HCFG: u32,
pub HFIR: u32,
pub HFNUM: u32,
pub Reserved40C: u32,
pub HPTXSTS: u32,
pub HAINT: u32,
pub HAINTMSK: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_HC_REGS {
pub HCCHAR: u32,
pub HCSPLT: u32,
pub HCINT: u32,
pub HCINTMSK: u32,
pub HCTSIZ: u32,
pub HCDMA: u32,
pub Reserved: [u32; 2usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct LL_USB_TypeDef {
pub GREGS: *mut USB_CORE_GREGS,
pub DREGS: *mut USB_CORE_DREGS,
pub HREGS: *mut USB_CORE_HREGS,
pub INEP_REGS: [*mut USB_CORE_INEPREGS; 6usize],
pub OUTEP_REGS: [*mut USB_CORE_OUTEPREGS; 6usize],
pub HC_REGS: [*mut USB_CORE_HC_REGS; 12usize],
pub HPRT: *mut u32,
pub DFIFO: [*mut u32; 6usize],
pub GCCTL: *mut u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_BASIC_CFGS {
pub host_chnum: u8,
pub dev_epnum: u8,
pub dmaen: u8,
pub low_power: u8,
pub phy_type: u8,
pub core_type: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_HOST_CH {
pub dev_addr: u8,
pub ep_idx: u8,
pub is_epin: u8,
pub ch_speed: u8,
pub do_ping: u8,
pub ep_type: u8,
pub max_packet: u16,
pub pid_type: u8,
pub in_toggle: u8,
pub out_toggle: u8,
pub dma_addr: u32,
pub xfer_len: u32,
pub xfer_count: u32,
pub xfer_buff: *mut u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_DEV_EP {
pub epidx: u8,
pub ep_dir: u8,
pub trans_type: u8,
pub ep_stall: u8,
pub data_pid_start: u8,
pub datax_pid: u8,
pub tx_fifo_num: u16,
pub maxpacket: u32,
pub rem_data_len: u32,
pub total_data_len: u32,
pub ctl_data_len: u32,
pub dma_addr: u32,
pub xfer_len: u32,
pub xfer_count: u32,
pub xfer_buff: *mut u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct stc_usb_port_identify {
pub u8CoreID: u8,
}
unsafe extern "C" {
pub fn usb_initusbcore(USBx: *mut LL_USB_TypeDef, basic_cfgs: *mut USB_CORE_BASIC_CFGS);
pub fn usb_setregaddr(
USBx: *mut LL_USB_TypeDef,
pstcPortIdentify: *mut stc_usb_port_identify,
basic_cfgs: *mut USB_CORE_BASIC_CFGS,
);
pub fn usb_rdpkt(USBx: *mut LL_USB_TypeDef, pu8dest: *mut u8, len: u16);
pub fn usb_wrpkt(
USBx: *mut LL_USB_TypeDef,
pu8src: *const u8,
ch_ep_num: u8,
len: u16,
u8DmaEn: u8,
);
pub fn usb_txfifoflush(USBx: *mut LL_USB_TypeDef, num: u32);
pub fn usb_rxfifoflush(USBx: *mut LL_USB_TypeDef);
pub fn usb_modeset(USBx: *mut LL_USB_TypeDef, mode: u8);
pub fn usb_coresoftrst(USBx: *mut LL_USB_TypeDef);
pub fn usb_devmodeinit(USBx: *mut LL_USB_TypeDef, basic_cfgs: *mut USB_CORE_BASIC_CFGS);
pub fn usb_devinten(USBx: *mut LL_USB_TypeDef, u8DmaEn: u8);
pub fn usb_ep0activate(USBx: *mut LL_USB_TypeDef);
pub fn usb_epactive(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP);
pub fn usb_epdeactive(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP);
pub fn usb_epntransbegin(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP, u8DmaEn: u8);
pub fn usb_ep0transbegin(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP, u8DmaEn: u8);
pub fn usb_setepstall(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP);
pub fn usb_clearepstall(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP);
pub fn usb_ep0revcfg(USBx: *mut LL_USB_TypeDef, u8DmaEn: u8, u8RevBuf: *mut u8);
pub fn usb_remotewakeupen(USBx: *mut LL_USB_TypeDef);
pub fn usb_epstatusset(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP, Status: u32);
pub fn usb_epstatusget(USBx: *mut LL_USB_TypeDef, ep: *mut USB_DEV_EP) -> u32;
pub fn usb_devepdis(USBx: *mut LL_USB_TypeDef, u8EpNum: u8);
pub fn usb_ctrldevconnect(USBx: *mut LL_USB_TypeDef, link: u8);
}