您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DRM_UDELAY函数代码示例

51自学网 2021-06-01 20:23:47
  C++
这篇教程C++ DRM_UDELAY函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DRM_UDELAY函数的典型用法代码示例。如果您正苦于以下问题:C++ DRM_UDELAY函数的具体用法?C++ DRM_UDELAY怎么用?C++ DRM_UDELAY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DRM_UDELAY函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: radeon_do_pixcache_flush

static int radeon_do_pixcache_flush(drm_radeon_private_t * dev_priv){	u32 tmp;	int i;	dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE;	if ((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV280) {		tmp = RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT);		tmp |= RADEON_RB3D_DC_FLUSH_ALL;		RADEON_WRITE(RADEON_RB3D_DSTCACHE_CTLSTAT, tmp);		for (i = 0; i < dev_priv->usec_timeout; i++) {			if (!(RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT)			      & RADEON_RB3D_DC_BUSY)) {				return 0;			}			DRM_UDELAY(1);		}	} else {		/* don't flush or purge cache here or lockup */		return 0;	}#if RADEON_FIFO_DEBUG	DRM_ERROR("failed!/n");	radeon_status(dev_priv);#endif	return -EBUSY;}
开发者ID:LouZiffer,项目名称:m900_kernel_cupcake-SDX,代码行数:30,


示例2: uvd_v1_0_ring_test

/** * uvd_v1_0_ring_test - register write test * * @rdev: radeon_device pointer * @ring: radeon_ring pointer * * Test if we can successfully write to the context register */int uvd_v1_0_ring_test(struct radeon_device *rdev, struct radeon_ring *ring){	uint32_t tmp = 0;	unsigned i;	int r;	WREG32(UVD_CONTEXT_ID, 0xCAFEDEAD);	r = radeon_ring_lock(rdev, ring, 3);	if (r) {		DRM_ERROR("radeon: cp failed to lock ring %d (%d)./n",			  ring->idx, r);		return r;	}	radeon_ring_write(ring, PACKET0(UVD_CONTEXT_ID, 0));	radeon_ring_write(ring, 0xDEADBEEF);	radeon_ring_unlock_commit(rdev, ring);	for (i = 0; i < rdev->usec_timeout; i++) {		tmp = RREG32(UVD_CONTEXT_ID);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {		DRM_INFO("ring test on %d succeeded in %d usecs/n",			 ring->idx, i);	} else {		DRM_ERROR("radeon: ring %d test failed (0x%08X)/n",			  ring->idx, tmp);		r = -EINVAL;	}	return r;}
开发者ID:stevenvo,项目名称:cs500-build-rpi,代码行数:41,


示例3: radeon_vce_ring_test

/** * radeon_vce_ring_test - test if VCE ring is working * * @rdev: radeon_device pointer * @ring: the engine to test on * */int radeon_vce_ring_test(struct radeon_device *rdev, struct radeon_ring *ring){	uint32_t rptr = vce_v1_0_get_rptr(rdev, ring);	unsigned i;	int r;	r = radeon_ring_lock(rdev, ring, 16);	if (r) {		DRM_ERROR("radeon: vce failed to lock ring %d (%d)./n",			  ring->idx, r);		return r;	}	radeon_ring_write(ring, VCE_CMD_END);	radeon_ring_unlock_commit(rdev, ring);	for (i = 0; i < rdev->usec_timeout; i++) {	        if (vce_v1_0_get_rptr(rdev, ring) != rptr)	                break;	        DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {	        DRM_INFO("ring test on %d succeeded in %d usecs/n",	                 ring->idx, i);	} else {	        DRM_ERROR("radeon: ring %d test failed/n",	                  ring->idx);	        r = -ETIMEDOUT;	}	return r;}
开发者ID:GREEN-SI,项目名称:linux,代码行数:39,


示例4: nv50_dma_push_wait

static intnv50_dma_push_wait(struct nouveau_channel *chan, int count){	uint32_t cnt = 0, prev_get = 0;	while (chan->dma.ib_free < count) {		uint32_t get = nvif_rd32(&chan->user, 0x88);		if (get != prev_get) {			prev_get = get;			cnt = 0;		}		if ((++cnt & 0xff) == 0) {			DRM_UDELAY(1);			if (cnt > 100000)				return -EBUSY;		}		chan->dma.ib_free = get - chan->dma.ib_put;		if (chan->dma.ib_free <= 0)			chan->dma.ib_free += chan->dma.ib_max;	}	return 0;}
开发者ID:Lyude,项目名称:linux,代码行数:25,


示例5: uvd_v6_0_ring_test_ring

/** * uvd_v6_0_ring_test_ring - register write test * * @ring: amdgpu_ring pointer * * Test if we can successfully write to the context register */static int uvd_v6_0_ring_test_ring(struct amdgpu_ring *ring){	struct amdgpu_device *adev = ring->adev;	uint32_t tmp = 0;	unsigned i;	int r;	WREG32(mmUVD_CONTEXT_ID, 0xCAFEDEAD);	r = amdgpu_ring_alloc(ring, 3);	if (r)		return r;	amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0));	amdgpu_ring_write(ring, 0xDEADBEEF);	amdgpu_ring_commit(ring);	for (i = 0; i < adev->usec_timeout; i++) {		tmp = RREG32(mmUVD_CONTEXT_ID);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i >= adev->usec_timeout)		r = -ETIMEDOUT;	return r;}
开发者ID:Anjali05,项目名称:linux,代码行数:34,


