Add usb_check_phymode

This commit is contained in:
songyanguang 2024-08-27 18:58:40 +08:00
parent eadaa44dd8
commit 24b1b5ac56
1 changed files with 30 additions and 0 deletions

View File

@ -77,6 +77,34 @@ void ipc_rndis_init(void){
}
}
static void usb_check_phymode(int id)
{
#define PIPE_PHY_GRF0 0xFDC70000
#define PIPE_PHY_GRF1 0xFDC80000
#define PIPE_PHY_GRF_PIPE_CON0 0x00
#define PIPE_PHY_GRF_VIRADDR_BASE 0x0000002100000000ULL
void *base = (void *)PIPE_PHY_GRF0;
void *base_vir = (void *)PIPE_PHY_GRF_VIRADDR_BASE;
uint32_t pipe_phymode;
if (USB3_0_ID == id) {
base = (void *)PIPE_PHY_GRF0;
}
if (USB3_1_ID == id) {
base = (void *)PIPE_PHY_GRF1;
}
if(!mmap((uintptr_t)base_vir, (uintptr_t)base, 0xFF, true)){
USB_LOG_ERR("usb_check_phy mmap fail\n");
}
pipe_phymode = readl ( base_vir + PIPE_PHY_GRF_PIPE_CON0 );
USB_LOG_DBG("usbh_initialize PIPE_PHY_GRF_PIPE_CON0=%08X\n", pipe_phymode);
if ( (pipe_phymode & 0x000C) != 0x0004) {
USB_LOG_ERR("usbh_initialize PIPE_PHY_GRF_PIPE_CON0=%08X is not USB3 mode\n", pipe_phymode);
}
}
static void usb_init(int id)
{
if (0 == usbh_initialize(id, &usb[id])){
@ -100,6 +128,8 @@ int main(int argc, char* argv[])
}
}
printf("main usb3 id=%d init.\r\n", id);
usb_check_phymode(id);
usb_init(id);
ipc_rndis_init();