Make fwohci works on big endian cpu (e.g., powermac g4).
This commit is contained in:
parent
6fafd0bb60
commit
fe99796a13
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fwohci.c,v 1.21 2001/03/14 06:46:17 onoe Exp $ */
|
||||
/* $NetBSD: fwohci.c,v 1.22 2001/03/15 23:01:33 enami Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -528,6 +528,10 @@ fwohci_hw_init(struct fwohci_softc *sc)
|
|||
|
||||
OHCI_CSR_WRITE(sc, OHCI_REG_HCControlClear,
|
||||
OHCI_HCControl_NoByteSwapData | OHCI_HCControl_APhyEnhanceEnable);
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
OHCI_CSR_WRITE(sc, OHCI_REG_HCControlSet,
|
||||
OHCI_HCControl_NoByteSwapData);
|
||||
#endif
|
||||
|
||||
OHCI_CSR_WRITE(sc, OHCI_REG_IntMaskClear, ~0);
|
||||
OHCI_CSR_WRITE(sc, OHCI_REG_IntMaskSet, OHCI_Int_BusReset |
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fwohcivar.h,v 1.7 2000/12/13 11:30:15 enami Exp $ */
|
||||
/* $NetBSD: fwohcivar.h,v 1.8 2001/03/15 23:03:43 enami Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -161,7 +161,9 @@ int fwohci_print (void *, const char *);
|
|||
|
||||
/* Macros to read and write the OHCI registers
|
||||
*/
|
||||
#define OHCI_CSR_WRITE(sc, reg, val) bus_space_write_4((sc)->sc_memt, (sc)->sc_memh, reg, val)
|
||||
#define OHCI_CSR_READ(sc, reg) bus_space_read_4((sc)->sc_memt, (sc)->sc_memh, reg)
|
||||
#define OHCI_CSR_WRITE(sc, reg, val) \
|
||||
bus_space_write_4((sc)->sc_memt, (sc)->sc_memh, reg, htole32(val))
|
||||
#define OHCI_CSR_READ(sc, reg) \
|
||||
le32toh(bus_space_read_4((sc)->sc_memt, (sc)->sc_memh, reg))
|
||||
|
||||
#endif /* _DEV_IEEE1394_FWOHCIVAR_H_ */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fwohci_pci.c,v 1.7 2001/03/15 22:20:12 enami Exp $ */
|
||||
/* $NetBSD: fwohci_pci.c,v 1.8 2001/03/15 23:01:34 enami Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -114,6 +114,12 @@ fwohci_pci_attach(struct device *parent, struct device *self, void *aux)
|
|||
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_COMMAND_STATUS_REG,
|
||||
csr | PCI_COMMAND_MASTER_ENABLE);
|
||||
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
csr = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_OHCI_CONTROL_REGISTER);
|
||||
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_OHCI_CONTROL_REGISTER,
|
||||
csr | PCI_GLOBAL_SWAP_BE);
|
||||
#endif
|
||||
|
||||
/* Map and establish the interrupt. */
|
||||
if (pci_intr_map(pa, &ih)) {
|
||||
printf("%s: couldn't map interrupt\n", self->dv_xname);
|
||||
|
|
Loading…
Reference in New Issue