Partial changes and fixup.
[coreboot.git] / src / mainboard / pcengines / alix1c / mainboard.c
1 /*
2  * This file is part of the LinuxBIOS project.
3  *
4  * Copyright (C) 2007 Advanced Micro Devices, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18  */
19
20 #include <console/console.h>
21 #include <device/device.h>
22 #include <device/pci.h>
23 #include <device/pci_ids.h>
24 #include <device/pci_ops.h>
25 #include <arch/io.h>
26 #include <cpu/x86/msr.h>
27 #include <cpu/amd/lxdef.h>
28 #include "../../../southbridge/amd/cs5536/cs5536.h"
29 #include "chip.h"
30
31 /* Print the platform configuration */
32 void print_conf(void) {
33 #if DEFAULT_CONSOLE_LOGLEVEL >= BIOS_ERR
34         int i;
35         unsigned long iol;
36         msr_t msr;
37
38         int cpu_msr_defs[] =  { CPU_BC_L2_CONF, CPU_IM_CONFIG,
39                                                         CPU_DM_CONFIG0,  CPU_RCONF_DEFAULT,
40                                                         CPU_RCONF_BYPASS, CPU_RCONF_A0_BF, CPU_RCONF_C0_DF, CPU_RCONF_E0_FF,
41                                                         CPU_RCONF_SMM, CPU_RCONF_DMM, GLCP_DELAY_CONTROLS, GL_END
42                                                         };
43
44         int gliu0_msr_defs[] = {MSR_GLIU0_BASE1, MSR_GLIU0_BASE2,  MSR_GLIU0_BASE4, MSR_GLIU0_BASE5, MSR_GLIU0_BASE6,
45                                                          GLIU0_P2D_BMO_0, GLIU0_P2D_BMO_1, MSR_GLIU0_SYSMEM,
46                                                          GLIU0_P2D_RO_0, GLIU0_P2D_RO_1, GLIU0_P2D_RO_2, MSR_GLIU0_SHADOW,
47                                                          GLIU0_IOD_BM_0, GLIU0_IOD_BM_1, GLIU0_IOD_BM_2,
48                                                          GLIU0_IOD_SC_0, GLIU0_IOD_SC_1, GLIU0_IOD_SC_2, GLIU0_IOD_SC_3, GLIU0_IOD_SC_4, GLIU0_IOD_SC_5,
49                                                          GLIU0_GLD_MSR_COH, GL_END
50                                                         };
51
52         int gliu1_msr_defs[] = {MSR_GLIU1_BASE1, MSR_GLIU1_BASE2, MSR_GLIU1_BASE3, MSR_GLIU1_BASE4, MSR_GLIU1_BASE5, MSR_GLIU1_BASE6,
53                                                          MSR_GLIU1_BASE7, MSR_GLIU1_BASE8, MSR_GLIU1_BASE9, MSR_GLIU1_BASE10,
54                                                          GLIU1_P2D_R_0, GLIU1_P2D_R_1, GLIU1_P2D_R_2, GLIU1_P2D_R_3, MSR_GLIU1_SHADOW,
55                                                          GLIU1_IOD_BM_0, GLIU1_IOD_BM_1, GLIU1_IOD_BM_2,
56                                                          GLIU1_IOD_SC_0, GLIU1_IOD_SC_1, GLIU1_IOD_SC_2, GLIU1_IOD_SC_3,
57                                                          GLIU1_GLD_MSR_COH, GL_END
58                                                         };
59
60         int rconf_msr[] = { CPU_RCONF0, CPU_RCONF1, CPU_RCONF2, CPU_RCONF3, CPU_RCONF4,
61                                                 CPU_RCONF5, CPU_RCONF6, CPU_RCONF7, GL_END
62                                                         };
63
64         int cs5536_msr[] = { MDD_LBAR_GPIO, MDD_LBAR_FLSH0, MDD_LBAR_FLSH1, MDD_LEG_IO, MDD_PIN_OPT,
65                                                  MDD_IRQM_ZLOW, MDD_IRQM_ZHIGH, MDD_IRQM_PRIM, GL_END
66                                                         };
67
68         int pci_msr[] = { GLPCI_CTRL, GLPCI_ARB, GLPCI_REN, GLPCI_A0_BF, GLPCI_C0_DF, GLPCI_E0_FF,
69                                           GLPCI_RC0, GLPCI_RC1, GLPCI_RC2, GLPCI_RC3, GLPCI_ExtMSR, GLPCI_SPARE,
70                                                  GL_END
71                                                         };
72
73         int dma_msr[] =  { MDD_DMA_MAP, MDD_DMA_SHAD1, MDD_DMA_SHAD2, MDD_DMA_SHAD3, MDD_DMA_SHAD4,
74                                                         MDD_DMA_SHAD5, MDD_DMA_SHAD6, MDD_DMA_SHAD7, MDD_DMA_SHAD8,
75                                                         MDD_DMA_SHAD9, GL_END
76                                                         };
77
78
79         printk_debug("---------- CPU ------------\n");
80
81         for(i = 0; cpu_msr_defs[i] != GL_END; i++) {
82                 msr = rdmsr(cpu_msr_defs[i]);
83                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", cpu_msr_defs[i], msr.hi, msr.lo);
84         }
85
86         printk_debug("---------- GLIU 0 ------------\n");
87
88         for(i = 0; gliu0_msr_defs[i] != GL_END; i++) {
89                 msr = rdmsr(gliu0_msr_defs[i]);
90                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", gliu0_msr_defs[i], msr.hi, msr.lo);
91         }
92
93         printk_debug("---------- GLIU 1 ------------\n");
94
95         for(i = 0; gliu1_msr_defs[i] != GL_END; i++) {
96                 msr = rdmsr(gliu1_msr_defs[i]);
97                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", gliu1_msr_defs[i], msr.hi, msr.lo);
98         }
99
100         printk_debug("---------- RCONF ------------\n");
101
102         for(i = 0; rconf_msr[i] != GL_END; i++) {
103                 msr = rdmsr(rconf_msr[i]);
104                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", rconf_msr[i], msr.hi, msr.lo);
105         }
106
107         printk_debug("---------- VARIA ------------\n");
108         msr = rdmsr(0x51300010);
109         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", 0x51300010, msr.hi, msr.lo);
110
111         msr = rdmsr(0x51400015);
112         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", 0x51400015, msr.hi, msr.lo);
113
114         printk_debug("---------- DIVIL IRQ ------------\n");
115         msr = rdmsr(MDD_IRQM_YLOW);
116         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", MDD_IRQM_YLOW, msr.hi, msr.lo);
117         msr = rdmsr(MDD_IRQM_YHIGH);
118         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", MDD_IRQM_YHIGH, msr.hi, msr.lo);
119         msr = rdmsr(MDD_IRQM_ZLOW);
120         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", MDD_IRQM_ZLOW, msr.hi, msr.lo);
121         msr = rdmsr(MDD_IRQM_ZHIGH);
122         printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", MDD_IRQM_ZHIGH, msr.hi, msr.lo);
123
124
125         printk_debug("---------- PCI ------------\n");
126
127         for(i = 0; pci_msr[i] != GL_END; i++) {
128                 msr = rdmsr(pci_msr[i]);
129                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", pci_msr[i], msr.hi, msr.lo);
130         }
131
132         printk_debug("---------- LPC/UART DMA ------------\n");
133
134         for(i = 0; dma_msr[i] != GL_END; i++) {
135                 msr = rdmsr(dma_msr[i]);
136                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", dma_msr[i], msr.hi, msr.lo);
137         }
138
139         printk_debug("---------- CS5536 ------------\n");
140
141         for(i = 0; cs5536_msr[i] != GL_END; i++) {
142                 msr = rdmsr(cs5536_msr[i]);
143                 printk_debug("MSR 0x%08X is now 0x%08X:0x%08X\n", cs5536_msr[i], msr.hi, msr.lo);
144         }
145
146         iol = inl(GPIOL_INPUT_ENABLE);
147         printk_debug("IOR 0x%08X is now 0x%08X\n", GPIOL_INPUT_ENABLE, iol);
148         iol = inl(GPIOL_EVENTS_ENABLE);
149         printk_debug("IOR 0x%08X is now 0x%08X\n", GPIOL_EVENTS_ENABLE, iol);
150         iol = inl(GPIOL_INPUT_INVERT_ENABLE);
151         printk_debug("IOR 0x%08X is now 0x%08X\n", GPIOL_INPUT_INVERT_ENABLE, iol);
152         iol = inl(GPIO_MAPPER_X);
153         printk_debug("IOR 0x%08X is now 0x%08X\n", GPIO_MAPPER_X, iol);
154 #endif //DEFAULT_CONSOLE_LOGLEVEL >= BIOS_ERR
155 }
156
157 static void init(struct device *dev)
158 {
159         printk_debug("ALIX1C ENTER %s\n", __FUNCTION__);
160         printk_debug("ALIX1C EXIT %s\n", __FUNCTION__);
161 }
162
163 static void enable_dev(struct device *dev)
164 {
165         dev->ops->init = init;
166 }
167
168 struct chip_operations mainboard_pcengines_alix1c_ops = {
169         CHIP_NAME("PC Engines ALIX1.C Mainboard")
170         .enable_dev = enable_dev,
171 };
172