hc32f460_driver_sys 0.1.0

Provide driver function binding for HDSC's HC32F460 MCU.
Documentation
/* automatically generated by rust-bindgen 0.72.1 */

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);
}