示例6: radeon_dp_aux_native_read

static int radeon_dp_aux_native_read(struct radeon_connector *radeon_connector,				     u16 address, u8 *recv, int recv_bytes, u8 delay){	struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv;	u8 msg[4];	int msg_bytes = 4;	u8 ack;	int ret;	unsigned retry;	msg[0] = address;	msg[1] = address >> 8;	msg[2] = AUX_NATIVE_READ << 4;	msg[3] = (msg_bytes << 4) | (recv_bytes - 1);	for (retry = 0; retry < 4; retry++) {		ret = radeon_process_aux_ch(dig_connector->dp_i2c_bus,					    msg, msg_bytes, recv, recv_bytes, delay, &ack);		if (ret == -EBUSY)			continue;		else if (ret < 0)			return ret;		if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK)			return ret;		else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER)			DRM_UDELAY(400);		else if (ret == 0)			return -EPROTO;		else			return -EIO;	}	return -EIO;}
开发者ID:JabirTech,项目名称:Source,代码行数:34,


示例7: savage_bci_wait_fifo_shadow

static intsavage_bci_wait_fifo_shadow(drm_savage_private_t * dev_priv, unsigned int n){	uint32_t mask = dev_priv->status_used_mask;	uint32_t threshold = dev_priv->bci_threshold_hi;	uint32_t status;	int i;#if SAVAGE_BCI_DEBUG	if (n > dev_priv->cob_size + SAVAGE_BCI_FIFO_SIZE - threshold)		DRM_ERROR("Trying to emit %d words "			  "(more than guaranteed space in COB)/n", n);#endif	for (i = 0; i < SAVAGE_DEFAULT_USEC_TIMEOUT; i++) {		DRM_MEMORYBARRIER();		status = dev_priv->status_ptr[0];		if ((status & mask) < threshold)			return 0;		DRM_UDELAY(1);	}#if SAVAGE_BCI_DEBUG	DRM_ERROR("failed!/n");	DRM_INFO("   status=0x%08x, threshold=0x%08x/n", status, threshold);#endif	return -EBUSY;}
开发者ID:1111saeid,项目名称:jb_kernel_3.0.16_htc_golfu,代码行数:28,


示例8: radeon_do_wait_for_idle

static int radeon_do_wait_for_idle(drm_radeon_private_t * dev_priv){	int i, ret;	dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE;	ret = radeon_do_wait_for_fifo(dev_priv, 64);	if (ret)		return ret;	for (i = 0; i < dev_priv->usec_timeout; i++) {		if (!(RADEON_READ(RADEON_RBBM_STATUS)		      & RADEON_RBBM_ACTIVE)) {			radeon_do_pixcache_flush(dev_priv);			return 0;		}		DRM_UDELAY(1);	}	DRM_DEBUG("wait idle failed status : 0x%08X 0x%08X/n",		 RADEON_READ(RADEON_RBBM_STATUS),		 RADEON_READ(R300_VAP_CNTL_STATUS));#if RADEON_FIFO_DEBUG	DRM_ERROR("failed!/n");	radeon_status(dev_priv);#endif	return -EBUSY;}
开发者ID:LouZiffer,项目名称:m900_kernel_cupcake-SDX,代码行数:28,


示例9: uvd_v6_0_ring_test_ring

/** * uvd_v6_0_ring_test_ring - register write test * * @ring: amdgpu_ring pointer * * Test if we can successfully write to the context register */static int uvd_v6_0_ring_test_ring(struct amdgpu_ring *ring){	struct amdgpu_device *adev = ring->adev;	uint32_t tmp = 0;	unsigned i;	int r;	WREG32(mmUVD_CONTEXT_ID, 0xCAFEDEAD);	r = amdgpu_ring_alloc(ring, 3);	if (r) {		DRM_ERROR("amdgpu: cp failed to lock ring %d (%d)./n",			  ring->idx, r);		return r;	}	amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0));	amdgpu_ring_write(ring, 0xDEADBEEF);	amdgpu_ring_commit(ring);	for (i = 0; i < adev->usec_timeout; i++) {		tmp = RREG32(mmUVD_CONTEXT_ID);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < adev->usec_timeout) {		DRM_INFO("ring test on %d succeeded in %d usecs/n",			 ring->idx, i);	} else {		DRM_ERROR("amdgpu: ring %d test failed (0x%08X)/n",			  ring->idx, tmp);		r = -EINVAL;	}	return r;}
开发者ID:acton393,项目名称:linux,代码行数:41,


