All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mrzyglod <daniel.t.mrzyglod@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t v4 2/6] lib/igt_device: add igt_device_map_pci_bar_region
Date: Thu, 25 Apr 2019 22:58:18 +0200	[thread overview]
Message-ID: <20190425205822.8995-3-daniel.t.mrzyglod@intel.com> (raw)
In-Reply-To: <20190425205822.8995-1-daniel.t.mrzyglod@intel.com>

This function use sysfs to map particular mmio region.
fd of opened device point us for specific pci device.

Signed-off-by: Daniel Mrzyglod <daniel.t.mrzyglod@intel.com>
---
 lib/igt_device.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_device.h |  1 +
 2 files changed, 45 insertions(+)

diff --git a/lib/igt_device.c b/lib/igt_device.c
index 88f35cad..b456b936 100644
--- a/lib/igt_device.c
+++ b/lib/igt_device.c
@@ -227,3 +227,47 @@ struct pci_device *igt_device_get_pci_device(int fd)
 
 	return pci_dev;
 }
+
+/**
+ * igt_device_map_pci_bar_region:
+ *
+ * @fd: the device
+ * @mmio_bar: bar to be mapped
+ * @mmio_size: bar size
+ *
+ * Returns:
+ * The pointer for mmapped bar
+ */
+void *igt_device_map_pci_bar_region(int fd, int  mmio_bar, int mmio_size)
+{
+	struct igt_pci_addr pci_addr;
+	char *filepath = NULL;
+	char *pci_string = NULL;
+	int newfd;
+	void *igt_mmio;
+
+	if (igt_device_get_pci_addr(fd, &pci_addr)) {
+		igt_warn("Unable to find device PCI address\n");
+		return NULL;
+	}
+
+	asprintf(&pci_string, "%.4x:%.2x:%.2x.%.1x",
+		 pci_addr.domain, pci_addr.bus, pci_addr.device,
+		 pci_addr.function);
+
+
+	asprintf(&filepath, "/sys/devices/pci%.4x:%.2x/%s/resource%.1x",
+			pci_addr.domain, pci_addr.bus, pci_string, mmio_bar);
+
+	newfd = open(filepath, O_RDWR | O_SYNC);
+	igt_mmio = mmap(0, mmio_size, PROT_READ | PROT_WRITE, MAP_SHARED,
+			newfd, 0);
+	free(filepath);
+	close(newfd);
+	igt_warn_on_f(igt_mmio == MAP_FAILED,
+		      "Couldn't map MMIO region %s BAR %d\n",
+		      pci_string, mmio_bar);
+	free(pci_string);
+
+	return igt_mmio;
+}
diff --git a/lib/igt_device.h b/lib/igt_device.h
index 860b3a8a..6ffc1d5e 100644
--- a/lib/igt_device.h
+++ b/lib/igt_device.h
@@ -34,5 +34,6 @@ void igt_device_drop_master(int fd);
 
 int igt_device_get_card_index(int fd);
 struct pci_device *igt_device_get_pci_device(int fd);
+void *igt_device_map_pci_bar_region(int fd, int  mmio_bar, int mmio_size);
 
 #endif /* __IGT_DEVICE_H__ */
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2019-04-25 20:59 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-25 20:58 [igt-dev] [PATCH i-g-t v4 0/6] Remove global igt_global_mmio Daniel Mrzyglod
2019-04-25 20:58 ` [igt-dev] [PATCH i-g-t v4 1/6] lib/igt_device: add igt_device_get_pci_addr by fd Daniel Mrzyglod
2019-04-26  5:37   ` Chris Wilson
2019-04-25 20:58 ` Daniel Mrzyglod [this message]
2019-04-25 20:58 ` [igt-dev] [PATCH i-g-t v4 3/6] lib/intel_mmio: use igt_device_map_pci_bar_region for mmap if fd is known Daniel Mrzyglod
2019-04-26  5:40   ` Chris Wilson
2019-04-25 20:58 ` [igt-dev] [PATCH i-g-t v4 4/6] lib/intel_mmio: add pointer for read/write register funtions Daniel Mrzyglod
2019-04-25 20:58 ` [igt-dev] [PATCH i-g-t v4 5/6] lib/intel_mmio: remove igt_global_mmio and move it to mmio_data Daniel Mrzyglod
2019-04-25 20:58 ` [igt-dev] [PATCH i-g-t v4 6/6] lib/ioctl_wrappers: add fd to aperture_mmap Daniel Mrzyglod
2019-04-25 21:55 ` [igt-dev] ✓ Fi.CI.BAT: success for Remove global igt_global_mmio (rev4) Patchwork
2019-04-26  9:38 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190425205822.8995-3-daniel.t.mrzyglod@intel.com \
    --to=daniel.t.mrzyglod@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.