示例#1
0
/**
 * intel_register_access_init:
 * @pci_dev: intel graphics pci device
 * @safe: use safe register access tables
 *
 * This initializes the new register access library, which supports forcewake
 * handling and also allows register access to be checked with an explicit
 * whitelist.
 *
 * It also initializes #igt_global_mmio like intel_mmio_use_pci_bar().
 *
 * @pci_dev can be obtained from intel_get_pci_device().
 */
int
intel_register_access_init(struct pci_device *pci_dev, int safe)
{
	int ret;

	/* after old API is deprecated, remove this */
	if (igt_global_mmio == NULL)
		intel_mmio_use_pci_bar(pci_dev);

	igt_assert(igt_global_mmio != NULL);

	if (mmio_data.inited)
		return -1;

	mmio_data.safe = (safe != 0 &&
			intel_gen(pci_dev->device_id) >= 4) ? true : false;
	mmio_data.i915_devid = pci_dev->device_id;
	if (mmio_data.safe)
		mmio_data.map = intel_get_register_map(mmio_data.i915_devid);

	/* Find where the forcewake lock is. Forcewake doesn't exist
	 * gen < 6, but the debugfs should do the right things for us.
	 */
	ret = igt_open_forcewake_handle();
	if (ret == -1)
		mmio_data.key = FAKEKEY;
	else
		mmio_data.key = ret;

	mmio_data.inited++;
	return 0;
}
/*
 * Initialize register access library.
 *
 * @pci_dev: pci device we're mucking with
 * @safe: use safe register access tables
 */
int
intel_register_access_init(struct pci_device *pci_dev, int safe)
{
	int ret;

	/* after old API is deprecated, remove this */
	if (mmio == NULL)
		intel_get_mmio(pci_dev);

	assert(mmio != NULL);

	if (mmio_data.inited)
		return -1;

	mmio_data.safe = safe != 0 ? true : false;

	/* Find where the forcewake lock is */
	ret = find_debugfs_path("/sys/kernel/debug/dri");
	if (ret) {
		ret = find_debugfs_path("/debug/dri");
		if (ret) {
			fprintf(stderr, "Couldn't find path to dri/debugfs entry\n");
			return ret;
		}
	}

	mmio_data.i915_devid = pci_dev->device_id;
	if (mmio_data.safe)
		mmio_data.map = intel_get_register_map(mmio_data.i915_devid);

	mmio_data.key = get_forcewake_lock();
	mmio_data.inited++;
	return 0;
}