35 nv_debug(bios,
"BIT 'x' table not present\n");
41 if (*ver != 1 || *hdr < 3) {
42 nv_warn(bios,
"BIT 'x' table %d/%d unknown\n", *ver, *hdr);
54 static u8 nv84_sor_map[16] = {
55 0x00, 0x12, 0x22, 0x11, 0x32, 0x31, 0x11, 0x31,
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
59 static u8 nv92_sor_map[16] = {
60 0x00, 0x12, 0x22, 0x11, 0x32, 0x31, 0x11, 0x31,
61 0x11, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
64 static u8 nv94_sor_map[16] = {
65 0x00, 0x14, 0x24, 0x11, 0x34, 0x31, 0x11, 0x31,
66 0x11, 0x31, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00
69 static u8 nv98_sor_map[16] = {
70 0x00, 0x14, 0x12, 0x11, 0x00, 0x31, 0x11, 0x31,
71 0x11, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
79 if (mxm && hdr >= 6) {
80 u16 map = nv_ro16(bios, mxm + 4);
82 ver = nv_ro08(bios, map);
84 if (conn < nv_ro08(bios, map + 3)) {
85 map += nv_ro08(bios, map + 1);
87 return nv_ro08(bios, map);
93 nv_warn(bios,
"unknown sor map v%02x\n", ver);
98 return nv84_sor_map[conn];
100 return nv92_sor_map[conn];
102 return nv94_sor_map[conn];
103 if (bios->
version.chip == 0x98)
104 return nv98_sor_map[conn];
106 nv_warn(bios,
"missing sor map\n");
115 if (mxm && hdr >= 8) {
116 u16 map = nv_ro16(bios, mxm + 6);
118 ver = nv_ro08(bios, map);
120 if (port < nv_ro08(bios, map + 3)) {
121 map += nv_ro08(bios, map + 1);
123 return nv_ro08(bios, map);
129 nv_warn(bios,
"unknown ddc map v%02x\n", ver);
134 return (port << 4) |
port;