示例10: cik_sdma_ib_test

/** * cik_sdma_ib_test - test an IB on the DMA engine * * @rdev: radeon_device pointer * @ring: radeon_ring structure holding ring information * * Test a simple IB in the DMA ring (CIK). * Returns 0 on success, error on failure. */int cik_sdma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring){	struct radeon_ib ib;	unsigned i;	unsigned index;	int r;	u32 tmp = 0;	u64 gpu_addr;	if (ring->idx == R600_RING_TYPE_DMA_INDEX)		index = R600_WB_DMA_RING_TEST_OFFSET;	else		index = CAYMAN_WB_DMA1_RING_TEST_OFFSET;	gpu_addr = rdev->wb.gpu_addr + index;	tmp = 0xCAFEDEAD;	rdev->wb.wb[index/4] = cpu_to_le32(tmp);	r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256);	if (r) {		DRM_ERROR("radeon: failed to get ib (%d)./n", r);		return r;	}	ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0);	ib.ptr[1] = lower_32_bits(gpu_addr);	ib.ptr[2] = upper_32_bits(gpu_addr);	ib.ptr[3] = 1;	ib.ptr[4] = 0xDEADBEEF;	ib.length_dw = 5;	r = radeon_ib_schedule(rdev, &ib, NULL, false);	if (r) {		radeon_ib_free(rdev, &ib);		DRM_ERROR("radeon: failed to schedule ib (%d)./n", r);		return r;	}	r = radeon_fence_wait(ib.fence, false);	if (r) {		DRM_ERROR("radeon: fence wait failed (%d)./n", r);		return r;	}	for (i = 0; i < rdev->usec_timeout; i++) {		tmp = le32_to_cpu(rdev->wb.wb[index/4]);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {		DRM_INFO("ib test on ring %d succeeded in %u usecs/n", ib.fence->ring, i);	} else {		DRM_ERROR("radeon: ib test failed (0x%08X)/n", tmp);		r = -EINVAL;	}	radeon_ib_free(rdev, &ib);	return r;}
开发者ID:Amitabha2001,项目名称:linux,代码行数:67,


示例11: nouveau_fbcon_sync

static intnouveau_fbcon_sync(struct fb_info *info){	struct nouveau_fbdev *nfbdev = info->par;	struct drm_device *dev = nfbdev->dev;	struct drm_nouveau_private *dev_priv = dev->dev_private;	struct nouveau_channel *chan = dev_priv->channel;	int ret, i;	if (!chan || !chan->accel_done || in_interrupt() ||	    info->state != FBINFO_STATE_RUNNING ||	    info->flags & FBINFO_HWACCEL_DISABLED)		return 0;	if (!mutex_trylock(&chan->mutex))		return 0;	ret = RING_SPACE(chan, 4);	if (ret) {		mutex_unlock(&chan->mutex);		nouveau_fbcon_gpu_lockup(info);		return 0;	}	if (dev_priv->card_type >= NV_C0) {		BEGIN_NVC0(chan, 2, NvSub2D, 0x010c, 1);		OUT_RING  (chan, 0);		BEGIN_NVC0(chan, 2, NvSub2D, 0x0100, 1);		OUT_RING  (chan, 0);	} else {		BEGIN_RING(chan, 0, 0x0104, 1);		OUT_RING  (chan, 0);		BEGIN_RING(chan, 0, 0x0100, 1);		OUT_RING  (chan, 0);	}	nouveau_bo_wr32(chan->notifier_bo, chan->m2mf_ntfy/4 + 3, 0xffffffff);	FIRE_RING(chan);	mutex_unlock(&chan->mutex);	ret = -EBUSY;	for (i = 0; i < 100000; i++) {		if (!nouveau_bo_rd32(chan->notifier_bo, chan->m2mf_ntfy/4 + 3)) {			ret = 0;			break;		}		DRM_UDELAY(1);	}	if (ret) {		nouveau_fbcon_gpu_lockup(info);		return 0;	}	chan->accel_done = false;	return 0;}
开发者ID:125radheyshyam,项目名称:linux,代码行数:57,


