Subversion Repositories Kolibri OS

Rev

Rev 4569 | Rev 5078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4569 Rev 4570
Line 232... Line 232...
232
			       uint32_t bytes, bool interruptible,
232
			       uint32_t bytes, bool interruptible,
233
			       unsigned long timeout)
233
			       unsigned long timeout)
234
{
234
{
235
	int ret = 0;
235
	int ret = 0;
236
    unsigned long end_jiffies = GetTimerTicks() + timeout;
236
    unsigned long end_jiffies = GetTimerTicks() + timeout;
237
	DEFINE_WAIT(__wait);
237
//	DEFINE_WAIT(__wait);
Line 238... Line 238...
238
 
238
 
Line 239... Line 239...
239
	DRM_INFO("Fifo wait noirq.\n");
239
	DRM_INFO("Fifo wait noirq.\n");
240
 
240
 
Line 409... Line 409...
409
	uint32_t chunk_size = max - next_cmd;
409
	uint32_t chunk_size = max - next_cmd;
410
	uint32_t rest;
410
	uint32_t rest;
411
	uint32_t *buffer = (fifo_state->dynamic_buffer != NULL) ?
411
	uint32_t *buffer = (fifo_state->dynamic_buffer != NULL) ?
412
	    fifo_state->dynamic_buffer : fifo_state->static_buffer;
412
	    fifo_state->dynamic_buffer : fifo_state->static_buffer;
Line -... Line 413...
-
 
413
 
-
 
414
ENTER();
413
 
415
 
414
	if (bytes < chunk_size)
416
	if (bytes < chunk_size)
Line 415... Line 417...
415
		chunk_size = bytes;
417
		chunk_size = bytes;
416
 
418
 
417
	iowrite32(bytes, fifo_mem + SVGA_FIFO_RESERVED);
419
	iowrite32(bytes, fifo_mem + SVGA_FIFO_RESERVED);
418
    mb();
420
    mb();
419
    memcpy(fifo_mem + (next_cmd >> 2), buffer, chunk_size);
421
    memcpy(fifo_mem + (next_cmd >> 2), buffer, chunk_size);
420
	rest = bytes - chunk_size;
422
	rest = bytes - chunk_size;
421
	if (rest)
423
	if (rest)
-
 
424
        memcpy(fifo_mem + (min >> 2), buffer + (chunk_size >> 2),
-
 
425
			    rest);
422
        memcpy(fifo_mem + (min >> 2), buffer + (chunk_size >> 2),
426
LEAVE();
Line 423... Line 427...
423
			    rest);
427
 
424
}
428
}
425
 
429
 
426
static void vmw_fifo_slow_copy(struct vmw_fifo_state *fifo_state,
430
static void vmw_fifo_slow_copy(struct vmw_fifo_state *fifo_state,
427
			       __le32 __iomem *fifo_mem,
431
			       __le32 __iomem *fifo_mem,
428
			       uint32_t next_cmd,
432
			       uint32_t next_cmd,
429
			       uint32_t max, uint32_t min, uint32_t bytes)
433
			       uint32_t max, uint32_t min, uint32_t bytes)
-
 
434
{
Line 430... Line 435...
430
{
435
	uint32_t *buffer = (fifo_state->dynamic_buffer != NULL) ?
431
	uint32_t *buffer = (fifo_state->dynamic_buffer != NULL) ?
436
	    fifo_state->dynamic_buffer : fifo_state->static_buffer;
432
	    fifo_state->dynamic_buffer : fifo_state->static_buffer;
437
ENTER();
433
 
438
 
Line 439... Line 444...
439
		mb();
444
		mb();
440
		iowrite32(next_cmd, fifo_mem + SVGA_FIFO_NEXT_CMD);
445
		iowrite32(next_cmd, fifo_mem + SVGA_FIFO_NEXT_CMD);
441
		mb();
446
		mb();
442
		bytes -= sizeof(uint32_t);
447
		bytes -= sizeof(uint32_t);
443
	}
448
	}
-
 
449
LEAVE();
444
}
450
}
Line 445... Line 451...
445
 
451
 
446
void vmw_fifo_commit(struct vmw_private *dev_priv, uint32_t bytes)
452
void vmw_fifo_commit(struct vmw_private *dev_priv, uint32_t bytes)
447
{
453
{
Line 450... Line 456...
450
	uint32_t next_cmd = ioread32(fifo_mem + SVGA_FIFO_NEXT_CMD);
456
	uint32_t next_cmd = ioread32(fifo_mem + SVGA_FIFO_NEXT_CMD);
451
	uint32_t max = ioread32(fifo_mem + SVGA_FIFO_MAX);
457
	uint32_t max = ioread32(fifo_mem + SVGA_FIFO_MAX);
452
	uint32_t min = ioread32(fifo_mem + SVGA_FIFO_MIN);
458
	uint32_t min = ioread32(fifo_mem + SVGA_FIFO_MIN);
453
	bool reserveable = fifo_state->capabilities & SVGA_FIFO_CAP_RESERVE;
459
	bool reserveable = fifo_state->capabilities & SVGA_FIFO_CAP_RESERVE;
Line -... Line 460...
-
 
460
 
-
 
461
//    ENTER();
454
 
462
 
455
	BUG_ON((bytes & 3) != 0);
463
	BUG_ON((bytes & 3) != 0);
Line 456... Line 464...
456
	BUG_ON(bytes > fifo_state->reserved_size);
464
	BUG_ON(bytes > fifo_state->reserved_size);
Line 485... Line 493...
485
		iowrite32(0, fifo_mem + SVGA_FIFO_RESERVED);
493
		iowrite32(0, fifo_mem + SVGA_FIFO_RESERVED);
486
    mb();
494
    mb();
487
//   up_write(&fifo_state->rwsem);
495
//   up_write(&fifo_state->rwsem);
488
	vmw_fifo_ping_host(dev_priv, SVGA_SYNC_GENERIC);
496
	vmw_fifo_ping_host(dev_priv, SVGA_SYNC_GENERIC);
489
	mutex_unlock(&fifo_state->fifo_mutex);
497
	mutex_unlock(&fifo_state->fifo_mutex);
-
 
498
 
-
 
499
//    LEAVE();
490
}
500
}
Line 491... Line 501...
491
 
501
 
492
int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
502
int vmw_fifo_send_fence(struct vmw_private *dev_priv, uint32_t *seqno)
493
{
503
{