Ticket #1072: hda_ati_nvidia.patch
File hda_ati_nvidia.patch, 2.5 KB (added by , 15 years ago) |
---|
-
src/add-ons/kernel/drivers/audio/hda/hda_controller.cpp
700 700 { 701 701 uint16 capabilities, stateStatus, cmd; 702 702 status_t status; 703 uint8 tcsel ;703 uint8 tcsel, tmpreg; 704 704 705 705 /* Map MMIO registers */ 706 706 controller->regs_area = map_physical_memory("hda_hw_regs", … … 735 735 controller->pci_info.device, controller->pci_info.function, 736 736 PCI_HDA_TCSEL, 1, tcsel & 0xf8); 737 737 738 /* Enable snooping for ATI and Nvidia, right now for all their hda-devices, 739 but only based on guessing. */ 740 switch (controller->pci_info.vendor_id) { 741 /* NVIDIA */ 742 case 0x10de: 743 tmpreg = (gPci->read_pci_config)(controller->pci_info.bus, controller->pci_info.device, 744 controller->pci_info.function, NVIDIA_HDA_TRANSREG_ADDR, 1); 745 (gPci->write_pci_config)(controller->pci_info.bus, controller->pci_info.device, 746 controller->pci_info.function, NVIDIA_HDA_TRANSREG_ADDR, 1, (tmpreg & 0xf8) | NVIDIA_HDA_ENABLE_COHBITS); 747 break; 748 /* ATI */ 749 case 0x1002: 750 tmpreg = (gPci->read_pci_config)(controller->pci_info.bus, controller->pci_info.device, 751 controller->pci_info.function, ATI_HDA_MISC_CNTR2_ADDR, 1); 752 (gPci->write_pci_config)(controller->pci_info.bus, controller->pci_info.device, 753 controller->pci_info.function, ATI_HDA_MISC_CNTR2_ADDR, 1, (tmpreg & 0xf8) | ATI_HDA_ENABLE_SNOOP); 754 break; 755 } 756 738 757 capabilities = controller->Read16(HDAC_GLOBAL_CAP); 739 758 controller->num_input_streams = GLOBAL_CAP_INPUT_STREAMS(capabilities); 740 759 controller->num_output_streams = GLOBAL_CAP_OUTPUT_STREAMS(capabilities); … … 762 781 dprintf("hda: init_corb_rirb_pos failed\n"); 763 782 goto corb_rirb_failed; 764 783 } 765 784 766 785 controller->Write16(HDAC_WAKE_ENABLE, 0x7fff); 767 786 768 787 /* Enable controller interrupts */ -
src/add-ons/kernel/drivers/audio/hda/hda_controller_defs.h
134 134 /* PCI space register definitions */ 135 135 #define PCI_HDA_TCSEL 0x44 136 136 137 #define ATI_HDA_MISC_CNTR2_ADDR 0x42 138 #define ATI_HDA_ENABLE_SNOOP 0x02 139 #define NVIDIA_HDA_TRANSREG_ADDR 0x4e 140 #define NVIDIA_HDA_ENABLE_COHBITS 0x0f 141 142 137 143 typedef uint32 corb_t; 138 144 typedef struct { 139 145 uint32 response;