81b943c285a21ed64335ce34fd37ed3407a2161c
[coreboot.git] / src / mainboard / newisys / khepri / Config.lb
1 uses HAVE_MP_TABLE
2 uses HAVE_PIRQ_TABLE
3 uses USE_FALLBACK_IMAGE
4 uses HAVE_FALLBACK_BOOT
5 uses HAVE_HARD_RESET
6 uses HARD_RESET_BUS
7 uses HARD_RESET_DEVICE
8 uses HARD_RESET_FUNCTION
9 uses IRQ_SLOT_COUNT
10 uses HAVE_OPTION_TABLE
11 uses CONFIG_MAX_CPUS
12 uses CONFIG_IOAPIC
13 uses CONFIG_SMP
14 uses FALLBACK_SIZE
15 uses ROM_SIZE
16 uses ROM_SECTION_SIZE
17 uses ROM_IMAGE_SIZE
18 uses ROM_SECTION_SIZE
19 uses ROM_SECTION_OFFSET
20 uses CONFIG_ROM_STREAM
21 uses CONFIG_ROM_STREAM_START
22 uses PAYLOAD_SIZE
23 uses _ROMBASE
24 uses XIP_ROM_SIZE
25 uses XIP_ROM_BASE
26 uses STACK_SIZE
27 uses HEAP_SIZE
28 uses USE_OPTION_TABLE
29 uses LB_CKS_RANGE_START
30 uses LB_CKS_RANGE_END
31 uses LB_CKS_LOC
32 uses MAINBOARD_PART_NUMBER
33 uses MAINBOARD_VENDOR
34
35
36 ## ROM_SIZE is the size of boot ROM that this board will use.
37 default ROM_SIZE=524288
38
39 ###
40 ### Build options
41 ###
42
43 ##
44 ## Build code for the fallback boot
45 ##
46 default HAVE_FALLBACK_BOOT=1
47
48 ##
49 ## Build code to reset the motherboard from linuxBIOS
50 ##
51 default HAVE_HARD_RESET=1
52
53 default HARD_RESET_BUS=1
54 default HARD_RESET_DEVICE=4
55 default HARD_RESET_FUNCTION=0
56
57 ##
58 ## Build code to export a programmable irq routing table
59 ##
60 default HAVE_PIRQ_TABLE=1
61 default IRQ_SLOT_COUNT=9
62
63 ##
64 ## Build code to export an x86 MP table
65 ## Useful for specifying IRQ routing values
66 ##
67 default HAVE_MP_TABLE=1
68
69 ##
70 ## Build code to export a CMOS option table
71 ##
72 default HAVE_OPTION_TABLE=1
73
74 ##
75 ## Move the default LinuxBIOS cmos range off of AMD RTC registers
76 ##
77 default LB_CKS_RANGE_START=49
78 default LB_CKS_RANGE_END=122
79 default LB_CKS_LOC=123
80
81 ##
82 ## Build code for SMP support
83 ## Only worry about 2 micro processors
84 ##
85 default CONFIG_SMP=1
86 default CONFIG_MAX_CPUS=2
87
88 ##
89 ## Build code to setup a generic IOAPIC
90 ##
91 default CONFIG_IOAPIC=1
92
93 ##
94 ## Clean up the motherboard id strings
95 ##
96 default MAINBOARD_PART_NUMBER="Khepri 2100"
97 default MAINBOARD_VENDOR="Newisys"
98
99 ###
100 ### LinuxBIOS layout values
101 ###
102
103 ## ROM_IMAGE_SIZE is the amount of space to allow linuxBIOS to occupy.
104 default ROM_IMAGE_SIZE = 65536
105
106 ##
107 ## Use a small 8K stack
108 ##
109 default STACK_SIZE=0x2000
110
111 ##
112 ## Use a small 16K heap
113 ##
114 default HEAP_SIZE=0x4000
115
116 ##
117 ## Only use the option table in a normal image
118 ##
119 default USE_OPTION_TABLE = !USE_FALLBACK_IMAGE
120
121 ##
122 ## Compute the location and size of where this firmware image
123 ## (linuxBIOS plus bootloader) will live in the boot rom chip.
124 ##
125 if USE_FALLBACK_IMAGE
126         default ROM_SECTION_SIZE   = FALLBACK_SIZE
127         default ROM_SECTION_OFFSET = ( ROM_SIZE - FALLBACK_SIZE )
128 else
129         default ROM_SECTION_SIZE   = ( ROM_SIZE - FALLBACK_SIZE )
130         default ROM_SECTION_OFFSET = 0
131 end
132
133 ##
134 ## Compute the start location and size size of
135 ## The linuxBIOS bootloader.
136 ##
137 default PAYLOAD_SIZE            = ( ROM_SECTION_SIZE - ROM_IMAGE_SIZE )
138 default CONFIG_ROM_STREAM_START = (0xffffffff - ROM_SIZE + ROM_SECTION_OFFSET + 1)
139 default CONFIG_ROM_STREAM     = 1
140
141 ##
142 ## Compute where this copy of linuxBIOS will start in the boot rom
143 ##
144 default _ROMBASE      = ( CONFIG_ROM_STREAM_START + PAYLOAD_SIZE )
145
146 ##
147 ## Compute a range of ROM that can cached to speed up linuxBIOS,
148 ## execution speed.
149 ##
150 ## XIP_ROM_SIZE must be a power of 2.
151 ## XIP_ROM_BASE must be a multiple of XIP_ROM_SIZE
152 ##
153 default XIP_ROM_SIZE=65536
154 default XIP_ROM_BASE = ( _ROMBASE + ROM_IMAGE_SIZE - XIP_ROM_SIZE )
155
156 ##
157 ## Set all of the defaults for an x86 architecture
158 ##
159
160 arch i386 end
161 #cpu k8 end
162
163 ##
164 ## Build the objects we have code for in this directory.
165 ##
166
167 driver mainboard.o
168 if HAVE_MP_TABLE object mptable.o end
169 if HAVE_PIRQ_TABLE object irq_tables.o end
170
171 dir /drivers/trident/blade3d
172
173 ##
174 ## Romcc output
175 ##
176 makerule ./failover.E
177         depends "$(MAINBOARD)/failover.c" 
178         action "$(CPP) -I$(TOP)/src $(ROMCCPPFLAGS) $(CPPFLAGS) $(MAINBOARD)/failover.c > ./failover.E"
179 end
180
181 makerule ./failover.inc
182         depends "./failover.E ./romcc"
183         action "./romcc -O -o failover.inc --label-prefix=failover ./failover.E"
184 end
185
186 makerule ./auto.E 
187         depends "$(MAINBOARD)/auto.c option_table.h"
188         action  "$(CPP) -I$(TOP)/src -I. $(ROMCCPPFLAGS) $(CPPFLAGS) $(MAINBOARD)/auto.c > ./auto.E"
189 end
190 makerule ./auto.inc 
191         depends "./auto.E ./romcc"
192         action  "./romcc -mcpu=k8 -O2 ./auto.E > auto.inc"
193 end
194
195 ##
196 ## Build our 16 bit and 32 bit linuxBIOS entry code
197 ##
198 mainboardinit cpu/i386/entry16.inc
199 mainboardinit cpu/i386/entry32.inc
200 mainboardinit cpu/i386/bist32.inc
201 ldscript /cpu/i386/entry16.lds
202 ldscript /cpu/i386/entry32.lds
203
204 ##
205 ## Build our reset vector (This is where linuxBIOS is entered)
206 ##
207 if USE_FALLBACK_IMAGE 
208         mainboardinit cpu/i386/reset16.inc 
209         ldscript /cpu/i386/reset16.lds 
210 else
211         mainboardinit cpu/i386/reset32.inc 
212         ldscript /cpu/i386/reset32.lds 
213 end
214
215 ### Should this be in the northbridge code?
216 mainboardinit arch/i386/lib/cpu_reset.inc
217
218 ##
219 ## Include an id string (For safe flashing)
220 ##
221 mainboardinit arch/i386/lib/id.inc
222 ldscript /arch/i386/lib/id.lds
223
224 ##
225 ## Setup our mtrrs
226 ##
227 mainboardinit cpu/k8/earlymtrr.inc
228
229 ###
230 ### This is the early phase of linuxBIOS startup 
231 ### Things are delicate and we test to see if we should
232 ### failover to another image.
233 ###
234 if USE_FALLBACK_IMAGE
235         ldscript /arch/i386/lib/failover.lds 
236         mainboardinit ./failover.inc
237 end
238
239 ###
240 ### O.k. We aren't just an intermediary anymore!
241 ###
242
243 ##
244 ## Setup RAM
245 ##
246 mainboardinit cpu/k8/enable_mmx_sse.inc
247 mainboardinit ./auto.inc
248 mainboardinit cpu/k8/disable_mmx_sse.inc
249
250 ##
251 ## Include the secondary Configuration files 
252 ##
253 dir /pc80
254 config chip.h
255
256 chip northbridge/amd/amdk8
257         device pci_domain 0 on
258                 device pci 18.0 on end # LDT 0 
259                 device pci 18.0 on     # LDT 1
260                         chip southbridge/amd/amd8131
261                                 device pci 0.0 on end
262                                 device pci 0.1 on end
263                                 device pci 1.0 on end
264                                 device pci 1.1 on end
265                         end
266                         chip southbridge/amd/amd8111
267                                 device pci 0.0 on
268                                         device pci 0.0 on end
269                                         device pci 0.1 on end
270                                         device pci 0.2 on end
271                                         device pci 1.0 on end
272                                 end
273                                 device pci 1.0 on
274                                         chip superio/NSC/pc87360
275                                                 device pnp 2e.0 off    # Floppy 
276                                                          io 0x60 = 0x3f0
277                                                         irq 0x70 = 6
278                                                         drq 0x74 = 2
279                                                 end
280                                                 device pnp 2e.1 off     # Parallel Port
281                                                          io 0x60 = 0x378
282                                                         irq 0x70 = 7
283                                                 end
284                                                 device pnp 2e.2 off     # Com 2
285                                                          io 0x60 = 0x2f8
286                                                         irq 0x70 = 3
287                                                 end
288                                                 device pnp 2e.3 on      # Com 1
289                                                          io 0x60 = 0x3f8
290                                                         irq 0x70 = 4
291                                                 end
292                                                 device pnp 2e.4 off end # SWC
293                                                 device pnp 2e.5 off end # Mouse
294                                                 device pnp 2e.6 on      # Keyboard
295                                                          io 0x60 = 0x60
296                                                          io 0x62 = 0x64
297                                                         irq 0x70 = 1
298                                                 end
299                                                 device pnp 2e.7 off end # GPIO
300                                                 device pnp 2e.8 off end # ACB
301                                                 device pnp 2e.9 off end # FSCM
302                                                 device pnp 2e.a off end # WDT  
303
304                                         end
305                                 end
306                                 device pci 1.1 on end
307                                 device pci 1.2 on end
308                                 device pci 1.3 on end 
309                                 device pci 1.5 on end
310                                 device pci 1.6 on end
311                         end
312                 end # LDT1
313                 device pci 18.0 on end # LDT2
314                 device pci 18.1 on end
315                 device pci 18.2 on end
316                 device pci 18.3 on end
317
318                 chip northbridge/amd/amdk8
319                         device pci 19.0 on end
320                         device pci 19.0 on end
321                         device pci 19.0 on end
322                         device pci 19.1 on end
323                         device pci 19.2 on end
324                         device pci 19.3 on end
325                 end
326         end 
327         device apic_cluster 0 on
328                 chip cpu/amd/socket_940
329                         device apic 0 on end
330                 end
331                 chip cpu/amd/socket_940
332                         device apic 1 on end
333                 end
334         end
335 end
336
337 ##
338 ## Include the old serial code for those few places that still need it.
339 ##
340 mainboardinit pc80/serial.inc
341 mainboardinit arch/i386/lib/console.inc
342 mainboardinit cpu/i386/bist32_fail.inc
343