Skip to content

Commit

Permalink
fpga: add attribute groups
Browse files Browse the repository at this point in the history
Make it easy to add attributes to low level FPGA drivers the right
way.  Add attribute groups pointers to structures that are used when
registering a manager, bridge, or group.  When the low level driver
registers, set the device attribute group.  The attributes are
created in device_add.

Signed-off-by: Alan Tull <atull@kernel.org>
Acked-by: Moritz Fischer <mdf@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Alan Tull authored and Greg Kroah-Hartman committed Nov 28, 2017
1 parent 84e93f1 commit 845089b
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/fpga/fpga-bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,7 @@ int fpga_bridge_register(struct device *dev, const char *name,
bridge->priv = priv;

device_initialize(&bridge->dev);
bridge->dev.groups = br_ops->groups;
bridge->dev.class = fpga_bridge_class;
bridge->dev.parent = dev;
bridge->dev.of_node = dev->of_node;
Expand Down
1 change: 1 addition & 0 deletions drivers/fpga/fpga-mgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,7 @@ int fpga_mgr_register(struct device *dev, const char *name,

device_initialize(&mgr->dev);
mgr->dev.class = fpga_mgr_class;
mgr->dev.groups = mops->groups;
mgr->dev.parent = dev;
mgr->dev.of_node = dev->of_node;
mgr->dev.id = id;
Expand Down
1 change: 1 addition & 0 deletions drivers/fpga/fpga-region.c
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ int fpga_region_register(struct device *dev, struct fpga_region *region)
mutex_init(&region->mutex);
INIT_LIST_HEAD(&region->bridge_list);
device_initialize(&region->dev);
region->dev.groups = region->groups;
region->dev.class = fpga_region_class;
region->dev.parent = dev;
region->dev.of_node = dev->of_node;
Expand Down
2 changes: 2 additions & 0 deletions include/linux/fpga/fpga-bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ struct fpga_bridge;
* @enable_show: returns the FPGA bridge's status
* @enable_set: set a FPGA bridge as enabled or disabled
* @fpga_bridge_remove: set FPGA into a specific state during driver remove
* @groups: optional attribute groups.
*/
struct fpga_bridge_ops {
int (*enable_show)(struct fpga_bridge *bridge);
int (*enable_set)(struct fpga_bridge *bridge, bool enable);
void (*fpga_bridge_remove)(struct fpga_bridge *bridge);
const struct attribute_group **groups;
};

/**
Expand Down
2 changes: 2 additions & 0 deletions include/linux/fpga/fpga-mgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ struct fpga_image_info {
* @write_sg: write the scatter list of configuration data to the FPGA
* @write_complete: set FPGA to operating state after writing is done
* @fpga_remove: optional: Set FPGA into a specific state during driver remove
* @groups: optional attribute groups.
*
* fpga_manager_ops are the low level functions implemented by a specific
* fpga manager driver. The optional ones are tested for NULL before being
Expand All @@ -131,6 +132,7 @@ struct fpga_manager_ops {
int (*write_complete)(struct fpga_manager *mgr,
struct fpga_image_info *info);
void (*fpga_remove)(struct fpga_manager *mgr);
const struct attribute_group **groups;
};

/**
Expand Down
2 changes: 2 additions & 0 deletions include/linux/fpga/fpga-region.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* @info: FPGA image info
* @priv: private data
* @get_bridges: optional function to get bridges to a list
* @groups: optional attribute groups.
*/
struct fpga_region {
struct device dev;
Expand All @@ -23,6 +24,7 @@ struct fpga_region {
struct fpga_image_info *info;
void *priv;
int (*get_bridges)(struct fpga_region *region);
const struct attribute_group **groups;
};

#define to_fpga_region(d) container_of(d, struct fpga_region, dev)
Expand Down

0 comments on commit 845089b

Please sign in to comment.