lkml.org 
[lkml]   [2020]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v9 34/55] Input: atmel_mxt_ts - implement debug output for messages
    Date
    From: Nick Dyer <nick.dyer@itdev.co.uk>

    Add a debug switch which causes all messages from the touch controller to
    be dumped to the dmesg log with a set prefix "MXT MSG:". This is used by
    Atmel user-space utilities to debug touch operation. Enabling this output
    does impact touch performance.

    Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
    (cherry picked from ndyer/linux/for-upstream commit 3c3fcfdd4889dfeb1c80ae8cd94a622c6342b06a)
    [gdavis: Forward port and fix conflicts.]
    Signed-off-by: George G. Davis <george_davis@mentor.com>
    [jiada: Rename mxt_debug_enable_store to debug_enable_store
    Rename mxt_debug_enable_show to debug_enable_show
    Replace DEVICE_ATTR with DEVICE_ATTR_RW]
    Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 46 ++++++++++++++++++++++--
    1 file changed, 43 insertions(+), 3 deletions(-)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index b1f54bf207b8..656d956f9c93 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -335,6 +335,7 @@ struct mxt_data {
    u8 t100_aux_ampl;
    u8 t100_aux_area;
    u8 t100_aux_vect;
    + bool debug_enabled;
    u8 max_reportid;
    u32 config_crc;
    u32 info_crc;
    @@ -460,8 +461,11 @@ static bool mxt_object_readable(unsigned int type)

    static void mxt_dump_message(struct mxt_data *data, u8 *message)
    {
    - dev_dbg(&data->client->dev, "message: %*ph\n",
    - data->T5_msg_size, message);
    + /* debug message with prefix 'MXT MSG:' used by
    + * Atmel user-space utilities to debug touch operation
    + */
    + dev_dbg(&data->client->dev, "MXT MSG: %*ph\n",
    + data->T5_msg_size, message);
    }

    static int mxt_wait_for_completion(struct mxt_data *data,
    @@ -1211,6 +1215,7 @@ static void mxt_proc_t93_messages(struct mxt_data *data, u8 *msg)
    static int mxt_proc_message(struct mxt_data *data, u8 *message)
    {
    u8 report_id = message[0];
    + bool dump = data->debug_enabled;

    if (report_id == MXT_RPTID_NOMSG)
    return 0;
    @@ -1245,9 +1250,12 @@ static int mxt_proc_message(struct mxt_data *data, u8 *message)
    } else if (report_id == data->T93_reportid) {
    mxt_proc_t93_messages(data, message);
    } else {
    - mxt_dump_message(data, message);
    + dump = true;
    }

    + if (dump)
    + mxt_dump_message(data, message);
    +
    return 1;
    }

    @@ -3519,6 +3527,36 @@ static ssize_t update_cfg_store(struct device *dev,
    return ret;
    }

    +static ssize_t debug_enable_show(struct device *dev,
    + struct device_attribute *attr, char *buf)
    +{
    + struct mxt_data *data = dev_get_drvdata(dev);
    + char c;
    +
    + c = data->debug_enabled ? '1' : '0';
    + return scnprintf(buf, PAGE_SIZE, "%c\n", c);
    +}
    +
    +static ssize_t debug_enable_store(struct device *dev,
    + struct device_attribute *attr, const char *buf, size_t count)
    +{
    + struct mxt_data *data = dev_get_drvdata(dev);
    + u8 i;
    + ssize_t ret;
    +
    + if (kstrtou8(buf, 0, &i) == 0 && i < 2) {
    + data->debug_enabled = (i == 1);
    +
    + dev_dbg(dev, "%s\n", i ? "debug enabled" : "debug disabled");
    + ret = count;
    + } else {
    + dev_dbg(dev, "debug_enabled write error\n");
    + ret = -EINVAL;
    + }
    +
    + return ret;
    +}
    +
    static DEVICE_ATTR_WO(update_fw);

    static struct attribute *mxt_fw_attrs[] = {
    @@ -3535,6 +3573,7 @@ static DEVICE_ATTR_RO(hw_version);
    static DEVICE_ATTR(object, S_IRUGO, mxt_object_show, NULL);
    static DEVICE_ATTR_WO(update_cfg);
    static DEVICE_ATTR_RO(config_crc);
    +static DEVICE_ATTR_RW(debug_enable);

    static struct attribute *mxt_attrs[] = {
    &dev_attr_fw_version.attr,
    @@ -3542,6 +3581,7 @@ static struct attribute *mxt_attrs[] = {
    &dev_attr_object.attr,
    &dev_attr_update_cfg.attr,
    &dev_attr_config_crc.attr,
    + &dev_attr_debug_enable.attr,
    NULL
    };

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-03-25 14:37    [W:5.092 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site