From nobody Thu Dec 18 16:19:22 2025 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 460AF1E47D9; Thu, 20 Feb 2025 06:11:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031878; cv=none; b=t7oIiTG1jQnDtXdwEmXoqTmfkDy9sPZcmJNSQ8d5lXaxIhvbkn5U6G7DAoB4RRq8nfvHhkm5C8le/syOrvtFnwau6sq/M4XzkJ7CIEzua7vQpq9cjQfVjA7jXxBQZFwRxM8wTeMtPk+W41XAtm+TTJT6dFnOZ2X+40lE/RPEZbg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031878; c=relaxed/simple; bh=Se7UNv3ruOOB1Cq1f+jNbn90MdBdBHCtIaot8MDzR7Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cFRI+weDmVBbC1LnJ3dgqjpJ1iAG0B9r9rIRGfFg+l3xkZvUoQwTT+hA21irB0MlxpyzSgfY9Dh3dnnnT5UvhltsZPisgcVd4z7O2ySGedzIROsF0jsbRvQJGCF/M50cN7++tTmJ8Wilen84dp7W5JHbk4OY4rWj3WDEq2rIooU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AQ5kv87M; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AQ5kv87M" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2211cd4463cso9351895ad.2; Wed, 19 Feb 2025 22:11:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740031875; x=1740636675; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4NhZRYUnG3q+UctqXkfGAttcdIouM3jfXXmawCdJWIU=; b=AQ5kv87MXdVuKg4OToyN7jF0TZfC0dLLiMnOzj/7T2z8nl1H0YlukKHoJq468k3vCQ JORINXtDTbtQ0CX66MxADB+zubhhtwk9TBZKGmEJMX2pyZt0MfoNcmCVe9GIuR25sV4C C14S4SfJBtPhcG2AGKXBbI1yD0z7UVRMCb+hpI0CnNURU0IXIQcmp2FsFoXpPKASWvkx onKBINts3Lmpn8Db0abseSK7OyDqDS+q4xxeSP4+CZa4aVtwafhPiVH8kWxH0I2zKrok L9JqRFI2Y+OGW4aFqIWDu0QQ//R6aA/FDOuYHkAZAtbC1LuFom9XXOFqZujIjyKuR5g/ eExQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740031875; x=1740636675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4NhZRYUnG3q+UctqXkfGAttcdIouM3jfXXmawCdJWIU=; b=jXU/127DrHe+B9sxGUSq0u97ODRDWg1fFvQkTZTeCEG3yT/XWoPTSlKA9R9jb0vpnn XgKfqEAgVI6YRDaVEvJPjNPMFDP9L9T8I+Tyk7MsOuNyxEM4IFExyL8pnPznOxlcwIU5 kDN+DjzFFTiIClofwME6bCD4G+EI0Nc1GeP9NC74OmLr/pNVMYh6bJU9+7ueA+Sd/eP5 3FPdbiVJdkstYgb0ht74jyMaMOTDOZvahFkzEJzEa8VvakACrv1GVPccspcDe53xOv+5 tc6xh3iUm2gEc6iLgXYjK/UWu+/bU0di4sU0De0FDGkC6bqs4gPwq/WoSxRl+octozX4 sERw== X-Forwarded-Encrypted: i=1; AJvYcCVldfFzEHHA4BK8h2xI3zuwCIh+k3Mt8wAxUlYK7axyXpfUeJSMtF5hNfanI+ocTvd66Dy4D1ZOin8J@vger.kernel.org X-Gm-Message-State: AOJu0YzO20JmiAtau3J5HBk3DfxngHDE92UeXcRp57ewfIOd/cPoWQuq +Fkc1Hpn94UQhB3df7v1JHKNoPgTRvCfW99Gj7FyfW6An38wsUgpHrLr0w== X-Gm-Gg: ASbGncs3czQe5Cvc6j/MqLTuIVe6ojxrL3MfZpoRoWgmvV7pi119uIrpIRHd73jc/Cm ipQkCR3T07+t3F7jUd1tNyUy38/zJbVcyu+dIOXdy+gsghXJM2THazxoh/3TnpUapv6qof9haSY DhrAZychz9ySzdO3mu+h1m/xVzj+nPrGBYN0zrfXQFUtaGYDltzAb/Q04Z70UNqWI6pBlQG7qFx jrIeLz8eMHoduSCpFgHlFEnadC6RFmWdZ37DrbB9423Mg9+QIdhO+3YnG4n5Nzaa48V+tkrFrFB 2NIeLpZDhAUWLObAzyt5UFwQeQ== X-Google-Smtp-Source: AGHT+IErgDPvFbaPdYnyJfTUCqNxawOLeaE4X04U0/a/Og9Fxydety9DBz1/dgpY50LkVuvvq0M0oQ== X-Received: by 2002:a05:6a21:32a3:b0:1ee:c75c:beda with SMTP id adf61e73a8af0-1eec75cc2c3mr18787100637.35.1740031875401; Wed, 19 Feb 2025 22:11:15 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73271a02648sm8226823b3a.107.2025.02.19.22.11.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 22:11:15 -0800 (PST) From: Stanley Chu X-Google-Original-From: Stanley Chu To: frank.li@nxp.com, miquel.raynal@bootlin.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com Subject: [PATCH RESEND v2 1/4] dt-bindings: i3c: silvaco: Add npcm845 compatible string Date: Thu, 20 Feb 2025 14:11:04 +0800 Message-Id: <20250220061107.1718239-2-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220061107.1718239-1-yschu@nuvoton.com> References: <20250220061107.1718239-1-yschu@nuvoton.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stanley Chu Add a compatible string for Nuvoton BMC NPCM845 i3c controller. Signed-off-by: Stanley Chu --- Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml = b/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml index c56ff77677f1..9be4bc4cc482 100644 --- a/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml +++ b/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml @@ -14,7 +14,9 @@ allOf: =20 properties: compatible: - const: silvaco,i3c-master-v1 + enum: + - silvaco,i3c-master-v1 + - nuvoton,npcm845-i3c =20 reg: maxItems: 1 --=20 2.34.1 From nobody Thu Dec 18 16:19:22 2025 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEC3B1E5B66; Thu, 20 Feb 2025 06:11:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031881; cv=none; b=Yig+CMkbNmtDQDav5asq52QjW85wkT7VBGawuYDRBaVojWEot69FLYdFLvpzIvgfW43O77zHxMm15NYnNZZ0cGflEUURSV6eVD5m4Qs8wZNNN0KrtSXlebitVilNvUIV3B6pHoONCrv+kGXxdz21qeHpCU6RYBYL2m/QjY72R3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031881; c=relaxed/simple; bh=6U5XgCEy+ulJchyfM81frgddEG2ykLPjTr/ADmTTCe8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=I8UJOWUQzqOoYqGZZJYmtnVItPUZppahV8/519V8DkdffjHjwdZOVaU80fBcCu70XGyR/8GyaJtf6cmuow7pyOFIjx60gqZmOz+W1gJ4a9c/eg/cNQGmlBDnHEQP4MyLwMI+/+GyAH2O+9CywUNrZR8yF228KLl0zFukLJetnXA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=axQ49k7K; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="axQ49k7K" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-220c8f38febso9597185ad.2; Wed, 19 Feb 2025 22:11:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740031878; x=1740636678; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+j78yv7W1SEsENaFWTruZEdfPJNI2RZz4FriJMcOius=; b=axQ49k7KCsq9rLQZxMzXEeBiVCsgWO9KSHRu6WQHMdbY3SmOA+gS2LGEzddGAUHHpF +0+rluF5WD68BYtmmGeM1lv5TTptdkyVYsqJETn9mFeE7quUtFr3Fh8dt+AyD2NWKs/e nCMA/biFbPRlLvUaRHan4Mn8qF6bga2FH/+/N7i+n/bDBpuSdmuGxHI2GUKtYvT2wglt Q3yk0W/77EVHSf+ogrRwEpEJwKKqFDIJV6jczNFB/s5BVWdve7x5t3kQWmbfoLVX1pmO 7H67RG3g4oSRS8bZcdry1m8CPDXQsNKcjqiqcAcxNexRguevmQP9VOa0fys+FRPte2QN goOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740031878; x=1740636678; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+j78yv7W1SEsENaFWTruZEdfPJNI2RZz4FriJMcOius=; b=SovKMR4Nms8VODzY3vEsfODsVSBOCFXNgfj4ehjyNzQ7n1FbCzc4XiQ/+yvmjvG2iW Fzxeh0m5szdBMY2AScQGYu65rHfVCsHLAUbg/iAzajFZKJllDFrSLFTBLK9tdsAZ9Sua 0mcVLmg7is9YF9Jx9QhQ1V1a8+/JP5y5qExqadYVi2OxMy+2CluGFJ4XT/WjOaSrJN80 9ojOs9rkeUYSJd0MzngnNesTTZASbj2rJWLbtIljlK+f5P0QToIA4issJUlX3ch1XU0S N5J8Uahr1a7xtGcmR7cf7K6peviSuqq6INz9/l1no+mGiDZZe0oKz6tydd2v4jJ44/z6 WtEA== X-Forwarded-Encrypted: i=1; AJvYcCWLpjcT4MubZwrlkZLl5WZhpJR+hnhwE5ttVsjM0nu7KJvU179PdA54dnQfyMzYJmsiB26LJU+zfD3L@vger.kernel.org X-Gm-Message-State: AOJu0YznZ88FBiqq1Qz+vjNQ4662mgbaaxd8ofJrCplkCuWx5n7IFKkc 0vWxWRUTdj61T8bADS48p7h+cKHPnIPaZeQG+ExLK71jWiuYmN+a X-Gm-Gg: ASbGnct1mky0w8yxxzlDwLGzXfyR2EhMP582uBZntJpM1MOGyr7kPThrAxo6Sqz+735 5vWvd8O2mCgNYMe88i1r0Ey3HSPbpBhKtnz2/xqIOdSZvvfJYbYgjB/i9HrpaIht78bQLJc9pFJ hKigNTVPr/Vq2Ex431fYxrFvXKTJPMrM/UoBU4X5L+4S41u8a5ZWkyuITKYgVnjzCEopRYu9XMp z/W0Y8l6hGyC7Hu0UZpPY6dVlAnrQfFiHWgvtH+XNCXeBVgcU+FkZmGoWojEIUv7NhhgzNMBzMG vqNhxtUCG7hEvxgfKPCQdL88/A== X-Google-Smtp-Source: AGHT+IFU3vxY9Ip1+CC3bff8XqxgjtFV+EfaOwsPv0Qbpgrftb/RcnRACrHbtb9fAqxl0J/+zKDiqA== X-Received: by 2002:a05:6a20:9148:b0:1ee:e2ac:5159 with SMTP id adf61e73a8af0-1eee5c95932mr2769361637.19.1740031877986; Wed, 19 Feb 2025 22:11:17 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73271a02648sm8226823b3a.107.2025.02.19.22.11.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 22:11:17 -0800 (PST) From: Stanley Chu X-Google-Original-From: Stanley Chu To: frank.li@nxp.com, miquel.raynal@bootlin.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com Subject: [PATCH RESEND v2 2/4] i3c: master: svc: Add support for Nuvoton npcm845 i3c Date: Thu, 20 Feb 2025 14:11:05 +0800 Message-Id: <20250220061107.1718239-3-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220061107.1718239-1-yschu@nuvoton.com> References: <20250220061107.1718239-1-yschu@nuvoton.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stanley Chu Nuvoton npcm845 SoC uses the same Silvico IP but an older version. Add npcm845 specific quirks. Signed-off-by: Stanley Chu --- drivers/i3c/master/svc-i3c-master.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i= 3c-master.c index d6057d8c7dec..c58440061d5a 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -133,6 +133,22 @@ #define SVC_I3C_EVENT_IBI GENMASK(7, 0) #define SVC_I3C_EVENT_HOTJOIN BIT(31) =20 +/* + * SVC_I3C_QUIRK_FIFO_EMPTY: + * I3C HW stalls the write transfer if the transmit FIFO becomes empty, + * when new data is written to FIFO, I3C HW resumes the transfer but + * the first transmitted data bit may have the wrong value. + * Workaround: + * Fill the FIFO in advance to prevent FIFO from becoming empty. + */ +#define SVC_I3C_QUIRK_FIFO_EMPTY BIT(0) +/* + * SVC_I3C_QUIRK_FLASE_SLVSTART: + * I3C HW may generate an invalid SlvStart event when emitting a STOP. + * If it is a true SlvStart, the MSTATUS state should be SLVREQ. + */ +#define SVC_I3C_QUIRK_FALSE_SLVSTART BIT(1) + struct svc_i3c_cmd { u8 addr; bool rnw; @@ -216,6 +232,7 @@ struct svc_i3c_master { struct mutex lock; u32 enabled_events; u32 mctrl_config; + u32 quirks; }; =20 /** @@ -230,6 +247,14 @@ struct svc_i3c_i2c_dev_data { struct i3c_generic_ibi_pool *ibi_pool; }; =20 +struct svc_i3c_drvdata { + u32 quirks; +}; + +const struct svc_i3c_drvdata npcm845_drvdata =3D { + .quirks =3D SVC_I3C_QUIRK_FIFO_EMPTY | SVC_I3C_QUIRK_FALSE_SLVSTART, +}; + static inline bool is_events_enabled(struct svc_i3c_master *master, u32 ma= sk) { return !!(master->enabled_events & mask); @@ -1811,6 +1836,7 @@ static int svc_i3c_master_probe(struct platform_devic= e *pdev) { struct device *dev =3D &pdev->dev; struct svc_i3c_master *master; + const struct svc_i3c_drvdata *data =3D of_device_get_match_data(dev); int ret; =20 master =3D devm_kzalloc(dev, sizeof(*master), GFP_KERNEL); @@ -1868,6 +1894,8 @@ static int svc_i3c_master_probe(struct platform_devic= e *pdev) } =20 platform_set_drvdata(pdev, master); + if (data) + master->quirks =3D data->quirks; =20 pm_runtime_set_autosuspend_delay(&pdev->dev, SVC_I3C_PM_TIMEOUT_MS); pm_runtime_use_autosuspend(&pdev->dev); @@ -1960,6 +1988,7 @@ static const struct dev_pm_ops svc_i3c_pm_ops =3D { =20 static const struct of_device_id svc_i3c_master_of_match_tbl[] =3D { { .compatible =3D "silvaco,i3c-master-v1"}, + { .compatible =3D "nuvoton,npcm845-i3c", .data =3D &npcm845_drvdata }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, svc_i3c_master_of_match_tbl); --=20 2.34.1 From nobody Thu Dec 18 16:19:22 2025 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FE071E25FA; Thu, 20 Feb 2025 06:11:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031882; cv=none; b=Ooz0B8sx36Hq/qhrHfkTv79nOcAs6+OvJ2XHdBzfrkqlXpu7JKzuZYVDNNWMoLDgU3GlaS7Lp5u7Ihq6u4Kznf8O9hozcXQ9STAgImzrGFbd+9gGQsKSw94RAOHIHwt2E5fXhvELDlhvPa8lV6ei5ZHtUNi8FwtLL+5rePhcFbs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031882; c=relaxed/simple; bh=zKY0RPinE6Is/VtilEnqPd6rIm2aGTxiz+O6yjvOxdg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Goyktefd5r9UnFbQlwAvF0+ksU9+QRyVzk6jHrPLnQXttAwwVnlmKBjpIULbJAlmgtjCKNmHHgNqwx6sSD+hCnvpVE2TO3tGbv1axzM68os1I2/+lky95LfSA/qqrm/kcPbEX9d2Fl8JhdxztBgbg1elzWQ3g1EKUGPl+PjCDgk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cTIV3Jpa; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cTIV3Jpa" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-22104c4de96so7611775ad.3; Wed, 19 Feb 2025 22:11:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740031880; x=1740636680; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/jyCgdWDKnjZQEA9Y1qdWuHJCZbETxV6ANCbypcoIhQ=; b=cTIV3Jpa6lRAdbPDRq62N/j+6NNgYehHPexlskArN6Bw+sPZPCRIQqwIG04/XHbT84 0NRXyEDI5nzEsSL97AqFbnGDjdKtWR951xGTAtalTGmX6FfFiVq2tL5RM899kIW6Hqum dhu2YdWnuXRcgmwcPPu42JhSylqVZxsxY4vAMAnw7ywUv9ew5VcZIfYvU/OO2GY8aJRZ hmxuCimCxAgYtZ/Pp06dFGbmVvtu0E+bcfzGZu65ldPqSfO5c7iib2RDFyc+JxuSD+oY BJAPjZkVlOhMKn37ZkKVo8DccIvY5Mq/kG3zUl9x5cNuuSfr+3assuz5o+2ClaFxdWen F/4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740031880; x=1740636680; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/jyCgdWDKnjZQEA9Y1qdWuHJCZbETxV6ANCbypcoIhQ=; b=nK0LRdFrwFKr/Q+fQIGOtrnmntzLRq1Wg0RRM/fBNqrOA9zBgvbcdYV98UvNZASDwh eX+dPlTwiK19BnBthF8P7rcZu5sQgo5N04l7xixg/JsLXGGeJacAnHFW6Q5eDY7cl5lV 1kcfmqVzlqLHGPl3dqf3NFLai7G7+pZK6VqD7P7hCdgnOxTEDg0Ro7dA0J1il9u6hHmr Jats6VosofrF8FAH17koXGM5C085NlZGfkKOBPjx3KPtASaOheLTqvpYeyXzW+CQQUED ST2xNmyDiUA9TBxT76WJo0yyzSf5sVVcFylFOcHVZOdgrW9RgYw0x06QRGULwcnuYjjG qDZA== X-Forwarded-Encrypted: i=1; AJvYcCWAMQdxWkte9dtIxQvmmzeYAQpW5gk6oYliwfMBHOD8yRli2YmaZNwGlJpLWR0uOXTxqTs0826f5Mga@vger.kernel.org X-Gm-Message-State: AOJu0YxcaB5kg3QtWtGJgHfxL+dZsFz9cOhQeOL3+vPXUB6RUcX4A4w4 6bksSpYXtSkogsP6cpK3xVbQm1OuFzXkek2z8iPWNR+uB3TrzXLjI5LSfA== X-Gm-Gg: ASbGncvKQGSXgKxpt1alubGzRDWdODoeLZGxXMS0LpL6TJKwwzIDi6FibMAdgZ3hT+p hWLfbuWGeWKLYayj6O5PZgBZevN3uNJxqWDo2IAylP+OESavECsnLHULh6XOjVTQWTEtr3YSgwW WYWFcs0WOBK5RkqnueXe9x3CeWGFK+sBeSNjXcANKQfYQSSIsUChIqEvgir1gYRw6wnDAqT436h hngZYvGE5OnKH0A+J6Ox4Uls1JZs+LWnJFsosBYhXheRGHKkyVApUOaYrgXv8dS81mfHSZsyZHA TQjfXcNtFIXBduixD58Q67WlXA== X-Google-Smtp-Source: AGHT+IGobtb4ADu1SMowtReLDdqa/0G20bTrsNjtMYphroDuWxjEnuqenicfClU6Q1Oum3yt+48EaQ== X-Received: by 2002:a05:6a00:4f95:b0:730:794e:7aca with SMTP id d2e1a72fcca58-732618c1c26mr33817817b3a.16.1740031880466; Wed, 19 Feb 2025 22:11:20 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73271a02648sm8226823b3a.107.2025.02.19.22.11.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 22:11:20 -0800 (PST) From: Stanley Chu X-Google-Original-From: Stanley Chu To: frank.li@nxp.com, miquel.raynal@bootlin.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com Subject: [PATCH RESEND v2 3/4] i3c: master: svc: Fix npcm845 FIFO empty issue Date: Thu, 20 Feb 2025 14:11:06 +0800 Message-Id: <20250220061107.1718239-4-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220061107.1718239-1-yschu@nuvoton.com> References: <20250220061107.1718239-1-yschu@nuvoton.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stanley Chu I3C HW stalls the write transfer if the transmit FIFO becomes empty, when new data is written to FIFO, I3C HW resumes the transfer but the first transmitted data bit may have the wrong value. Fill the FIFO in advance to prevent FIFO from becoming empty. Signed-off-by: Stanley Chu --- drivers/i3c/master/svc-i3c-master.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i= 3c-master.c index c58440061d5a..2140da3f5187 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -1196,8 +1196,8 @@ static int svc_i3c_master_read(struct svc_i3c_master = *master, return offset; } =20 -static int svc_i3c_master_write(struct svc_i3c_master *master, - const u8 *out, unsigned int len) +static int svc_i3c_master_write(struct svc_i3c_master *master, const u8 *o= ut, + unsigned int len, bool last) { int offset =3D 0, ret; u32 mdctrl; @@ -1214,7 +1214,7 @@ static int svc_i3c_master_write(struct svc_i3c_master= *master, * The last byte to be sent over the bus must either have the * "end" bit set or be written in MWDATABE. */ - if (likely(offset < (len - 1))) + if (likely(offset < (len - 1)) || !last) writel(out[offset++], master->regs + SVC_I3C_MWDATAB); else writel(out[offset++], master->regs + SVC_I3C_MWDATABE); @@ -1245,6 +1245,19 @@ static int svc_i3c_master_xfer(struct svc_i3c_master= *master, SVC_I3C_MCTRL_RDTERM(*actual_len), master->regs + SVC_I3C_MCTRL); =20 + if ((master->quirks & SVC_I3C_QUIRK_FIFO_EMPTY) && !rnw && xfer_len) { + unsigned int len =3D xfer_len; + + if (xfer_len > SVC_I3C_FIFO_SIZE) + len =3D SVC_I3C_FIFO_SIZE; + ret =3D svc_i3c_master_write(master, out, len, + xfer_len <=3D SVC_I3C_FIFO_SIZE); + if (ret < 0) + goto emit_stop; + xfer_len -=3D len; + out +=3D len; + } + ret =3D readl_poll_timeout(master->regs + SVC_I3C_MSTATUS, reg, SVC_I3C_MSTATUS_MCTRLDONE(reg), 0, 1000); if (ret) @@ -1306,7 +1319,7 @@ static int svc_i3c_master_xfer(struct svc_i3c_master = *master, if (rnw) ret =3D svc_i3c_master_read(master, in, xfer_len); else - ret =3D svc_i3c_master_write(master, out, xfer_len); + ret =3D svc_i3c_master_write(master, out, xfer_len, true); if (ret < 0) goto emit_stop; =20 @@ -1333,6 +1346,7 @@ static int svc_i3c_master_xfer(struct svc_i3c_master = *master, emit_stop: svc_i3c_master_emit_stop(master); svc_i3c_master_clear_merrwarn(master); + svc_i3c_master_flush_fifo(master); =20 return ret; } --=20 2.34.1 From nobody Thu Dec 18 16:19:22 2025 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADF811E7C2B; Thu, 20 Feb 2025 06:11:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031885; cv=none; b=WLp47ZJFZo32bgah1L5/V2KX3ndi/mqoxgo+CAg9n9tmWN2h1TnzzMV8oKkzv3d+cKEgjr1QGrNb6BstZr8JWT/i/3jtRmI8i01Ek51dNx87+5oWx4iTj9Y8lIW3liUusoPQpi/Fq2EfbpfuVnM7+q/rg4PQa7ptaF22clYBMEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740031885; c=relaxed/simple; bh=oDtfLOKXKtd44spu9QiApYNaOcjTEDF9JU5iQyvi0ek=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bvt3DTHhwa2xV3Y2JTy4qx1Q3FMaO6HZ0IeRaElA8JFD0LGRJ0BNrtktE2GxraGlVdpB2whPNAKjKSoxKemqdbAFnCbaVMNULgOkGlxGDEb/7pLk0P/l/dLyfimok1K4Ndy3Y8gPwK4Zr6RIwUEGplMxNi3r53zHWd/0PhnAdxY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EKRkiXa9; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EKRkiXa9" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-220e6028214so10330445ad.0; Wed, 19 Feb 2025 22:11:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740031883; x=1740636683; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nxPtDSmF5toWDiVEva1QGdhBkil/x42rbDTCJ7UnPbk=; b=EKRkiXa9/yzgtyqsohTpT5G2EREEoSTvM8fr8UgifOWS/OvTffrTE8tJFw0oJxQdmx 5zK/diAfcEbcHCq/L6l8ZN9it7LLGQ6W4iNSt9AHy63h2xQnsRKqutzKycSR9FXun/QN W3UYtY4bxQOQeUFft5aGHsE+8+sKawXRZxtjcTiOxtPRiJQM6PO1zxPsiJ0yF7A5gob9 sFm+8bExh8fhNssU5+a2Kma1v2iXM4tHBLW7bjW3DILJ5kBhxlTZvgAU6ok2CXbFZy17 xdWnR4UAR/jWyKZlJKtA7qL/Obyp6gCRwXlLD+gvV/NegnDHXI1GTnwlQi5sP+M0EmIf H9PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740031883; x=1740636683; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nxPtDSmF5toWDiVEva1QGdhBkil/x42rbDTCJ7UnPbk=; b=uyaJ8phR6pE7UqUk2wpjbVHzcUQH+K29P/J48k7iIO8HTDu9BshdnK45PAExWSgq3G 4nccldjrYn0QvbdQZY62DrlNa3oOeEnaO2Fzc8+x+059zfJmIqeRPV4rqfl3/djwldFG 0OIootm8upqFuNFTbtJjJ8ZFmZWCXVz6pdRXBWTntjNJGmE2sclwXLa6cangGN33KHiq dxYpST7u/4qcLT8pNn6tovxdnJ1js8100fcEVShiUUFf/jumcoVakSsSSONWznn6K3Oj s5B8h8mz0MhjMDjMQCbcQJ/VjKunNDb5tksvQeD1+948Td9EmbYAX//1Uv4sQoI7Z/0L bVQQ== X-Forwarded-Encrypted: i=1; AJvYcCX1uFgxZ7K9Ont97Aeqa0umwu+XOhHqCwe6Wc+pWQkEhkzu75MZNfCTQ0rM4lBaCpEVLF2vO2Q05QSP@vger.kernel.org X-Gm-Message-State: AOJu0YzUQXrSXq23IiFg3ijQnl3bUvBT4qmJu9nFYbeQg58zkuHBSDB6 YLtZ3ENvV5OWdi3v7enxfQdrV5OQLiWBmnUNan+U3XsLmy6Kf+ds X-Gm-Gg: ASbGncss37SrFYumqsZgIL9Qei5kALh2gv6Y8CPgHsFSjrCAthXm0noVph/WmOUmaSe gHy0ai/N7r/wBnLvODmgA7MeIFM89ywhzpalrqQl5c8LmjZMIjl0MRdhHwV/Z1U2pGjT/r2RvHu BVRZ9s4jKVi0XdRb5l021g09dIEOJpAkIC0aPh3dgIFG+JOusxpqrrx4a47qJKJARaexfK+PwMI BjcgwbzlpUvbUcB+Xx1v+TKgVAvyiu5ISY5jg1s93RoAf2ZgvY+/eXzsBkRD2EA3Ad0zjfol9mv Nazh4CW3lCOrckdqwAljdwfFpQ== X-Google-Smtp-Source: AGHT+IEAbZsipXfJW+8zXBKzNEmPmaeBGZCutp5H7G84Z/naDOUlLTeWukt0d3jIBgxqJG5RWZh0VQ== X-Received: by 2002:a05:6a00:17a3:b0:730:9659:ff4b with SMTP id d2e1a72fcca58-7341734f098mr2122693b3a.19.1740031882957; Wed, 19 Feb 2025 22:11:22 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73271a02648sm8226823b3a.107.2025.02.19.22.11.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 22:11:22 -0800 (PST) From: Stanley Chu X-Google-Original-From: Stanley Chu To: frank.li@nxp.com, miquel.raynal@bootlin.com, alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com Subject: [PATCH RESEND v2 4/4] i3c: master: svc: Fix npcm845 invalid slvstart event Date: Thu, 20 Feb 2025 14:11:07 +0800 Message-Id: <20250220061107.1718239-5-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220061107.1718239-1-yschu@nuvoton.com> References: <20250220061107.1718239-1-yschu@nuvoton.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stanley Chu I3C HW may generate an invalid SlvStart event when emitting a STOP. If it is a true SlvStart, the MSTATUS state should be SLVREQ. Check the MSTATUS state to ignore the false event. Signed-off-by: Stanley Chu Reviewed-by: Frank Li --- drivers/i3c/master/svc-i3c-master.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i= 3c-master.c index 2140da3f5187..5861358eb9e5 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -58,6 +58,7 @@ #define SVC_I3C_MSTATUS 0x088 #define SVC_I3C_MSTATUS_STATE(x) FIELD_GET(GENMASK(2, 0), (x)) #define SVC_I3C_MSTATUS_STATE_DAA(x) (SVC_I3C_MSTATUS_STATE(x) =3D=3D 5) +#define SVC_I3C_MSTATUS_STATE_SLVREQ(x) (SVC_I3C_MSTATUS_STATE(x) =3D=3D= 1) #define SVC_I3C_MSTATUS_STATE_IDLE(x) (SVC_I3C_MSTATUS_STATE(x) =3D=3D 0) #define SVC_I3C_MSTATUS_BETWEEN(x) FIELD_GET(BIT(4), (x)) #define SVC_I3C_MSTATUS_NACKED(x) FIELD_GET(BIT(5), (x)) @@ -589,6 +590,11 @@ static irqreturn_t svc_i3c_master_irq_handler(int irq,= void *dev_id) /* Clear the interrupt status */ writel(SVC_I3C_MINT_SLVSTART, master->regs + SVC_I3C_MSTATUS); =20 + /* Ignore the false event */ + if ((master->quirks & SVC_I3C_QUIRK_FALSE_SLVSTART) && + !SVC_I3C_MSTATUS_STATE_SLVREQ(active)) + return IRQ_HANDLED; + svc_i3c_master_disable_interrupts(master); =20 /* Handle the interrupt in a non atomic context */ --=20 2.34.1