lkml.org 
[lkml]   [2020]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v11 29/56] Input: atmel_mxt_ts - combine bootloader version query with probe
    Date
    From: Nick Dyer <nick.dyer@itdev.co.uk>

    This removes some complexity from the bootloader state machine, and means
    that we always output some debug about the version as soon as we start
    talking to the bootloader.

    Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
    (cherry picked from ndyer/linux/for-upstream commit a2d141f170c80fea6663af98aab0be32abc0ddb0)
    Signed-off-by: George G. Davis <george_davis@mentor.com>
    Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 45 +++++++-----------------
    1 file changed, 13 insertions(+), 32 deletions(-)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index 674763dddcd3..e2538c2dd3f7 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -559,47 +559,31 @@ static int mxt_probe_bootloader(struct mxt_data *data, bool alt_address)
    {
    struct device *dev = &data->client->dev;
    int error;
    - u8 val;
    - bool crc_failure;
    + u8 buf[3];
    + bool crc_failure, extended_id;

    error = mxt_lookup_bootloader_address(data, alt_address);
    if (error)
    return error;

    - error = mxt_bootloader_read(data, &val, 1);
    + /* Check bootloader status and version information */
    + error = mxt_bootloader_read(data, buf, sizeof(buf));
    if (error)
    return error;

    - /* Check app crc fail mode */
    - crc_failure = (val & ~MXT_BOOT_STATUS_MASK) == MXT_APP_CRC_FAIL;
    + crc_failure = (buf[0] & ~MXT_BOOT_STATUS_MASK) == MXT_APP_CRC_FAIL;
    + extended_id = buf[0] & MXT_BOOT_EXTENDED_ID;

    - dev_err(dev, "Detected bootloader, status:%02X%s\n",
    - val, crc_failure ? ", APP_CRC_FAIL" : "");
    + dev_info(dev, "Found bootloader addr:%02x ID:%u%s%u%s\n",
    + data->bootloader_addr,
    + extended_id ? (buf[1] & MXT_BOOT_ID_MASK) : buf[0],
    + extended_id ? " version:" : "",
    + extended_id ? buf[2] : 0,
    + crc_failure ? ", APP_CRC_FAIL" : "");

    return 0;
    }

    -static u8 mxt_get_bootloader_version(struct mxt_data *data, u8 val)
    -{
    - struct device *dev = &data->client->dev;
    - u8 buf[3];
    -
    - if (val & MXT_BOOT_EXTENDED_ID) {
    - if (mxt_bootloader_read(data, &buf[0], 3) != 0) {
    - dev_err(dev, "%s: i2c failure\n", __func__);
    - return val;
    - }
    -
    - dev_dbg(dev, "Bootloader ID:%d Version:%d\n", buf[1], buf[2]);
    -
    - return buf[0];
    - } else {
    - dev_dbg(dev, "Bootloader ID:%d\n", val & MXT_BOOT_ID_MASK);
    -
    - return val;
    - }
    -}
    -
    static int mxt_check_bootloader(struct mxt_data *data, unsigned int state,
    bool wait)
    {
    @@ -633,9 +617,6 @@ static int mxt_check_bootloader(struct mxt_data *data, unsigned int state,
    if (ret)
    return ret;

    - if (state == MXT_WAITING_BOOTLOAD_CMD)
    - val = mxt_get_bootloader_version(data, val);
    -
    switch (state) {
    case MXT_WAITING_BOOTLOAD_CMD:
    case MXT_WAITING_FRAME_DATA:
    @@ -3279,7 +3260,7 @@ static int mxt_enter_bootloader(struct mxt_data *data)
    msleep(MXT_RESET_TIME);

    /* Do not need to scan since we know family ID */
    - ret = mxt_lookup_bootloader_address(data, 0);
    + ret = mxt_probe_bootloader(data, 0);
    if (ret)
    return ret;

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-05-08 07:59    [W:3.068 / U:1.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site