diff --git a/src/add-ons/kernel/bus_managers/firewire/fwohci.c b/src/add-ons/kernel/bus_managers/firewire/fwohci.c index 5e345d5a7b..8dc26f137c 100644 --- a/src/add-ons/kernel/bus_managers/firewire/fwohci.c +++ b/src/add-ons/kernel/bus_managers/firewire/fwohci.c @@ -412,7 +412,7 @@ fwohci_probe_phy(struct fwohci_softc *sc) * number of port supported by core-logic. * It is not actually available port on your PC . */ - OWRITE(sc, OHCI_HCCCTL, OHCI_HCC_LPS); + OWRITE(sc, OHCI_HCCCTL, OHCI_HCC_LPS | OHCI_HCC_POSTWR); DELAY(500); reg = fwphy_rddata(sc, FW_PHY_SPD_REG); @@ -706,10 +706,10 @@ fwohci_init(struct fwohci_softc *sc) sc->sid_buf = sc->sid_dma.v_addr = buf_virt; sc->sid_dma.bus_addr = (bus_addr_t)buf_phy; sc->fc.config_rom = sc->crom_dma.v_addr = buf_virt + OHCI_SIDSIZE; - sc->crom_dma.bus_addr = (bus_addr_t)((char *)buf_phy + OHCI_SIDSIZE); - sc->dummy_dma.v_addr = (char *)buf_virt + OHCI_SIDSIZE + sizeof(uint32_t); - sc->dummy_dma.bus_addr = (bus_addr_t)((char *)buf_phy + - OHCI_SIDSIZE + sizeof(uint32_t)); + sc->crom_dma.bus_addr = (bus_addr_t)(buf_phy + OHCI_SIDSIZE); + sc->dummy_dma.v_addr = buf_virt + OHCI_SIDSIZE + CROMSIZE; + sc->dummy_dma.bus_addr = (bus_addr_t)(buf_phy + + OHCI_SIDSIZE + CROMSIZE); fwohci_db_init(sc, &sc->arrq); if ((sc->arrq.flags & FWOHCI_DBCH_INIT) == 0) diff --git a/src/add-ons/kernel/bus_managers/firewire/fwohci_pci.c b/src/add-ons/kernel/bus_managers/firewire/fwohci_pci.c index 79dfd31f2a..259bbb4085 100644 --- a/src/add-ons/kernel/bus_managers/firewire/fwohci_pci.c +++ b/src/add-ons/kernel/bus_managers/firewire/fwohci_pci.c @@ -57,10 +57,13 @@ #include "fwohcireg.h" #include "fwohcivar.h" +#define PCIM_CMD_IOS 0x0001 #define PCIM_CMD_MEMEN 0x0002 #define PCIM_CMD_BUSMASTEREN 0x0004 #define PCIM_CMD_MWRICEN 0x0010 -#define PCIM_CMD_IOS 0x0001 +#define PCIM_CMD_PERRESPEN 0x0040 +#define PCIM_CMD_SERRESPEN 0x0100 + extern pci_module_info *gPci; extern pci_info *pciInfo[MAX_CARDS]; extern fwohci_softc_t *gFwohci_softc[MAX_CARDS]; @@ -149,6 +152,7 @@ fwohci_pci_attach(int index) #if 1 /* for broken hardware */ val &= ~PCIM_CMD_MWRICEN; + val &= ~(PCIM_CMD_SERRESPEN | PCIM_CMD_PERRESPEN); #endif gPci->write_pci_config(info->bus, info->device, info->function, PCI_command, 2, val);