Lines 119-134
Link Here
|
119 |
* unresolved symbols that are not required. |
119 |
* unresolved symbols that are not required. |
120 |
*/ |
120 |
*/ |
121 |
|
121 |
|
|
|
122 |
typedef enum {AvailableOptions, Probe} SubSymbolIdx; |
123 |
typedef ScrnInfoPtr (*subFunctionPtr)(int); |
124 |
|
122 |
static const char *alpSymbols[] = { |
125 |
static const char *alpSymbols[] = { |
123 |
"AlpAvailableOptions", |
126 |
"AlpAvailableOptions", |
124 |
"AlpProbe", |
127 |
"AlpProbe", |
125 |
NULL |
128 |
NULL |
126 |
}; |
129 |
}; |
|
|
130 |
subFunctionPtr alpRefs[] = { |
131 |
NULL, |
132 |
NULL, |
133 |
NULL |
134 |
}; |
127 |
static const char *lgSymbols[] = { |
135 |
static const char *lgSymbols[] = { |
128 |
"LgAvailableOptions", |
136 |
"LgAvailableOptions", |
129 |
"LgProbe", |
137 |
"LgProbe", |
130 |
NULL |
138 |
NULL |
131 |
}; |
139 |
}; |
|
|
140 |
subFunctionPtr lgRefs[] = { |
141 |
NULL, |
142 |
NULL, |
143 |
NULL |
144 |
}; |
132 |
|
145 |
|
133 |
static const char *vbeSymbols[] = { |
146 |
static const char *vbeSymbols[] = { |
134 |
"VBEInit", |
147 |
"VBEInit", |
Lines 200-212
Link Here
|
200 |
case PCI_CHIP_GD5464BD: |
213 |
case PCI_CHIP_GD5464BD: |
201 |
case PCI_CHIP_GD5465: |
214 |
case PCI_CHIP_GD5465: |
202 |
if (lg_loaded) |
215 |
if (lg_loaded) |
203 |
return LgAvailableOptions(chipid); |
216 |
return (*lgRefs[AvailableOptions])(chipid); |
204 |
else |
217 |
else |
205 |
return NULL; |
218 |
return NULL; |
206 |
|
219 |
|
207 |
default: |
220 |
default: |
208 |
if (alp_loaded) |
221 |
if (alp_loaded) |
209 |
return AlpAvailableOptions(chipid); |
222 |
return (*alpRefs[AvailableOptions])(chipid); |
210 |
else |
223 |
else |
211 |
return NULL; |
224 |
return NULL; |
212 |
} |
225 |
} |
Lines 215-221
Link Here
|
215 |
static Bool |
228 |
static Bool |
216 |
CIRProbe(DriverPtr drv, int flags) |
229 |
CIRProbe(DriverPtr drv, int flags) |
217 |
{ |
230 |
{ |
218 |
int i; |
231 |
int i, symidx; |
219 |
GDevPtr *devSections; |
232 |
GDevPtr *devSections; |
220 |
pciVideoPtr pPci; |
233 |
pciVideoPtr pPci; |
221 |
int *usedChips; |
234 |
int *usedChips; |
Lines 238-249
Link Here
|
238 |
if (!lg_loaded) { |
251 |
if (!lg_loaded) { |
239 |
if (xf86LoadDrvSubModule(drv, "cirrus_laguna")) { |
252 |
if (xf86LoadDrvSubModule(drv, "cirrus_laguna")) { |
240 |
xf86LoaderReqSymLists(lgSymbols, NULL); |
253 |
xf86LoaderReqSymLists(lgSymbols, NULL); |
|
|
254 |
for (symidx=0; lgSymbols[symidx]!=NULL; symidx++) { |
255 |
lgRefs[symidx]=(subFunctionPtr)LoaderSymbol(lgSymbols[symidx]); |
256 |
} |
241 |
lg_loaded = TRUE; |
257 |
lg_loaded = TRUE; |
242 |
} |
258 |
} |
243 |
} |
259 |
} |
244 |
if (!alp_loaded) { |
260 |
if (!alp_loaded) { |
245 |
if (xf86LoadDrvSubModule(drv, "cirrus_alpine")) { |
261 |
if (xf86LoadDrvSubModule(drv, "cirrus_alpine")) { |
246 |
xf86LoaderReqSymLists(alpSymbols, NULL); |
262 |
xf86LoaderReqSymLists(alpSymbols, NULL); |
|
|
263 |
for (symidx=0; alpSymbols[symidx]!=NULL; symidx++) { |
264 |
alpRefs[symidx]=(subFunctionPtr)LoaderSymbol(alpSymbols[symidx]); |
265 |
} |
247 |
alp_loaded = TRUE; |
266 |
alp_loaded = TRUE; |
248 |
} |
267 |
} |
249 |
} |
268 |
} |
Lines 288-304
Link Here
|
288 |
if (!xf86LoadDrvSubModule(drv, "cirrus_laguna")) |
307 |
if (!xf86LoadDrvSubModule(drv, "cirrus_laguna")) |
289 |
continue; |
308 |
continue; |
290 |
xf86LoaderReqSymLists(lgSymbols, NULL); |
309 |
xf86LoaderReqSymLists(lgSymbols, NULL); |
|
|
310 |
for (symidx=0; lgSymbols[symidx]!=NULL; symidx++) { |
311 |
lgRefs[symidx]=(subFunctionPtr)LoaderSymbol(lgSymbols[symidx]); |
312 |
} |
291 |
lg_loaded = TRUE; |
313 |
lg_loaded = TRUE; |
292 |
} |
314 |
} |
293 |
pScrn = LgProbe(usedChips[i]); |
315 |
pScrn = (*lgRefs[Probe])(usedChips[i]); |
294 |
} else { |
316 |
} else { |
295 |
if (!alp_loaded) { |
317 |
if (!alp_loaded) { |
296 |
if (!xf86LoadDrvSubModule(drv, "cirrus_alpine")) |
318 |
if (!xf86LoadDrvSubModule(drv, "cirrus_alpine")) |
297 |
continue; |
319 |
continue; |
298 |
xf86LoaderReqSymLists(alpSymbols, NULL); |
320 |
xf86LoaderReqSymLists(alpSymbols, NULL); |
|
|
321 |
for (symidx=0; alpSymbols[symidx]!=NULL; symidx++) { |
322 |
alpRefs[symidx]=(subFunctionPtr)LoaderSymbol(alpSymbols[symidx]); |
323 |
} |
299 |
alp_loaded = TRUE; |
324 |
alp_loaded = TRUE; |
300 |
} |
325 |
} |
301 |
pScrn = AlpProbe(usedChips[i]); |
326 |
pScrn = (*alpRefs[Probe])(usedChips[i]); |
302 |
} |
327 |
} |
303 |
|
328 |
|
304 |
if (pScrn) { |
329 |
if (pScrn) { |