Lines Matching refs:rdev

60 uint32_t rv370_pcie_rreg(struct radeon_device *rdev, uint32_t reg)  in rv370_pcie_rreg()  argument
65 spin_lock_irqsave(&rdev->pcie_idx_lock, flags); in rv370_pcie_rreg()
66 WREG32(RADEON_PCIE_INDEX, ((reg) & rdev->pcie_reg_mask)); in rv370_pcie_rreg()
68 spin_unlock_irqrestore(&rdev->pcie_idx_lock, flags); in rv370_pcie_rreg()
72 void rv370_pcie_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) in rv370_pcie_wreg() argument
76 spin_lock_irqsave(&rdev->pcie_idx_lock, flags); in rv370_pcie_wreg()
77 WREG32(RADEON_PCIE_INDEX, ((reg) & rdev->pcie_reg_mask)); in rv370_pcie_wreg()
79 spin_unlock_irqrestore(&rdev->pcie_idx_lock, flags); in rv370_pcie_wreg()
85 static void rv370_debugfs_pcie_gart_info_init(struct radeon_device *rdev);
87 void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev) in rv370_pcie_gart_tlb_flush() argument
119 void rv370_pcie_gart_set_page(struct radeon_device *rdev, unsigned i, in rv370_pcie_gart_set_page() argument
122 void __iomem *ptr = rdev->gart.ptr; in rv370_pcie_gart_set_page()
130 int rv370_pcie_gart_init(struct radeon_device *rdev) in rv370_pcie_gart_init() argument
134 if (rdev->gart.robj) { in rv370_pcie_gart_init()
139 r = radeon_gart_init(rdev); in rv370_pcie_gart_init()
142 rv370_debugfs_pcie_gart_info_init(rdev); in rv370_pcie_gart_init()
144 rdev->gart.table_size = rdev->gart.num_gpu_pages * 4; in rv370_pcie_gart_init()
145 rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush; in rv370_pcie_gart_init()
146 rdev->asic->gart.get_page_entry = &rv370_pcie_gart_get_page_entry; in rv370_pcie_gart_init()
147 rdev->asic->gart.set_page = &rv370_pcie_gart_set_page; in rv370_pcie_gart_init()
148 return radeon_gart_table_vram_alloc(rdev); in rv370_pcie_gart_init()
151 int rv370_pcie_gart_enable(struct radeon_device *rdev) in rv370_pcie_gart_enable() argument
157 if (rdev->gart.robj == NULL) { in rv370_pcie_gart_enable()
158 dev_err(rdev->dev, "No VRAM object for PCIE GART.\n"); in rv370_pcie_gart_enable()
161 r = radeon_gart_table_vram_pin(rdev); in rv370_pcie_gart_enable()
167 WREG32_PCIE(RADEON_PCIE_TX_GART_START_LO, rdev->mc.gtt_start); in rv370_pcie_gart_enable()
168 tmp = rdev->mc.gtt_end & ~RADEON_GPU_PAGE_MASK; in rv370_pcie_gart_enable()
172 table_addr = rdev->gart.table_addr; in rv370_pcie_gart_enable()
175 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_start); in rv370_pcie_gart_enable()
183 rv370_pcie_gart_tlb_flush(rdev); in rv370_pcie_gart_enable()
185 (unsigned)(rdev->mc.gtt_size >> 20), in rv370_pcie_gart_enable()
187 rdev->gart.ready = true; in rv370_pcie_gart_enable()
191 void rv370_pcie_gart_disable(struct radeon_device *rdev) in rv370_pcie_gart_disable() argument
202 radeon_gart_table_vram_unpin(rdev); in rv370_pcie_gart_disable()
205 void rv370_pcie_gart_fini(struct radeon_device *rdev) in rv370_pcie_gart_fini() argument
207 radeon_gart_fini(rdev); in rv370_pcie_gart_fini()
208 rv370_pcie_gart_disable(rdev); in rv370_pcie_gart_fini()
209 radeon_gart_table_vram_free(rdev); in rv370_pcie_gart_fini()
212 void r300_fence_ring_emit(struct radeon_device *rdev, in r300_fence_ring_emit() argument
215 struct radeon_ring *ring = &rdev->ring[fence->ring]; in r300_fence_ring_emit()
235 radeon_ring_write(ring, rdev->config.r300.hdp_cntl | in r300_fence_ring_emit()
238 radeon_ring_write(ring, rdev->config.r300.hdp_cntl); in r300_fence_ring_emit()
240 radeon_ring_write(ring, PACKET0(rdev->fence_drv[fence->ring].scratch_reg, 0)); in r300_fence_ring_emit()
246 void r300_ring_start(struct radeon_device *rdev, struct radeon_ring *ring) in r300_ring_start() argument
253 switch (rdev->num_gb_pipes) { in r300_ring_start()
269 r = radeon_ring_lock(rdev, ring, 64); in r300_ring_start()
333 radeon_ring_unlock_commit(rdev, ring, false); in r300_ring_start()
336 static void r300_errata(struct radeon_device *rdev) in r300_errata() argument
338 rdev->pll_errata = 0; in r300_errata()
340 if (rdev->family == CHIP_R300 && in r300_errata()
342 rdev->pll_errata |= CHIP_ERRATA_R300_CG; in r300_errata()
346 int r300_mc_wait_for_idle(struct radeon_device *rdev) in r300_mc_wait_for_idle() argument
351 for (i = 0; i < rdev->usec_timeout; i++) { in r300_mc_wait_for_idle()
363 void r300_gpu_init(struct radeon_device *rdev) in r300_gpu_init() argument
367 if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) || in r300_gpu_init()
368 (rdev->family == CHIP_R350 && rdev->pdev->device != 0x4148)) { in r300_gpu_init()
370 rdev->num_gb_pipes = 2; in r300_gpu_init()
373 rdev->num_gb_pipes = 1; in r300_gpu_init()
375 rdev->num_z_pipes = 1; in r300_gpu_init()
377 switch (rdev->num_gb_pipes) { in r300_gpu_init()
394 if (r100_gui_wait_for_idle(rdev)) { in r300_gpu_init()
405 if (r100_gui_wait_for_idle(rdev)) { in r300_gpu_init()
408 if (r300_mc_wait_for_idle(rdev)) { in r300_gpu_init()
412 rdev->num_gb_pipes, rdev->num_z_pipes); in r300_gpu_init()
415 int r300_asic_reset(struct radeon_device *rdev, bool hard) in r300_asic_reset() argument
425 r100_mc_stop(rdev, &save); in r300_asic_reset()
427 dev_info(rdev->dev, "(%s:%d) RBBM_STATUS=0x%08X\n", __func__, __LINE__, status); in r300_asic_reset()
436 pci_save_state(rdev->pdev); in r300_asic_reset()
438 r100_bm_disable(rdev); in r300_asic_reset()
446 dev_info(rdev->dev, "(%s:%d) RBBM_STATUS=0x%08X\n", __func__, __LINE__, status); in r300_asic_reset()
458 dev_info(rdev->dev, "(%s:%d) RBBM_STATUS=0x%08X\n", __func__, __LINE__, status); in r300_asic_reset()
460 pci_restore_state(rdev->pdev); in r300_asic_reset()
461 r100_enable_bm(rdev); in r300_asic_reset()
464 dev_err(rdev->dev, "failed to reset GPU\n"); in r300_asic_reset()
467 dev_info(rdev->dev, "GPU reset succeed\n"); in r300_asic_reset()
468 r100_mc_resume(rdev, &save); in r300_asic_reset()
475 void r300_mc_init(struct radeon_device *rdev) in r300_mc_init() argument
481 rdev->mc.vram_is_ddr = true; in r300_mc_init()
485 case 0: rdev->mc.vram_width = 64; break; in r300_mc_init()
486 case 1: rdev->mc.vram_width = 128; break; in r300_mc_init()
487 case 2: rdev->mc.vram_width = 256; break; in r300_mc_init()
488 default: rdev->mc.vram_width = 128; break; in r300_mc_init()
490 r100_vram_init_sizes(rdev); in r300_mc_init()
491 base = rdev->mc.aper_base; in r300_mc_init()
492 if (rdev->flags & RADEON_IS_IGP) in r300_mc_init()
494 radeon_vram_location(rdev, &rdev->mc, base); in r300_mc_init()
495 rdev->mc.gtt_base_align = 0; in r300_mc_init()
496 if (!(rdev->flags & RADEON_IS_AGP)) in r300_mc_init()
497 radeon_gtt_location(rdev, &rdev->mc); in r300_mc_init()
498 radeon_update_bandwidth_info(rdev); in r300_mc_init()
501 void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes) in rv370_set_pcie_lanes() argument
505 if (rdev->flags & RADEON_IS_IGP) in rv370_set_pcie_lanes()
508 if (!(rdev->flags & RADEON_IS_PCIE)) in rv370_set_pcie_lanes()
560 int rv370_get_pcie_lanes(struct radeon_device *rdev) in rv370_get_pcie_lanes() argument
564 if (rdev->flags & RADEON_IS_IGP) in rv370_get_pcie_lanes()
567 if (!(rdev->flags & RADEON_IS_PCIE)) in rv370_get_pcie_lanes()
594 struct radeon_device *rdev = m->private; in rv370_debugfs_pcie_gart_info_show() local
617 static void rv370_debugfs_pcie_gart_info_init(struct radeon_device *rdev) in rv370_debugfs_pcie_gart_info_init() argument
620 struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; in rv370_debugfs_pcie_gart_info_init()
622 debugfs_create_file("rv370_pcie_gart_info", 0444, root, rdev, in rv370_debugfs_pcie_gart_info_init()
748 if (p->rdev->family < CHIP_RV515) in r300_packet0_check()
755 if (p->rdev->family < CHIP_RV515) { in r300_packet0_check()
764 p->rdev->cmask_filp != p->filp) { in r300_packet0_check()
814 if (p->rdev->family < CHIP_RV515) { in r300_packet0_check()
964 if (p->rdev->family < CHIP_R420) { in r300_packet0_check()
1031 if (p->rdev->family >= CHIP_RV515) { in r300_packet0_check()
1098 if (p->rdev->hyperz_filp != p->filp) { in r300_packet0_check()
1108 if (p->rdev->hyperz_filp != p->filp) { in r300_packet0_check()
1146 if (idx_value && (p->rdev->hyperz_filp != p->filp)) in r300_packet0_check()
1150 if (idx_value && (p->rdev->hyperz_filp != p->filp)) in r300_packet0_check()
1153 if (p->rdev->family >= CHIP_RV350) in r300_packet0_check()
1159 if (p->rdev->family == CHIP_RV530) in r300_packet0_check()
1215 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1230 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1237 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1244 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1251 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1258 r = r100_cs_track_check(p->rdev, track); in r300_packet3_check()
1265 if (p->rdev->hyperz_filp != p->filp) in r300_packet3_check()
1269 if (p->rdev->cmask_filp != p->filp) in r300_packet3_check()
1290 r100_cs_track_clear(p->rdev, track); in r300_cs_parse()
1301 p->rdev->config.r300.reg_safe_bm, in r300_cs_parse()
1302 p->rdev->config.r300.reg_safe_bm_size, in r300_cs_parse()
1321 void r300_set_reg_safe(struct radeon_device *rdev) in r300_set_reg_safe() argument
1323 rdev->config.r300.reg_safe_bm = r300_reg_safe_bm; in r300_set_reg_safe()
1324 rdev->config.r300.reg_safe_bm_size = ARRAY_SIZE(r300_reg_safe_bm); in r300_set_reg_safe()
1327 void r300_mc_program(struct radeon_device *rdev) in r300_mc_program() argument
1331 r100_debugfs_mc_info_init(rdev); in r300_mc_program()
1334 r100_mc_stop(rdev, &save); in r300_mc_program()
1335 if (rdev->flags & RADEON_IS_AGP) { in r300_mc_program()
1337 S_00014C_MC_AGP_START(rdev->mc.gtt_start >> 16) | in r300_mc_program()
1338 S_00014C_MC_AGP_TOP(rdev->mc.gtt_end >> 16)); in r300_mc_program()
1339 WREG32(R_000170_AGP_BASE, lower_32_bits(rdev->mc.agp_base)); in r300_mc_program()
1341 upper_32_bits(rdev->mc.agp_base) & 0xff); in r300_mc_program()
1348 if (r300_mc_wait_for_idle(rdev)) in r300_mc_program()
1352 S_000148_MC_FB_START(rdev->mc.vram_start >> 16) | in r300_mc_program()
1353 S_000148_MC_FB_TOP(rdev->mc.vram_end >> 16)); in r300_mc_program()
1354 r100_mc_resume(rdev, &save); in r300_mc_program()
1357 void r300_clock_startup(struct radeon_device *rdev) in r300_clock_startup() argument
1362 radeon_legacy_set_clock_gating(rdev, 1); in r300_clock_startup()
1366 if ((rdev->family == CHIP_RV350) || (rdev->family == CHIP_RV380)) in r300_clock_startup()
1371 static int r300_startup(struct radeon_device *rdev) in r300_startup() argument
1376 r100_set_common_regs(rdev); in r300_startup()
1378 r300_mc_program(rdev); in r300_startup()
1380 r300_clock_startup(rdev); in r300_startup()
1382 r300_gpu_init(rdev); in r300_startup()
1385 if (rdev->flags & RADEON_IS_PCIE) { in r300_startup()
1386 r = rv370_pcie_gart_enable(rdev); in r300_startup()
1391 if (rdev->family == CHIP_R300 || in r300_startup()
1392 rdev->family == CHIP_R350 || in r300_startup()
1393 rdev->family == CHIP_RV350) in r300_startup()
1394 r100_enable_bm(rdev); in r300_startup()
1396 if (rdev->flags & RADEON_IS_PCI) { in r300_startup()
1397 r = r100_pci_gart_enable(rdev); in r300_startup()
1403 r = radeon_wb_init(rdev); in r300_startup()
1407 r = radeon_fence_driver_start_ring(rdev, RADEON_RING_TYPE_GFX_INDEX); in r300_startup()
1409 dev_err(rdev->dev, "failed initializing CP fences (%d).\n", r); in r300_startup()
1414 if (!rdev->irq.installed) { in r300_startup()
1415 r = radeon_irq_kms_init(rdev); in r300_startup()
1420 r100_irq_set(rdev); in r300_startup()
1421 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); in r300_startup()
1423 r = r100_cp_init(rdev, 1024 * 1024); in r300_startup()
1425 dev_err(rdev->dev, "failed initializing CP (%d).\n", r); in r300_startup()
1429 r = radeon_ib_pool_init(rdev); in r300_startup()
1431 dev_err(rdev->dev, "IB initialization failed (%d).\n", r); in r300_startup()
1438 int r300_resume(struct radeon_device *rdev) in r300_resume() argument
1443 if (rdev->flags & RADEON_IS_PCIE) in r300_resume()
1444 rv370_pcie_gart_disable(rdev); in r300_resume()
1445 if (rdev->flags & RADEON_IS_PCI) in r300_resume()
1446 r100_pci_gart_disable(rdev); in r300_resume()
1448 r300_clock_startup(rdev); in r300_resume()
1450 if (radeon_asic_reset(rdev)) { in r300_resume()
1451 dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n", in r300_resume()
1456 radeon_combios_asic_init(rdev_to_drm(rdev)); in r300_resume()
1458 r300_clock_startup(rdev); in r300_resume()
1460 radeon_surface_init(rdev); in r300_resume()
1462 rdev->accel_working = true; in r300_resume()
1463 r = r300_startup(rdev); in r300_resume()
1465 rdev->accel_working = false; in r300_resume()
1470 int r300_suspend(struct radeon_device *rdev) in r300_suspend() argument
1472 radeon_pm_suspend(rdev); in r300_suspend()
1473 r100_cp_disable(rdev); in r300_suspend()
1474 radeon_wb_disable(rdev); in r300_suspend()
1475 r100_irq_disable(rdev); in r300_suspend()
1476 if (rdev->flags & RADEON_IS_PCIE) in r300_suspend()
1477 rv370_pcie_gart_disable(rdev); in r300_suspend()
1478 if (rdev->flags & RADEON_IS_PCI) in r300_suspend()
1479 r100_pci_gart_disable(rdev); in r300_suspend()
1483 void r300_fini(struct radeon_device *rdev) in r300_fini() argument
1485 radeon_pm_fini(rdev); in r300_fini()
1486 r100_cp_fini(rdev); in r300_fini()
1487 radeon_wb_fini(rdev); in r300_fini()
1488 radeon_ib_pool_fini(rdev); in r300_fini()
1489 radeon_gem_fini(rdev); in r300_fini()
1490 if (rdev->flags & RADEON_IS_PCIE) in r300_fini()
1491 rv370_pcie_gart_fini(rdev); in r300_fini()
1492 if (rdev->flags & RADEON_IS_PCI) in r300_fini()
1493 r100_pci_gart_fini(rdev); in r300_fini()
1494 radeon_agp_fini(rdev); in r300_fini()
1495 radeon_irq_kms_fini(rdev); in r300_fini()
1496 radeon_fence_driver_fini(rdev); in r300_fini()
1497 radeon_bo_fini(rdev); in r300_fini()
1498 radeon_atombios_fini(rdev); in r300_fini()
1499 kfree(rdev->bios); in r300_fini()
1500 rdev->bios = NULL; in r300_fini()
1503 int r300_init(struct radeon_device *rdev) in r300_init() argument
1508 r100_vga_render_disable(rdev); in r300_init()
1510 radeon_scratch_init(rdev); in r300_init()
1512 radeon_surface_init(rdev); in r300_init()
1515 r100_restore_sanity(rdev); in r300_init()
1517 if (!radeon_get_bios(rdev)) { in r300_init()
1518 if (ASIC_IS_AVIVO(rdev)) in r300_init()
1521 if (rdev->is_atom_bios) { in r300_init()
1522 dev_err(rdev->dev, "Expecting combios for RS400/RS480 GPU\n"); in r300_init()
1525 r = radeon_combios_init(rdev); in r300_init()
1530 if (radeon_asic_reset(rdev)) { in r300_init()
1531 dev_warn(rdev->dev, in r300_init()
1537 if (radeon_boot_test_post_card(rdev) == false) in r300_init()
1540 r300_errata(rdev); in r300_init()
1542 radeon_get_clock_info(rdev_to_drm(rdev)); in r300_init()
1544 if (rdev->flags & RADEON_IS_AGP) { in r300_init()
1545 r = radeon_agp_init(rdev); in r300_init()
1547 radeon_agp_disable(rdev); in r300_init()
1551 r300_mc_init(rdev); in r300_init()
1553 radeon_fence_driver_init(rdev); in r300_init()
1555 r = radeon_bo_init(rdev); in r300_init()
1558 if (rdev->flags & RADEON_IS_PCIE) { in r300_init()
1559 r = rv370_pcie_gart_init(rdev); in r300_init()
1563 if (rdev->flags & RADEON_IS_PCI) { in r300_init()
1564 r = r100_pci_gart_init(rdev); in r300_init()
1568 r300_set_reg_safe(rdev); in r300_init()
1571 radeon_pm_init(rdev); in r300_init()
1573 rdev->accel_working = true; in r300_init()
1574 r = r300_startup(rdev); in r300_init()
1577 dev_err(rdev->dev, "Disabling GPU acceleration\n"); in r300_init()
1578 r100_cp_fini(rdev); in r300_init()
1579 radeon_wb_fini(rdev); in r300_init()
1580 radeon_ib_pool_fini(rdev); in r300_init()
1581 radeon_irq_kms_fini(rdev); in r300_init()
1582 if (rdev->flags & RADEON_IS_PCIE) in r300_init()
1583 rv370_pcie_gart_fini(rdev); in r300_init()
1584 if (rdev->flags & RADEON_IS_PCI) in r300_init()
1585 r100_pci_gart_fini(rdev); in r300_init()
1586 radeon_agp_fini(rdev); in r300_init()
1587 rdev->accel_working = false; in r300_init()