1*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
2*53ee8cc1Swenshuai.xi //
3*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
4*53ee8cc1Swenshuai.xi // All rights reserved.
5*53ee8cc1Swenshuai.xi //
6*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
7*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
8*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
9*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
10*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
11*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
12*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
13*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
14*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
17*53ee8cc1Swenshuai.xi
18*53ee8cc1Swenshuai.xi #include "../../../drv/usbhost/include/drvGlobal.h"
19*53ee8cc1Swenshuai.xi #include "../../../drv/usbhost/include/_drvUSB.h"
20*53ee8cc1Swenshuai.xi
HAL_USB_GetChipID(void)21*53ee8cc1Swenshuai.xi U16 HAL_USB_GetChipID(void)
22*53ee8cc1Swenshuai.xi {
23*53ee8cc1Swenshuai.xi return CHIPID_MUJI;
24*53ee8cc1Swenshuai.xi }
25*53ee8cc1Swenshuai.xi
HAL_USB_BC_Enable(U8 uPort,BOOLEAN bEnable)26*53ee8cc1Swenshuai.xi void HAL_USB_BC_Enable(U8 uPort, BOOLEAN bEnable)
27*53ee8cc1Swenshuai.xi {
28*53ee8cc1Swenshuai.xi static U8 PortBCStaus[4] = {1, 1, 1, 1}; //Set port BC enabled at first time
29*53ee8cc1Swenshuai.xi U32 utmi_base, bc_base;
30*53ee8cc1Swenshuai.xi
31*53ee8cc1Swenshuai.xi if (uPort == 0)
32*53ee8cc1Swenshuai.xi {
33*53ee8cc1Swenshuai.xi utmi_base = 0x103A80;
34*53ee8cc1Swenshuai.xi bc_base = 0x123600;
35*53ee8cc1Swenshuai.xi }
36*53ee8cc1Swenshuai.xi else if (uPort == 1)
37*53ee8cc1Swenshuai.xi {
38*53ee8cc1Swenshuai.xi utmi_base = 0x103A00;
39*53ee8cc1Swenshuai.xi bc_base = 0x123620;
40*53ee8cc1Swenshuai.xi }
41*53ee8cc1Swenshuai.xi else if (uPort == 2)
42*53ee8cc1Swenshuai.xi {
43*53ee8cc1Swenshuai.xi utmi_base = 0x103900;
44*53ee8cc1Swenshuai.xi bc_base = 0x123640;
45*53ee8cc1Swenshuai.xi }
46*53ee8cc1Swenshuai.xi else if (uPort == 3)
47*53ee8cc1Swenshuai.xi {
48*53ee8cc1Swenshuai.xi utmi_base = 0x122080;
49*53ee8cc1Swenshuai.xi bc_base = 0x123660;
50*53ee8cc1Swenshuai.xi }
51*53ee8cc1Swenshuai.xi else
52*53ee8cc1Swenshuai.xi {
53*53ee8cc1Swenshuai.xi printf("HAL_USB_BC_Enable: invalid port number %d\n", uPort);
54*53ee8cc1Swenshuai.xi return;
55*53ee8cc1Swenshuai.xi }
56*53ee8cc1Swenshuai.xi
57*53ee8cc1Swenshuai.xi if (bEnable)
58*53ee8cc1Swenshuai.xi {
59*53ee8cc1Swenshuai.xi if ( !PortBCStaus[uPort] )
60*53ee8cc1Swenshuai.xi {
61*53ee8cc1Swenshuai.xi printf("USB BC mode enabled\n");
62*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(utmi_base+0x01, ENABLE, 0x40); //IREF_PDN=1��b1. (utmi+0x01[6] )
63*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(bc_base+0x03, ENABLE, 0x40); // [6]= reg_host_bc_en
64*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(bc_base+0x0C, ENABLE, 0x40); // [6]= reg_into_host_bc_sw_tri
65*53ee8cc1Swenshuai.xi MDrv_Write2Byte(bc_base, 0x0); // [15:0] = bc_ctl_ov_en
66*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(bc_base+0x0A, ENABLE, 0x80); // [7]=reg_bc_switch_en
67*53ee8cc1Swenshuai.xi PortBCStaus[uPort] = 1;
68*53ee8cc1Swenshuai.xi }
69*53ee8cc1Swenshuai.xi }
70*53ee8cc1Swenshuai.xi else
71*53ee8cc1Swenshuai.xi {
72*53ee8cc1Swenshuai.xi if ( PortBCStaus[uPort] )
73*53ee8cc1Swenshuai.xi {
74*53ee8cc1Swenshuai.xi printf("USB BC mode disabled\n");
75*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(bc_base+0x0C, DISABLE, 0x40); // [6]= reg_into_host_bc_sw_tri
76*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(bc_base+0x03, DISABLE, 0x40); // [6]= reg_host_bc_en
77*53ee8cc1Swenshuai.xi MDrv_WriteRegBit(utmi_base+0x01, DISABLE, 0x40); //IREF_PDN=1��b1. (utmi+0x01[6] )
78*53ee8cc1Swenshuai.xi PortBCStaus[uPort] = 0;
79*53ee8cc1Swenshuai.xi }
80*53ee8cc1Swenshuai.xi }
81*53ee8cc1Swenshuai.xi }
82*53ee8cc1Swenshuai.xi
83