1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi #ifndef DRV_USBHOST_CONFIG_H 79*53ee8cc1Swenshuai.xi #define DRV_USBHOST_CONFIG_H 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi #include <MsIRQ.h> 82*53ee8cc1Swenshuai.xi #include <drvUSB_eCos.h> // for root hub support only, applying the configuration 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi #define ECOS_USB_HOST_LOCAL_VER "20170310" 85*53ee8cc1Swenshuai.xi 86*53ee8cc1Swenshuai.xi /*** eCos USB Host driver exclusive default setting ***/ 87*53ee8cc1Swenshuai.xi #define URB_TIMEOUT_BY_WAIT_EVENT 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi //#define USB_EHCI_TT 90*53ee8cc1Swenshuai.xi 91*53ee8cc1Swenshuai.xi #define ECOS_XHC_COMPANION_SUPPORT 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi //#define ENABLE_LEGACY_CACHE_SETTING 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi #define ENABLE_DISCONNECT_FAST_RESPONSE 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi /* 20140630 quick response for file read/write root hub disconnected */ 98*53ee8cc1Swenshuai.xi #define ENABLE_RW_DISCONNECTING 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi #define ENABLE_ROOTHUB_DISCONN_REINIT 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /* 20140715 maximum hub top level to restric hub_probe */ 103*53ee8cc1Swenshuai.xi #ifdef USB_NOT_SUPPORT_EX_HUB 104*53ee8cc1Swenshuai.xi #define MAX_HUB_TOPO_LEVEL 1 105*53ee8cc1Swenshuai.xi #else 106*53ee8cc1Swenshuai.xi #define MAX_HUB_TOPO_LEVEL 6 107*53ee8cc1Swenshuai.xi #endif 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi /*** Definition by chip attribute ***/ 110*53ee8cc1Swenshuai.xi //#define CPU_TYPE_AEON 111*53ee8cc1Swenshuai.xi #if defined(CHIP_KAISER) || \ 112*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 113*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 114*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 115*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 116*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) 117*53ee8cc1Swenshuai.xi #define CPU_TYPE_ARM 118*53ee8cc1Swenshuai.xi #else 119*53ee8cc1Swenshuai.xi #define CPU_TYPE_MIPS 120*53ee8cc1Swenshuai.xi #endif 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi #if defined(CPU_TYPE_AEON) 123*53ee8cc1Swenshuai.xi #define OS_BASE_ADDR 0xa0000000 124*53ee8cc1Swenshuai.xi #elif defined(CPU_TYPE_MIPS) // U4, K1, K2 125*53ee8cc1Swenshuai.xi #if defined(TITANIA2_SERIAL_USE) 126*53ee8cc1Swenshuai.xi #define OS_BASE_ADDR 0xbf800000 127*53ee8cc1Swenshuai.xi #else 128*53ee8cc1Swenshuai.xi #define OS_BASE_ADDR 0xbf200000 129*53ee8cc1Swenshuai.xi #endif 130*53ee8cc1Swenshuai.xi #define _MSTAR_PM_BASE 0xbf000000 131*53ee8cc1Swenshuai.xi #define MIPS_TOOLCHAIN_482_ISSUE 132*53ee8cc1Swenshuai.xi #define MIPS_L1_CACHE_SIZE 32 133*53ee8cc1Swenshuai.xi #elif defined(CPU_TYPE_ARM) // K3 134*53ee8cc1Swenshuai.xi #define OS_BASE_ADDR 0xfd200000 135*53ee8cc1Swenshuai.xi #define _MSTAR_PM_BASE 0xfd000000 136*53ee8cc1Swenshuai.xi #define MIPS_L1_CACHE_SIZE 32 137*53ee8cc1Swenshuai.xi #else 138*53ee8cc1Swenshuai.xi #No CPU type for USB 139*53ee8cc1Swenshuai.xi #endif 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi #ifdef ENABLE_LEGACY_CACHE_SETTING 142*53ee8cc1Swenshuai.xi #define CPU_L1_CACHE_BOUND (15) 143*53ee8cc1Swenshuai.xi #else 144*53ee8cc1Swenshuai.xi #define CPU_L1_CACHE_BOUND (MIPS_L1_CACHE_SIZE-1) 145*53ee8cc1Swenshuai.xi #endif 146*53ee8cc1Swenshuai.xi 147*53ee8cc1Swenshuai.xi #define KAISERIN_CHIP_TOP_BASE (OS_BASE_ADDR+(0x1E00*2)) 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi #define BASE_USBBC_NULL (0) 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xi /****** USB port RIU base address ******/ 152*53ee8cc1Swenshuai.xi /* port 0 */ 153*53ee8cc1Swenshuai.xi #define BASE_UTMI0 (OS_BASE_ADDR+(0x3A80*2)) 154*53ee8cc1Swenshuai.xi #define BASE_UHC0 (OS_BASE_ADDR+(0x2400*2)) 155*53ee8cc1Swenshuai.xi #define BASE_USBC0 (OS_BASE_ADDR+(0x0700*2)) 156*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KAPPA (OS_BASE_ADDR+(0x20500*2)) 157*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KIWI (OS_BASE_ADDR+(0x20500*2)) 158*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KELTIC (OS_BASE_ADDR+(0x11700*2)) 159*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KRATOS (OS_BASE_ADDR+(0x20500*2)) 160*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KENYA (OS_BASE_ADDR+(0x205E0*2)) 161*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KAISER (OS_BASE_ADDR+(0x22F00*2)) 162*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KERES (OS_BASE_ADDR+(0x13700*2)) 163*53ee8cc1Swenshuai.xi #define BASE_USBBC0_CLIPPERS (OS_BASE_ADDR+(0x23600*2)) 164*53ee8cc1Swenshuai.xi #define BASE_USBBC0_KANO BASE_USBBC0_KERES 165*53ee8cc1Swenshuai.xi #define BASE_USBBC0_K6 BASE_USBBC0_KERES 166*53ee8cc1Swenshuai.xi #define BASE_USBBC0_CURRY BASE_USBBC0_KERES 167*53ee8cc1Swenshuai.xi #define BASE_USBBC0_K6LITE BASE_USBBC0_CLIPPERS 168*53ee8cc1Swenshuai.xi #define E_IRQ_UHC (E_INT_IRQ_UHC) 169*53ee8cc1Swenshuai.xi #define E_IRQ_USBC (E_INT_IRQ_USB) 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi /* port 1 */ 172*53ee8cc1Swenshuai.xi #define BASE_UTMI1 (OS_BASE_ADDR+(0x3A00*2)) 173*53ee8cc1Swenshuai.xi #define BASE_UHC1 (OS_BASE_ADDR+(0x0D00*2)) 174*53ee8cc1Swenshuai.xi #define BASE_USBC1 (OS_BASE_ADDR+(0x0780*2)) 175*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KENYA (OS_BASE_ADDR+(0x205C0*2)) 176*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KAISER (OS_BASE_ADDR+(0x22F40*2)) 177*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KERES (OS_BASE_ADDR+(0x13740*2)) 178*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KRATOS (OS_BASE_ADDR+(0x20540*2)) 179*53ee8cc1Swenshuai.xi #define BASE_USBBC1_CLIPPERS (OS_BASE_ADDR+(0x23620*2)) 180*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KIWI (OS_BASE_ADDR+(0x20540*2)) 181*53ee8cc1Swenshuai.xi #define BASE_USBBC1_KANO (OS_BASE_ADDR+(0x13720*2)) 182*53ee8cc1Swenshuai.xi #define BASE_USBBC1_K6 BASE_USBBC1_KERES 183*53ee8cc1Swenshuai.xi #define BASE_USBBC1_CURRY BASE_USBBC1_KANO 184*53ee8cc1Swenshuai.xi #define BASE_USBBC1_K6LITE BASE_USBBC1_CLIPPERS 185*53ee8cc1Swenshuai.xi #define E_IRQ_UHC1 (E_INT_IRQ_UHC1) 186*53ee8cc1Swenshuai.xi #define E_IRQ_USBC1 (E_INT_IRQ_USB1) 187*53ee8cc1Swenshuai.xi 188*53ee8cc1Swenshuai.xi /* port 2 */ 189*53ee8cc1Swenshuai.xi #define BASE_UTMI2 (OS_BASE_ADDR+(0x2A00*2)) 190*53ee8cc1Swenshuai.xi #define BASE_UTMI2_CLIPPERS (OS_BASE_ADDR+(0x3900*2)) 191*53ee8cc1Swenshuai.xi #define BASE_UTMI2_KANO BASE_UTMI2_CLIPPERS 192*53ee8cc1Swenshuai.xi #define BASE_UTMI2_CURRY BASE_UTMI2_CLIPPERS 193*53ee8cc1Swenshuai.xi #define BASE_UTMI2_K6 (OS_BASE_ADDR+(0x3800*2)) 194*53ee8cc1Swenshuai.xi #define BASE_UTMI2_K6LITE BASE_UTMI2_K6 195*53ee8cc1Swenshuai.xi #define BASE_UHC2 (OS_BASE_ADDR+(0x10300*2)) 196*53ee8cc1Swenshuai.xi #define BASE_UHC2_CLIPPERS (OS_BASE_ADDR+(0x13900*2)) 197*53ee8cc1Swenshuai.xi #define BASE_UHC2_K6 (OS_BASE_ADDR+(0x40400*2)) 198*53ee8cc1Swenshuai.xi #define BASE_UHC2_K6LITE BASE_UHC2_CLIPPERS 199*53ee8cc1Swenshuai.xi #define BASE_USBC2 (OS_BASE_ADDR+(0x10200*2)) 200*53ee8cc1Swenshuai.xi #define BASE_USBC2_CLIPPERS (OS_BASE_ADDR+(0x13800*2)) 201*53ee8cc1Swenshuai.xi #define BASE_USBC2_K6 (OS_BASE_ADDR+(0x40600*2)) 202*53ee8cc1Swenshuai.xi #define BASE_USBC2_K6LITE BASE_USBC2_CLIPPERS 203*53ee8cc1Swenshuai.xi #define BASE_USBBC2_KAISER (OS_BASE_ADDR+(0x22F80*2)) 204*53ee8cc1Swenshuai.xi #define BASE_USBBC2_CLIPPERS (OS_BASE_ADDR+(0x23640*2)) 205*53ee8cc1Swenshuai.xi #define BASE_USBBC2_KANO (OS_BASE_ADDR+(0x13740*2)) 206*53ee8cc1Swenshuai.xi #define BASE_USBBC2_K6 (OS_BASE_ADDR+(0x13780*2)) 207*53ee8cc1Swenshuai.xi #define BASE_USBBC2_CURRY BASE_USBBC2_KANO 208*53ee8cc1Swenshuai.xi #define BASE_USBBC2_K6LITE BASE_USBBC2_CLIPPERS 209*53ee8cc1Swenshuai.xi #define E_IRQ_UHC2 (E_INT_IRQ_UHC2) 210*53ee8cc1Swenshuai.xi #define E_IRQ_USBC2 (E_INT_IRQ_USB2) 211*53ee8cc1Swenshuai.xi #define E_IRQ_UHC2_K6 (E_INT_IRQ_USB30_HS_UHC_INT) 212*53ee8cc1Swenshuai.xi #define E_IRQ_USBC2_K6 (E_INT_IRQ_USB30_HS_USB_INT) 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi /* port 3 */ 215*53ee8cc1Swenshuai.xi #define BASE_UTMI3 (OS_BASE_ADDR+(0x20A00*2)) 216*53ee8cc1Swenshuai.xi #define BASE_UTMI3_KANO (OS_BASE_ADDR+(0x3800*2)) 217*53ee8cc1Swenshuai.xi #define BASE_UHC3 (OS_BASE_ADDR+(0x20900*2)) 218*53ee8cc1Swenshuai.xi #define BASE_UHC3_KANO (OS_BASE_ADDR+(0x40400*2)) 219*53ee8cc1Swenshuai.xi #define BASE_USBC3 (OS_BASE_ADDR+(0x20800*2)) 220*53ee8cc1Swenshuai.xi #define BASE_USBC3_KANO (OS_BASE_ADDR+(0x40600*2)) 221*53ee8cc1Swenshuai.xi #define BASE_USBBC3_KANO (OS_BASE_ADDR+(0x13780*2)) 222*53ee8cc1Swenshuai.xi #define E_IRQ_UHC3 (E_INT_IRQ_UHC3) 223*53ee8cc1Swenshuai.xi #define E_IRQ_USBC3 (E_INT_IRQ_USB3) 224*53ee8cc1Swenshuai.xi #define E_IRQ_UHC3_KANO (E_INT_IRQ_USB30_HS_UHC_INT) 225*53ee8cc1Swenshuai.xi #define E_IRQ_USBC3_KANO (E_INT_IRQ_USB30_HS_USB_INT) 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi /* port 4 */ 228*53ee8cc1Swenshuai.xi #define BASE_UTMI4_KANO (OS_BASE_ADDR+(0x03880*2)) 229*53ee8cc1Swenshuai.xi #define BASE_UHC4_KANO (OS_BASE_ADDR+(0x40500*2)) 230*53ee8cc1Swenshuai.xi #define BASE_USBC4_KANO (OS_BASE_ADDR+(0x40680*2)) 231*53ee8cc1Swenshuai.xi #define BASE_USBBC4_KANO (OS_BASE_ADDR+(0x137a0*2)) 232*53ee8cc1Swenshuai.xi #define E_IRQ_UHC4 (E_INT_IRQ_UHC4) 233*53ee8cc1Swenshuai.xi #define E_IRQ_USBC4 (E_INT_IRQ_USB4) 234*53ee8cc1Swenshuai.xi #define E_IRQ_UHC4_KANO (E_INT_IRQ_USB30_HS1_UHC_INT) 235*53ee8cc1Swenshuai.xi #define E_IRQ_USBC4_KANO (E_INT_IRQ_USB30_HS1_USB_INT) 236*53ee8cc1Swenshuai.xi 237*53ee8cc1Swenshuai.xi /* struct xhc_comp */ 238*53ee8cc1Swenshuai.xi #ifdef ECOS_XHC_COMPANION_SUPPORT 239*53ee8cc1Swenshuai.xi #if defined(CHIP_KANO) || \ 240*53ee8cc1Swenshuai.xi defined(CHIP_K6) 241*53ee8cc1Swenshuai.xi #define ENABLE_XHC_COMPANION 242*53ee8cc1Swenshuai.xi #define XHC_COMP_NONE {0, 0, 0, 0, 0} 243*53ee8cc1Swenshuai.xi #define XHCI_SINGLE_PORT_ENABLE_MAC 244*53ee8cc1Swenshuai.xi #define XHCI_ENABLE_PD_OVERRIDE 245*53ee8cc1Swenshuai.xi #endif 246*53ee8cc1Swenshuai.xi #endif 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi #if defined(CHIP_KANO) 249*53ee8cc1Swenshuai.xi #define XHCI_PORT0_ADDR (OS_BASE_ADDR+(0xc0000<<1)+0x0440) 250*53ee8cc1Swenshuai.xi #define XHCI_PORT1_ADDR (OS_BASE_ADDR+(0xc0000<<1)+0x0450) 251*53ee8cc1Swenshuai.xi #define MSTAR_U3TOP_BASE (OS_BASE_ADDR+(0x40200*2)) 252*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P0_A_BASE (OS_BASE_ADDR+(0x02100 << 1)) 253*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P0_D_BASE (OS_BASE_ADDR+(0x02000 << 1)) 254*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P1_A_BASE (OS_BASE_ADDR+(0x02300 << 1)) 255*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P1_D_BASE (OS_BASE_ADDR+(0x02200 << 1)) 256*53ee8cc1Swenshuai.xi #define XHC_COMP_PORT0 {0, XHCI_PORT0_ADDR, MSTAR_U3TOP_BASE, MSTAR_U3PHY_P0_A_BASE, MSTAR_U3PHY_P0_D_BASE} 257*53ee8cc1Swenshuai.xi #define XHC_COMP_PORT1 {1, XHCI_PORT1_ADDR, MSTAR_U3TOP_BASE, MSTAR_U3PHY_P1_A_BASE, MSTAR_U3PHY_P1_D_BASE} 258*53ee8cc1Swenshuai.xi #elif defined(CHIP_K6) 259*53ee8cc1Swenshuai.xi #define XHCI_PORT0_ADDR (OS_BASE_ADDR+(0xf0000<<1)+0x0430) 260*53ee8cc1Swenshuai.xi #define MSTAR_U3TOP_BASE (OS_BASE_ADDR+(0x40200*2)) 261*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P0_A_BASE (OS_BASE_ADDR+(0x02100 << 1)) 262*53ee8cc1Swenshuai.xi #define MSTAR_U3PHY_P0_D_BASE (OS_BASE_ADDR+(0x02000 << 1)) 263*53ee8cc1Swenshuai.xi #define XHC_COMP_PORT0 {0, XHCI_PORT0_ADDR, MSTAR_U3TOP_BASE, MSTAR_U3PHY_P0_A_BASE, MSTAR_U3PHY_P0_D_BASE} 264*53ee8cc1Swenshuai.xi #endif 265*53ee8cc1Swenshuai.xi 266*53ee8cc1Swenshuai.xi /* define UHC port enable */ 267*53ee8cc1Swenshuai.xi /* two ports is default, else extra needs to be defined */ 268*53ee8cc1Swenshuai.xi #if defined(CHIP_U4) || \ 269*53ee8cc1Swenshuai.xi defined(CHIP_K2) || \ 270*53ee8cc1Swenshuai.xi defined(CHIP_KAISER) || \ 271*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 272*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 273*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 274*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 275*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) 276*53ee8cc1Swenshuai.xi #define ENABLE_THIRD_EHC 277*53ee8cc1Swenshuai.xi #endif 278*53ee8cc1Swenshuai.xi 279*53ee8cc1Swenshuai.xi #if defined(CHIP_K2) || \ 280*53ee8cc1Swenshuai.xi (defined(CHIP_KANO) && defined(ENABLE_XHC_COMPANION)) 281*53ee8cc1Swenshuai.xi #define ENABLE_FOURTH_EHC 282*53ee8cc1Swenshuai.xi #endif 283*53ee8cc1Swenshuai.xi 284*53ee8cc1Swenshuai.xi #if (defined(CHIP_KANO) && defined(ENABLE_XHC_COMPANION)) 285*53ee8cc1Swenshuai.xi #define ENABLE_FIFTH_EHC 286*53ee8cc1Swenshuai.xi #endif 287*53ee8cc1Swenshuai.xi 288*53ee8cc1Swenshuai.xi #if (defined(CHIP_KANO) && defined(ENABLE_XHC_COMPANION)) 289*53ee8cc1Swenshuai.xi #define NUM_OF_ROOT_HUB 5 290*53ee8cc1Swenshuai.xi #elif defined(CHIP_K2) 291*53ee8cc1Swenshuai.xi #define NUM_OF_ROOT_HUB 4 292*53ee8cc1Swenshuai.xi #elif defined(CHIP_U4) || \ 293*53ee8cc1Swenshuai.xi defined(CHIP_KAISER) || \ 294*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 295*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 296*53ee8cc1Swenshuai.xi (defined(CHIP_K6) && defined(ENABLE_XHC_COMPANION)) || \ 297*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 298*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) 299*53ee8cc1Swenshuai.xi #define NUM_OF_ROOT_HUB 3 300*53ee8cc1Swenshuai.xi #else 301*53ee8cc1Swenshuai.xi #define NUM_OF_ROOT_HUB 2 302*53ee8cc1Swenshuai.xi #endif 303*53ee8cc1Swenshuai.xi 304*53ee8cc1Swenshuai.xi //------ Hardware ECO enable switch ---------------------------------- 305*53ee8cc1Swenshuai.xi //---- 1. fix pv2mi bridge mis-behavior, list chip before Kris 306*53ee8cc1Swenshuai.xi #if defined(CHIP_KAPPA) || \ 307*53ee8cc1Swenshuai.xi defined(CHIP_KELTIC) || \ 308*53ee8cc1Swenshuai.xi defined(CHIP_KENYA) || \ 309*53ee8cc1Swenshuai.xi defined(CHIP_KRITI) || \ 310*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 311*53ee8cc1Swenshuai.xi defined(CHIP_KERES) || \ 312*53ee8cc1Swenshuai.xi defined(CHIP_KIRIN) || \ 313*53ee8cc1Swenshuai.xi defined(CHIP_KRIS) 314*53ee8cc1Swenshuai.xi #define ENABLE_PV2MI_BRIDGE_ECO 315*53ee8cc1Swenshuai.xi #endif 316*53ee8cc1Swenshuai.xi 317*53ee8cc1Swenshuai.xi //---- 2. Reduce EOF1 to 16us for performance imporvement 318*53ee8cc1Swenshuai.xi #if !defined(CHIP_U4) && !defined(CHIP_K1) && !defined(CHIP_K2) 319*53ee8cc1Swenshuai.xi /* Enlarge EOF1 from 12us to 16us for babble prvention under hub case. 320*53ee8cc1Swenshuai.xi * However, we keep the "old config name". 20130121 321*53ee8cc1Swenshuai.xi */ 322*53ee8cc1Swenshuai.xi #define ENABLE_16US_EOF1 323*53ee8cc1Swenshuai.xi #endif 324*53ee8cc1Swenshuai.xi 325*53ee8cc1Swenshuai.xi //---- 3. Enable UTMI 240 as 120 phase 326*53ee8cc1Swenshuai.xi #if !defined(CHIP_U4) && !defined(CHIP_K1) && !defined(CHIP_K2) 327*53ee8cc1Swenshuai.xi #define ENABLE_UTMI_240_AS_120_PHASE_ECO 328*53ee8cc1Swenshuai.xi #endif 329*53ee8cc1Swenshuai.xi 330*53ee8cc1Swenshuai.xi //---- 4. Change to 55 interface 331*53ee8cc1Swenshuai.xi #if !defined(CHIP_U4) && !defined(CHIP_K1) && !defined(CHIP_K2) 332*53ee8cc1Swenshuai.xi #define ENABLE_UTMI_55_INTERFACE 333*53ee8cc1Swenshuai.xi #endif 334*53ee8cc1Swenshuai.xi 335*53ee8cc1Swenshuai.xi //---- 5. tx/rx reset clock gating cause XIU timeout 336*53ee8cc1Swenshuai.xi #if !defined(CHIP_U4) && \ 337*53ee8cc1Swenshuai.xi !defined(CHIP_K1) && \ 338*53ee8cc1Swenshuai.xi !defined(CHIP_K2) 339*53ee8cc1Swenshuai.xi #define ENABLE_TX_RX_RESET_CLK_GATING_ECO 340*53ee8cc1Swenshuai.xi #endif 341*53ee8cc1Swenshuai.xi 342*53ee8cc1Swenshuai.xi //---- 6. Setting PV2MI bridge read/write burst size to minimum 343*53ee8cc1Swenshuai.xi #if 0 // every chip must apply it, so far 344*53ee8cc1Swenshuai.xi #define _USB_MINI_PV2MI_BURST_SIZE 0 345*53ee8cc1Swenshuai.xi #else 346*53ee8cc1Swenshuai.xi #define _USB_MINI_PV2MI_BURST_SIZE 1 347*53ee8cc1Swenshuai.xi #endif 348*53ee8cc1Swenshuai.xi 349*53ee8cc1Swenshuai.xi //---- 7. HS connection fail problem (Gate into VFALL state) 350*53ee8cc1Swenshuai.xi #if defined(CHIP_KELTIC) || \ 351*53ee8cc1Swenshuai.xi defined(CHIP_KERES) || \ 352*53ee8cc1Swenshuai.xi defined(CHIP_KIRIN) || \ 353*53ee8cc1Swenshuai.xi defined(CHIP_KRIS) || \ 354*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 355*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 356*53ee8cc1Swenshuai.xi defined(CHIP_KRATOS) || \ 357*53ee8cc1Swenshuai.xi defined(CHIP_KIWI) || \ 358*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 359*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 360*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 361*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) || \ 362*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 363*53ee8cc1Swenshuai.xi #define ENABLE_HS_CONNECTION_FAIL_INTO_VFALL_ECO 364*53ee8cc1Swenshuai.xi #endif 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi //---- 8. Enable UHC Preamble ECO function 367*53ee8cc1Swenshuai.xi #if defined(CHIP_KIWI) || \ 368*53ee8cc1Swenshuai.xi defined(CHIP_KRATOS) || \ 369*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 370*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 371*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 372*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 373*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) || \ 374*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 375*53ee8cc1Swenshuai.xi #define ENABLE_UHC_PREAMBLE_ECO 376*53ee8cc1Swenshuai.xi #endif 377*53ee8cc1Swenshuai.xi 378*53ee8cc1Swenshuai.xi //---- 9. Enable HS ISO IN Camera Cornor case ECO function 379*53ee8cc1Swenshuai.xi #if defined(CHIP_KRATOS) || \ 380*53ee8cc1Swenshuai.xi defined(CHIP_KIWI) || \ 381*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 382*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 383*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 384*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 385*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) || \ 386*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 387*53ee8cc1Swenshuai.xi #define ENABLE_HS_ISO_IN_CORNER_ECO 388*53ee8cc1Swenshuai.xi #endif 389*53ee8cc1Swenshuai.xi 390*53ee8cc1Swenshuai.xi //---- 10. Don't close RUN bit when device disconnect, default enable after KIWI 391*53ee8cc1Swenshuai.xi #if defined(CHIP_KERES) || \ 392*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 393*53ee8cc1Swenshuai.xi defined(CHIP_KIRIN) || \ 394*53ee8cc1Swenshuai.xi defined(CHIP_KRIS) || \ 395*53ee8cc1Swenshuai.xi defined(CHIP_KRATOS) || \ 396*53ee8cc1Swenshuai.xi defined(CHIP_KANO) 397*53ee8cc1Swenshuai.xi #define ENABLE_UHC_RUN_BIT_ALWAYS_ON_ECO 398*53ee8cc1Swenshuai.xi #endif 399*53ee8cc1Swenshuai.xi 400*53ee8cc1Swenshuai.xi //---- 11. Port is disabled when device is dosconnected 401*53ee8cc1Swenshuai.xi #if 0 // no chip must apply it, it can't work with RUN_BIT_ALWAYS_ON_ECO 402*53ee8cc1Swenshuai.xi #define ENABLE_DISCONNECT_PE_CLR_ECO 403*53ee8cc1Swenshuai.xi #endif 404*53ee8cc1Swenshuai.xi 405*53ee8cc1Swenshuai.xi //---- 12. 406*53ee8cc1Swenshuai.xi #if defined(CHIP_KRITI) 407*53ee8cc1Swenshuai.xi #define ENABLE_HS_DISCONNECTION_DEBOUNCE_ECO 408*53ee8cc1Swenshuai.xi #endif 409*53ee8cc1Swenshuai.xi 410*53ee8cc1Swenshuai.xi //---- 13. UHC speed type report should be reset by device disconnection 411*53ee8cc1Swenshuai.xi #if defined(CHIP_K6LITE) || \ 412*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 413*53ee8cc1Swenshuai.xi #define ENABLE_DISCONNECT_SPEED_REPORT_RESET_ECO 414*53ee8cc1Swenshuai.xi #endif 415*53ee8cc1Swenshuai.xi 416*53ee8cc1Swenshuai.xi //---- 14. Port Change Detect (PCD) is triggered by babble. Pulse trigger will not hang this condition. 417*53ee8cc1Swenshuai.xi /* 1'b0: level trigger 418*53ee8cc1Swenshuai.xi * 1'b1: one-pulse trigger 419*53ee8cc1Swenshuai.xi */ 420*53ee8cc1Swenshuai.xi #if defined(CHIP_K6LITE) || \ 421*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 422*53ee8cc1Swenshuai.xi #define ENABLE_BABBLE_PCD_ONE_PULSE_TRIGGER_ECO 423*53ee8cc1Swenshuai.xi #endif 424*53ee8cc1Swenshuai.xi 425*53ee8cc1Swenshuai.xi //---- 15. generation of hhc_reset_u 426*53ee8cc1Swenshuai.xi /* 1'b0: hhc_reset is_u double sync of hhc_reset 427*53ee8cc1Swenshuai.xi * 1'b1: hhc_reset_u is one-pulse of hhc_reset 428*53ee8cc1Swenshuai.xi */ 429*53ee8cc1Swenshuai.xi #if defined(CHIP_K6LITE) || \ 430*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 431*53ee8cc1Swenshuai.xi #define ENABLE_HC_RESET_FAIL_ECO 432*53ee8cc1Swenshuai.xi #endif 433*53ee8cc1Swenshuai.xi 434*53ee8cc1Swenshuai.xi //---- 16. Do SRAM clock gating automatically to save power */ 435*53ee8cc1Swenshuai.xi #if defined(CHIP_K6LITE) || \ 436*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 437*53ee8cc1Swenshuai.xi #define ENABLE_SRAM_CLK_GATING_ECO 438*53ee8cc1Swenshuai.xi #endif 439*53ee8cc1Swenshuai.xi 440*53ee8cc1Swenshuai.xi //------ Software patch enable switch ---------------------------------- 441*53ee8cc1Swenshuai.xi //---- 1. Monkey Test software Patch 442*53ee8cc1Swenshuai.xi #if defined(CHIP_U4) || defined(CHIP_K1) || defined(CHIP_K2) 443*53ee8cc1Swenshuai.xi #define _USB_HS_CUR_DRIVE_DM_ALLWAYS_HIGH_PATCH 1 444*53ee8cc1Swenshuai.xi #else 445*53ee8cc1Swenshuai.xi #define _USB_HS_CUR_DRIVE_DM_ALLWAYS_HIGH_PATCH 0 446*53ee8cc1Swenshuai.xi #endif 447*53ee8cc1Swenshuai.xi 448*53ee8cc1Swenshuai.xi //---- 2. Clock phase adjustment software Patch 449*53ee8cc1Swenshuai.xi #if defined(CHIP_KERES) 450*53ee8cc1Swenshuai.xi #define _USB_CLOCK_PHASE_ADJ_PATCH 1 451*53ee8cc1Swenshuai.xi #else 452*53ee8cc1Swenshuai.xi #define _USB_CLOCK_PHASE_ADJ_PATCH 0 453*53ee8cc1Swenshuai.xi #endif 454*53ee8cc1Swenshuai.xi 455*53ee8cc1Swenshuai.xi //---- 3. enabe PVCI i_miwcplt wait for mi2uh_last_done_z 456*53ee8cc1Swenshuai.xi #if defined(CHIP_KERES) || \ 457*53ee8cc1Swenshuai.xi defined(CHIP_KIRIN) || \ 458*53ee8cc1Swenshuai.xi defined(CHIP_KRIS) || \ 459*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 460*53ee8cc1Swenshuai.xi defined(CHIP_CLIPPERS) || \ 461*53ee8cc1Swenshuai.xi defined(CHIP_KRATOS) || \ 462*53ee8cc1Swenshuai.xi defined(CHIP_KIWI) || \ 463*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 464*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 465*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 466*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) || \ 467*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 468*53ee8cc1Swenshuai.xi #define _USB_MIU_WRITE_WAIT_LAST_DONE_Z_PATCH 1 469*53ee8cc1Swenshuai.xi #else 470*53ee8cc1Swenshuai.xi #define _USB_MIU_WRITE_WAIT_LAST_DONE_Z_PATCH 0 471*53ee8cc1Swenshuai.xi #endif 472*53ee8cc1Swenshuai.xi 473*53ee8cc1Swenshuai.xi //---- 4. data structure (qtd ,...) must be 128-byte aligment 474*53ee8cc1Swenshuai.xi #define _USB_128_ALIGMENT 1 475*53ee8cc1Swenshuai.xi 476*53ee8cc1Swenshuai.xi //---- 5. OBF application should enable BDMA function to move QH head 477*53ee8cc1Swenshuai.xi #if defined(CHIP_K6) || \ 478*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 479*53ee8cc1Swenshuai.xi defined(CHIP_KANO) 480*53ee8cc1Swenshuai.xi #define _USB_ENABLE_BDMA_PATCH 481*53ee8cc1Swenshuai.xi #define EHCI_CHECK_MIU1 1 482*53ee8cc1Swenshuai.xi #if defined(CHIP_CURRY) || \ 483*53ee8cc1Swenshuai.xi defined(CHIP_KANO) 484*53ee8cc1Swenshuai.xi #define EHCI_CHECK_ECO_VER 1 485*53ee8cc1Swenshuai.xi #endif 486*53ee8cc1Swenshuai.xi #ifdef CHIP_CURRY 487*53ee8cc1Swenshuai.xi #define CHIP_BDMA_ECO_VER 0x2 488*53ee8cc1Swenshuai.xi #endif 489*53ee8cc1Swenshuai.xi #ifdef CHIP_KANO 490*53ee8cc1Swenshuai.xi #define CHIP_BDMA_ECO_VER 0x3 491*53ee8cc1Swenshuai.xi #endif 492*53ee8cc1Swenshuai.xi #endif 493*53ee8cc1Swenshuai.xi 494*53ee8cc1Swenshuai.xi #ifdef _USB_ENABLE_BDMA_PATCH 495*53ee8cc1Swenshuai.xi #define MIU0_RIU_BASE (_MSTAR_PM_BASE+0x101200*2) 496*53ee8cc1Swenshuai.xi #define MIU1_RIU_BASE (_MSTAR_PM_BASE+0x100600*2) 497*53ee8cc1Swenshuai.xi #define MIU_DRAMOBF_READY_OFFSET (0x2a*2) 498*53ee8cc1Swenshuai.xi #define MIU_DRAMOBF_READY_BIT (1 << 15) 499*53ee8cc1Swenshuai.xi #define MIU_64BIT_CIPHER_OFFSET (0xd8*2) 500*53ee8cc1Swenshuai.xi #define MIU_64BIT_CIPHER_BIT (1 << 10) 501*53ee8cc1Swenshuai.xi 502*53ee8cc1Swenshuai.xi #ifdef EHCI_CHECK_ECO_VER 503*53ee8cc1Swenshuai.xi #define CHIP_VER_TOP (_MSTAR_PM_BASE+0x1E00*2) 504*53ee8cc1Swenshuai.xi #define CHIP_VER_OFFSET (0xCE*2) 505*53ee8cc1Swenshuai.xi #define CHIP_VER_SHIFT 8 506*53ee8cc1Swenshuai.xi #define CHIP_VER_MASK 0xff 507*53ee8cc1Swenshuai.xi #endif 508*53ee8cc1Swenshuai.xi #endif 509*53ee8cc1Swenshuai.xi //----------------------------------------- 510*53ee8cc1Swenshuai.xi // U4_series_usb_init flag: 511*53ee8cc1Swenshuai.xi // Use low word as flag 512*53ee8cc1Swenshuai.xi #define EHCFLAG_NONE 0x0 513*53ee8cc1Swenshuai.xi #define EHCFLAG_DPDM_SWAP 0x1 514*53ee8cc1Swenshuai.xi #define EHCFLAG_TESTPKG 0x2 515*53ee8cc1Swenshuai.xi #define EHCFLAG_DOUBLE_DATARATE 0x4 516*53ee8cc1Swenshuai.xi #define EHCFLAG_USBBC_OFF 0x8 517*53ee8cc1Swenshuai.xi #define EHCFLAF_XHC_COMP 0x10 518*53ee8cc1Swenshuai.xi // Use high word as data 519*53ee8cc1Swenshuai.xi #define EHCFLAG_DDR_MASK 0xF0000000 520*53ee8cc1Swenshuai.xi #define EHCFLAG_DDR_x15 0x10000000 //480MHz x1.5 521*53ee8cc1Swenshuai.xi #define EHCFLAG_DDR_x18 0x20000000 //480MHz x1.8 522*53ee8cc1Swenshuai.xi //----------------------------------------- 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi #define HUB_STACK_SIZE 0x2000 525*53ee8cc1Swenshuai.xi 526*53ee8cc1Swenshuai.xi #ifndef MSTAR_USB_DEBUG 527*53ee8cc1Swenshuai.xi #define MSTAR_USB_DEBUG 0 528*53ee8cc1Swenshuai.xi #endif 529*53ee8cc1Swenshuai.xi 530*53ee8cc1Swenshuai.xi /* Debug print definition */ 531*53ee8cc1Swenshuai.xi #define DBG_MSG 532*53ee8cc1Swenshuai.xi //#define DBG_WARN 533*53ee8cc1Swenshuai.xi //#define DBG_FUNC 534*53ee8cc1Swenshuai.xi //#define DBG_DEBUG 535*53ee8cc1Swenshuai.xi #define DBG_ERR 536*53ee8cc1Swenshuai.xi 537*53ee8cc1Swenshuai.xi #undef ms_debug_msg 538*53ee8cc1Swenshuai.xi #undef ms_debug_warn 539*53ee8cc1Swenshuai.xi #undef ms_debug_err 540*53ee8cc1Swenshuai.xi #undef ms_debug_func 541*53ee8cc1Swenshuai.xi #undef ms_debug_debug 542*53ee8cc1Swenshuai.xi 543*53ee8cc1Swenshuai.xi #ifdef DBG_MSG 544*53ee8cc1Swenshuai.xi #define ms_debug_msg(fmt, arg...) \ 545*53ee8cc1Swenshuai.xi do {diag_printf(fmt, ##arg);} while(0) 546*53ee8cc1Swenshuai.xi #else 547*53ee8cc1Swenshuai.xi #define ms_debug_msg(fmt, arg...) do {} while (0) 548*53ee8cc1Swenshuai.xi #endif 549*53ee8cc1Swenshuai.xi 550*53ee8cc1Swenshuai.xi #ifdef DBG_DEBUG 551*53ee8cc1Swenshuai.xi #define ms_debug_debug(fmt, arg...) \ 552*53ee8cc1Swenshuai.xi do {diag_printf(fmt, ##arg);} while(0) 553*53ee8cc1Swenshuai.xi #else 554*53ee8cc1Swenshuai.xi #define ms_debug_debug(fmt, arg...) do {} while (0) 555*53ee8cc1Swenshuai.xi #endif 556*53ee8cc1Swenshuai.xi 557*53ee8cc1Swenshuai.xi #ifdef DBG_WARN 558*53ee8cc1Swenshuai.xi #define ms_debug_warn(fmt, arg...) \ 559*53ee8cc1Swenshuai.xi do {diag_printf(fmt, ##arg);} while(0) 560*53ee8cc1Swenshuai.xi #else 561*53ee8cc1Swenshuai.xi #define ms_debug_warn(fmt, arg...) do {} while (0) 562*53ee8cc1Swenshuai.xi #endif 563*53ee8cc1Swenshuai.xi 564*53ee8cc1Swenshuai.xi #ifdef DBG_ERR 565*53ee8cc1Swenshuai.xi #define ms_debug_err(fmt, arg...) \ 566*53ee8cc1Swenshuai.xi do {diag_printf(fmt, ##arg);} while(0) 567*53ee8cc1Swenshuai.xi #else 568*53ee8cc1Swenshuai.xi #define ms_debug_err(fmt, arg...) do {} while (0) 569*53ee8cc1Swenshuai.xi #endif 570*53ee8cc1Swenshuai.xi 571*53ee8cc1Swenshuai.xi #ifdef DBG_FUNC 572*53ee8cc1Swenshuai.xi #define ms_debug_func(fmt, arg...) \ 573*53ee8cc1Swenshuai.xi do {diag_printf(fmt, ##arg);} while(0) 574*53ee8cc1Swenshuai.xi #else 575*53ee8cc1Swenshuai.xi #define ms_debug_func(fmt, arg...) do {} while (0) 576*53ee8cc1Swenshuai.xi #endif 577*53ee8cc1Swenshuai.xi 578*53ee8cc1Swenshuai.xi #define ms_usbhost_msg ms_debug_msg 579*53ee8cc1Swenshuai.xi #define ms_usbhost_warn ms_debug_warn 580*53ee8cc1Swenshuai.xi #define ms_usbhost_debug ms_debug_debug 581*53ee8cc1Swenshuai.xi #define ms_usbhost_err ms_debug_err 582*53ee8cc1Swenshuai.xi 583*53ee8cc1Swenshuai.xi //------ UTMI disconnect level parameters --------------------------------- 584*53ee8cc1Swenshuai.xi // 0x00: 550mv, 0x20: 575, 0x40: 600, 0x60: 625 585*53ee8cc1Swenshuai.xi #if defined(CHIP_KIWI) || \ 586*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 587*53ee8cc1Swenshuai.xi defined(CHIP_KRATOS) || \ 588*53ee8cc1Swenshuai.xi defined(CHIP_KANO) || \ 589*53ee8cc1Swenshuai.xi defined(CHIP_K6) || \ 590*53ee8cc1Swenshuai.xi defined(CHIP_CURRY) || \ 591*53ee8cc1Swenshuai.xi defined(CHIP_K6LITE) || \ 592*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 593*53ee8cc1Swenshuai.xi #define UTMI_DISCON_LEVEL_2A (0x60) 594*53ee8cc1Swenshuai.xi #else 595*53ee8cc1Swenshuai.xi #define UTMI_DISCON_LEVEL_2A (0x0) 596*53ee8cc1Swenshuai.xi #endif 597*53ee8cc1Swenshuai.xi 598*53ee8cc1Swenshuai.xi //------ UTMI eye diagram parameters --------------------------------- 599*53ee8cc1Swenshuai.xi #if 0 600*53ee8cc1Swenshuai.xi // for 40nm 601*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x98) 602*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 603*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x10) 604*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x01) 605*53ee8cc1Swenshuai.xi #elif 0 606*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting7 607*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x90) 608*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x03) 609*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x30) 610*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 611*53ee8cc1Swenshuai.xi #elif 0 612*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting6 613*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x10) 614*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x03) 615*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x30) 616*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 617*53ee8cc1Swenshuai.xi #elif 0 618*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting5 619*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x90) 620*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 621*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x30) 622*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 623*53ee8cc1Swenshuai.xi #elif 0 624*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting4 625*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x90) 626*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x03) 627*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 628*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 629*53ee8cc1Swenshuai.xi #elif 0 630*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting3 631*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x10) 632*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x03) 633*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 634*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 635*53ee8cc1Swenshuai.xi #elif defined(CHIP_KENYA) || \ 636*53ee8cc1Swenshuai.xi defined(CHIP_KAISER) || \ 637*53ee8cc1Swenshuai.xi defined(CHIP_KELTIC) 638*53ee8cc1Swenshuai.xi #if defined(CHIP_KENYA) 639*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm special setting2 640*53ee8cc1Swenshuai.xi // STB chips only to deal with bad Dev 641*53ee8cc1Swenshuai.xi // - Manufacturer:"HP" Product:"v220w" 642*53ee8cc1Swenshuai.xi // - VID:0x3f0 PID:0x5a07 643*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x90) 644*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 645*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 646*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x01) 647*53ee8cc1Swenshuai.xi #else 648*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting2 649*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x90) 650*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 651*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 652*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 653*53ee8cc1Swenshuai.xi #endif 654*53ee8cc1Swenshuai.xi #else 655*53ee8cc1Swenshuai.xi #if defined(CHIP_KERES) || \ 656*53ee8cc1Swenshuai.xi defined(CHIP_KIRIN) || \ 657*53ee8cc1Swenshuai.xi defined(CHIP_KRIS) || \ 658*53ee8cc1Swenshuai.xi defined(CHIP_KAYLA) || \ 659*53ee8cc1Swenshuai.xi defined(CHIP_KIWI) || \ 660*53ee8cc1Swenshuai.xi defined(CHIP_K5TN) 661*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm special setting1 662*53ee8cc1Swenshuai.xi // STB chips only to deal with bad Dev 663*53ee8cc1Swenshuai.xi // - Manufacturer:"HP" Product:"v220w" 664*53ee8cc1Swenshuai.xi // - VID:0x3f0 PID:0x5a07 665*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x10) 666*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 667*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 668*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x01) 669*53ee8cc1Swenshuai.xi #else 670*53ee8cc1Swenshuai.xi // for 40nm after Agate, use 55nm setting1, the default 671*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2C (0x10) 672*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2D (0x02) 673*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2E (0x00) 674*53ee8cc1Swenshuai.xi #define UTMI_EYE_SETTING_2F (0x81) 675*53ee8cc1Swenshuai.xi #endif 676*53ee8cc1Swenshuai.xi #endif 677*53ee8cc1Swenshuai.xi 678*53ee8cc1Swenshuai.xi #endif 679*53ee8cc1Swenshuai.xi 680