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 388... Line 388...
388
int vmw_3d_resource_inc(struct vmw_private *dev_priv,
388
int vmw_3d_resource_inc(struct vmw_private *dev_priv,
389
			bool unhide_svga)
389
			bool unhide_svga)
390
{
390
{
391
	int ret = 0;
391
	int ret = 0;
Line 392... Line -...
392
 
-
 
393
    ENTER();
-
 
394
 
392
 
395
	mutex_lock(&dev_priv->release_mutex);
393
	mutex_lock(&dev_priv->release_mutex);
396
	if (unlikely(dev_priv->num_3d_resources++ == 0)) {
394
	if (unlikely(dev_priv->num_3d_resources++ == 0)) {
397
        ret = vmw_request_device(dev_priv);
395
        ret = vmw_request_device(dev_priv);
398
		if (unlikely(ret != 0))
396
		if (unlikely(ret != 0))
Line 404... Line 402...
404
			  ~SVGA_REG_ENABLE_HIDE);
402
			  ~SVGA_REG_ENABLE_HIDE);
405
		mutex_unlock(&dev_priv->hw_mutex);
403
		mutex_unlock(&dev_priv->hw_mutex);
406
	}
404
	}
Line 407... Line 405...
407
 
405
 
408
	mutex_unlock(&dev_priv->release_mutex);
-
 
409
    LEAVE();
406
	mutex_unlock(&dev_priv->release_mutex);
410
	return ret;
407
	return ret;
Line 411... Line 408...
411
}
408
}
412
 
409
 
Line 474... Line 471...
474
	dev_priv->initial_width = width;
471
	dev_priv->initial_width = width;
475
	dev_priv->initial_height = height;
472
	dev_priv->initial_height = height;
476
}
473
}
Line 477... Line 474...
477
 
474
 
-
 
475
/**
-
 
476
 * vmw_dma_select_mode - Determine how DMA mappings should be set up for this
-
 
477
 * system.
-
 
478
 *
-
 
479
 * @dev_priv: Pointer to a struct vmw_private
-
 
480
 *
-
 
481
 * This functions tries to determine the IOMMU setup and what actions
-
 
482
 * need to be taken by the driver to make system pages visible to the
-
 
483
 * device.
-
 
484
 * If this function decides that DMA is not possible, it returns -EINVAL.
-
 
485
 * The driver may then try to disable features of the device that require
-
 
486
 * DMA.
-
 
487
 */
-
 
488
static int vmw_dma_select_mode(struct vmw_private *dev_priv)
-
 
489
{
-
 
490
	static const char *names[vmw_dma_map_max] = {
-
 
491
		[vmw_dma_phys] = "Using physical TTM page addresses.",
-
 
492
		[vmw_dma_alloc_coherent] = "Using coherent TTM pages.",
-
 
493
		[vmw_dma_map_populate] = "Keeping DMA mappings.",
-
 
494
		[vmw_dma_map_bind] = "Giving up DMA mappings early."};
-
 
495
 
-
 
496
    dev_priv->map_mode = vmw_dma_phys;
-
 
497
    DRM_INFO("DMA map mode: %s\n", names[dev_priv->map_mode]);
-
 
498
 
-
 
499
	return 0;
-
 
500
}
-
 
501
 
478
/**
502
/**
479
 * vmw_dma_masks - set required page- and dma masks
503
 * vmw_dma_masks - set required page- and dma masks
480
 *
504
 *
481
 * @dev: Pointer to struct drm-device
505
 * @dev: Pointer to struct drm-device
482
 *
506
 *
Line 508... Line 532...
508
	int ret;
532
	int ret;
509
	uint32_t svga_id;
533
	uint32_t svga_id;
510
	enum vmw_res_type i;
534
	enum vmw_res_type i;
511
	bool refuse_dma = false;
535
	bool refuse_dma = false;
Line 512... Line -...
512
 
-
 
513
 
536
 
Line 514... Line 537...
514
    ENTER();
537
    ENTER();
515
 
538
 
516
	dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
539
	dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
Line 562... Line 585...
562
		mutex_unlock(&dev_priv->hw_mutex);
585
		mutex_unlock(&dev_priv->hw_mutex);
563
		goto out_err0;
586
		goto out_err0;
564
	}
587
	}
Line 565... Line 588...
565
 
588
 
566
	dev_priv->capabilities = vmw_read(dev_priv, SVGA_REG_CAPABILITIES);
589
	dev_priv->capabilities = vmw_read(dev_priv, SVGA_REG_CAPABILITIES);
567
//   ret = vmw_dma_select_mode(dev_priv);
590
	ret = vmw_dma_select_mode(dev_priv);
568
//   if (unlikely(ret != 0)) {
591
	if (unlikely(ret != 0)) {
569
//       DRM_INFO("Restricting capabilities due to IOMMU setup.\n");
592
		DRM_INFO("Restricting capabilities due to IOMMU setup.\n");
570
//       refuse_dma = true;
593
		refuse_dma = true;
Line 571... Line 594...
571
//   }
594
	}
572
 
595
 
573
	dev_priv->vram_size = vmw_read(dev_priv, SVGA_REG_VRAM_SIZE);
596
	dev_priv->vram_size = vmw_read(dev_priv, SVGA_REG_VRAM_SIZE);
574
	dev_priv->mmio_size = vmw_read(dev_priv, SVGA_REG_MEM_SIZE);
597
	dev_priv->mmio_size = vmw_read(dev_priv, SVGA_REG_MEM_SIZE);
Line 925... Line 948...
925
}
948
}
926
#endif
949
#endif
Line 927... Line 950...
927
 
950
 
928
static void vmw_master_init(struct vmw_master *vmaster)
951
static void vmw_master_init(struct vmw_master *vmaster)
929
{
952
{
930
//	ttm_lock_init(&vmaster->lock);
953
	ttm_lock_init(&vmaster->lock);
931
	INIT_LIST_HEAD(&vmaster->fb_surf);
954
	INIT_LIST_HEAD(&vmaster->fb_surf);
932
	mutex_init(&vmaster->fb_surf_mutex);
955
	mutex_init(&vmaster->fb_surf_mutex);
Line 933... Line 956...
933
}
956
}
Line 1174... Line 1197...
1174
	return 0;
1197
	return 0;
1175
}
1198
}
Line 1176... Line 1199...
1176
 
1199
 
Line 1177... Line -...
1177
#endif
-
 
1178
 
1200
#endif
1179
 
1201
 
1180
static struct drm_driver driver = {
1202
static struct drm_driver driver = {
1181
	.driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
1203
	.driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
1182
	DRIVER_MODESET,
1204
	DRIVER_MODESET,
1183
   .load = vmw_driver_load,
-
 
1184
//   .unload = vmw_driver_unload,
1205
   .load = vmw_driver_load,
1185
//   .firstopen = vmw_firstopen,
1206
//	.unload = vmw_driver_unload,
1186
//   .lastclose = vmw_lastclose,
1207
//	.lastclose = vmw_lastclose,
1187
   .irq_preinstall = vmw_irq_preinstall,
1208
   .irq_preinstall = vmw_irq_preinstall,
1188
   .irq_postinstall = vmw_irq_postinstall,
1209
   .irq_postinstall = vmw_irq_postinstall,
1189
//   .irq_uninstall = vmw_irq_uninstall,
1210
//   .irq_uninstall = vmw_irq_uninstall,
1190
   .irq_handler = vmw_irq_handler,
1211
   .irq_handler = vmw_irq_handler,
1191
//   .get_vblank_counter = vmw_get_vblank_counter,
1212
//   .get_vblank_counter = vmw_get_vblank_counter,
1192
//   .enable_vblank = vmw_enable_vblank,
1213
//   .enable_vblank = vmw_enable_vblank,
1193
//   .disable_vblank = vmw_disable_vblank,
1214
//   .disable_vblank = vmw_disable_vblank,
1194
//   .ioctls = vmw_ioctls,
-
 
1195
//   .num_ioctls = DRM_ARRAY_SIZE(vmw_ioctls),
-
 
1196
//   .dma_quiescent = NULL,  /*vmw_dma_quiescent, */
-
 
1197
//   .master_create = vmw_master_create,
-
 
1198
//   .master_destroy = vmw_master_destroy,
-
 
1199
//   .master_set = vmw_master_set,
1215
//   .ioctls = vmw_ioctls,
1200
//   .master_drop = vmw_master_drop,
1216
//   .num_ioctls = DRM_ARRAY_SIZE(vmw_ioctls),
1201
     .open = vmw_driver_open,
1217
     .open = vmw_driver_open,
Line 1202... Line 1218...
1202
//   .preclose = vmw_preclose,
1218
//   .preclose = vmw_preclose,
1203
//   .postclose = vmw_postclose,
1219
//   .postclose = vmw_postclose,
1204
 
1220
 
Line 1205... Line -...
1205
//   .dumb_create = vmw_dumb_create,
-
 
1206
//   .dumb_map_offset = vmw_dumb_map_offset,
-
 
1207
//   .dumb_destroy = vmw_dumb_destroy,
-
 
1208
 
-
 
1209
//   .fops = &vmwgfx_driver_fops,
-
 
1210
//   .name = VMWGFX_DRIVER_NAME,
-
 
1211
//   .desc = VMWGFX_DRIVER_DESC,
-
 
-
 
1221
//   .dumb_create = vmw_dumb_create,
1212
//   .date = VMWGFX_DRIVER_DATE,
1222
//   .dumb_map_offset = vmw_dumb_map_offset,
Line 1213... Line 1223...
1213
//   .major = VMWGFX_DRIVER_MAJOR,
1223
//   .dumb_destroy = vmw_dumb_destroy,
1214
//   .minor = VMWGFX_DRIVER_MINOR,
1224
 
1215
//   .patchlevel = VMWGFX_DRIVER_PATCHLEVEL
1225