From nobody Thu Dec 18 16:17:14 2025 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 8F2681E3780; Thu, 20 Feb 2025 05:43:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030227; cv=none; b=mXbvQudyLnucoNpQvGJcW41J6l7NOP3J1EExKMS02J7s5FZp1VRy+M/9KCRE8Or4PXY7Js+5YeZyI6ggTpFIqNQCo5zHjLvEgGZHsG8W0oLLcSl49nrHW2orbaml9BaA0BuD1YD+fNdoj6X8u1RTOTdgmSXf2oX4Vwz0PddW2cY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030227; c=relaxed/simple; bh=Th8MI4OmisAx0MAtndb0Fm8nMgDfRbjqWBipmtFbJ2s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rvzmZqOGcnzl4RH7z6+t2wlGocA3sLnhlaoHJ7VQ9nVhwerYq563SIdRVW4AgN9/bmBKJeBV2Ga/pToPzA0QrM7L+vVOvy6ckBKSjanHSK7sZGvCv9Ga2l906SyXGobYKJeyRIzsDd3EKEkFTvxB9A2ZkOkFCYAVyU53yEAU/wA= 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=SRNvR0cS; arc=none smtp.client-ip=209.85.214.169 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="SRNvR0cS" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-219f8263ae0so10247835ad.0; Wed, 19 Feb 2025 21:43:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740030225; x=1740635025; 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=8IMohSeK8gkqwGyZxC38NO7B7vZzY5EIwZHxDi6wbmo=; b=SRNvR0cSrMUgPuX79U0AueNpyjOxqLWxQAIfQd5UVRyW8N42GT2OtFgeWEOdzjr6No TdrXAYlIqjjNYoGsLqRR+bKsVWCg/jm678yXp65C+Ja2aXRNtkhW5hHgKzRw/TaVNb70 VhEMkS8zqNNKZtm382OG0d9IdlFvzifKl5IcH75NSaKunCu0mfnKmLMfwunjGyhjpeYE AGJVu0oVTALhKnfTBt//f3+kjqQBHIYw9mUy+0GDBNqh263B7nQ54s58FabA0oOtuxd5 P8Ewz1OVHO1TN6tJDxlEuL8MPrA8r5NTB6hji+iMm0a/gR/PWNUbfLpNnRCz9ZifNhWF mo3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740030225; x=1740635025; 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=8IMohSeK8gkqwGyZxC38NO7B7vZzY5EIwZHxDi6wbmo=; b=gqqHHMHwA7wjRt4/bkvA2uzX5fSRA0HpcVbiEe4+IFU+Z++URPwJbcU35S57KQ3V4w 5tLk1NqzRcET4fClm/ii/8AqZpQHFeJjTFJTvc9bqvOq5FiFBu3OwOoZp5U/U7m+p/rB eSpN0BtZIEeyp0F1V9u8VOSwbdDs7ax3nv/FaD3Cdm+wVglSgdSU+0cL6UNV0X1Iis7X 7V9HKqUrOs5lA5Z/yvc+nq5AqfT1GDmjDFiGXD4H25YEBzvtR/BE9P/ICZEb5I7b+Zjx EM3S7V2rh9k9pO7ae+khecGs/HFYDhG5FHrpuybs59zxKxRMPuc3XrT5CaoBBWspkNhs DUxg== X-Forwarded-Encrypted: i=1; AJvYcCX9c0dJi7ysZCPPndiTszgg8VAyerTOiU75EnBVpwGOJre7GXdywQ0mb4MNK+KXm59TUssmI6eKYm2J@vger.kernel.org X-Gm-Message-State: AOJu0YwjA7sqjeopTIhfxgHkiWJ/vdGmSCSv1+N5YICjf5zbfQR2zVgG nBqq/kTBcR+zzzTgLBpHDJJG7hL0SrIYVivFbvsPqRp4aaRx4NSKdQXLXw== X-Gm-Gg: ASbGncsvUtJkf2qucHbOV33nwv6Lt3+8TfETBi3GqLNkbipIqqXI/Juk7sT75DqJj7S 1NWv3cQEDdYElw8XNUTjwy2e0ZJj66tU7Gm7/Ynf0OpP1Sz1C24TasU3tpi7Dep6EM/84MOHbKm 7nupXFeqBtFwVyCXpqNO5c4CnXXspT2j3QZr618QcVlLS1U7kEgJyVuuuKTovlrZlUXVJlE0TUP uRxvr3frm5ID8NdaFhPHmtUmJzdVb/VXf9EIL2gW0RKK4s1Ychq+qsST1g5uqIEIbSuqEAtNbWP uU9uZcfT98myZnZWQs874GOcfw== X-Google-Smtp-Source: AGHT+IGBXepTc9P17+2mR0kT1gPNO4iTdvt0WTXULVcNdkEoHownFPvxNPEmpScIh0GvM1j1L9uplg== X-Received: by 2002:a17:902:e88d:b0:215:bb50:6a05 with SMTP id d9443c01a7336-22103efc0c7mr317994265ad.9.1740030224974; Wed, 19 Feb 2025 21:43:44 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d534951fsm114415335ad.25.2025.02.19.21.43.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 21:43:44 -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 v2 1/4] dt-bindings: i3c: silvaco: Add npcm845 compatible string Date: Thu, 20 Feb 2025 13:43:27 +0800 Message-Id: <20250220054330.1711979-2-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220054330.1711979-1-yschu@nuvoton.com> References: <20250220054330.1711979-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" 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:17:14 2025 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 447C31E47C5; Thu, 20 Feb 2025 05:43:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030229; cv=none; b=iGTwWbONmo0R1oiEvF198WEtuwiQjUWIZkMCuw0bRom1owXQlUjIFOAGSOe2NZbuyeQZzGppcwvFERfYmbGAcL+cmaEqsOMTflFLGeOudqzWM0SsWxSLs+oEwuvhj10yOuBHsg4qSZAEhQURaYvAC59uep9kre4dmmOvVt2sQv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030229; c=relaxed/simple; bh=m2cYmUh+KamvrrBS1L6miPwNFXrZm6t9/n8dqxo3Iu8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CNkfNTbLLAncRILLr54pS592wPcrhcp9vUko+TZhcSVwUnwtjQvVs+YOQz3QGn5xTsnmiYjGyadvy8uz1Sakr4/+gxv3iCakDtZeH0lRJm9tsm/ieTEtfXpvpmtkG0obhy4p5igCNZ41dfAtXmEstKAtxrLVzCSxmberShFRon8= 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=bT1pu+a5; arc=none smtp.client-ip=209.85.214.182 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="bT1pu+a5" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2211acda7f6so9643775ad.3; Wed, 19 Feb 2025 21:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740030227; x=1740635027; 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=JdyLMLTg8byPe8k/ZJkRLFsyG1RrElmC3EJS6e+873Y=; b=bT1pu+a5pPqkrvJdScvcCZpNDvVlAFPjJH1NaaSFQsclqePxNF3o80mogo+YbAwiPh qROQgGg5tpzVwh40a/RYqmgfM+sVWx3nOj/eKeObHEmsZQZDtKfY1wPhm21Gi37BVNWg PlNC8C9/0E32IF0QPpRub7+DAafGo9T73bL/2PHNLGY9+D0G8N8/kVJj0llL4mkmXBJU bkIpQxKZbBuItA6RXnhviKYvnmIa9KLFGhqQM9nnQsimZmaDd/jEhWGAkB9G4AZMFLDV eoMBDAjVP1GmSXU6o9srl4JlMas9RqtjgfiGWkRmOh4zVW3FX+qb3qmYh+VE22tbPpLO mc+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740030227; x=1740635027; 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=JdyLMLTg8byPe8k/ZJkRLFsyG1RrElmC3EJS6e+873Y=; b=iQ1Kvb/u0MUZnD7FjIYda9xbzJMjSfgOP6cVKWRs7NnW+qKruUXbLP7giq34dZgFlv VvB5ToOEBFcTX2pG0RmnZNBj77bwbI72wCD1aapQ+yZjRv186MYh1zJigmAwA2fL3YZA XDiIhwYJtczDaIKqAMft7+zXkJxueQS3e1XTE7I6Ra0kskrn8DQhdJB0vxa231nCqdcA Q7W8bGpyF8rDxSbPvCd1QbiIL7yakVaz0Yjg8VNMjDZO7UuLiF1S/95/AoeVOGz1FG1X 6IupaIzWw1UCj1V/af1YOHGrDrjNhatbx/dB/vz6U9TqtMfhAsE9mXiA3rLMHbi2csCD NvUg== X-Forwarded-Encrypted: i=1; AJvYcCWhMkPLqtZcWxP+Dlm2TMa2vFh3KpysRT9I8s9e8p9yn5wyXaBnvt2bquMqigYWxh71jvUY7b4TXlnt@vger.kernel.org X-Gm-Message-State: AOJu0YyvD0kPMe4l1KBGlmafE11iR344nLfX9/vY/iKvXQGXSMGuW7H5 EyHMg3qf+xveemwGjRQ2BuIKkhpxj6Ko9n1yPbwR4O/MusQoouol X-Gm-Gg: ASbGnctWjbnVBp4I0htktq2xfbx3FuDMk4WYWvsXpNPW5sHhFvoNwLSUvYMY79GYnBE qGLYTNe3566cO4EVT+1NTcSn4ObrVTqHIkGeQS2fx0pqh3/j7pZ6O4HivRtB7hxj8w/3Rppal0C jMYUmdAqO5L5ND0vaOexl32YX3FhPyu039vks0icXmoUrJDgyQW+MqFnvl71dQgSenJWW3wFgX3 LYfHxuPWKcpcXAZz+gs3t9eI1SrVS0D53ltYS8Vazl/TIK8hILzQmsDr5S+/0FVE0hoPovHbSQp uqL3JLm3yJWS5x/fo3iDHTzbOA== X-Google-Smtp-Source: AGHT+IHpDIBFsH7vbUvCxPzxU+DThzUJ3gvnL5P2dGfiTDolUeJEuC1kCfITRVmlniKuIgAkbGy8og== X-Received: by 2002:a17:902:f609:b0:220:d79f:60f1 with SMTP id d9443c01a7336-2217119ecc7mr98131815ad.42.1740030227442; Wed, 19 Feb 2025 21:43:47 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d534951fsm114415335ad.25.2025.02.19.21.43.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 21:43:47 -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 v2 2/4] i3c: master: svc: Add support for Nuvoton npcm845 i3c Date: Thu, 20 Feb 2025 13:43:28 +0800 Message-Id: <20250220054330.1711979-3-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220054330.1711979-1-yschu@nuvoton.com> References: <20250220054330.1711979-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" 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:17:14 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 BA9591E572A; Thu, 20 Feb 2025 05:43:50 +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=1740030232; cv=none; b=JwLcME1ndgQP6nrTw1IjgYgYGgKgoN/1YePHwMKoSr8V6Vhskzt0SSxKQtst5Byb8cNl7+IdxwGx+niFLrmjP0ik9yVgabH7/349zQjL/YSqDY2LZT0JDOUCDMgAFQ5UH+S2oBB1FxeqUwnT+RDLdzja8ZAcMSflvEh2GD/MVxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030232; c=relaxed/simple; bh=Gxgd/HB07V6amielBN0Bv7UZ7D0SVoo3tIPVAPikVhM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JopZgLgq0WHfWenwUmjI3BZzN2vQdpYTiUfjOu78uyQWN4qt57zYvMwkWV4x9ULFZLLcrtruHPkJZuLeFpxJIQ744aeA3UpX+kkmE3ZuP9VlhRF9gbJN5/x53xtGQT6fwuDLzG6Cy17nOZT2o/3BMAHWUtKt2dGzVM/WehTRpTo= 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=i20GQhFl; 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="i20GQhFl" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-220ecbdb4c2so12988535ad.3; Wed, 19 Feb 2025 21:43:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740030230; x=1740635030; 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=h+uWDhaMgi+jxwkqAdo/eMNwsqE8P1kcmn3GiPEcAYA=; b=i20GQhFli2CPAjUJRFZI1eSngSfjTlDa963+UAhBWzf1bEVzqf91B304gcaiCT4t9s KTjSTaFS2O0SVI+mCCQJ4jT43IpCcb44FU6DAqLcjDwaxAdeJJ38an/PHwBYWAVHxHEw gb1wm1ahr8ERTfHna2h3Yi+/vvp00/dOcAHVnlj0DyGW6JlM0JCKTn6auxUCVWpGJW9E QoL7WAqQyR0XoAGW2Cf8wEHvktjknnWkMwRqhjGESQsPlIiWyj0D2vVrltXpn2FHOHnn jnlYNLTMzuBImzZL6W5ATTMfl4hWhP12THc3rrqMM8v6X0dddhU19tk+N8xvENCGbawl N0hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740030230; x=1740635030; 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=h+uWDhaMgi+jxwkqAdo/eMNwsqE8P1kcmn3GiPEcAYA=; b=bz8ev8/6LXQk5y1pdTvd+7punguHXk6fcqZYyr+pkEvxXiVoOioF1ChSvQJMITGoA0 Sb3l1G2ANqVaOwHeTWq2oTCEkaWIgTEMbKVpj0t2GEimNkkzdaO1rverlCTCMJnG3V0Y w8MTCYELg9ir0Ibdtq1yqain8+3bTeS6ES/bmiWWhucqAP+SUYQymHz4oOljI08wG1DS WTTx+ka3a9sTcpNZjlqBF1JLPujoSRbgbtjYPktbiAkTTJEp5sQCcE3OHtpNdzSu4HYx SLrtrDoo89qLV0jhp1E9Mc4GftkTGl/78r0gVbVROp741WDXeJQY6W29z+l+028ZmW3U mTwg== X-Forwarded-Encrypted: i=1; AJvYcCX+ascvU/E2CW+F8udTSnjs8NsTWwPxh4oyFlOEW0SpWnw5t+dUQHR9YlP2wM5JSWVL6+f/RdJEmMi4@vger.kernel.org X-Gm-Message-State: AOJu0YySbNcxKxgm1Jgk8iRcm1NhSpbLo6EmIBFOq7jTP6wNG3upNgZq TImctpLOqODoQRqcd6VtwMExWjirj8SGc4iB+1t9ADTM/P8JkCJl X-Gm-Gg: ASbGncuHpe7qaH5SoIzHnZq0cF9QNU4dbBsOT7k4ZfW/At11xb3fwJX4D9/2dzL7zr9 03X0Cfe/mvOhg9KGHGamZdsufNIBdTgYSi12wYZ4lTbmeoKNqsS/26XKLqCDHFkjLzXOZ/z4U/V 2BYZMOUMmvwqVG9Jrgw+Dz6tVKMUMjU8SrkQvwwOVr/CUYa5ZVmjB/hhYO47nF/dGkVLUlto69r bDVe6JwGE+Cq+BF1ud2UFyrGh8zTMWKCptaAuhc2dQAwsi8IDnotACrDq8PNrT0VWw0MeRuzyH3 0vsoZsxag3oxCeNhufdNpDRjBw== X-Google-Smtp-Source: AGHT+IGGhLQt8RYHyL3O5/X/szpd7Iw5l6Qfx7Qwl68H9aQX/UAag77wmnRGfcRwgAJCMHxr4lD11w== X-Received: by 2002:a17:902:ce0d:b0:215:a179:14ca with SMTP id d9443c01a7336-22103ef5861mr324352105ad.2.1740030229980; Wed, 19 Feb 2025 21:43:49 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d534951fsm114415335ad.25.2025.02.19.21.43.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 21:43:49 -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 v2 3/4] i3c: master: svc: Fix npcm845 FIFO empty issue Date: Thu, 20 Feb 2025 13:43:29 +0800 Message-Id: <20250220054330.1711979-4-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220054330.1711979-1-yschu@nuvoton.com> References: <20250220054330.1711979-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" 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:17:14 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 53DEF1E5705; Thu, 20 Feb 2025 05:43:53 +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=1740030234; cv=none; b=n22BWfNp2nqJR5mDb7FUG0rb+M2uDrOs//GilAZXsL4hYlFv1tG6MA+hUOaxacE/CWzd6/l0kmQDQ7hm0LSCaMh79n1FjwIE6AJpffV5/6QhxGHA0nX0zBaa6TVRdCukagQbkIHqDW5usK4ORkm+B6CFDXXTVB4I83r2dOUsWHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740030234; c=relaxed/simple; bh=EIDVJC2gm10OZ8P0I+SHebr0+b6ferB3eGip91BSF1w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mlaUlvHc9NuV9KLjVlLV8fTDtLXyFEF3+MkFse4ORxyUJ/RNESeGTQUXn0roHRuv0I2JdTx6ZCGwurZXtLXk09MxJxXTJpmatcYokYMcfDNtOR5XSXhlgxaD/i+K/p88uNAjmx6gkNLEQiB6XFR9SyMCoy7MxhSx0cY8Eu5VV94= 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=MwufkHUN; 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="MwufkHUN" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-221057b6ac4so8253815ad.2; Wed, 19 Feb 2025 21:43:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740030232; x=1740635032; 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=SEAs/2W8i6unwL/IOH0/meAWRqs6OoDg3QxDG87nlzI=; b=MwufkHUNGvfC/Hqzw1OgvAOIgMxrQ8fZzRv2fI3L3PkggrOdIThAsrRZFHKM4ygI5+ Hbe+JM/zMyF7PJ0otXVQsSEU1Doc7fgDMB8UfUQpXRJDwNzATbdrprklfcTIdcNAEIfp IPPn0PUVv9N1ZSUjJhNcVTSqUjwq418LfkpfdFumZhdOICmbF7n+KGZNs/hkcYprGyAa DeiSdTNTc21Ej7W3OkejMz5Qf1LbN+IrR+fZs5pnJMhOIgxqWU7kVLak8yELNIIElvyK J1RBtoTAikRmVpiYeMg3FcGvcZlOa7rKtMqCvpxQBjvvYhnlu+ya7ogZKgYBOAWKiS8t ualg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740030232; x=1740635032; 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=SEAs/2W8i6unwL/IOH0/meAWRqs6OoDg3QxDG87nlzI=; b=wk45+OV+Jf+wxu40hVrPHz6e75b+X9uyfDesBuROCg1f8bP4zj/7G/dCx9maMoQ9eP L2b7snXTog5tP58znPokXO+q6ZA+MBk50ARYw+29XjpitgxBUiHmxm26BrpLRPV4Arx7 nzaVQ7Yup9aBRVEgCMJa9XxMbEKqvB35fLdmN7RXPZgVIn3kjE/D6OE/4m18MeOteTCt OO9p+8RdiC2ZY9e1ixv/kczlrUSoNhyUMVdkBIRQPaypMgFmR1zxTyUinrZsqKS9z/Sz a31h1d+PZd5vPu8UYNpW59tCSwZdGGSVA9FhuTZxL63+eQSWcjs8xHrA7ux03VMlA4FU d3NQ== X-Forwarded-Encrypted: i=1; AJvYcCWF1rQVU9+UfoCEwUFxQnuvuY7RejxgGRByt7PCj/MijK3EHV4Obdh1zvEmJ7/Sl3zvT8ayFmMATg5G@vger.kernel.org X-Gm-Message-State: AOJu0Yyyrv5GulCXeGyVjAsyTYUqMSOdremuDb2JFw9lx2gthFyWra5g FMaukZwdxeRnL1NvpGjW+aszALjVdkiGtVuNoPS1fy8SQt3Ak0n9 X-Gm-Gg: ASbGncvnMkkoeIHSVeBUcTvAZvJHcTQ/BXwXJ6WAsF1PnNfLfLHJaTXjcaSxuTiMPWM /mSe5S564fMZaMv8hwTkI74mPAYaOQEkVeyDnj7sPobrCHgthiWJ8g/RwOfCaUMimsPxh23uKuQ k94vjAGCsL+He3Afpe4uVYO37p5luxOfGJiHsy/UjhoXhDptLimNJqODSG9uGGbm1XhnZ0dvDh1 GIBFEB65AYrWLzBz8H6MQTD4y9l4eZbSOjoVENA9CcTpRLvkWTNHZrF0Vavg81R30cobqGcRUKZ L3wB/D+6Zzh24u8GYLVtCvuSyA== X-Google-Smtp-Source: AGHT+IGUkXoXo59VQXM/7j5YyIdcs9w/cg9RxyXROlX7CbTDYkiET2l2tQDyhfUyca1cDQgdkp4yXg== X-Received: by 2002:a17:902:e887:b0:21f:4c8b:c4de with SMTP id d9443c01a7336-221040bdb96mr284464145ad.42.1740030232395; Wed, 19 Feb 2025 21:43:52 -0800 (PST) Received: from cs20-buildserver.lan ([2403:c300:dc0a:4fe5:2e0:4cff:fe68:863]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d534951fsm114415335ad.25.2025.02.19.21.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 21:43:52 -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 v2 4/4] i3c: master: svc: Fix npcm845 invalid slvstart event Date: Thu, 20 Feb 2025 13:43:30 +0800 Message-Id: <20250220054330.1711979-5-yschu@nuvoton.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220054330.1711979-1-yschu@nuvoton.com> References: <20250220054330.1711979-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" 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 --- 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