static void __USBC_Dev_TsType_Bulk(ulong usbc_base_addr) { //--<1>--disable其他传输类型 USBC_REG_clear_bit_b(USBC_BP_POWER_D_ISO_UPDATE_EN, USBC_REG_PCTL(usbc_base_addr)); //--<2>--选择 Ctrl 类型 /* 不需要配置 */ }
void USBC_Host_EndSession(__hdle hUSB) { __usbc_otg_t *usbc_otg = (__usbc_otg_t *)hUSB; if(usbc_otg == NULL){ return ; } USBC_REG_clear_bit_b(USBC_BP_DEVCTL_SESSION, USBC_REG_DEVCTL(usbc_otg->base_addr)); }
/* USBC_Host_RusumePort和USBC_Host_ClearRusumePortFlag应该合并的, 但是在bsp层延时会影响效率 */ void USBC_Host_ClearRusumePortFlag(__hdle hUSB) { __usbc_otg_t *usbc_otg = (__usbc_otg_t *)hUSB; if(usbc_otg == NULL){ return ; } USBC_REG_clear_bit_b(USBC_BP_POWER_H_RESUME, USBC_REG_PCTL(usbc_otg->base_addr)); }
/* *********************************************************************************** * USBC_Dev_ConectSwitch * * Description: * 和PC通信的开关 * * Arguments: * hUSB : input. USBC_open_otg获得的句柄, 记录了USBC所需要的一些关键数据 * is_on : input. 1: 打开和PC通信开关. 0: 关闭和PC通信通道 * * Returns: * * * note: * 无 * *********************************************************************************** */ void USBC_Dev_ConectSwitch(__hdle hUSB, __u32 is_on) { __usbc_otg_t *usbc_otg = (__usbc_otg_t *)hUSB; if(usbc_otg == NULL){ return ; } if(is_on == USBC_DEVICE_SWITCH_ON){ USBC_REG_set_bit_b(USBC_BP_POWER_D_SOFT_CONNECT, USBC_REG_PCTL(usbc_otg->base_addr)); }else{ USBC_REG_clear_bit_b(USBC_BP_POWER_D_SOFT_CONNECT, USBC_REG_PCTL(usbc_otg->base_addr)); } }
/* 配置 low speed */ static void __USBC_Host_TsMode_Ls(__u32 usbc_base_addr) { USBC_REG_clear_bit_b(USBC_BP_POWER_H_HIGH_SPEED_EN, USBC_REG_PCTL(usbc_base_addr)); }
static void __USBC_Dev_TsMode_Fs(ulong usbc_base_addr) { USBC_REG_clear_bit_b(USBC_BP_POWER_D_HIGH_SPEED_EN, USBC_REG_PCTL(usbc_base_addr)); }
/* *************************************************************************** * * 选择 usb device 的传输类型。如控制传输、同步传输、中断传输、批量传输。 * *************************************************************************** */ static void __USBC_Dev_TsType_default(ulong usbc_base_addr) { //disable所有传输类型 USBC_REG_clear_bit_b(USBC_BP_POWER_D_ISO_UPDATE_EN, USBC_REG_PCTL(usbc_base_addr)); }
static void __USBC_Dev_TsMode_default(__u32 usbc_base_addr) { USBC_REG_clear_bit_b(USBC_BP_POWER_D_HIGH_SPEED_EN, USBC_REG_PCTL(usbc_base_addr)); }