lkml.org 
[lkml]   [2021]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 113/128] Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312
    Date
    From: Johnny Chuang <johnny.chuang.emc@gmail.com>

    commit 4ebfee2bbc1a9c343dd50565ba5ae249fac32267 upstream.

    The eKTH3900/eKTH5312 series do not support the firmware update rules of
    Remark ID. Exclude these two series from checking it when updating the
    firmware in touch controllers.

    Signed-off-by: Johnny Chuang <johnny.chuang.emc@gmail.com>
    Link: https://lore.kernel.org/r/1639619603-20616-1-git-send-email-johnny.chuang.emc@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/input/touchscreen/elants_i2c.c | 46 ++++++++++++++++++++++++++++++++-
    1 file changed, 45 insertions(+), 1 deletion(-)

    --- a/drivers/input/touchscreen/elants_i2c.c
    +++ b/drivers/input/touchscreen/elants_i2c.c
    @@ -117,6 +117,19 @@
    #define ELAN_POWERON_DELAY_USEC 500
    #define ELAN_RESET_DELAY_MSEC 20

    +/* FW boot code version */
    +#define BC_VER_H_BYTE_FOR_EKTH3900x1_I2C 0x72
    +#define BC_VER_H_BYTE_FOR_EKTH3900x2_I2C 0x82
    +#define BC_VER_H_BYTE_FOR_EKTH3900x3_I2C 0x92
    +#define BC_VER_H_BYTE_FOR_EKTH5312x1_I2C 0x6D
    +#define BC_VER_H_BYTE_FOR_EKTH5312x2_I2C 0x6E
    +#define BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C 0x77
    +#define BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C 0x78
    +#define BC_VER_H_BYTE_FOR_EKTH5312x1_I2C_USB 0x67
    +#define BC_VER_H_BYTE_FOR_EKTH5312x2_I2C_USB 0x68
    +#define BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C_USB 0x74
    +#define BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C_USB 0x75
    +
    enum elants_chip_id {
    EKTH3500,
    EKTF3624,
    @@ -736,6 +749,37 @@ static int elants_i2c_validate_remark_id
    return 0;
    }

    +static bool elants_i2c_should_check_remark_id(struct elants_data *ts)
    +{
    + struct i2c_client *client = ts->client;
    + const u8 bootcode_version = ts->iap_version;
    + bool check;
    +
    + /* I2C eKTH3900 and eKTH5312 are NOT support Remark ID */
    + if ((bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x1_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x2_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH3900x3_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x1_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x2_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x1_I2C_USB) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312x2_I2C_USB) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx1_I2C_USB) ||
    + (bootcode_version == BC_VER_H_BYTE_FOR_EKTH5312cx2_I2C_USB)) {
    + dev_dbg(&client->dev,
    + "eKTH3900/eKTH5312(0x%02x) are not support remark id\n",
    + bootcode_version);
    + check = false;
    + } else if (bootcode_version >= 0x60) {
    + check = true;
    + } else {
    + check = false;
    + }
    +
    + return check;
    +}
    +
    static int elants_i2c_do_update_firmware(struct i2c_client *client,
    const struct firmware *fw,
    bool force)
    @@ -749,7 +793,7 @@ static int elants_i2c_do_update_firmware
    u16 send_id;
    int page, n_fw_pages;
    int error;
    - bool check_remark_id = ts->iap_version >= 0x60;
    + bool check_remark_id = elants_i2c_should_check_remark_id(ts);

    /* Recovery mode detection! */
    if (force) {

    \
     
     \ /
      Last update: 2021-12-27 16:54    [W:3.676 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site