示例12: mga_do_dma_flush

void mga_do_dma_flush( drm_mga_private_t *dev_priv ){	drm_mga_primary_buffer_t *primary = &dev_priv->prim;	u32 head, tail;	u32 status = 0;	int i; 	DMA_LOCALS;	DRM_DEBUG( "/n" );        /* We need to wait so that we can do an safe flush */	for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {		status = MGA_READ( MGA_STATUS ) & MGA_ENGINE_IDLE_MASK;		if ( status == MGA_ENDPRDMASTS ) break;		DRM_UDELAY( 1 );	}	if ( primary->tail == primary->last_flush ) {		DRM_DEBUG( "   bailing out.../n" );		return;	}	tail = primary->tail + dev_priv->primary->offset;	/* We need to pad the stream between flushes, as the card	 * actually (partially?) reads the first of these commands.	 * See page 4-16 in the G400 manual, middle of the page or so.	 */	BEGIN_DMA( 1 );	DMA_BLOCK( MGA_DMAPAD,  0x00000000,		   MGA_DMAPAD,  0x00000000,		   MGA_DMAPAD,  0x00000000,		   MGA_DMAPAD,	0x00000000 );	ADVANCE_DMA();	primary->last_flush = primary->tail;	head = MGA_READ( MGA_PRIMADDRESS );	if ( head <= tail ) {		primary->space = primary->size - primary->tail;	} else {		primary->space = head - tail;	}	DRM_DEBUG( "   head = 0x%06lx/n", head - dev_priv->primary->offset );	DRM_DEBUG( "   tail = 0x%06lx/n", tail - dev_priv->primary->offset );	DRM_DEBUG( "  space = 0x%06x/n", primary->space );	mga_flush_write_combine();	MGA_WRITE( MGA_PRIMEND, tail | MGA_PAGPXFER );	DRM_DEBUG( "done./n" );}
开发者ID:aosm,项目名称:X11,代码行数:55,


示例13: cik_sdma_ib_test

/** * cik_sdma_ib_test - test an IB on the DMA engine * * @rdev: radeon_device pointer * @ring: radeon_ring structure holding ring information * * Test a simple IB in the DMA ring (CIK). * Returns 0 on success, error on failure. */int cik_sdma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring){	struct radeon_ib ib;	unsigned i;	int r;	void __iomem *ptr = (void *)rdev->vram_scratch.ptr;	u32 tmp = 0;	if (!ptr) {		DRM_ERROR("invalid vram scratch pointer/n");		return -EINVAL;	}	tmp = 0xCAFEDEAD;	writel(tmp, ptr);	r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256);	if (r) {		DRM_ERROR("radeon: failed to get ib (%d)./n", r);		return r;	}	ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0);	ib.ptr[1] = rdev->vram_scratch.gpu_addr & 0xfffffffc;	ib.ptr[2] = upper_32_bits(rdev->vram_scratch.gpu_addr);	ib.ptr[3] = 1;	ib.ptr[4] = 0xDEADBEEF;	ib.length_dw = 5;	r = radeon_ib_schedule(rdev, &ib, NULL);	if (r) {		radeon_ib_free(rdev, &ib);		DRM_ERROR("radeon: failed to schedule ib (%d)./n", r);		return r;	}	r = radeon_fence_wait(ib.fence, false);	if (r) {		DRM_ERROR("radeon: fence wait failed (%d)./n", r);		return r;	}	for (i = 0; i < rdev->usec_timeout; i++) {		tmp = readl(ptr);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {		DRM_INFO("ib test on ring %d succeeded in %u usecs/n", ib.fence->ring, i);	} else {		DRM_ERROR("radeon: ib test failed (0x%08X)/n", tmp);		r = -EINVAL;	}	radeon_ib_free(rdev, &ib);	return r;}
开发者ID:AkyZero,项目名称:wrapfs-latest,代码行数:64,


