r300.c (e8cdfb0509f48d44d95d68d4f42d8d71a9ba4acd) | r300.c (d75ee3be44380040b9d2c7925298dc52e049768d) |
---|---|
1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 55 unchanged lines hidden (view full) --- 64 tmp = RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 65 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp | RADEON_PCIE_TX_GART_INVALIDATE_TLB); 66 (void)RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 67 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 68 } 69 mb(); 70} 71 | 1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 55 unchanged lines hidden (view full) --- 64 tmp = RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 65 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp | RADEON_PCIE_TX_GART_INVALIDATE_TLB); 66 (void)RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 67 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 68 } 69 mb(); 70} 71 |
72#define R300_PTE_WRITEABLE (1 << 2) 73#define R300_PTE_READABLE (1 << 3) 74 |
|
72int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr) 73{ 74 void __iomem *ptr = (void *)rdev->gart.table.vram.ptr; 75 76 if (i < 0 || i > rdev->gart.num_gpu_pages) { 77 return -EINVAL; 78 } 79 addr = (lower_32_bits(addr) >> 8) | 80 ((upper_32_bits(addr) & 0xff) << 24) | | 75int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr) 76{ 77 void __iomem *ptr = (void *)rdev->gart.table.vram.ptr; 78 79 if (i < 0 || i > rdev->gart.num_gpu_pages) { 80 return -EINVAL; 81 } 82 addr = (lower_32_bits(addr) >> 8) | 83 ((upper_32_bits(addr) & 0xff) << 24) | |
81 0xc; | 84 R300_PTE_WRITEABLE | R300_PTE_READABLE; |
82 /* on x86 we want this to be CPU endian, on powerpc 83 * on powerpc without HW swappers, it'll get swapped on way 84 * into VRAM - so no need for cpu_to_le32 on VRAM tables */ 85 writel(addr, ((void __iomem *)ptr) + (i * 4)); 86 return 0; 87} 88 89int rv370_pcie_gart_init(struct radeon_device *rdev) --- 40 unchanged lines hidden (view full) --- 130 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0); 131 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0); 132 table_addr = rdev->gart.table_addr; 133 WREG32_PCIE(RADEON_PCIE_TX_GART_BASE, table_addr); 134 /* FIXME: setup default page */ 135 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_start); 136 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_HI, 0); 137 /* Clear error */ | 85 /* on x86 we want this to be CPU endian, on powerpc 86 * on powerpc without HW swappers, it'll get swapped on way 87 * into VRAM - so no need for cpu_to_le32 on VRAM tables */ 88 writel(addr, ((void __iomem *)ptr) + (i * 4)); 89 return 0; 90} 91 92int rv370_pcie_gart_init(struct radeon_device *rdev) --- 40 unchanged lines hidden (view full) --- 133 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0); 134 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0); 135 table_addr = rdev->gart.table_addr; 136 WREG32_PCIE(RADEON_PCIE_TX_GART_BASE, table_addr); 137 /* FIXME: setup default page */ 138 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_start); 139 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_HI, 0); 140 /* Clear error */ |
138 WREG32_PCIE(0x18, 0); | 141 WREG32_PCIE(RADEON_PCIE_TX_GART_ERROR, 0); |
139 tmp = RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 140 tmp |= RADEON_PCIE_TX_GART_EN; 141 tmp |= RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD; 142 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 143 rv370_pcie_gart_tlb_flush(rdev); 144 DRM_INFO("PCIE GART of %uM enabled (table at 0x%08X).\n", 145 (unsigned)(rdev->mc.gtt_size >> 20), table_addr); 146 rdev->gart.ready = true; --- 1369 unchanged lines hidden --- | 142 tmp = RREG32_PCIE(RADEON_PCIE_TX_GART_CNTL); 143 tmp |= RADEON_PCIE_TX_GART_EN; 144 tmp |= RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD; 145 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 146 rv370_pcie_gart_tlb_flush(rdev); 147 DRM_INFO("PCIE GART of %uM enabled (table at 0x%08X).\n", 148 (unsigned)(rdev->mc.gtt_size >> 20), table_addr); 149 rdev->gart.ready = true; --- 1369 unchanged lines hidden --- |