diff options
author | Wu Hao <hao.wu@intel.com> | 2018-06-29 20:53:12 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-15 07:55:44 -0400 |
commit | 41a8b2c56470b7e4e3e2db93324d50bbbf60cdc4 (patch) | |
tree | 4e3314c007e056d39805aa8e49cd42678ac9926a /drivers/fpga/fpga-region.c | |
parent | 99a560bde313892f87ca81db568a829d3d205882 (diff) |
fpga: region: add compat_id support
This patch introduces a compat_id pointer member and sysfs interface
for each fpga region, similar as compat_id for fpga manager, it allows
applications to read the per region compat_id for compatibility
checking before other actions on this fpga-region (e.g. PR).
Signed-off-by: Wu Hao <hao.wu@intel.com>
Acked-by: Alan Tull <atull@kernel.org>
Acked-by: Moritz Fischer <mdf@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fpga/fpga-region.c')
-rw-r--r-- | drivers/fpga/fpga-region.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/fpga/fpga-region.c b/drivers/fpga/fpga-region.c index 6d214d75c7be..0d65220d5ec5 100644 --- a/drivers/fpga/fpga-region.c +++ b/drivers/fpga/fpga-region.c | |||
@@ -158,6 +158,27 @@ err_put_region: | |||
158 | } | 158 | } |
159 | EXPORT_SYMBOL_GPL(fpga_region_program_fpga); | 159 | EXPORT_SYMBOL_GPL(fpga_region_program_fpga); |
160 | 160 | ||
161 | static ssize_t compat_id_show(struct device *dev, | ||
162 | struct device_attribute *attr, char *buf) | ||
163 | { | ||
164 | struct fpga_region *region = to_fpga_region(dev); | ||
165 | |||
166 | if (!region->compat_id) | ||
167 | return -ENOENT; | ||
168 | |||
169 | return sprintf(buf, "%016llx%016llx\n", | ||
170 | (unsigned long long)region->compat_id->id_h, | ||
171 | (unsigned long long)region->compat_id->id_l); | ||
172 | } | ||
173 | |||
174 | static DEVICE_ATTR_RO(compat_id); | ||
175 | |||
176 | static struct attribute *fpga_region_attrs[] = { | ||
177 | &dev_attr_compat_id.attr, | ||
178 | NULL, | ||
179 | }; | ||
180 | ATTRIBUTE_GROUPS(fpga_region); | ||
181 | |||
161 | /** | 182 | /** |
162 | * fpga_region_create - alloc and init a struct fpga_region | 183 | * fpga_region_create - alloc and init a struct fpga_region |
163 | * @dev: device parent | 184 | * @dev: device parent |
@@ -258,6 +279,7 @@ static int __init fpga_region_init(void) | |||
258 | if (IS_ERR(fpga_region_class)) | 279 | if (IS_ERR(fpga_region_class)) |
259 | return PTR_ERR(fpga_region_class); | 280 | return PTR_ERR(fpga_region_class); |
260 | 281 | ||
282 | fpga_region_class->dev_groups = fpga_region_groups; | ||
261 | fpga_region_class->dev_release = fpga_region_dev_release; | 283 | fpga_region_class->dev_release = fpga_region_dev_release; |
262 | 284 | ||
263 | return 0; | 285 | return 0; |