Merge pull request #6822 from win2kgamer/clgd5428-fix

Cirrus VBIOS fixes part deux
This commit is contained in:
Miran Grča
2026-02-18 04:28:16 +01:00
committed by GitHub
3 changed files with 24 additions and 8 deletions

View File

@@ -384,6 +384,7 @@ extern const device_t gd5424_onboard_device;
extern const device_t gd5426_isa_device;
extern const device_t gd5426_diamond_speedstar_pro_a1_isa_device;
extern const device_t gd5426_vlb_device;
extern const device_t gd5426_onboard_isa_device;
extern const device_t gd5426_onboard_device;
extern const device_t gd5428_isa_device;
extern const device_t gd5428_vlb_onboard_device;

View File

@@ -7779,7 +7779,7 @@ const machine_t machines[] = {
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL, /*Has SIO (sorta): VLSI VL82C113A SCAMP Combination I/O*/
.vid_device = &gd5428_onboard_device,
.vid_device = &gd5426_onboard_isa_device,
.snd_device = NULL,
.net_device = NULL
},

View File

@@ -4317,7 +4317,10 @@ gd54xx_init(const device_t *info)
case CIRRUS_ID_CLGD5426:
if (info->local & 0x200)
romfn = NULL;
if (machines[machine].init == machine_at_vect486vl_init)
romfn = BIOS_GD5428_ISA_PATH;
else
romfn = NULL;
else {
if (info->local & 0x100)
romfn = BIOS_GD5426_DIAMOND_A1_ISA_PATH;
@@ -4334,10 +4337,8 @@ gd54xx_init(const device_t *info)
case CIRRUS_ID_CLGD5428:
if (info->local & 0x200) {
if (machines[machine].init == machine_at_vect486vl_init)
romfn = BIOS_GD5428_ONBOARD_HP_PATH;
else if (machines[machine].init == machine_at_d824_init)
romfn = BIOS_GD5428_ONBOARD_SNI_PATH;
if (machines[machine].init == machine_at_d824_init)
romfn = BIOS_GD5428_ISA_PATH;
else if (machines[machine].init == machine_at_acera1g_init)
romfn = BIOS_GD5428_ONBOARD_ACER_PATH;
else
@@ -4444,7 +4445,7 @@ gd54xx_init(const device_t *info)
if (id <= CIRRUS_ID_CLGD5428) {
if ((id == CIRRUS_ID_CLGD5428) && (info->local & 0x200) && (info->local & 0x1000))
vram = 1024;
else if ((id == CIRRUS_ID_CLGD5426) && (info->local & 0x200))
else if ((id == CIRRUS_ID_CLGD5426) && (info->local & 0x200) && (info->local & 0x1000))
vram = 1024;
else if (id == CIRRUS_ID_CLGD5401)
vram = 256;
@@ -5193,11 +5194,25 @@ const device_t gd5426_vlb_device = {
.config = gd5426_config
};
const device_t gd5426_onboard_isa_device = {
.name = "Cirrus Logic GD5426 (ISA) (On-Board)",
.internal_name = "cl_gd5426_onboard",
.flags = DEVICE_ISA16,
.local = CIRRUS_ID_CLGD5426 | 0x200,
.init = gd54xx_init,
.close = gd54xx_close,
.reset = gd54xx_reset,
.available = gd5428_isa_available,
.speed_changed = gd54xx_speed_changed,
.force_redraw = gd54xx_force_redraw,
.config = gd542x_config
};
const device_t gd5426_onboard_device = {
.name = "Cirrus Logic GD5426 (VLB) (On-Board)",
.internal_name = "cl_gd5426_onboard",
.flags = DEVICE_VLB,
.local = CIRRUS_ID_CLGD5426 | 0x200,
.local = CIRRUS_ID_CLGD5426 | 0x200 | 0x1000,
.init = gd54xx_init,
.close = gd54xx_close,
.reset = gd54xx_reset,