linker script: hax :/
[coreboot.git] / src / vendorcode / amd / cimx / sb900 / Ec.c
1
2 /**
3  * @file
4  *
5  * Config Southbridge EC Controller
6  *
7  * Init EC features.
8  *
9  * @xrefitem bom "File Content Label" "Release Content"
10  * @e project:      CIMx-SB
11  * @e sub-project:
12  * @e \$Revision:$   @e \$Date:$
13  *
14  */
15 /*;********************************************************************************
16 ;
17 ; Copyright (c) 2011, Advanced Micro Devices, Inc.
18 ; All rights reserved.
19
20 ; Redistribution and use in source and binary forms, with or without
21 ; modification, are permitted provided that the following conditions are met:
22 ;     * Redistributions of source code must retain the above copyright
23 ;       notice, this list of conditions and the following disclaimer.
24 ;     * Redistributions in binary form must reproduce the above copyright
25 ;       notice, this list of conditions and the following disclaimer in the
26 ;       documentation and/or other materials provided with the distribution.
27 ;     * Neither the name of Advanced Micro Devices, Inc. nor the names of 
28 ;       its contributors may be used to endorse or promote products derived 
29 ;       from this software without specific prior written permission.
30
31 ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
32 ; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
33 ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34 ; DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
35 ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36 ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37 ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
38 ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39 ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40 ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41
42 ;*********************************************************************************/
43
44 #include "SbPlatform.h"
45 #include "cbtypes.h"
46
47 #ifndef NO_EC_SUPPORT
48
49 /**
50  * Config EC controller during power-on
51  *
52  *
53  *
54  * @param[in] pConfig Southbridge configuration structure pointer.
55  *
56  */
57 VOID
58 ecPowerOnInit (
59   IN       AMDSBCFG* pConfig
60   )
61 {
62   //Enable config mode
63   EnterEcConfig ();
64
65   //Do settings for mailbox - logical device 0x09
66   RWEC8 (0x07, 0x00, 0x09);               //switch to device 9 (Mailbox)
67   RWEC8 (0x60, 0x00, (MailBoxPort >> 8));    //set MSB of Mailbox port
68   RWEC8 (0x61, 0x00, (MailBoxPort & 0xFF));  //set LSB of Mailbox port
69   RWEC8 (0x30, 0x00, 0x01);               //;Enable Mailbox Registers Interface, bit0=1
70
71   if ( pConfig->BuildParameters.EcKbd == ENABLED) {
72     //Enable KBRST#, IRQ1 & IRQ12, GateA20 Function signal from IMC
73     RWMEM (ACPI_MMIO_BASE + PMIO_BASE + SB_PMIOA_REGD6, AccWidthUint8, ~BIT8, BIT0 + BIT1 + BIT2 + BIT3);
74
75     //Disable LPC Decoding of port 60/64
76     RWPCI (((LPC_BUS_DEV_FUN << 16) + SB_LPC_REG47), AccWidthUint8 | S3_SAVE, ~BIT5, 0);
77
78     //Enable logical device 0x07 (Keyboard controller)
79     RWEC8 (0x07, 0x00, 0x07);
80     RWEC8 (0x30, 0x00, 0x01);
81   }
82
83   if (isImcEnabled () && ( pConfig->BuildParameters.EcChannel0 == ENABLED)) {
84     //Logical device 0x03
85     RWEC8 (0x07, 0x00, 0x03);
86     RWEC8 (0x60, 0x00, 0x00);
87     RWEC8 (0x61, 0x00, 0x62);
88     RWEC8 (0x30, 0x00, 0x01);            //;Enable Device 3
89   }
90
91   //Enable EC (IMC) to generate SMI to BIOS
92   RWMEM (ACPI_MMIO_BASE + SMI_BASE + SB_SMI_REGB3, AccWidthUint8, ~BIT6, BIT6);
93   ExitEcConfig ();
94 }
95
96 /**
97  * Config EC controller before PCI emulation
98  *
99  *
100  *
101  * @param[in] pConfig Southbridge configuration structure pointer.
102  *
103  */
104 VOID
105 ecInitBeforePciEnum (
106   IN       AMDSBCFG* pConfig
107   )
108 {
109   AMDSBCFG*     pTmp;                                    // dummy code
110   pTmp = pConfig;
111 }
112
113 /**
114  * Prepare EC controller to boot to OS.
115  *
116  *
117  * @param[in] pConfig Southbridge configuration structure pointer.
118  *
119  */
120 VOID
121 ecInitLatePost (
122   IN       AMDSBCFG* pConfig
123   )
124 {
125   AMDSBCFG*     pTmp;                                    // dummy code
126   pTmp = pConfig;
127 }
128 #endif