Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci fix the fix(es) - don't try to access a BIOS we ...
details: https://anonhg.NetBSD.org/src/rev/0b14a6dedbc2
branches: trunk
changeset: 840207:0b14a6dedbc2
user: macallan <macallan%NetBSD.org@localhost>
date: Wed Mar 27 22:00:33 2019 +0000
description:
fix the fix(es) - don't try to access a BIOS we didn't find.
Now this works on sparc64 again.
diffstat:
sys/dev/pci/radeonfb.c | 27 ++++++++++++---------------
1 files changed, 12 insertions(+), 15 deletions(-)
diffs (76 lines):
diff -r 9a6991f4187a -r 0b14a6dedbc2 sys/dev/pci/radeonfb.c
--- a/sys/dev/pci/radeonfb.c Wed Mar 27 21:14:54 2019 +0000
+++ b/sys/dev/pci/radeonfb.c Wed Mar 27 22:00:33 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: radeonfb.c,v 1.103 2019/03/22 07:41:41 martin Exp $ */
+/* $NetBSD: radeonfb.c,v 1.104 2019/03/27 22:00:33 macallan Exp $ */
/*-
* Copyright (c) 2006 Itronix Inc.
@@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.103 2019/03/22 07:41:41 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.104 2019/03/27 22:00:33 macallan Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -478,6 +478,8 @@
sc->sc_pc = pa->pa_pc;
sc->sc_family = radeonfb_devices[i].family;
sc->sc_flags = radeonfb_devices[i].flags;
+ sc->sc_bios = NULL;
+ sc->sc_biossz = 0;
/* enable memory and IO access */
screg = pci_conf_read(sc->sc_pc, sc->sc_pt, PCI_COMMAND_STATUS_REG);
@@ -1402,9 +1404,6 @@
pci_find_rom(pa, romt, romh, romsz, PCI_ROM_CODE_TYPE_X86, &biosh,
&sc->sc_biossz);
- if (sc->sc_biossz == 0 || sc->sc_bios == NULL)
- return;
-
foundit:
if (sc->sc_biossz > 0) {
sc->sc_bios = malloc(sc->sc_biossz, M_DEVBUF, M_WAITOK);
@@ -1431,15 +1430,13 @@
pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_MAPREG_ROM) &
~PCI_MAPREG_ROM_ENABLE);
- DPRINTF(("BIOS %08x\n", *(uint32_t *)sc->sc_bios));
-
- ptr = GETBIOS16(sc, 0x48);
- if ((GETBIOS32(sc, ptr + 4) == 0x41544f4d /* "ATOM" */) ||
- (GETBIOS32(sc, ptr + 4) == 0x4d4f5441 /* "MOTA" */)) {
- sc->sc_flags |= RFB_ATOM;
- }
-
if (sc->sc_biossz > 0) {
+ ptr = GETBIOS16(sc, 0x48);
+ if ((GETBIOS32(sc, ptr + 4) == 0x41544f4d /* "ATOM" */) ||
+ (GETBIOS32(sc, ptr + 4) == 0x4d4f5441 /* "MOTA" */)) {
+ sc->sc_flags |= RFB_ATOM;
+ }
+
aprint_verbose("%s: Found %d KB %s BIOS\n", XNAME(sc),
(unsigned)sc->sc_biossz >> 10,
IS_ATOM(sc) ? "ATOM" : "Legacy");
@@ -1928,14 +1925,14 @@
sc->sc_ports[0].rp_dac_type = RADEON_DAC_TVDAC;
sc->sc_ports[0].rp_conn_type = RADEON_CONN_DVI_D;
sc->sc_ports[0].rp_tmds_type = RADEON_TMDS_INT;
- sc->sc_ports[0].rp_number = 1;
+ sc->sc_ports[0].rp_number = 0;
sc->sc_ports[1].rp_mon_type = RADEON_MT_UNKNOWN;
sc->sc_ports[1].rp_ddc_type = RADEON_DDC_VGA;
sc->sc_ports[1].rp_dac_type = RADEON_DAC_PRIMARY;
sc->sc_ports[1].rp_conn_type = RADEON_CONN_CRT;
sc->sc_ports[1].rp_tmds_type = RADEON_TMDS_UNKNOWN;
- sc->sc_ports[1].rp_number = 0;
+ sc->sc_ports[1].rp_number = 1;
}
}
Home |
Main Index |
Thread Index |
Old Index