Standardization for PNP ROM loading
This commit is contained in:
@@ -3325,16 +3325,16 @@ sb_16_pnp_init(UNUSED(const device_t *info))
|
|||||||
device_add(&ide_qua_pnp_device);
|
device_add(&ide_qua_pnp_device);
|
||||||
other_ide_present++;
|
other_ide_present++;
|
||||||
|
|
||||||
uint8_t *pnp_rom = NULL;
|
uint8_t *pnp_rom = NULL;
|
||||||
|
FILE *fp = rom_fopen(PNP_ROM_SB_16_PNP, "rb");
|
||||||
FILE *fp = rom_fopen(PNP_ROM_SB_16_PNP, "rb");
|
uint16_t pnp_rom_len = 512;
|
||||||
if (fp) {
|
if (fp) {
|
||||||
if (fread(sb->pnp_rom, 1, 390, fp) == 390)
|
if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
|
||||||
pnp_rom = sb->pnp_rom;
|
pnp_rom = sb->pnp_rom;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
isapnp_add_card(pnp_rom, 390, sb_16_pnp_config_changed,
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed,
|
||||||
NULL, NULL, NULL, sb);
|
NULL, NULL, NULL, sb);
|
||||||
|
|
||||||
sb_dsp_set_real_opl(&sb->dsp, 1);
|
sb_dsp_set_real_opl(&sb->dsp, 1);
|
||||||
@@ -3415,9 +3415,10 @@ sb_vibra16_pnp_init(UNUSED(const device_t *info))
|
|||||||
|
|
||||||
uint8_t *pnp_rom = NULL;
|
uint8_t *pnp_rom = NULL;
|
||||||
if (pnp_rom_file) {
|
if (pnp_rom_file) {
|
||||||
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
||||||
|
uint16_t pnp_rom_len = 512;
|
||||||
if (fp) {
|
if (fp) {
|
||||||
if (fread(sb->pnp_rom, 1, 512, fp) == 512)
|
if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
|
||||||
pnp_rom = sb->pnp_rom;
|
pnp_rom = sb->pnp_rom;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
@@ -3426,7 +3427,7 @@ sb_vibra16_pnp_init(UNUSED(const device_t *info))
|
|||||||
switch (info->local) {
|
switch (info->local) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
isapnp_add_card(pnp_rom, 512, sb_vibra16_pnp_config_changed,
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_vibra16_pnp_config_changed,
|
||||||
NULL, NULL, NULL, sb);
|
NULL, NULL, NULL, sb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -3671,9 +3672,10 @@ sb_awe32_pnp_init(const device_t *info)
|
|||||||
|
|
||||||
uint8_t *pnp_rom = NULL;
|
uint8_t *pnp_rom = NULL;
|
||||||
if (pnp_rom_file) {
|
if (pnp_rom_file) {
|
||||||
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
||||||
|
uint16_t pnp_rom_len = 512;
|
||||||
if (fp) {
|
if (fp) {
|
||||||
if (fread(sb->pnp_rom, 1, 512, fp) == 512)
|
if (fread(sb->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
|
||||||
pnp_rom = sb->pnp_rom;
|
pnp_rom = sb->pnp_rom;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
@@ -3681,21 +3683,25 @@ sb_awe32_pnp_init(const device_t *info)
|
|||||||
|
|
||||||
switch (info->local) {
|
switch (info->local) {
|
||||||
case SB_32_PNP:
|
case SB_32_PNP:
|
||||||
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed, NULL, NULL, NULL, sb);
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_16_pnp_config_changed,
|
||||||
|
NULL, NULL, NULL, sb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SB_AWE32_PNP:
|
case SB_AWE32_PNP:
|
||||||
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe32_pnp_config_changed, NULL, NULL, NULL, sb);
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe32_pnp_config_changed,
|
||||||
|
NULL, NULL, NULL, sb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SB_AWE64_IDE:
|
case SB_AWE64_IDE:
|
||||||
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_ide_config_changed, NULL, NULL, NULL, sb);
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_ide_config_changed,
|
||||||
|
NULL, NULL, NULL, sb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SB_AWE64_VALUE:
|
case SB_AWE64_VALUE:
|
||||||
case SB_AWE64_NOIDE:
|
case SB_AWE64_NOIDE:
|
||||||
case SB_AWE64_GOLD:
|
case SB_AWE64_GOLD:
|
||||||
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_noide_config_changed, NULL, NULL, NULL, sb);
|
isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_pnp_noide_config_changed,
|
||||||
|
NULL, NULL, NULL, sb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -3836,7 +3842,6 @@ static void *
|
|||||||
ess_x688_pnp_init(UNUSED(const device_t *info))
|
ess_x688_pnp_init(UNUSED(const device_t *info))
|
||||||
{
|
{
|
||||||
sb_t *ess = calloc(sizeof(sb_t), 1);
|
sb_t *ess = calloc(sizeof(sb_t), 1);
|
||||||
int len = 512;
|
|
||||||
|
|
||||||
ess->pnp = 1 + (int) info->local;
|
ess->pnp = 1 + (int) info->local;
|
||||||
|
|
||||||
@@ -3869,20 +3874,21 @@ ess_x688_pnp_init(UNUSED(const device_t *info))
|
|||||||
other_ide_present++;
|
other_ide_present++;
|
||||||
|
|
||||||
const char *pnp_rom_file = NULL;
|
const char *pnp_rom_file = NULL;
|
||||||
|
uint16_t pnp_rom_len = 512;
|
||||||
switch (info->local) {
|
switch (info->local) {
|
||||||
case 0:
|
case 0:
|
||||||
pnp_rom_file = PNP_ROM_ESS0100;
|
pnp_rom_file = PNP_ROM_ESS0100;
|
||||||
len = 145;
|
pnp_rom_len = 145;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
pnp_rom_file = PNP_ROM_ESS0102;
|
pnp_rom_file = PNP_ROM_ESS0102;
|
||||||
len = 145;
|
pnp_rom_len = 145;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
pnp_rom_file = PNP_ROM_ESS0968;
|
pnp_rom_file = PNP_ROM_ESS0968;
|
||||||
len = 135;
|
pnp_rom_len = 135;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -3893,13 +3899,13 @@ ess_x688_pnp_init(UNUSED(const device_t *info))
|
|||||||
if (pnp_rom_file) {
|
if (pnp_rom_file) {
|
||||||
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
FILE *fp = rom_fopen(pnp_rom_file, "rb");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
if (fread(ess->pnp_rom, 1, len, fp) == len)
|
if (fread(ess->pnp_rom, 1, pnp_rom_len, fp) == pnp_rom_len)
|
||||||
pnp_rom = ess->pnp_rom;
|
pnp_rom = ess->pnp_rom;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isapnp_add_card(pnp_rom, len, ess_x688_pnp_config_changed,
|
isapnp_add_card(pnp_rom, sizeof(ess->pnp_rom), ess_x688_pnp_config_changed,
|
||||||
NULL, NULL, NULL, ess);
|
NULL, NULL, NULL, ess);
|
||||||
|
|
||||||
sb_dsp_setaddr(&ess->dsp, 0);
|
sb_dsp_setaddr(&ess->dsp, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user