3#ifndef __USB_CONTROLLER_H__
4#define __USB_CONTROLLER_H__
14#define USBC_MAX_OPEN_NUM 8
15#define USBC_MAX_CTL_NUM 3
16#define USBC_MAX_EP_NUM 6
17#define USBC0_MAX_FIFO_SIZE (8 * 1024)
18#define USBC_EP0_FIFOSIZE 64
u64_t uint64_t
Definition stdint.h:16
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
#define writew(val, addr)
Write a 16-bit word value to the specified address.
Definition io.h:81
#define readw(addr)
Read a 16-bit word from the specified address.
Definition io.h:73
#define USBC_REG_INTTx(usbc_base_addr)
Definition reg-usb.h:110
#define USBC_REG_INTTxE(usbc_base_addr)
Definition reg-usb.h:112
#define USBC_REG_INTRx(usbc_base_addr)
Definition reg-usb.h:111
#define USBC_REG_INTRxE(usbc_base_addr)
Definition reg-usb.h:113
Definition usb_controller.h:20
uint32_t port0_fifo_size
Definition usb_controller.h:22
uint32_t port0_fifo_addr
Definition usb_controller.h:21
Definition usb_controller.h:26
uint32_t port_num
Definition usb_controller.h:27
uint32_t base_addr
Definition usb_controller.h:28
uint32_t used
Definition usb_controller.h:30
uint32_t no
Definition usb_controller.h:31
#define usb_clear_bit16(bp, reg)
Definition usb.h:182
#define usb_set_bit16(bp, reg)
Definition usb.h:178
uint32_t usb_controller_open_otg(uint32_t otg_no)
Open the USB OTG controller.
Definition usb_controller.c:22
void usb_controller_int_disable_usb_misc_uint(uint64_t husb, uint32_t mask)
Disable specific miscellaneous USB interrupts.
Definition usb_controller.c:259
static void usb_controller_int_disable_tx_all(uint32_t addr)
Disable the interrupts of all TX endpoints.
Definition usb_controller.h:137
static void usb_controller_int_disable_rx_all(uint32_t addr)
Disable the interrupts of all RX endpoints.
Definition usb_controller.h:146
void usb_controller_config_fifo_rx_ep_default(uint32_t addr)
Configure the FIFO for a default receive endpoint.
Definition usb_controller.c:344
void usb_controller_int_enable_ep(uint64_t husb, uint32_t ep_type, uint32_t ep_index)
Enable interrupts for a specific endpoint.
Definition usb_controller.c:272
static void usb_controller_int_clear_tx_pending(uint32_t addr, uint8_t ep_index)
Clear the interrupt pending flag of a TX endpoint.
Definition usb_controller.h:50
static uint32_t usb_controller_int_tx_pending(uint32_t addr)
Get the interrupt pending flag of a TX endpoint.
Definition usb_controller.h:40
void usb_controller_config_fifo_tx_ep_default(uint32_t addr)
Configure the FIFO for a default transmit endpoint.
Definition usb_controller.c:315
uint32_t usb_controller_int_misc_pending(uint64_t husb)
Get the pending miscellaneous interrupt status.
Definition usb_controller.c:467
static void usb_controller_int_enable_tx_ep(uint32_t addr, uint8_t ep_index)
Enable the interrupt of a TX endpoint.
Definition usb_controller.h:98
uint32_t usb_controller_get_active_ep(uint64_t husb)
Get the active endpoint for the USB controller.
Definition usb_controller.c:295
static void usb_controller_int_clear_rx_pending_all(uint32_t addr)
Clear the interrupt pending flags of all RX endpoints.
Definition usb_controller.h:88
void usb_controller_config_fifo_tx_ep(uint32_t addr, uint32_t is_double_fifo, uint32_t fifo_size, uint32_t fifo_addr)
Configure the FIFO for a transmit endpoint.
Definition usb_controller.c:320
static uint32_t usb_controller_int_rx_pending(uint32_t addr)
Get the interrupt pending flag of an RX endpoint.
Definition usb_controller.h:69
void usb_controller_int_clear_ep_pending(uint64_t husb, uint32_t ep_type, uint8_t ep_index)
Clear the pending interrupt flag for a specific endpoint.
Definition usb_controller.c:417
void usb_controller_int_clear_misc_pending_all(uint64_t husb)
Clear the pending miscellaneous interrupt flags for all interrupts.
Definition usb_controller.c:489
uint32_t usb_controller_read_len_from_fifo(uint64_t husb, uint32_t ep_type)
Definition usb_controller.c:547
uint32_t usb_controller_get_port_fifo_size(uint64_t husb)
Definition usb_controller.c:660
uint32_t usb_controller_get_vbus_status(uint64_t husb)
Definition usb_controller.c:523
void usb_controller_id_pull_enable(uint64_t husb)
Enable the ID pull-up resistor for the USB controller.
Definition usb_controller.c:148
static void usb_controller_int_disable_rx_ep(uint32_t addr, uint8_t ep_index)
Disable the interrupt of an RX endpoint.
Definition usb_controller.h:128
void usb_controller_dpdm_pull_disable(uint64_t husb)
Disable the DP/DM pull-up resistors for the USB controller.
Definition usb_controller.c:181
void usb_controller_int_clear_ep_pending_all(uint64_t husb, uint32_t ep_type)
Clear the pending interrupt flags for all endpoints of a specific type.
Definition usb_controller.c:442
static void usb_controller_int_clear_tx_pending_all(uint32_t addr)
Clear the interrupt pending flags of all TX endpoints.
Definition usb_controller.h:59
static void usb_controller_int_disable_tx_ep(uint32_t addr, uint8_t ep_index)
Disable the interrupt of a TX endpoint.
Definition usb_controller.h:118
void usb_controller_dpdm_pull_enable(uint64_t husb)
Enable the DP/DM pull-up resistors for the USB controller.
Definition usb_controller.c:170
uint32_t usb_controller_write_packet(uint64_t husb, uint32_t fifo, uint32_t cnt, void *buff)
Definition usb_controller.c:566
uint32_t usb_controller_get_port_fifo_start_addr(uint64_t husb)
Definition usb_controller.c:642
void usb_controller_force_vbus_valid(uint64_t husb, uint32_t vbus_type)
Force the VBUS valid state for the USB controller.
Definition usb_controller.c:132
uint32_t usb_controller_int_ep_pending(uint64_t husb, uint32_t ep_type)
Get the pending interrupt status for a specific endpoint.
Definition usb_controller.c:396
void usb_controller_int_enable_usb_misc_uint(uint64_t husb, uint32_t mask)
Enable specific miscellaneous USB interrupts.
Definition usb_controller.c:246
static void usb_controller_int_clear_rx_pending(uint32_t addr, uint8_t ep_index)
Clear the interrupt pending flag of an RX endpoint.
Definition usb_controller.h:79
int usb_controller_close_otg(uint64_t husb)
Close the USB OTG controller.
Definition usb_controller.c:37
void usb_controller_int_disable_usb_misc_all(uint64_t husb)
Disable all miscellaneous USB interrupts.
Definition usb_controller.c:213
uint32_t usb_controller_read_packet(uint64_t husb, uint32_t fifo, uint32_t cnt, void *buff)
Definition usb_controller.c:597
void usb_controller_config_fifo_base(uint64_t husb, uint32_t sram_base)
Definition usb_controller.c:627
struct usb_controller_otg usb_controller_otg_t
void usb_controller_int_disable_ep_all(uint64_t husb, uint32_t ep_type)
Disable all endpoint-specific interrupts.
Definition usb_controller.c:223
void usb_controller_force_id_status(uint64_t husb, uint32_t id_type)
Set the ID status for the USB controller.
Definition usb_controller.c:85
void usb_controller_id_pull_disable(uint64_t husb)
Disable the ID pull-up resistor for the USB controller.
Definition usb_controller.c:159
struct fifo_info fifo_info_t
void usb_controller_select_active_ep(uint64_t husb, uint8_t ep_index)
Select the active endpoint for the USB controller.
Definition usb_controller.c:305
void usb_controller_config_fifo(uint64_t husb, uint32_t ep_type, uint32_t is_double_fifo, uint32_t fifo_size, uint32_t fifo_addr)
Configure the FIFO for a specific endpoint.
Definition usb_controller.c:371
void usb_controller_config_fifo_rx_ep(uint32_t addr, uint32_t is_double_fifo, uint32_t fifo_size, uint32_t fifo_addr)
Configure the FIFO for a receive endpoint.
Definition usb_controller.c:349
uint32_t usb_controller_select_fifo(uint64_t husb, uint32_t ep_index)
Definition usb_controller.c:678
void usb_controller_int_clear_misc_pending(uint64_t husb, uint32_t mask)
Clear the pending miscellaneous interrupt flag.
Definition usb_controller.c:478
static void usb_controller_int_enable_rx_ep(uint32_t addr, uint8_t ep_index)
Enable the interrupt of an RX endpoint.
Definition usb_controller.h:108
void usb_controller_int_disable_ep(uint64_t husb, uint32_t ep_type, uint8_t ep_index)
Disable interrupts for a specific endpoint.
Definition usb_controller.c:500