Import upstream u-boot 1.1.4
[u-boot.git] / board / MAI / bios_emulator / scitech / src / v86bios / happy_cards
1 What I had to do to make cards happy:
2
3 1. Tseng ET4000 W32P
4 This card wants to call the original system BIOS video routines.
5 It sets the int 0x42 vector to F000:F065, the entry point to the
6 system bios video routines. 
7 CAVE: don't catch int 0x42 and use the vbios int 0x10 routines. 
8 At early stage during initialization they call int 0x42. This 
9 causes an infinite loop.
10
11 2. ATi Mach64 Rage IIc AGP
12 This card does similar things like the Tseng ET4000 W32P.
13 However it doesn't have the problem with the ininite loop.
14
15 3. Elsa Victory II-A16 AGP Banshee
16 This card is very clever: It knows it is an AGP card. Therefore
17 it knows it is behind a PCI-PCI bridge. It also knows that noone
18 else is behind this bridge. Therefore it start reprogramming the
19 bridge! For this it assumes the AGP bridge is on bus 1.
20
21 4. Elsa Gloria Synergy 8 ViVo AGP PM2
22 This card likes to see a complete interrupt vector table. If
23 we fill this table with 0 the VBIOS detects this and quits 
24 initialization.
25
26 5. Dimond Viper 330 AGP NVIDIA Riva 128.
27 This card has a similar problem like the Elsa Gloria. It wants
28 to read the system BIOS date at 0xffffd.
29
30 6. Matrox Mystique PCI 
31 This card reads the IO port 0x62. If it doesn't like what it sees
32 it loops forever. To keep the card happy put 0xfc into 0xffffe.
33 This location holds the system model id. 0xfc means IBM-AT.
34  One can make an interesting observation: this card likes to know 
35 with whom it has to share the system. Therefore it accesses PCI 
36 config space of all the other cards. It does this bypassing the 
37 PCI BIOS by reading the PCI access ports directly.
38
39 7. Matrox G100 AGP
40 This card has the same problem as the Mystique. 
41
42 Apperantly this works now. However not all combinations of cards are
43 checked, yet.
44
45 Further notes:
46 the IO register 0x42-0x43 as well as 0x61-0x63 are of special interest
47 for many graphic cards. They should be emulated.
48 The so called "Industry Standard BIOS Entry Points" to int 0x42 (0xFF065)
49 and to int 0x1a (0xFFE6E) should be filled with useful code. This code
50 needs to return as if it was called as int.
51 The subvendor ID PCI registers might cause problems. On some chipsets
52 they are programmed in a non-obivous non-PCI conformant way.
53 V_Bioses are seen to modify the following int:
54 0x10 (default video), 0x1f(font table), 0x42(copy of default video), 
55 0x43 (??), 0x6d (copy of default video - same as 0x10?)
56
57 TODO:
58 Int 0x6d needs to be done.
59 All interrupts where there is no default industry standard entry point
60 should point to an unused location in the 0xF000 segmant (possibly 
61 0xF0000). This way they could be trapped. A trap handler for
62 a. int 0x42 and int 0x1a needs to be implemented.
63 The default "industry entry point" for video and PCI (0xFFE6E) should
64 also be implemented. (any others?) They should either be routed to
65 int 0x42(0x6d?) (video) and 0x1A (PCI) or some other interrupts to
66 trap them. Mapping of system bios might not be a good idea. Maybe
67 the system bios area should just be filled with "hlt" to trap any
68 access there.
69 Handling of timer IO registers 0x42, 0x43 and IO registers 0x61, 0x62.
70
71 Find documentation:
72 - on interrupt vector table
73 - on industry standard entry points to the system bios
74 - on IO registers 0x61 and 0x62
75
76