hrev47758 adds 1 changeset to branch 'master' old head: 49b9fce5ecdc6d109e2e5362981a2ba74c6a9901 new head: 72ec5a3630aa77a763c645e698c18259b8892953 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=72ec5a3+%5E49b9fce ---------------------------------------------------------------------------- 72ec5a3: Use correct PCI register base address for newer Radeon chips * Radeon chips since Bonaire use a different PCI register base address. Select the correct one depending on chipset generation (values from Linux driver). * Makes radeon_hd work for newer APUs/GPUs (tested with Kabini APU). [ Julian Harnath <julian.harnath@xxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev47758 Commit: 72ec5a3630aa77a763c645e698c18259b8892953 URL: http://cgit.haiku-os.org/haiku/commit/?id=72ec5a3 Author: Julian Harnath <julian.harnath@xxxxxxxxxxxxxx> Date: Thu Aug 28 20:16:21 2014 UTC ---------------------------------------------------------------------------- 2 files changed, 13 insertions(+), 3 deletions(-) .../kernel/drivers/graphics/radeon_hd/radeon_hd.cpp | 15 +++++++++++++-- .../drivers/graphics/radeon_hd/radeon_hd_private.h | 1 - ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp index fb444e7..5769b11 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd.cpp @@ -517,6 +517,16 @@ radeon_hd_getbios_avivo(radeon_info &info) } +static uint32 +radeon_hd_pci_bar_mmio(uint16 chipsetID) +{ + if (chipsetID < RADEON_BONAIRE) + return 2; + else + return 5; +} + + status_t radeon_hd_init(radeon_info &info) { @@ -542,9 +552,10 @@ radeon_hd_init(radeon_info &info) // *** Map Memory mapped IO AreaKeeper mmioMapper; + const uint32 pciBarMmio = radeon_hd_pci_bar_mmio(info.chipsetID); info.registers_area = mmioMapper.Map("radeon hd mmio", - info.pci->u.h0.base_registers[PCI_BAR_MMIO], - info.pci->u.h0.base_register_sizes[PCI_BAR_MMIO], + info.pci->u.h0.base_registers[pciBarMmio], + info.pci->u.h0.base_register_sizes[pciBarMmio], B_ANY_KERNEL_ADDRESS, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA, (void**)&info.registers); if (mmioMapper.InitCheck() < B_OK) { diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h index ad9d2ed..c4e3203 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/radeon_hd_private.h @@ -21,7 +21,6 @@ // PCI Base Address Registers #define PCI_BAR_FB 0 -#define PCI_BAR_MMIO 2 #define RADEON_BIOS8(adr, v) (adr[v]) #define RADEON_BIOS16(adr, v) ((adr[v]) | (adr[(v) + 1] << 8))