mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-04 03:33:58 +08:00
Merge branch 'drm-next' of ../drm-2.6 into drm-next
This commit is contained in:
commit
4fe9676d1a
@ -578,19 +578,19 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
|
|||||||
indirect1_start = 16;
|
indirect1_start = 16;
|
||||||
/* cp setup */
|
/* cp setup */
|
||||||
WREG32(0x718, pre_write_timer | (pre_write_limit << 28));
|
WREG32(0x718, pre_write_timer | (pre_write_limit << 28));
|
||||||
WREG32(RADEON_CP_RB_CNTL,
|
tmp = (REG_SET(RADEON_RB_BUFSZ, rb_bufsz) |
|
||||||
#ifdef __BIG_ENDIAN
|
|
||||||
RADEON_BUF_SWAP_32BIT |
|
|
||||||
#endif
|
|
||||||
REG_SET(RADEON_RB_BUFSZ, rb_bufsz) |
|
|
||||||
REG_SET(RADEON_RB_BLKSZ, rb_blksz) |
|
REG_SET(RADEON_RB_BLKSZ, rb_blksz) |
|
||||||
REG_SET(RADEON_MAX_FETCH, max_fetch) |
|
REG_SET(RADEON_MAX_FETCH, max_fetch) |
|
||||||
RADEON_RB_NO_UPDATE);
|
RADEON_RB_NO_UPDATE);
|
||||||
|
#ifdef __BIG_ENDIAN
|
||||||
|
tmp |= RADEON_BUF_SWAP_32BIT;
|
||||||
|
#endif
|
||||||
|
WREG32(RADEON_CP_RB_CNTL, tmp);
|
||||||
|
|
||||||
/* Set ring address */
|
/* Set ring address */
|
||||||
DRM_INFO("radeon: ring at 0x%016lX\n", (unsigned long)rdev->cp.gpu_addr);
|
DRM_INFO("radeon: ring at 0x%016lX\n", (unsigned long)rdev->cp.gpu_addr);
|
||||||
WREG32(RADEON_CP_RB_BASE, rdev->cp.gpu_addr);
|
WREG32(RADEON_CP_RB_BASE, rdev->cp.gpu_addr);
|
||||||
/* Force read & write ptr to 0 */
|
/* Force read & write ptr to 0 */
|
||||||
tmp = RREG32(RADEON_CP_RB_CNTL);
|
|
||||||
WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA);
|
WREG32(RADEON_CP_RB_CNTL, tmp | RADEON_RB_RPTR_WR_ENA);
|
||||||
WREG32(RADEON_CP_RB_RPTR_WR, 0);
|
WREG32(RADEON_CP_RB_RPTR_WR, 0);
|
||||||
WREG32(RADEON_CP_RB_WPTR, 0);
|
WREG32(RADEON_CP_RB_WPTR, 0);
|
||||||
|
@ -409,10 +409,9 @@ int r600_mc_init(struct radeon_device *rdev)
|
|||||||
rdev->mc.gtt_location = rdev->mc.mc_vram_size;
|
rdev->mc.gtt_location = rdev->mc.mc_vram_size;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (rdev->family == CHIP_RS780 || rdev->family == CHIP_RS880) {
|
rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
|
||||||
rdev->mc.vram_location = (RREG32(MC_VM_FB_LOCATION) &
|
rdev->mc.vram_location = (RREG32(MC_VM_FB_LOCATION) &
|
||||||
0xFFFF) << 24;
|
0xFFFF) << 24;
|
||||||
rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
|
|
||||||
tmp = rdev->mc.vram_location + rdev->mc.mc_vram_size;
|
tmp = rdev->mc.vram_location + rdev->mc.mc_vram_size;
|
||||||
if ((0xFFFFFFFFUL - tmp) >= rdev->mc.gtt_size) {
|
if ((0xFFFFFFFFUL - tmp) >= rdev->mc.gtt_size) {
|
||||||
/* Enough place after vram */
|
/* Enough place after vram */
|
||||||
@ -433,11 +432,6 @@ int r600_mc_init(struct radeon_device *rdev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
rdev->mc.gtt_location = rdev->mc.mc_vram_size;
|
rdev->mc.gtt_location = rdev->mc.mc_vram_size;
|
||||||
} else {
|
|
||||||
rdev->mc.vram_location = 0x00000000UL;
|
|
||||||
rdev->mc.gtt_location = rdev->mc.mc_vram_size;
|
|
||||||
rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rdev->mc.vram_start = rdev->mc.vram_location;
|
rdev->mc.vram_start = rdev->mc.vram_location;
|
||||||
rdev->mc.vram_end = rdev->mc.vram_location + rdev->mc.mc_vram_size - 1;
|
rdev->mc.vram_end = rdev->mc.vram_location + rdev->mc.mc_vram_size - 1;
|
||||||
@ -1272,19 +1266,17 @@ int r600_cp_resume(struct radeon_device *rdev)
|
|||||||
|
|
||||||
/* Set ring buffer size */
|
/* Set ring buffer size */
|
||||||
rb_bufsz = drm_order(rdev->cp.ring_size / 8);
|
rb_bufsz = drm_order(rdev->cp.ring_size / 8);
|
||||||
|
tmp = RB_NO_UPDATE | (drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz;
|
||||||
#ifdef __BIG_ENDIAN
|
#ifdef __BIG_ENDIAN
|
||||||
WREG32(CP_RB_CNTL, BUF_SWAP_32BIT | RB_NO_UPDATE |
|
tmp |= BUF_SWAP_32BIT;
|
||||||
(drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz);
|
|
||||||
#else
|
|
||||||
WREG32(CP_RB_CNTL, RB_NO_UPDATE | (drm_order(RADEON_GPU_PAGE_SIZE/8) << 8) | rb_bufsz);
|
|
||||||
#endif
|
#endif
|
||||||
|
WREG32(CP_RB_CNTL, tmp);
|
||||||
WREG32(CP_SEM_WAIT_TIMER, 0x4);
|
WREG32(CP_SEM_WAIT_TIMER, 0x4);
|
||||||
|
|
||||||
/* Set the write pointer delay */
|
/* Set the write pointer delay */
|
||||||
WREG32(CP_RB_WPTR_DELAY, 0);
|
WREG32(CP_RB_WPTR_DELAY, 0);
|
||||||
|
|
||||||
/* Initialize the ring buffer's read and write pointers */
|
/* Initialize the ring buffer's read and write pointers */
|
||||||
tmp = RREG32(CP_RB_CNTL);
|
|
||||||
WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
|
WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
|
||||||
WREG32(CP_RB_RPTR_WR, 0);
|
WREG32(CP_RB_RPTR_WR, 0);
|
||||||
WREG32(CP_RB_WPTR, 0);
|
WREG32(CP_RB_WPTR, 0);
|
||||||
|
@ -50,19 +50,16 @@ static bool igp_read_bios_from_vram(struct radeon_device *rdev)
|
|||||||
vram_base = drm_get_resource_start(rdev->ddev, 0);
|
vram_base = drm_get_resource_start(rdev->ddev, 0);
|
||||||
bios = ioremap(vram_base, size);
|
bios = ioremap(vram_base, size);
|
||||||
if (!bios) {
|
if (!bios) {
|
||||||
DRM_ERROR("Unable to mmap vram\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
|
if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
|
||||||
iounmap(bios);
|
iounmap(bios);
|
||||||
DRM_ERROR("bad rom signature\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
rdev->bios = kmalloc(size, GFP_KERNEL);
|
rdev->bios = kmalloc(size, GFP_KERNEL);
|
||||||
if (rdev->bios == NULL) {
|
if (rdev->bios == NULL) {
|
||||||
iounmap(bios);
|
iounmap(bios);
|
||||||
DRM_ERROR("kmalloc failed\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
memcpy(rdev->bios, bios, size);
|
memcpy(rdev->bios, bios, size);
|
||||||
|
@ -295,6 +295,12 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
|
|||||||
if (unlikely(r)) {
|
if (unlikely(r)) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r = ttm_tt_set_placement_caching(bo->ttm, tmp_mem.placement);
|
||||||
|
if (unlikely(r)) {
|
||||||
|
goto out_cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
r = ttm_tt_bind(bo->ttm, &tmp_mem);
|
r = ttm_tt_bind(bo->ttm, &tmp_mem);
|
||||||
if (unlikely(r)) {
|
if (unlikely(r)) {
|
||||||
goto out_cleanup;
|
goto out_cleanup;
|
||||||
|
@ -137,6 +137,8 @@ int rv515_mc_wait_for_idle(struct radeon_device *rdev)
|
|||||||
|
|
||||||
void rv515_vga_render_disable(struct radeon_device *rdev)
|
void rv515_vga_render_disable(struct radeon_device *rdev)
|
||||||
{
|
{
|
||||||
|
WREG32(R_000330_D1VGA_CONTROL, 0);
|
||||||
|
WREG32(R_000338_D2VGA_CONTROL, 0);
|
||||||
WREG32(R_000300_VGA_RENDER_CONTROL,
|
WREG32(R_000300_VGA_RENDER_CONTROL,
|
||||||
RREG32(R_000300_VGA_RENDER_CONTROL) & C_000300_VGA_VSTATUS_CNTL);
|
RREG32(R_000300_VGA_RENDER_CONTROL) & C_000300_VGA_VSTATUS_CNTL);
|
||||||
}
|
}
|
||||||
|
@ -529,11 +529,11 @@ static void rv770_gpu_init(struct radeon_device *rdev)
|
|||||||
if (rdev->family == CHIP_RV770)
|
if (rdev->family == CHIP_RV770)
|
||||||
gb_tiling_config |= BANK_TILING(1);
|
gb_tiling_config |= BANK_TILING(1);
|
||||||
else
|
else
|
||||||
gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_SHIFT) >> NOOFBANK_MASK);
|
gb_tiling_config |= BANK_TILING((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT);
|
||||||
|
|
||||||
gb_tiling_config |= GROUP_SIZE(0);
|
gb_tiling_config |= GROUP_SIZE(0);
|
||||||
|
|
||||||
if (((mc_arb_ramcfg & NOOFROWS_MASK) & NOOFROWS_SHIFT) > 3) {
|
if (((mc_arb_ramcfg & NOOFROWS_MASK) >> NOOFROWS_SHIFT) > 3) {
|
||||||
gb_tiling_config |= ROW_TILING(3);
|
gb_tiling_config |= ROW_TILING(3);
|
||||||
gb_tiling_config |= SAMPLE_SPLIT(3);
|
gb_tiling_config |= SAMPLE_SPLIT(3);
|
||||||
} else {
|
} else {
|
||||||
|
@ -279,6 +279,7 @@ int ttm_tt_set_placement_caching(struct ttm_tt *ttm, uint32_t placement)
|
|||||||
|
|
||||||
return ttm_tt_set_caching(ttm, state);
|
return ttm_tt_set_caching(ttm, state);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(ttm_tt_set_placement_caching);
|
||||||
|
|
||||||
static void ttm_tt_free_alloced_pages(struct ttm_tt *ttm)
|
static void ttm_tt_free_alloced_pages(struct ttm_tt *ttm)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user