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:
parent
680742f644
commit
0628c4dfd3
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue