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[] = {
static void vfio_platform_get_reset(struct vfio_platform_device *vdev,
struct device *dev)
{
const char *compat;
int (*reset)(struct vfio_platform_device *);
int ret, i;
ret = device_property_read_string(dev, "compatible", &compat);
if (ret)
return;
int 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);
reset = __symbol_get(
reset_lookup_table[i].reset_function_name);
......@@ -544,6 +539,12 @@ int vfio_platform_probe_common(struct vfio_platform_device *vdev,
if (!vdev)
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);
if (!group) {
pr_err("VFIO: No IOMMU group for device %s\n", vdev->name);
......
......@@ -57,6 +57,7 @@ struct vfio_platform_device {
int refcnt;
struct mutex igate;
struct module *parent_module;
const char *compat;
/*
* 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