From patchwork Thu Feb 20 06:11:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanley Chu X-Patchwork-Id: 13983360 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BBDEFC021B1 for ; Thu, 20 Feb 2025 06:12:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kVgXP2bZ2W7nUhFqDoLCgBV+5hZvAhwZFjmlYy+hiLw=; b=1thZWrCzdNrIrV Uddx7SdsDut3U/fwksrmuRT2kER7U+aYvHlHLei0T2zA9aDp0BovxbcxOEBU81LcIBksY3Y33abTK T6AlxxobY//ePgVbCVww9tCEyJItfHG+EBRGyKRjLh6B0k/Z92zfXGwXC7MMmmZqgTmNAR05IcwsA 1Oe3abRF5Pc6FaYg2phkKFOR/Fsmr/cwFfx7uONy6uBzqdzKkNtkAHFx6uAPVWdvkh2hldmGMhR+D LiU0266mTRHm0hgWVJpBMD8nD09yP+1yP1s35T0f13jy0ZiFMVc/oeRRfLSAjr0vbsrvj+uHNJ/gu Fe/mmj6yL5kQLqWo+Syw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tkznd-0000000Gtjv-1fCB; Thu, 20 Feb 2025 06:12:41 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tkzmG-0000000GtMs-0cEG for linux-i3c@lists.infradead.org; Thu, 20 Feb 2025 06:11:17 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-22104c4de96so7610925ad.3 for ; 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=lists.infradead.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=JwaTKQP+FIXY2jhV7JuFaV0hK0fcs9pI5bH+f0Wnnjf0OGo7IxY/x5PqKmEphK8Vgt nyl3C0UQet3vmZkv2FBMJPMMvjA3iazw9Dd0HjedmUaww+sBH+ofr2OXJ6dm+QvDtdG3 DYLDBSosqEycaXHhFFF0kc9xic/+xtOPaTBTwkSRIDPa8oUcd2NMsjZmp6VURXokEOsQ fL2BJ788vXMne2oT1izVJ9sjYvkGILISF6XMxpodZ2h4a6jQTICvBZQ4t34LfGSZfabV qDvxkvwR1ciazJ2fQxUAlA0rH1M+foBlKKSa9iJ7cIgt1JEGTTZj/Zao0agfpPP931zM CYgg== 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=V81QufewDCQ2oXdAIbknLbmBpqQU+fP608Jn1SoMZD08JoqRvyry0/U+qITA907X3f eUspuOWuyQMyfNYgLl1HpPoJ1cu/EmM488jJJdFQUqolWQPHrgtgrWzd55XksQDwo65G mC3dKE0jLPqS0i1CW7egRGwJlGrFcWMmRkktW4Or5PfX1Trzs+awxsF6DjzV8G8XJOqC MCQYK/QxvTeA1RWGsdsJX6vXH6s0NXFyCjUEK038Q3eCQ2lhhmqOE585seeRvXNWzvqs 9Vdi01GttvrA7QZgoDYhutlR+Jb1srJLpNBvsO6WxfKQgGQxWShoXlAm1yGAczjK9yFk uN0w== X-Forwarded-Encrypted: i=1; AJvYcCUituhMPZ2pQIADzsQ97YthruBx7dQ9XGTJRFi3neem9MxZrs28J5UbVVoC0jeRJeLGhPK95+CqwQg=@lists.infradead.org X-Gm-Message-State: AOJu0Yw7iMVL4XqftrurUqliKatk3+a0vfvQW92ZM9/QCwfbLvUfaw7U fsmqbM+U6Mu11xHlFQ4HIrGLhePLwbyUW+FZ4fx2bjMxJLPAXW0K X-Gm-Gg: ASbGncu6YQVWedHEBPkvc7UhJZT93ohpPFbzQbC2OqSnwc9bZUOPOBhE92pLDOkmZdA rdI1/0jXnJYVeHSKaF8812Noj9f3gnOceghGp57Kc+4flwYWkO1GIKhzprj3mquJf+ONZvMMwUt vTN9Idx32A5F4T4lddIktQUSSGpLHXdmxrg7tB8GA5YtC9VzAdUFAFfvzVTEmceh7S4JsGoxEDZ vPGX/3FbL998QZJCFB53jZjt1HPy8RaZpstSS3eIL2QlN/tRXv8qogKCbkNbP0SSUkIYExPLVvQ 7VRnlRyV2Ng1Q43EepDPR/aHvA== 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> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250219_221116_215324_CFDC4589 X-CRM114-Status: UNSURE ( 8.73 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org 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: properties: compatible: - const: silvaco,i3c-master-v1 + enum: + - silvaco,i3c-master-v1 + - nuvoton,npcm845-i3c reg: maxItems: 1 From patchwork Thu Feb 20 06:11:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanley Chu X-Patchwork-Id: 13983363 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E8712C021B0 for ; Thu, 20 Feb 2025 06:12:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FF0K3FPiybYqB+3Gz9AWl7yE4DrZRtIlp4N+g2PIWfE=; b=tkiuCM+SC9vQVB GDtN+EZcJvfnrOC3lLKG1BgrL2Dy91NVAYzma/iNDO/DQTq3sE7p5AWapX2+yynGj1O7hyd0Np+m+ IOCg6VIxmWPOss7TmX9/2TMn67BzhB+ta/RvqWuGCFiNwa9lcMWUa3eYnquy7nehA3K+Wyl9tzpRl C/rX4kDoRR+kIAn9K78Jk7qMPkayp1Nt6LWORpte7i24mqDSnLIxox3aRrU3vT796v5Tqn4T27mt5 PEzDiNYoMNJ7h0ajFFyAMEd6WqFXTCL9MJzsnjoPpAcxfXkxLLbYeKp3O9fvdhBmL7agB5V9y0kCs f7K1P8QmAyHHu95Mwthw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tkznd-0000000Gtk2-2x1c; Thu, 20 Feb 2025 06:12:41 +0000 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tkzmI-0000000GtNz-2Fr2 for linux-i3c@lists.infradead.org; Thu, 20 Feb 2025 06:11:19 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-220e6028214so10329345ad.0 for ; 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=lists.infradead.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=X7wfuZnIJNZE4k/8APeNf8LDf0F58VzBXf4JLTw8asbDY0woiFvFJzM85Zg7Zx9oMt ywBL0yfujWpCOvye4MRmCx+ue972Tu2cDYzLUbatNjUgWcgobncH/vsWMFlMjTu48HSF dE+vO8MBi2fZVDU0BObwix+KzkAGz2/r494et4jO89pNIV3P1zTQO33cVyOfu7680XJq fZYotoYJWCrKceZXS9a3cU9cDZdynHdMyFjNSJ7QOdLoKATyBw7E+Fs0y8Mhow505f3z 0lZ6IqrLPNb4xix64AGr0az9bamZgrICDMvXKV9HOuqcNg1DsfIOMxq/Sz5yBooxPgck SDoA== 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=mJaiUgYqsFXJ/6foF/cnqiQW/OhH7AWRMj23u3W1pssGHZwttYftl3XL/JZBTmdW+P zYuFcNmKcOpqnnJVHH2cdPQL95PmMzmbuMfIo3eC9nZFUFqB3bT6gmZ3wRjt8qjdxy94 fJSiyqaBN/ysV49KagLTqQf3q8yakvvvMue2i84QiKgBBfNwOqBr7AxXkjKHwjL5DJLR ZzPdzKqMzDeA0u1iLIxFw3jNz6k640QIW4weB89K2v3qP8oUNSwfdHssbRoIZHeMKoVj WzKzV1nMBqHMCJ5qD5bd2GFPvET1S/5bE3AAlYid+aDbkZD0lDHQbSMtmC3tWsZwWuKh RPHg== X-Forwarded-Encrypted: i=1; AJvYcCU8JQdqsSLg+bnlraiAWKNMux8tlwlkvWi0+odvu3x6A58WRP2uuj3KYuLlql2ygue+BD6qrY6/eNc=@lists.infradead.org X-Gm-Message-State: AOJu0Ywcukdwe/e91QJfjC8LkX2L4bt844v3lGPTJL3Jmm0XNgWxTG+4 sigmoNl+e/I65c12YPJlkIDhLmJmWMpSQpWY4hbtnaMlNS+uw483 X-Gm-Gg: ASbGncuioULBhwTnXu3WK4IcSzqonbYkvHxOispak9bVspeyOlpCBkugJmRp9iEQVUY 2BVOSAnx+oD2uMyJ2q5RiCb9k/EGvStedETrWJNwntDWR1jjlv3mPfx4dPUhXSMvsNI+QZPlxXH SXVXfXCruQ5gH09wv0rxqViEksA9nYUM+/L9ButWPqSVkFUKQpQVLt34p15dtrkSBOt7EYWhIz2 zErq2ufRXPxPE1Rkml3De7ZFRUlhdDApMA58Uo8gA2pupPVwaYTwt7uFJoQgWfKKaZi6pAptcYD 4ypzlsBObKimh/upxsJX9NH9Sw== 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> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250219_221118_572957_75EBE2D9 X-CRM114-Status: GOOD ( 14.70 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org 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-i3c-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) +/* + * 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; }; /** @@ -230,6 +247,14 @@ struct svc_i3c_i2c_dev_data { struct i3c_generic_ibi_pool *ibi_pool; }; +struct svc_i3c_drvdata { + u32 quirks; +}; + +const struct svc_i3c_drvdata npcm845_drvdata = { + .quirks = SVC_I3C_QUIRK_FIFO_EMPTY | SVC_I3C_QUIRK_FALSE_SLVSTART, +}; + static inline bool is_events_enabled(struct svc_i3c_master *master, u32 mask) { return !!(master->enabled_events & mask); @@ -1811,6 +1836,7 @@ static int svc_i3c_master_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct svc_i3c_master *master; + const struct svc_i3c_drvdata *data = of_device_get_match_data(dev); int ret; master = devm_kzalloc(dev, sizeof(*master), GFP_KERNEL); @@ -1868,6 +1894,8 @@ static int svc_i3c_master_probe(struct platform_device *pdev) } platform_set_drvdata(pdev, master); + if (data) + master->quirks = data->quirks; 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 = { static const struct of_device_id svc_i3c_master_of_match_tbl[] = { { .compatible = "silvaco,i3c-master-v1"}, + { .compatible = "nuvoton,npcm845-i3c", .data = &npcm845_drvdata }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, svc_i3c_master_of_match_tbl); From patchwork Thu Feb 20 06:11:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanley Chu X-Patchwork-Id: 13983362 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3B047C021B2 for ; Thu, 20 Feb 2025 06:12:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=c2UVR7gljG7rgVWbZ/RTIhMcaDslnpFuWCQLt4CH54Y=; b=MlXikGGBOlQl1W No0AHtYiFn3F+Kom6oPPcx+63pHmueiEgeTFjIdcGgGLCaGQx65JxlNnWheL1HcWzDzafvnLmARsq g5XAfes7oOwCgbHUA/a6+vCWhyJw9/NfYDaPZzZo7A0dh7qum6PxWfYYV/ojqCSZXSKwHqvYpd8PO SCIiT0+/T/1pN60f3UDH+oWjSuLvaTdo/6rm9jXIsRy8Lnoq5IwnafShdfiT4nm24igDJ+7crReUn LSyA+gTeb3GVMoouXGKHOYNse6kpmFePj9PF2OPIaPTQBqkZ2XNo0esV4R1A6I+6PpMmdVwcquRSm V1m4t3BdeUxOsFgcj2eQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tkznd-0000000GtkB-4BBO; Thu, 20 Feb 2025 06:12:41 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tkzmL-0000000GtOU-1vJb for linux-i3c@lists.infradead.org; Thu, 20 Feb 2025 06:11:22 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2211cd4463cso9353215ad.2 for ; Wed, 19 Feb 2025 22:11:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740031880; x=1740636680; darn=lists.infradead.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=mLk0LbCybir7oo1MjrXpLDbR6JMab62hwtV8gcuhwIgBtdIVTzRZ07YJa9Y906XgRO OAj9jZ/+hPn8C4BrQe+QbqGO9eRP5gcCiC/9aC7kzC9rUUljRB727OctWlnShZIunD5D /+U614R5/igOHoZnBkuxdMxOF5kpcHNomWMpbwvyTUf44pf1LNHY8DVx6xpxkg0Mvb3n FQE9rq6KaAKDchA9tKcwFqTzs/9pmAbJbZhLFBpi9zYFykpJRii1pd83yS9Y9Rg8t2Wk cHrzHXX0cN5052wpz7EcJYcJJZJ5Golr7OVrkFXIHFrHxhQ3/hqCZIWb7tdXiYsCmsYZ G6Rw== 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=jt6lOF6RoajGZ2M551e3muQeJeQT8V6Ovyo4MTGE0UshfJjXxLb6xwX7gJ/H3R3ydU 8EmBeQGnC5lQCt+p0gK5Org6TuQjI4Ib0q3yBcRi938ffbb9VVfMv9H/84PBgPNMHtlK HD63sWTZiGBpc4dC204fcBVoIP3KoSybfP/QNP8HafWXpwq3mFuc5nGjgAuXoIXIMSMD 6j8UwJTu27bPOKg+sI4hwIzfeAVaayLseql1FwQuafs0GvGtxZpuj/lyflxmHxIuzbqK wihf53j/um5ZhWOb8umcyjqEgClZsZxVTh4TSfFz5hJmI9d8BdmrDseQnFBWZK6ucH42 3mFg== X-Forwarded-Encrypted: i=1; AJvYcCWgadvjg0OKSkpNEqlcGHDd8v4k0ZLJVHAIqGR+p1CYk55fEsFtFueMzuGRtgC2/gB15UIRXsYB66Q=@lists.infradead.org X-Gm-Message-State: AOJu0Yy3pebW2vmjYjjLZahG7dhiYVpbMwRrfsZ03ThIQEYI6TvSA5kU 3loc3TsFgqIer/i9qcBkLWN0hnMykBFihOH790X9VdPhxz04fglp X-Gm-Gg: ASbGncsLewI3UyzWc9P+U1rcAX7Tsk3nZHCDiT8Py2vMyLIbs7Ffobx7Jid1UjIEZ/2 TqtBeU+Pmjj6Z2MZzbnPeGe3v+i3jH5RCcO93MHtq/YgmCHCRj2jZLqyNlb3mI1JfyVV46jsbqK KAhZDu1eI8ceVGylgk5KD6Wp+4NHfQJBN5MmUC5bgd8ZtTUcgSIK2B9yVhzmjyOezQGp7xBm3Ib HH62SZq2+Q/XDOK6GLJv5Lz5JcQoah8kBDvL9Z2jwMh6PzivDSEhpAPyJleoFEbVlUUrK2UIJkY 4XMgvXzl2V4vdKoFFg+y+/fN6Q== 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> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250219_221121_497591_10D6CD20 X-CRM114-Status: GOOD ( 13.18 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org 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-i3c-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; } -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 *out, + unsigned int len, bool last) { int offset = 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); + if ((master->quirks & SVC_I3C_QUIRK_FIFO_EMPTY) && !rnw && xfer_len) { + unsigned int len = xfer_len; + + if (xfer_len > SVC_I3C_FIFO_SIZE) + len = SVC_I3C_FIFO_SIZE; + ret = svc_i3c_master_write(master, out, len, + xfer_len <= SVC_I3C_FIFO_SIZE); + if (ret < 0) + goto emit_stop; + xfer_len -= len; + out += len; + } + ret = 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 = svc_i3c_master_read(master, in, xfer_len); else - ret = svc_i3c_master_write(master, out, xfer_len); + ret = svc_i3c_master_write(master, out, xfer_len, true); if (ret < 0) goto emit_stop; @@ -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); return ret; } From patchwork Thu Feb 20 06:11:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanley Chu X-Patchwork-Id: 13983361 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 861F7C021B3 for ; Thu, 20 Feb 2025 06:12:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fe3jPDPqK6opmwMQMxpHGomFZT16aLxdfJp6ozNunOk=; b=REnn4WtwSGYO07 KcczHQuHRumopxDJ1W9ouKEeyTvblkVcUySCgrFyn1dBV8HcEGfYx2MSr01EQym0vHjQIgaAyHdGY IcUyFdX4OXkZt/0Pdg+GEBya9rScQbZEFsfuK3vvbZJB7eqHobcOBFbnln1ZN151k8KYQB2Dzd2O0 O035pLqNGUlqKM7d6pVcr8cAdgJcUbAarT4q2F+pG1TsBEU+zkGpJEukZWEESV1kdL54ChUjAgaBN cn+Nx3+JDwBmV1oJo7S6gm2sDSEBo6344qf/jdX5uvMIsuGrkrb+jMakLUhgTdmiMwUbpaasxLzFv pDmoGt1qVZdfv2F+heSQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tkzne-0000000Gtka-1Hxq; Thu, 20 Feb 2025 06:12:42 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tkzmN-0000000GtQ8-3oxa for linux-i3c@lists.infradead.org; Thu, 20 Feb 2025 06:11:25 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-220d39a5627so7825735ad.1 for ; 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=lists.infradead.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=fG4qp0TU87t+UMekFPEhvTtixi2iBvxAzFTphprmjwbGsPf3ZfpS5z7xI2hWdSy4+N bvDjKzQHVMDwLfvnbPvwV6xmwzfYMK6xgA8XofOs4e48msmQdO3SeMzOzr8QM+rE0OXH nLrqzHbE7HI6AbpPCLWDVzTibYpQlw+n4w03+aJreWoMS6voSFkkcVO2JmflidBnmhy8 KBriMXjopB9jofOPqX9uVeQuTCeus8Xzi+lHfU9Ge7uK06SCMgScVjrMUNEIurP/Ae2n mqyLuSY0nJfjcS6B3bMA2TMmDTwes42W3hSHUa+yGx+4nV7PnMqLbzUHgE+t5v3u+H5S a4WQ== 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=OI/Nh7r3KIvCdMX9Z3aPOw4Jhi4kfClV8nybmrt0BeEo1PT7juyBdcql60jgLoI4hU ceyYB778I36mU5IFeM21xbMZ4RkSlDNRzTaPtxiE1wIF/4uK3yZkjZlDT2OyjTubtuIR SIOZhMe2tRTkgu6XDBIMS+mVgZc6HbYYG0zaQzmuwLM9ijfUf1Snk0L7v6MGFbJGOHG8 sqZrJM5mo1Q5rTnoB0TtKqtUfGYCTEC0ch2JiZtc297GowJMrYi4I5yG2VjkJXdpxq+5 At2zaCls2jIV+iDruNfI6T4d1gSZDwBJTqVCsXWMtuJrWB022TompH9OpuCuw7eprpD3 yssA== X-Forwarded-Encrypted: i=1; AJvYcCUS2xNiZkjDkXVGDa0kAjjU3xbZXzKx0P5zZC7hSrjievxnyAu2wMxYwL5CmkiO+SQ2fRvR0zmg+n8=@lists.infradead.org X-Gm-Message-State: AOJu0YzAQTdR2obIV41kXTR4/bQpiWGEHXJkXvBXzMz7r6J9WdCiYsGz U4oOc8CfhNdS1e2IiWSYGzRwkQQ2paLXEvf/d/iHtk0QlYAwoJho X-Gm-Gg: ASbGnctdOSu52+FD8EH/nurPceAvpl38FqDCzuqUNQfQ1hd86vIo9ANfu9rEpR3F3tQ sGOYkI8sL7JQRiSUhWUzYj0ay8nq5F71XtBBlae+/0GdOL3PQFpUEGJOveF4MgdO9kxlzF1ck7Q moggYx8XpiWlKEFklZnxAEtpkL2qctKTmzYbey6oC+CXdZuRHvfNsRVE9eWRb+1AvnUoMHQ5yeO YTPPDPr8zcSAbXmG9HuMbuXvAH5SK3U+Oi3+ZpehsO2fyoJOxtx1b4CMNvfdc75Hx0GHoVH8jK7 YBGBDYUJX+NVrE8OhTpm04FezA== 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> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250219_221123_968484_29C3DD07 X-CRM114-Status: GOOD ( 11.09 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org 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-i3c-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) == 5) +#define SVC_I3C_MSTATUS_STATE_SLVREQ(x) (SVC_I3C_MSTATUS_STATE(x) == 1) #define SVC_I3C_MSTATUS_STATE_IDLE(x) (SVC_I3C_MSTATUS_STATE(x) == 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); + /* 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); /* Handle the interrupt in a non atomic context */