示例14: cik_sdma_ring_test_ring

/** * cik_sdma_ring_test_ring - simple async dma engine test * * @ring: amdgpu_ring structure holding ring information * * Test the DMA engine by writing using it to write an * value to memory. (CIK). * Returns 0 for success, error for failure. */static int cik_sdma_ring_test_ring(struct amdgpu_ring *ring){	struct amdgpu_device *adev = ring->adev;	unsigned i;	unsigned index;	int r;	u32 tmp;	u64 gpu_addr;	r = amdgpu_wb_get(adev, &index);	if (r) {		dev_err(adev->dev, "(%d) failed to allocate wb slot/n", r);		return r;	}	gpu_addr = adev->wb.gpu_addr + (index * 4);	tmp = 0xCAFEDEAD;	adev->wb.wb[index] = cpu_to_le32(tmp);	r = amdgpu_ring_alloc(ring, 5);	if (r) {		DRM_ERROR("amdgpu: dma failed to lock ring %d (%d)./n", ring->idx, r);		amdgpu_wb_free(adev, index);		return r;	}	amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0));	amdgpu_ring_write(ring, lower_32_bits(gpu_addr));	amdgpu_ring_write(ring, upper_32_bits(gpu_addr));	amdgpu_ring_write(ring, 1); /* number of DWs to follow */	amdgpu_ring_write(ring, 0xDEADBEEF);	amdgpu_ring_commit(ring);	for (i = 0; i < adev->usec_timeout; i++) {		tmp = le32_to_cpu(adev->wb.wb[index]);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < adev->usec_timeout) {		DRM_INFO("ring test on %d succeeded in %d usecs/n", ring->idx, i);	} else {		DRM_ERROR("amdgpu: ring %d test failed (0x%08X)/n",			  ring->idx, tmp);		r = -EINVAL;	}	amdgpu_wb_free(adev, index);	return r;}
开发者ID:asmalldev,项目名称:linux,代码行数:59,


示例15: rs400_gart_tlb_flush

void rs400_gart_tlb_flush(struct radeon_device *rdev){	uint32_t tmp;	unsigned int timeout = rdev->usec_timeout;	WREG32_MC(RS480_GART_CACHE_CNTRL, RS480_GART_CACHE_INVALIDATE);	do {		tmp = RREG32_MC(RS480_GART_CACHE_CNTRL);		if ((tmp & RS480_GART_CACHE_INVALIDATE) == 0)			break;		DRM_UDELAY(1);		timeout--;	} while (timeout > 0);	WREG32_MC(RS480_GART_CACHE_CNTRL, 0);}
开发者ID:pthomas,项目名称:linux-2.6,代码行数:15,


示例16: cik_sdma_ring_test

/** * cik_sdma_ring_test - simple async dma engine test * * @rdev: radeon_device pointer * @ring: radeon_ring structure holding ring information * * Test the DMA engine by writing using it to write an * value to memory. (CIK). * Returns 0 for success, error for failure. */int cik_sdma_ring_test(struct radeon_device *rdev,		       struct radeon_ring *ring){	unsigned i;	int r;	unsigned index;	u32 tmp;	u64 gpu_addr;	if (ring->idx == R600_RING_TYPE_DMA_INDEX)		index = R600_WB_DMA_RING_TEST_OFFSET;	else		index = CAYMAN_WB_DMA1_RING_TEST_OFFSET;	gpu_addr = rdev->wb.gpu_addr + index;	tmp = 0xCAFEDEAD;	rdev->wb.wb[index/4] = cpu_to_le32(tmp);	r = radeon_ring_lock(rdev, ring, 5);	if (r) {		DRM_ERROR("radeon: dma failed to lock ring %d (%d)./n", ring->idx, r);		return r;	}	radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0));	radeon_ring_write(ring, lower_32_bits(gpu_addr));	radeon_ring_write(ring, upper_32_bits(gpu_addr));	radeon_ring_write(ring, 1); /* number of DWs to follow */	radeon_ring_write(ring, 0xDEADBEEF);	radeon_ring_unlock_commit(rdev, ring, false);	for (i = 0; i < rdev->usec_timeout; i++) {		tmp = le32_to_cpu(rdev->wb.wb[index/4]);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {		DRM_INFO("ring test on %d succeeded in %d usecs/n", ring->idx, i);	} else {		DRM_ERROR("radeon: ring %d test failed (0x%08X)/n",			  ring->idx, tmp);		r = -EINVAL;	}	return r;}
开发者ID:Amitabha2001,项目名称:linux,代码行数:57,


示例17: mga_do_dma_idle

int mga_do_dma_idle( drm_mga_private_t *dev_priv ){	u32 status = 0;	int i;	DRM_DEBUG( "/n" );	for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {		status = MGA_READ( MGA_STATUS ) & MGA_DMA_IDLE_MASK;		if ( status == MGA_ENDPRDMASTS ) return 0;		DRM_UDELAY( 1 );	}#if MGA_DMA_DEBUG	DRM_ERROR( "failed! status=0x%08x/n", status );#endif	return DRM_ERR(EBUSY);}
开发者ID:aosm,项目名称:X11,代码行数:17,


示例18: nouveau_fbcon_sync

static intnouveau_fbcon_sync(struct fb_info *info){#if 0	struct nouveau_fbdev *nfbdev = info->par;	struct drm_device *dev = nfbdev->dev;	struct drm_nouveau_private *dev_priv = dev->dev_private;	struct nouveau_channel *chan = dev_priv->channel;	int ret, i;	if (!chan || !chan->accel_done ||	    info->state != FBINFO_STATE_RUNNING ||	    info->flags & FBINFO_HWACCEL_DISABLED)		return 0;	if (RING_SPACE(chan, 4)) {		nouveau_fbcon_gpu_lockup(info);		return 0;	}	BEGIN_RING(chan, 0, 0x0104, 1);	OUT_RING(chan, 0);	BEGIN_RING(chan, 0, 0x0100, 1);	OUT_RING(chan, 0);	nouveau_bo_wr32(chan->notifier_bo, chan->m2mf_ntfy + 3, 0xffffffff);	FIRE_RING(chan);	ret = -EBUSY;	for (i = 0; i < 100000; i++) {		if (!nouveau_bo_rd32(chan->notifier_bo, chan->m2mf_ntfy + 3)) {			ret = 0;			break;		}		DRM_UDELAY(1);	}	if (ret) {		nouveau_fbcon_gpu_lockup(info);		return 0;	}	chan->accel_done = false;#endif	return 0;}
开发者ID:wucan,项目名称:pscnv,代码行数:45,


示例19: cik_sdma_ring_test

/** * cik_sdma_ring_test - simple async dma engine test * * @rdev: radeon_device pointer * @ring: radeon_ring structure holding ring information * * Test the DMA engine by writing using it to write an * value to memory. (CIK). * Returns 0 for success, error for failure. */int cik_sdma_ring_test(struct radeon_device *rdev,		       struct radeon_ring *ring){	unsigned i;	int r;	void __iomem *ptr = (void *)rdev->vram_scratch.ptr;	u32 tmp;	if (!ptr) {		DRM_ERROR("invalid vram scratch pointer/n");		return -EINVAL;	}	tmp = 0xCAFEDEAD;	writel(tmp, ptr);	r = radeon_ring_lock(rdev, ring, 5);	if (r) {		DRM_ERROR("radeon: dma failed to lock ring %d (%d)./n", ring->idx, r);		return r;	}	radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0));	radeon_ring_write(ring, rdev->vram_scratch.gpu_addr & 0xfffffffc);	radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr));	radeon_ring_write(ring, 1); /* number of DWs to follow */	radeon_ring_write(ring, 0xDEADBEEF);	radeon_ring_unlock_commit(rdev, ring);	for (i = 0; i < rdev->usec_timeout; i++) {		tmp = readl(ptr);		if (tmp == 0xDEADBEEF)			break;		DRM_UDELAY(1);	}	if (i < rdev->usec_timeout) {		DRM_INFO("ring test on %d succeeded in %d usecs/n", ring->idx, i);	} else {		DRM_ERROR("radeon: ring %d test failed (0x%08X)/n",			  ring->idx, tmp);		r = -EINVAL;	}	return r;}
开发者ID:AkyZero,项目名称:wrapfs-latest,代码行数:54,


示例20: radeon_dp_link_train_finish

static int radeon_dp_link_train_finish(struct radeon_dp_link_train_info *dp_info){	DRM_UDELAY(400);	/* disable the training pattern on the sink */	radeon_write_dpcd_reg(dp_info->radeon_connector,			      DP_TRAINING_PATTERN_SET,			      DP_TRAINING_PATTERN_DISABLE);	/* disable the training pattern on the source */	if (ASIC_IS_DCE4(dp_info->rdev) || !dp_info->use_dpencoder)		atombios_dig_encoder_setup(dp_info->encoder,					   ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE, 0);	else		radeon_dp_encoder_service(dp_info->rdev, ATOM_DP_ACTION_TRAINING_COMPLETE,					  dp_info->dp_clock, dp_info->enc_id, 0);	return 0;}
开发者ID:JabirTech,项目名称:Source,代码行数:19,


