From patchwork Wed Feb 12 08:41:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Jiada" X-Patchwork-Id: 11377987 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 69A0F924 for ; Wed, 12 Feb 2020 08:48:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5276D20661 for ; Wed, 12 Feb 2020 08:48:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728637AbgBLIsP (ORCPT ); Wed, 12 Feb 2020 03:48:15 -0500 Received: from esa4.mentor.iphmx.com ([68.232.137.252]:19960 "EHLO esa4.mentor.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728537AbgBLIsP (ORCPT ); Wed, 12 Feb 2020 03:48:15 -0500 IronPort-SDR: wpgq98jpl/Rb9f91vuUGeyfHh0txwAcKMfi0BX6I2DFTtr9/Nd2RfoNTi0r3bL7BdxsGSrGQbe UBd1SUF7TuJH/7J0ar4xSL4Flef2v0PgvvmlzBPRbk7/feAHVxp3sMExhfKG8EBdQzm0VUkVad rHjmLahqh6f775Qm2tLQp/yjJVkVq61EKJcvkn5HdHUuFGRgjc5jVji/0AlMU/tI3KonvUUCLT JpBtOB5Y9bG70glDXMBslqYq/xpWWqR6uk6EE50cL+Xwfcujdxmnmg6J7L+K/cX82YYK3cDWL/ 2SQ= X-IronPort-AV: E=Sophos;i="5.70,428,1574150400"; d="scan'208";a="45799347" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 12 Feb 2020 00:45:11 -0800 IronPort-SDR: QvzBmcAWmkm6Pln3lwCl3XSjvXVNqcuEZZgxBBEuxS1rcniXT0+Gm1XVkdkTH2eQwthYweGVaJ +ocX4N5D4VKpn8AkYZ/clXpdWO8NCIZW1hPz3RIlP+0zNwplhwVfA+ayeSHqf6C0M+CAVXXpwJ 8/y6uPoIdTadFpjGKFHjgoZGM60TMqr6unk/iZBrIsUPOtv/mLtXKEiE/4bq7msZQWErCubyHa xgBuedM9IGYaezdcF9lNItwU70/2/eM0USplBckG1BpmNf+PMU0LNoWsYHwi54TAQRCKaG2Tr3 VAI= From: Jiada Wang To: , , , , , CC: , , , , Subject: [PATCH v7 21/48] Input: atmel_mxt_ts - combine bootloader version query with probe Date: Wed, 12 Feb 2020 00:41:51 -0800 Message-ID: <20200212084218.32344-22-jiada_wang@mentor.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200212084218.32344-1-jiada_wang@mentor.com> References: <20200212084218.32344-1-jiada_wang@mentor.com> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Nick Dyer 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 (cherry picked from ndyer/linux/for-upstream commit a2d141f170c80fea6663af98aab0be32abc0ddb0) Signed-off-by: George G. Davis Signed-off-by: Jiada Wang --- 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 69d2a7276bd7..bcdb2e05912e 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -558,47 +558,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) { @@ -632,9 +616,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: @@ -3283,7 +3264,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;