From nobody Tue Dec 30 17:02:18 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D83CAC4167D for ; Tue, 14 Nov 2023 03:35:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231899AbjKNDfB convert rfc822-to-8bit (ORCPT ); Mon, 13 Nov 2023 22:35:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229626AbjKNDe6 (ORCPT ); Mon, 13 Nov 2023 22:34:58 -0500 Received: from ex01.ufhost.com (ex01.ufhost.com [61.152.239.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 937EA192 for ; Mon, 13 Nov 2023 19:34:51 -0800 (PST) Received: from EXMBX165.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX165", Issuer "EXMBX165" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id 2220D24E28C; Tue, 14 Nov 2023 11:34:49 +0800 (CST) Received: from EXMBX066.cuchost.com (172.16.7.66) by EXMBX165.cuchost.com (172.16.6.75) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 14 Nov 2023 11:34:49 +0800 Received: from localhost.localdomain (161.142.156.149) by EXMBX066.cuchost.com (172.16.6.66) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 14 Nov 2023 11:34:47 +0800 From: Joshua Yeong To: , CC: , , "Joshua Yeong" Subject: [PATCH v2 1/1] i3c: Add fallback method for GETMXDS CCC Date: Tue, 14 Nov 2023 11:34:30 +0800 Message-ID: <20231114033430.9623-2-joshua.yeong@starfivetech.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231114033430.9623-1-joshua.yeong@starfivetech.com> References: <20231114033430.9623-1-joshua.yeong@starfivetech.com> MIME-Version: 1.0 X-Originating-IP: [161.142.156.149] X-ClientProxiedBy: EXCAS062.cuchost.com (172.16.6.22) To EXMBX066.cuchost.com (172.16.6.66) X-YovoleRuleAgent: yovoleflag Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Some I3C hardware will report error when incorrect length is received from device. GETMXDS CCC are availble in 2 formats; without turnaround time (for= mat 1) and with turnaround time (format 2). There is no mechanics to determine = which format is supported by device. In case sending GETMXDS CCC format 2 resulted failure, try sending GETMXDS CCC format 1 instead. Signed-off-by: Joshua Yeong --- drivers/i3c/master.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 0cdc94e4cb77..2fc04d97f07e 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -1099,8 +1099,16 @@ static int i3c_master_getmxds_locked(struct i3c_mast= er_controller *master, =20 i3c_ccc_cmd_init(&cmd, true, I3C_CCC_GETMXDS, &dest, 1); ret =3D i3c_master_send_ccc_cmd_locked(master, &cmd); - if (ret) - goto out; + if (ret) { + /* + * Retry when the device does not support max read turnaround + * while expecting shorter length from this CCC command + */ + dest->payload.len -=3D 3; + ret =3D i3c_master_send_ccc_cmd_locked(master, &cmd); + if (ret) + goto out; + } =20 if (dest.payload.len !=3D 2 && dest.payload.len !=3D 5) { ret =3D -EIO; --=20 2.25.1