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 26/55] Input: atmel_mxt_ts - refactor code to enter bootloader into separate func
    Date
    From: Nick Dyer <nick.dyer@itdev.co.uk>

    Refactor code to enter bootloader into separate func

    Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
    (cherry picked from ndyer/linux/for-upstream commit bedd706a32522b946467e15f4f4f24de86a1b4d7)
    [gdavis: Resolve forward port conflicts due to applying upstream
    commit 96a938aa214e ("Input: atmel_mxt_ts - remove platform
    data support").]
    Signed-off-by: George G. Davis <george_davis@mentor.com>
    [jiada: Squash change from ndyer/linux/for-upstream commit d691d3ee6c6de84b38464a42
    3207b3e23cb9dc3a
    - Input: atmel_mxt_ts - check firmware format before entering bootloader
    Add commit description]
    Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 43 +++++++++++++++---------
    1 file changed, 27 insertions(+), 16 deletions(-)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index 2c4b68802bc3..11b2f133e6be 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -3257,23 +3257,10 @@ static int mxt_check_firmware_format(struct device *dev,
    return -EINVAL;
    }

    -static int mxt_load_fw(struct device *dev)
    +static int mxt_enter_bootloader(struct mxt_data *data)
    {
    - struct mxt_data *data = dev_get_drvdata(dev);
    - struct mxt_flash f = { 0, };
    int ret;

    - ret = request_firmware(&f.fw, data->fw_name, dev);
    - if (ret) {
    - dev_err(dev, "Unable to open firmware %s\n", data->fw_name);
    - return ret;
    - }
    -
    - /* Check for incorrect enc file */
    - ret = mxt_check_firmware_format(dev, f.fw);
    - if (ret)
    - goto release_firmware;
    -
    if (data->suspended) {
    if (data->suspend_mode == MXT_SUSPEND_REGULATOR)
    mxt_regulator_enable(data);
    @@ -3291,14 +3278,14 @@ static int mxt_load_fw(struct device *dev)
    ret = mxt_t6_command(data, MXT_COMMAND_RESET,
    MXT_BOOT_VALUE, false);
    if (ret)
    - goto release_firmware;
    + return ret;

    msleep(MXT_RESET_TIME);

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

    mxt_sysfs_remove(data);
    mxt_free_input_device(data);
    @@ -3309,6 +3296,30 @@ static int mxt_load_fw(struct device *dev)

    reinit_completion(&data->bl_completion);

    + return 0;
    +}
    +
    +static int mxt_load_fw(struct device *dev)
    +{
    + struct mxt_data *data = dev_get_drvdata(dev);
    + struct mxt_flash f = { 0, };
    + int ret;
    +
    + ret = request_firmware(&f.fw, data->fw_name, dev);
    + if (ret) {
    + dev_err(dev, "Unable to open firmware %s\n", data->fw_name);
    + return ret;
    + }
    +
    + /* Check for incorrect enc file */
    + ret = mxt_check_firmware_format(dev, f.fw);
    + if (ret)
    + goto release_firmware;
    +
    + ret = mxt_enter_bootloader(data);
    + if (ret)
    + goto release_firmware;
    +
    ret = mxt_check_bootloader(data, MXT_WAITING_BOOTLOAD_CMD, false);
    if (ret) {
    /* Bootloader may still be unlocked from previous attempt */
    --
    2.17.1
    \
     
     \ /
      Last update: 2020-03-25 14:35    [W:5.115 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site