Distinguish O2 Micro bridges from generic bridges. PCI Parity
Error reporting seems to be broken on O2 Micro bridges, so do not activate it. Should fix kern/38698, reported by Andreas Gustafsson.
This commit is contained in:
parent
71f2cf5b71
commit
ea0d0ed51e
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pccbb.c,v 1.168 2008/05/22 01:22:17 dyoung Exp $ */
|
||||
/* $NetBSD: pccbb.c,v 1.169 2008/05/27 21:32:47 dyoung Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998, 1999 and 2000
|
||||
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.168 2008/05/22 01:22:17 dyoung Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.169 2008/05/27 21:32:47 dyoung Exp $");
|
||||
|
||||
/*
|
||||
#define CBB_DEBUG
|
||||
|
@ -362,6 +362,24 @@ const struct yenta_chipinfo {
|
|||
{ MAKEID(PCI_VENDOR_CIRRUS, PCI_PRODUCT_CIRRUS_CL_PD6833),
|
||||
CB_CIRRUS, PCCBB_PCMCIA_MEM_32},
|
||||
|
||||
/* O2 Micro products */
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6729),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6730),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6832),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6836),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6872),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6922),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6933),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
{ MAKEID(PCI_VENDOR_O2MICRO, PCI_PRODUCT_O2MICRO_OZ6972),
|
||||
CB_O2MICRO, PCCBB_PCMCIA_MEM_32},
|
||||
|
||||
/* sentinel, or Generic chip */
|
||||
{ 0 /* null id */ , CB_UNKNOWN, PCCBB_PCMCIA_MEM_32},
|
||||
};
|
||||
|
@ -746,7 +764,15 @@ pccbb_chipinit(struct pccbb_softc *sc)
|
|||
/* I believe it is harmless. */
|
||||
csr |= (PCI_COMMAND_IO_ENABLE | PCI_COMMAND_MEM_ENABLE |
|
||||
PCI_COMMAND_MASTER_ENABLE);
|
||||
csr |= (PCI_COMMAND_PARITY_ENABLE|PCI_COMMAND_SERR_ENABLE);
|
||||
|
||||
/* All O2 Micro chips have broken parity-error reporting
|
||||
* until proven otherwise. The OZ6933 PCI-CardBus Bridge
|
||||
* is known to have the defect---see PR kern/38698.
|
||||
*/
|
||||
if (sc->sc_chipset != CB_O2MICRO)
|
||||
csr |= PCI_COMMAND_PARITY_ENABLE;
|
||||
|
||||
csr |= PCI_COMMAND_SERR_ENABLE;
|
||||
pci_conf_write(pc, tag, PCI_COMMAND_STATUS_REG, csr);
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pccbbvar.h,v 1.33 2008/01/15 21:55:24 christos Exp $ */
|
||||
/* $NetBSD: pccbbvar.h,v 1.34 2008/05/27 21:32:47 dyoung Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1999 HAYAKAWA Koichi. All rights reserved.
|
||||
*
|
||||
|
@ -52,6 +52,7 @@
|
|||
#define CB_CIRRUS 8 /* Cirrus Logic CL-PD683X */
|
||||
#define CB_TI125X 9 /* TI PCI1250/1251(B)/1450 */
|
||||
#define CB_TI1420 10 /* TI PCI1420 */
|
||||
#define CB_O2MICRO 11 /* O2 Micro 67xx/68xx/69xx */
|
||||
|
||||
struct pccbb_softc;
|
||||
struct pccbb_intrhand_list;
|
||||
|
|
Loading…
Reference in New Issue