lkml.org 
[lkml]   [2016]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[QUEUED v20160408 11/18] intel_th: Allow subdevice drivers to bring in own attribute groups
    Date
    Some subdevices (MSU, PTI) need to register their own driver-specific
    attribute groups. Provide a way for those to pass their attribute
    groups to the core driver in their driver structure so that the
    core can take care of creating and removing them.

    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    ---
    drivers/hwtracing/intel_th/core.c | 12 ++++++++++++
    drivers/hwtracing/intel_th/intel_th.h | 3 +++
    2 files changed, 15 insertions(+)

    diff --git a/drivers/hwtracing/intel_th/core.c b/drivers/hwtracing/intel_th/core.c
    index 4272f2ce5f..db0691929a 100644
    --- a/drivers/hwtracing/intel_th/core.c
    +++ b/drivers/hwtracing/intel_th/core.c
    @@ -71,6 +71,15 @@ static int intel_th_probe(struct device *dev)
    if (ret)
    return ret;

    + if (thdrv->attr_group) {
    + ret = sysfs_create_group(&thdev->dev.kobj, thdrv->attr_group);
    + if (ret) {
    + thdrv->remove(thdev);
    +
    + return ret;
    + }
    + }
    +
    if (thdev->type == INTEL_TH_OUTPUT &&
    !intel_th_output_assigned(thdev))
    ret = hubdrv->assign(hub, thdev);
    @@ -91,6 +100,9 @@ static int intel_th_remove(struct device *dev)
    return err;
    }

    + if (thdrv->attr_group)
    + sysfs_remove_group(&thdev->dev.kobj, thdrv->attr_group);
    +
    thdrv->remove(thdev);

    if (intel_th_output_assigned(thdev)) {
    diff --git a/drivers/hwtracing/intel_th/intel_th.h b/drivers/hwtracing/intel_th/intel_th.h
    index eedd09332d..15ebd48a29 100644
    --- a/drivers/hwtracing/intel_th/intel_th.h
    +++ b/drivers/hwtracing/intel_th/intel_th.h
    @@ -115,6 +115,7 @@ intel_th_output_assigned(struct intel_th_device *thdev)
    * @enable: enable tracing for a given output device
    * @disable: disable tracing for a given output device
    * @fops: file operations for device nodes
    + * @attr_group: attributes provided by the driver
    *
    * Callbacks @probe and @remove are required for all device types.
    * Switch device driver needs to fill in @assign, @enable and @disable
    @@ -139,6 +140,8 @@ struct intel_th_driver {
    void (*deactivate)(struct intel_th_device *thdev);
    /* file_operations for those who want a device node */
    const struct file_operations *fops;
    + /* optional attributes */
    + struct attribute_group *attr_group;

    /* source ops */
    int (*set_output)(struct intel_th_device *thdev,
    --
    2.8.0.rc3
    \
     
     \ /
      Last update: 2016-04-08 17:41    [W:2.726 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site