Commit 0628c4df authored by Eric Auger's avatar Eric Auger Committed by Alex Williamson

vfio: platform: add compat in vfio_platform_device

Let's retrieve the compatibility string on probe and store it
in the vfio_platform_device struct
Signed-off-by: default avatarEric Auger <eric.auger@linaro.org>
Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent 680742f6
...@@ -41,16 +41,11 @@ static const struct vfio_platform_reset_combo reset_lookup_table[] = { ...@@ -41,16 +41,11 @@ static const struct vfio_platform_reset_combo reset_lookup_table[] = {
static void vfio_platform_get_reset(struct vfio_platform_device *vdev, static void vfio_platform_get_reset(struct vfio_platform_device *vdev,
struct device *dev) struct device *dev)
{ {
const char *compat;
int (*reset)(struct vfio_platform_device *); int (*reset)(struct vfio_platform_device *);
int ret, i; int i;
ret = device_property_read_string(dev, "compatible", &compat);
if (ret)
return;
for (i = 0 ; i < ARRAY_SIZE(reset_lookup_table); i++) { for (i = 0 ; i < ARRAY_SIZE(reset_lookup_table); i++) {
if (!strcmp(reset_lookup_table[i].compat, compat)) { if (!strcmp(reset_lookup_table[i].compat, vdev->compat)) {
request_module(reset_lookup_table[i].module_name); request_module(reset_lookup_table[i].module_name);
reset = __symbol_get( reset = __symbol_get(
reset_lookup_table[i].reset_function_name); reset_lookup_table[i].reset_function_name);
...@@ -544,6 +539,12 @@ int vfio_platform_probe_common(struct vfio_platform_device *vdev, ...@@ -544,6 +539,12 @@ int vfio_platform_probe_common(struct vfio_platform_device *vdev,
if (!vdev) if (!vdev)
return -EINVAL; return -EINVAL;
ret = device_property_read_string(dev, "compatible", &vdev->compat);
if (ret) {
pr_err("VFIO: cannot retrieve compat for %s\n", vdev->name);
return -EINVAL;
}
group = iommu_group_get(dev); group = iommu_group_get(dev);
if (!group) { if (!group) {
pr_err("VFIO: No IOMMU group for device %s\n", vdev->name); pr_err("VFIO: No IOMMU group for device %s\n", vdev->name);
......
...@@ -57,6 +57,7 @@ struct vfio_platform_device { ...@@ -57,6 +57,7 @@ struct vfio_platform_device {
int refcnt; int refcnt;
struct mutex igate; struct mutex igate;
struct module *parent_module; struct module *parent_module;
const char *compat;
/* /*
* These fields should be filled by the bus specific binder * These fields should be filled by the bus specific binder
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment