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: Eric Auger <eric.auger@linaro.org>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
Eric Auger 2015-11-03 18:12:16 +00:00 committed by Alex Williamson
parent 680742f644
commit 0628c4dfd3
2 changed files with 9 additions and 7 deletions

View File

@ -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);

View File

@ -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