示例21: savage_bci_wait_fifo_s4

static intsavage_bci_wait_fifo_s4(drm_savage_private_t * dev_priv, unsigned int n){	uint32_t maxUsed = dev_priv->cob_size + SAVAGE_BCI_FIFO_SIZE - n;	uint32_t status;	int i;	for (i = 0; i < SAVAGE_DEFAULT_USEC_TIMEOUT; i++) {		status = SAVAGE_READ(SAVAGE_ALT_STATUS_WORD0);		if ((status & SAVAGE_FIFO_USED_MASK_S4) <= maxUsed)			return 0;		DRM_UDELAY(1);	}#if SAVAGE_BCI_DEBUG	DRM_ERROR("failed!/n");	DRM_INFO("   status=0x%08x/n", status);#endif	return -EBUSY;}
开发者ID:1111saeid,项目名称:jb_kernel_3.0.16_htc_golfu,代码行数:20,


示例22: mga_do_wait_for_idle

int mga_do_wait_for_idle( drm_mga_private_t *dev_priv ){	u32 status = 0;	int i;	DRM_DEBUG( "/n" );	for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {		status = MGA_READ( MGA_STATUS ) & MGA_ENGINE_IDLE_MASK;		if ( status == MGA_ENDPRDMASTS ) {			MGA_WRITE8( MGA_CRTC_INDEX, 0 );			return 0;		}		DRM_UDELAY( 1 );	}#if MGA_DMA_DEBUG	DRM_ERROR( "failed!/n" );	DRM_INFO( "   status=0x%08x/n", status );#endif	return DRM_ERR(EBUSY);}
开发者ID:aosm,项目名称:X11,代码行数:21,


示例23: savage_bci_wait_event_reg

static intsavage_bci_wait_event_reg(drm_savage_private_t * dev_priv, uint16_t e){	uint32_t status;	int i;	for (i = 0; i < SAVAGE_EVENT_USEC_TIMEOUT; i++) {		status = SAVAGE_READ(SAVAGE_STATUS_WORD1);		if ((((status & 0xffff) - e) & 0xffff) <= 0x7fff ||		    (status & 0xffff) == 0)			return 0;		DRM_UDELAY(1);	}#if SAVAGE_BCI_DEBUG	DRM_ERROR("failed!/n");	DRM_INFO("   status=0x%08x, e=0x%04x/n", status, e);#endif	return -EBUSY;}
开发者ID:1111saeid,项目名称:jb_kernel_3.0.16_htc_golfu,代码行数:21,


示例24: psb_wait_for_register

int psb_wait_for_register(struct drm_psb_private *dev_priv,			  uint32_t offset, uint32_t value, uint32_t enable,				uint32_t loops, uint32_t interval){	uint32_t reg_value = 0;	uint32_t poll_cnt = loops;	while (poll_cnt) {		reg_value = PSB_RMSVDX32(offset);		if (value == (reg_value & enable))	/* All the bits are reset   */			return 0;	/* So exit			*/		/* Wait a bit */		DRM_UDELAY(interval);		poll_cnt--;	}	DRM_ERROR("MSVDX: Timeout while waiting for register %08x:"		  " expecting %08x (mask %08x), got %08x/n",		  offset, value, enable, reg_value);	return 1;}
开发者ID:Nomad280279,项目名称:cdv,代码行数:21,


示例25: savage_bci_wait_event_shadow

/* * Waiting for events. * * The BIOSresets the event tag to 0 on mode changes. Therefore we * never emit 0 to the event tag. If we find a 0 event tag we know the * BIOS stomped on it and return success assuming that the BIOS waited * for engine idle. * * Note: if the Xserver uses the event tag it has to follow the same * rule. Otherwise there may be glitches every 2^16 events. */static intsavage_bci_wait_event_shadow(drm_savage_private_t * dev_priv, uint16_t e){	uint32_t status;	int i;	for (i = 0; i < SAVAGE_EVENT_USEC_TIMEOUT; i++) {		DRM_MEMORYBARRIER();		status = dev_priv->status_ptr[1];		if ((((status & 0xffff) - e) & 0xffff) <= 0x7fff ||		    (status & 0xffff) == 0)			return 0;		DRM_UDELAY(1);	}#if SAVAGE_BCI_DEBUG	DRM_ERROR("failed!/n");	DRM_INFO("   status=0x%08x, e=0x%04x/n", status, e);#endif	return -EBUSY;}
开发者ID:1111saeid,项目名称:jb_kernel_3.0.16_htc_golfu,代码行数:33,


示例26: psb_wait_for_register

intpsb_wait_for_register (struct drm_psb_private *dev_priv,		       uint32_t ui32Offset,		       uint32_t ui32Value, uint32_t ui32Enable){  uint32_t ui32Temp;  uint32_t ui32PollCount = 1000;  while (ui32PollCount)    {      ui32Temp = PSB_RMSVDX32 (ui32Offset);      if (ui32Value == (ui32Temp & ui32Enable))	/* All the bits are reset   */	return 0;		/* So exit                      */      /* Wait a bit */      DRM_UDELAY (100);      ui32PollCount--;    }  PSB_DEBUG_GENERAL    ("MSVDX: Timeout while waiting for register %08x: expecting %08x (mask %08x), got %08x/n",     ui32Offset, ui32Value, ui32Enable, ui32Temp);  return 1;}
开发者ID:gregkh,项目名称:psb-kmp,代码行数:22,


示例27: rv770_page_flip

u32 rv770_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base){	struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];	u32 tmp = RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset);	int i;	/* Lock the graphics update lock */	tmp |= AVIVO_D1GRPH_UPDATE_LOCK;	WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp);	/* update the scanout addresses */	if (radeon_crtc->crtc_id) {		WREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));		WREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));	} else {		WREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));		WREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));	}	WREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,	       (u32)crtc_base);	WREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,	       (u32)crtc_base);	/* Wait for update_pending to go high. */	for (i = 0; i < rdev->usec_timeout; i++) {		if (RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset) & AVIVO_D1GRPH_SURFACE_UPDATE_PENDING)			break;		DRM_UDELAY(1);	}	DRM_DEBUG("Update pending now high. Unlocking vupdate_lock./n");	/* Unlock the lock, so double-buffering can take place inside vblank */	tmp &= ~AVIVO_D1GRPH_UPDATE_LOCK;	WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp);	/* Return current update_pending status: */	return RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset) & AVIVO_D1GRPH_SURFACE_UPDATE_PENDING;}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:38,


示例28: radeon_do_wait_for_fifo

static int radeon_do_wait_for_fifo(drm_radeon_private_t * dev_priv, int entries){	int i;	dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE;	for (i = 0; i < dev_priv->usec_timeout; i++) {		int slots = (RADEON_READ(RADEON_RBBM_STATUS)			     & RADEON_RBBM_FIFOCNT_MASK);		if (slots >= entries)			return 0;		DRM_UDELAY(1);	}	DRM_DEBUG("wait for fifo failed status : 0x%08X 0x%08X/n",		 RADEON_READ(RADEON_RBBM_STATUS),		 RADEON_READ(R300_VAP_CNTL_STATUS));#if RADEON_FIFO_DEBUG	DRM_ERROR("failed!/n");	radeon_status(dev_priv);#endif	return -EBUSY;}
开发者ID:LouZiffer,项目名称:m900_kernel_cupcake-SDX,代码行数:23,


示例29: radeon_dp_aux_native_write

static int radeon_dp_aux_native_write(struct radeon_connector *radeon_connector,				      u16 address, u8 *send, u8 send_bytes, u8 delay){	struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv;	int ret;	u8 msg[20];	int msg_bytes = send_bytes + 4;	u8 ack;	unsigned retry;	if (send_bytes > 16)		return -1;	msg[0] = address;	msg[1] = address >> 8;	msg[2] = AUX_NATIVE_WRITE << 4;	msg[3] = (msg_bytes << 4) | (send_bytes - 1);	memcpy(&msg[4], send, send_bytes);	for (retry = 0; retry < 4; retry++) {		ret = radeon_process_aux_ch(dig_connector->dp_i2c_bus,					    msg, msg_bytes, NULL, 0, delay, &ack);		if (ret == -EBUSY)			continue;		else if (ret < 0)			return ret;		if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK)			return send_bytes;		else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER)			DRM_UDELAY(400);		else			return -EIO;	}	return -EIO;}
开发者ID:JabirTech,项目名称:Source,代码行数:36,



注:本文中的DRM_UDELAY函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DROP函数代码示例
C++ DRM_IOCTL函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。