lkml.org 
[lkml]   [2016]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/20] intel_th: Use real device index in the node names
    Date
    Most of the intel_th core supports multiple co-existing TH devices,
    except for output device nodes, where intel_th device id is hardcoded
    to be zero.

    Fix this by fetching the actual intel_th device id from the parent
    device's drvdata.

    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    ---
    drivers/hwtracing/intel_th/core.c | 23 ++++++++++++++++++++---
    1 file changed, 20 insertions(+), 3 deletions(-)

    diff --git a/drivers/hwtracing/intel_th/core.c b/drivers/hwtracing/intel_th/core.c
    index 6df3cd9774..4272f2ce5f 100644
    --- a/drivers/hwtracing/intel_th/core.c
    +++ b/drivers/hwtracing/intel_th/core.c
    @@ -124,17 +124,34 @@ static struct device_type intel_th_source_device_type = {
    .release = intel_th_device_release,
    };

    +static struct intel_th *to_intel_th(struct intel_th_device *thdev)
    +{
    + /*
    + * subdevice tree is flat: if this one is not a switch, its
    + * parent must be
    + */
    + if (thdev->type != INTEL_TH_SWITCH)
    + thdev = to_intel_th_hub(thdev);
    +
    + if (WARN_ON_ONCE(!thdev || thdev->type != INTEL_TH_SWITCH))
    + return NULL;
    +
    + return dev_get_drvdata(thdev->dev.parent);
    +}
    +
    static char *intel_th_output_devnode(struct device *dev, umode_t *mode,
    kuid_t *uid, kgid_t *gid)
    {
    struct intel_th_device *thdev = to_intel_th_device(dev);
    + struct intel_th *th = to_intel_th(thdev);
    char *node;

    if (thdev->id >= 0)
    - node = kasprintf(GFP_KERNEL, "intel_th%d/%s%d", 0, thdev->name,
    - thdev->id);
    + node = kasprintf(GFP_KERNEL, "intel_th%d/%s%d", th->id,
    + thdev->name, thdev->id);
    else
    - node = kasprintf(GFP_KERNEL, "intel_th%d/%s", 0, thdev->name);
    + node = kasprintf(GFP_KERNEL, "intel_th%d/%s", th->id,
    + thdev->name);

    return node;
    }
    --
    2.7.0
    \
     
     \ /
      Last update: 2016-02-15 18:41    [W:4.091 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site