From patchwork Fri Mar 28 08:53:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 876717 Delivered-To: patch@linaro.org Received: by 2002:a5d:6dae:0:b0:38f:210b:807b with SMTP id u14csp432756wrs; Fri, 28 Mar 2025 01:53:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV6uiqTrD6dpxm6VdW+PDVd+vu3ivztLYzUWSID/pSyAHZ6/fJ3x5owKX+qAE3kzTg1nUZl4Q==@linaro.org X-Google-Smtp-Source: AGHT+IED0a/HVDr+JdWcDlQih5cvT3oUseDbdVUZHvCqRgRkPXImcElYEWSBZFNpeSbCF9uQg+pd X-Received: by 2002:a05:6102:c4d:b0:4c1:924e:1a2a with SMTP id ada2fe7eead31-4c5870bbb9cmr6429750137.25.1743152021862; Fri, 28 Mar 2025 01:53:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1743152021; cv=none; d=google.com; s=arc-20240605; b=leR2JKZs5tDhnA/71Ybcsfxei2GIheIEv7UdOSO/SCMBFvsS+eurUDwn3057gj0H9Z ZquxhcXXIoSbO7MoaIFgtUFNp/Wyp0aH2QsTl6z0yTIfiSYVUYQsDA7l1+R+SW9CigYY 1/8n2cttCsnwMMj+A5d8v2Yt1s7nvz5egvktaj5uGOh2K9qqOlQS06duhz8mc5ZBCcdg EosDOAmWWa0WquSg0SbRO3cmk+9YZ7U5eSFkJC7djAy3kljOqOuac6Yy0u57V+bLKyMX Mu6L575MCXjwYwNIggNY5J4L8W84V26SxtCoXZFZLgpUNT/K6zlPJ9f02ZXTQsd2nVFH X6Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:cc:to:in-reply-to:references :message-id:content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=FFstgTTdCanMvRex2reMXEoj65g7avceFpD5gCwBsCU=; fh=fa7BNYuGagmF0KwuqniaDKMq9A6wu3sNkh0t0NdNFU8=; b=Cs3QHHlB5Nh35bZZl6PUoB87t7IjoswOZSc7/0jH6tuwSz4hcmL3fQBh/OjA5urOPo WaggbXtdh9xCstOmC6OoB/iiBBsx8TWdMHkszrceKUqQbRulRXvNpkju8Q2C4lGoXPCk bE/1Sm2KRQ35Hz9X+V56QM0j42kRqf4KLp1LF/JFt4jJOOMo8o/gEOP1p1BdkqS7AsYu Ie6KR6DlK4hP/wUFfl2hiVoyTAWmL2df2uBFTU26ddHye8VdMsQlRRd3zjJtl0JLFDBv mhePdnpwtqrSOVIKB4CR/xumN2Vl4r9DrgTxws3qRy7lVBRpNRYnsVaGxduEY2jykj/0 NufQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=hfcm61vh; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id ada2fe7eead31-4c6bfea587esi378545137.682.2025.03.28.01.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:41 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=hfcm61vh; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2529381EC0; Fri, 28 Mar 2025 09:53:30 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="hfcm61vh"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7C74A81E6C; Fri, 28 Mar 2025 09:53:28 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7970681DCC for ; Fri, 28 Mar 2025 09:53:26 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=neil.armstrong@linaro.org Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-39129fc51f8so1343408f8f.0 for ; Fri, 28 Mar 2025 01:53:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743152006; x=1743756806; darn=lists.denx.de; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FFstgTTdCanMvRex2reMXEoj65g7avceFpD5gCwBsCU=; b=hfcm61vhNZwhyvsQatQ75DlvjRxO0npkkW244E89k7bIPEhkqBDbxkmazZTj/5qCDY c+NTWQhSo1cojcFFgjlJZfPz4PQBRW9DB/Vp9G+hqkE6W8R+Th4Qfo5lYGeGrZNZQgVG 5j3C14sb1Vv709lJ+LDRctING9YRk/TlbZtXaqM++S4Df8QWjENMpDy+eBOgsRrxSHdC TxqA4jJlCvuGvA5EdiOZLFATavUD5gNAUZl/JTe3Qdc4OEFdTYZlSb46i9ZY3FrEuSxX e0KXTffE0MKiyLZ0Tv3ZGU0hVLQ2Z47wNOfFCvSm44pPRJmOWdBMS+mswc74UdYxeKVW Ltpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743152006; x=1743756806; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FFstgTTdCanMvRex2reMXEoj65g7avceFpD5gCwBsCU=; b=dYOQCuxivHpnohfqpSYEcQrI52M50DcRlMIeOMGq9nUUEbIpAFm41cKZy2gumWb+DE LprkbvNRYhMMhhX3WoSiL83vnkZ8CHZ/RKjSC5rB2/nD/efF5AlChSb+GGC1VMOThIj/ SzZoeVWgyRCmgBuxXpW5kMpv5Guj6DyB9YAiE1iOTgkPm0Wbshy+NpAsvN5+zmbXowkl OArnOWAkc5bdpxPxhoHZWrxFK6Ah/XTyngpnzGUl7bKY2HveFgGeiq+9RK8oyysi0U5r cMY1wsrpi1X3js6TDRnA8CeyW/3iQ5D2tUFLsoPl49jTFd8iejyjBbL1b45Wqcle6cdQ 7G8Q== X-Forwarded-Encrypted: i=1; AJvYcCVX6x4gXu41Jd5YY9+cOK5zFksW48bBP/+ZrYKlwHpxgmjBqnf6DLl8Oh15g+iDRs+4VYE0H0M=@lists.denx.de X-Gm-Message-State: AOJu0YwM4cRy82d4sE6ZQaYplta10APuRvSgZX9SIh6iw4wojiNdqZW3 OReQfrqIkNSPT+JTOiA8qvKtYP9RcB1qid8cNlXy6VB9FTS45zK5dlVGEDZoDbngZFlVNyE6H3b f X-Gm-Gg: ASbGncsZDLG6Ui2iEK7Ft/8IN+qHP5kZRSZZ3wdI5higWMgfvF6H6Ot78rPRWfUYuHx qODrc+0GiF3tfBybQEEa92Ew8vNgFKnfIUvtJLypmZT1dJTUgkT3PeMO6hiBHWiKtZ2c3PquoLY R51X92oys8RLv+/OeXva1fjo/WzJ3O68we0Jg4EewsAswuBLaJF7SV6XN4Ig/1t6nGZBBg31/sH BDzueJQX9GRTwEazqNYgVPBoTFtPQXjzdRSS/soW4EZ8fPIMrOoSyxGXnUtB/1eaKN83MsjDw0N HWc6FUdf/xk3NQjtkXaJhL8UKDISHE0KfF2CWjEzcvk7N3K9t59G2KCXX674TTtcXw== X-Received: by 2002:a05:6000:2a1:b0:391:466f:314e with SMTP id ffacd0b85a97d-39ad1741a73mr6486803f8f.16.1743152005826; Fri, 28 Mar 2025 01:53:25 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:3d9:2080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b79e0basm1969794f8f.63.2025.03.28.01.53.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:25 -0700 (PDT) From: Neil Armstrong Date: Fri, 28 Mar 2025 09:53:21 +0100 Subject: [PATCH 1/4] spmi: msm: use real number of channels for v5 & v7 MIME-Version: 1.0 Message-Id: <20250328-topic-sm8x50-spmi-fix-v1-1-a7548d3aef0d@linaro.org> References: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> In-Reply-To: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> To: Caleb Connolly , Sumit Garg , Mateusz Kulikowski , Tom Rini Cc: u-boot-qcom@groups.io, u-boot@lists.denx.de, Neil Armstrong X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1949; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=A2IMOgIDnFbyt+w1PgFnhrRwDh2xDfwmeARDqd7Wo5g=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBn5mOChGHAYaTJxgUoXlTwcEQ+jpQ5n1hLJt9Twxnw vWBk/MyJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCZ+ZjggAKCRB33NvayMhJ0TZXEA CGkKXkafkdAtQmjSV1I07CmsFSZnhdIM513d2VLup6jx290aEU9FHMkalmPGbZaHn0c/XlFZQmtyZ+ rcfn/g7HJX1Lili7C7zXX9IDRyeyB9SwXamYLDh/icpF3dHDm5G3/xgiOQu0CzutVa662YryoIHzFx 7YRmlrrF6ZVEDXcqW0XZsI1oEInSxQox9Ng2Iwue04e0rPJVnNfjuPOCZz10gKPpnlBs013XfTXac8 J+/iMbYD25hy+tm3KZwut/UmjAme+q6OpLFFjIgJxtef+08VrlQMhON+tbwxI1NUAwAEbjdkYa4WyU LtEXDGp338tL707eElw6973410R3WY+5i84yjbUeg87N0nJZ9O32vziEaEOuEaWDES7DNP/lgOaBTX ajt0e3MAu/PEqAnw0BDCgaLTnsX3YNMVdkOyRB9ArhLR1A0uUMABnduKHlLvSk8Zon0Pd0F9S8CIbg 1ZeGp4NQ5bdI7yJoLOzpRfw3UM47RIaXZ958LbGm4KlGjsaRJ1ustNnbeGI35UQ+RI+3jvKQHLGXiq N/on23CCn1B2fcLJUP3egI51Sr4bFpgK8xsVqY0dd5NeeEd1UIrDJwHwsEXwbqVenY5FkO5OYEWhWb 6uvgvSzZ9pBuwVk0f6AAzpjn/yXPR+L3t87WAg+sUxduZ5GTBT2RV47vYGfQ== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean The SPMI_MAX_CHANNELS_Vx are only the maximum channels supported by the controller, but the real number of channels mapped on this system can be read from a register, so take this info. This allows no to overlap on the second controller present on the V7 SPMI arbiter, otherwise we would also parse the mapping of the second SPMI bus and we would bet the wrong IDs. Signed-off-by: Neil Armstrong --- drivers/spmi/spmi-msm.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/spmi/spmi-msm.c b/drivers/spmi/spmi-msm.c index 5cc5a9e654c8371d71386384654e9429ed96b05f..08be4517df189f320302e97334a371d370b36440 100644 --- a/drivers/spmi/spmi-msm.c +++ b/drivers/spmi/spmi-msm.c @@ -24,6 +24,9 @@ DECLARE_GLOBAL_DATA_PTR; #define PMIC_ARB_VERSION_V5_MIN 0x50000000 #define PMIC_ARB_VERSION_V7_MIN 0x70000000 +#define PMIC_ARB_FEATURES 0x0004 +#define PMIC_ARB_FEATURES_PERIPH_MASK GENMASK(10, 0) + #define APID_MAP_OFFSET_V1_V2_V3 (0x800) #define APID_MAP_OFFSET_V5 (0x900) #define APID_MAP_OFFSET_V7 (0x2000) @@ -271,13 +274,17 @@ static int msm_spmi_probe(struct udevice *dev) } else if (hw_ver < PMIC_ARB_VERSION_V7_MIN) { priv->arb_ver = V5; priv->arb_chnl = core_addr + APID_MAP_OFFSET_V5; - priv->max_channels = SPMI_MAX_CHANNELS_V5; + priv->max_channels = min_t(u32, readl(core_addr + PMIC_ARB_FEATURES) & + PMIC_ARB_FEATURES_PERIPH_MASK, + SPMI_MAX_CHANNELS_V5); priv->spmi_cnfg = dev_read_addr_name(dev, "cnfg"); } else { /* TOFIX: handle second bus */ priv->arb_ver = V7; priv->arb_chnl = core_addr + APID_MAP_OFFSET_V7; - priv->max_channels = SPMI_MAX_CHANNELS_V7; + priv->max_channels = min_t(u32, readl(core_addr + PMIC_ARB_FEATURES) & + PMIC_ARB_FEATURES_PERIPH_MASK, + SPMI_MAX_CHANNELS_V7); priv->spmi_cnfg = dev_read_addr_name(dev, "cnfg"); } From patchwork Fri Mar 28 08:53:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 876718 Delivered-To: patch@linaro.org Received: by 2002:a5d:6dae:0:b0:38f:210b:807b with SMTP id u14csp432803wrs; Fri, 28 Mar 2025 01:53:52 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUAIR0YfPY1BZGdR1TpdNaprm+eYvO9OOOSmHFjHppYZ9ttDVODZINrzJRT7MSC5kKxzMinTg==@linaro.org X-Google-Smtp-Source: AGHT+IGyLLVENpjkGF/bgp2ZD4IVGDhfw4XgdWiTxKIlmf0Wa8jr7gPSzNmipRc9wPyntO+MtuW6 X-Received: by 2002:a05:6122:2a0b:b0:51f:a02b:45d4 with SMTP id 71dfb90a1353d-52611140da1mr773761e0c.1.1743152031872; Fri, 28 Mar 2025 01:53:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1743152031; cv=none; d=google.com; s=arc-20240605; b=YtmnCLCvLQF6F631dUyWhRNrQGA6ajSXYRyg2w//1yT2VY9JL3DLRGj/lQ1nMKYV5s 63qbnP9gJqwv5Ndfga6Al2X7vqz++aaIoWH9szrLJXlIPcApAQtj7m3m9wX/VKYKJUIi zopxjMwv2H+dFmafbKp7Kd0mmlvYA0qnwmlLwUc3z7Y1zx1sjVnIwuDbs0CL5IrJEHWq GaqlX2miAPXAn56KhhJD1R6PQssnSmMun1OTT2n/3T6icOrHdrESk7REBMouILlhasN6 Jj/1STNLNeOWNuc9CaMzlD6roIwnUIxfHAZQx04gV2Sl692smGvRQp+ifS9EFrjLFYQk nKIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:cc:to:in-reply-to:references :message-id:content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=rH7UBaVn8w+E/NUgltN8XqvvOoXYlH6vkN3D1kmrdzw=; fh=nHCCUZ4/H3fTuZ2IRBgGNAlNmGwJfT8grp1uTmJuJCw=; b=g2mTPQyC0tLpHh2c9F8lpXfjbv71XWRtS/jEtwPdbaIDD+c1S4ac1CRz/3HFcx5/KM HLJ5zgBe4miB3ZZ+xvO8CRnD8V1w03CSERjqH2pIsT9ZP1sOgFdv7JDx6lG50wacIKAf oE6ji6gPMGk1twzgEuMn+Rm3de7r1xTw9+Hj7xxdmYgMZeiyprI3zq6sCJiPXo1KSgCY VPCABIKdzq0mD2Alvy0IicS9KcyYngv+F8zZ0M7Y/oTYpeo0rNETK/Cz32LT8dh0l8xU UJfMd3S0ZnEsU0ycKXeTNbQOUx8hdQrFIwtfLLeKy1sK7JYkPN+2KZB0Ecwcjb2ierTc Ssrg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iXBBPDF3; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id a1e0cc1a2514c-871a32dc553si299818241.83.2025.03.28.01.53.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:51 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iXBBPDF3; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7E13A81E13; Fri, 28 Mar 2025 09:53:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="iXBBPDF3"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 352F981ED8; Fri, 28 Mar 2025 09:53:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 12B1181E13 for ; Fri, 28 Mar 2025 09:53:27 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=neil.armstrong@linaro.org Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-39bf44be22fso798676f8f.0 for ; Fri, 28 Mar 2025 01:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743152006; x=1743756806; darn=lists.denx.de; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rH7UBaVn8w+E/NUgltN8XqvvOoXYlH6vkN3D1kmrdzw=; b=iXBBPDF3w/oV3TtdULKSmMUyTddnf7isq0honRE5QJ9vzQ5YKzyaZ4AGTV4+zHnm8V 3DqIcQq/a50oSefELz7z9nzGVHb7pmNsO0ru7J9zvFox1JNxUgnu7ImqiQYt44WgY2bZ W+qv0u4T13qwPo3un/goyCBu8vkokYLdTymt5qfvWW+5VgCwgsxncCIGVv1P296J6VMG 0RmQbNVQB+cnjtQ2xbv2Ugd7TbI1Oxb14dAv4NC7F9MAgop3Q8JS5Zo88638NsxmNGuB qfUy+Do8nrQNvGKv4qxpkAgvqyYyh1uQc6tkJK7flH/74G4R5CNrmTxJ2Lbb6vX0Jq56 5esg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743152006; x=1743756806; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rH7UBaVn8w+E/NUgltN8XqvvOoXYlH6vkN3D1kmrdzw=; b=OLYf6t1PP/9ZxVm75C+C7CeuFGsOrzVCrScHIax/t4nE3Q5TaIy/YnPC5q+LGmY7/4 nzPsymY3JZfHJYDtZBX7k0wii/YlNHwL2C45/Jrb39sG6fVkkJTAqgANrfy4/lODmkhp JvzpZ/306f1LARTd/KvKqwDCAFbhxzOcNPLfaxUjKhCam85zCgtI862Qzw/foG4lsz/+ nsoxYABdtILEBHOcA/QZ5VYxJFbVZa6dIc3D1c2vva2kidIkFarThNga88Uspm2nZEvT h4xuVE3W3MwWJdJ2lEdLARLyNQ37noouVPGJWRCa4Yd9fZqK5q7A06AXRMMd5SxswE3i XL9w== X-Forwarded-Encrypted: i=1; AJvYcCUJ5VwtVP5Jl3W+vZ8aE70UFkGvrtA+odgMsDwawXR06vjn/6zi5WMPGj6zEBCO3vyvQuEPvDo=@lists.denx.de X-Gm-Message-State: AOJu0YzvFcUVA7PzxJ35tNqH05Zg8K2tGqmSn5ykqmLEPpJqxF5YVq5N tpgHj9UznYnLRE7cGqywUIu+eRCMU24L0rSXoYlSDh7GFatJG7yECF7HsKgDR60= X-Gm-Gg: ASbGncv0WeIfFcgryhvmaN2Hok7xr49Jv21c0Mdsh3Pyqz7Dn5EJJajklSzVK8M6yNX 1Cp/4cR19hoC5sjNRSPGyJaIBoM5EhRlisJRaYrib8ozsLkCSRuceK5L9YtB73MZE/L9WLBrXcX xwwZ9lxCoI3Evn6g2iLwO1JAbPfDa3hcTDSjblLStL+vFRpqDGYlt1iCJYvkwC7DaEGwn9rv9wu ZUCWNxXQzGRmW1Oe3038A0nnG5LaTl7Q4YCW078lxeiEaBNJqaT3ZHgKtk8DbuZTVxGuiLafsNg k1MfHmz3onnTW8f/8+ywdvedT9GtcEMgK7kWkD6fA8K57CO0u4g1zgpLkBKaY6G510Q7Z1+UFvk o X-Received: by 2002:a05:6000:1f8f:b0:391:1139:2653 with SMTP id ffacd0b85a97d-39ad1788652mr5563844f8f.52.1743152006445; Fri, 28 Mar 2025 01:53:26 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:3d9:2080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b79e0basm1969794f8f.63.2025.03.28.01.53.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:26 -0700 (PDT) From: Neil Armstrong Date: Fri, 28 Mar 2025 09:53:22 +0100 Subject: [PATCH 2/4] spmi: msm: factor out channel mapping for v5 & v7 MIME-Version: 1.0 Message-Id: <20250328-topic-sm8x50-spmi-fix-v1-2-a7548d3aef0d@linaro.org> References: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> In-Reply-To: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> To: Caleb Connolly , Sumit Garg , Mateusz Kulikowski , Tom Rini Cc: u-boot-qcom@groups.io, u-boot@lists.denx.de, Neil Armstrong X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2074; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=Iv0km4b+upQcceuAQpjzXgX5VpByJxSS8jurCBS4l2c=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBn5mODdvXkGePmlx2/7UzMbPCJTXfdVndBIblQHBNQ NW27ZbaJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCZ+ZjgwAKCRB33NvayMhJ0WegD/ 0Tvfr1tU+Bnkib5dMIRC361/qPyAfIMCirrx/paBciliJu4edmqil0ED+U5MgvjThbxLt7F/tS5/8j pEJx1juLhPJ2RNWbnnaHXeXKNGuU+0nUxW8h2FRWNOb99b5BEkYcvWXMszy+ebazoBYurzFgaTQaUX B+qYksFvn8gMpy0YZMuHl77JpGednG/ccBZetRZHr2sCJrftLbmkbOBXMwyC2izkb6ibT736Z0dL2r tzpazSQzNmmn1CBvGre/yiCtv+79wzGS/KvUNmc8160AEOHwVhpiIcZ4C+kLXQ8Ws6EtN6X6DFXzNS ptSnpNTg+cQZXP/e/JTbDEqoi22eDSQlr9Sfzfzr2OtpBkVnTjCsb2MVsKJM5sCsCF4GJckF2pffBu 26BdqYCPVgtwwpoTcxD9esBsys2KsGzTqvUEE8CTK4mW+l7A9XCWCXbeXIWIJg3jlmGRk/x1QnLnhE Oy8nQZoiXwq0W90T9UdeoWaRPRV2QlTzBu7m/VMidjaIQohP/rTuObuANhSFjauWjQcjozAL8v+6Mq ao2c2Iczxj22i0LUTFOXHDtd1mDSzFgx2ErAN+zKLEIEEVStjfP21pl734BTXrhgyZwM6IYkotbifl zhBIzvxLYXLfE5rDz8swNsjRsjZtVjSUwASgo9Y8q5pzqW/qEK7y+ZCSEYww== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean The handling of the table mapping for V5 & V7 needs more work to handle the duplicate read-only & read-write mappings, so to make code cleaner add a switch/case and move the v5 & v7 mapping handler in a separate function. Signed-off-by: Neil Armstrong --- drivers/spmi/spmi-msm.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/spmi/spmi-msm.c b/drivers/spmi/spmi-msm.c index 08be4517df189f320302e97334a371d370b36440..9b2be1c1b9e381985b621297774500dd97844963 100644 --- a/drivers/spmi/spmi-msm.c +++ b/drivers/spmi/spmi-msm.c @@ -249,6 +249,18 @@ static struct dm_spmi_ops msm_spmi_ops = { .write = msm_spmi_write, }; +static void msm_spmi_channel_map_v5(struct msm_spmi_priv *priv, unsigned int i, + uint8_t slave_id, uint8_t pid) +{ + /* Mark channels read-only when from different owner */ + uint32_t cnfg = readl(priv->spmi_cnfg + ARB_CHANNEL_OFFSET(i)); + uint8_t owner = SPMI_OWNERSHIP_PERIPH2OWNER(cnfg); + + priv->channel_map[slave_id][pid] = i; + if (owner != priv->owner) + priv->channel_map[slave_id][pid] |= SPMI_CHANNEL_READ_ONLY; +} + static int msm_spmi_probe(struct udevice *dev) { struct msm_spmi_priv *priv = dev_get_priv(dev); @@ -304,15 +316,16 @@ static int msm_spmi_probe(struct udevice *dev) uint8_t slave_id = (periph & 0xf0000) >> 16; uint8_t pid = (periph & 0xff00) >> 8; - priv->channel_map[slave_id][pid] = i; - - /* Mark channels read-only when from different owner */ - if (priv->arb_ver == V5 || priv->arb_ver == V7) { - uint32_t cnfg = readl(priv->spmi_cnfg + ARB_CHANNEL_OFFSET(i)); - uint8_t owner = SPMI_OWNERSHIP_PERIPH2OWNER(cnfg); + switch (priv->arb_ver) { + case V2: + case V3: + priv->channel_map[slave_id][pid] = i; + break; - if (owner != priv->owner) - priv->channel_map[slave_id][pid] |= SPMI_CHANNEL_READ_ONLY; + case V5: + case V7: + msm_spmi_channel_map_v5(priv, i, slave_id, pid); + break; } } return 0; From patchwork Fri Mar 28 08:53:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 876719 Delivered-To: patch@linaro.org Received: by 2002:a5d:6dae:0:b0:38f:210b:807b with SMTP id u14csp432854wrs; Fri, 28 Mar 2025 01:53:59 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUnS7i4d2/1OFiFyNJ90gAx9G1T08JUTVrJQpBjyty7Ct6WMoV4INT7JcEzr4wfJ0WC+oxqLA==@linaro.org X-Google-Smtp-Source: AGHT+IEI7HOvigr3Q2FTBgx6UkH2HC99uugCtwV2szfSTya3lFiGwXpYpw/U3Umm0k6/9MJeHLLN X-Received: by 2002:a05:6122:1c8e:b0:520:6416:56f8 with SMTP id 71dfb90a1353d-52600928c4amr5876335e0c.3.1743152039437; Fri, 28 Mar 2025 01:53:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1743152039; cv=none; d=google.com; s=arc-20240605; b=LRADl57lf9IEgSuzGi+FqIsJhbsW/WonaK9+1nokN434bTfggl+2/BZbCTqpmoxbYB uwYQSkfW5hLzMxjMlmNQ1lEjD5nXrLx9AG1jslQBziLKGJpli+XeOxCOlVszuMJD5V1b gNjRjUa91DBK8F1HSb6bv89xxxs6KdHwgF9P+4IV41kanf1fzJeQuWrzyCWWJ+aoZCQF 3PGRUynG0WNeQgP1I4XCQrMNYEdtUJRVLPtqbIHjP5iJMT8erjyPHY87UMqf8eyxbwdt 5Lwh61BVdMj/ShH4PwW6bvLeq516sa7urCfyirycAlHQcuxI5fHWwgM2BZ0mfFGlABvN pH2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:cc:to:in-reply-to:references :message-id:content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=cCOh43Wn2/SswNrB4F3kZAstEVfhFUmmW7JLpm5/blY=; fh=uGxRdEFTp8rZY5Dk1wtW5jP/cb/r3v53XSMkt+r3G+Q=; b=bR+KbJ+uKbClheDTi1LuqooI3bShaDaaHegzC7vBoyloalPNZ0shUFeAUm5w6WCssQ pfC+V+UZ8RROM4ci7wO6G+IJ5jPCfpXULsoZIvO2D7kytE8oleloNYk9J+5ct7sPuPuu kRQbk9FqBKNl/T7L2WMhq5qAgOFab0ML4kc+Vx9gtVvyVxNVTMfWs30xtXAi8m6kKgFl IINkINKdv9+7xYwMxuX05frFUBz3hzZgnjcDA+kLy+o4rIrsI4EYTDaSGgJATSGMINLL lWf57QP12CwuVZxVM6RLxI62D9kCbwY2JdpFl7oQsgj74kJ+zBordVGZJ66VNwpUpCkO 5n+g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GA7l3psQ; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id 71dfb90a1353d-5260e7d1b07si393816e0c.65.2025.03.28.01.53.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:59 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GA7l3psQ; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C5D4D81EDD; Fri, 28 Mar 2025 09:53:32 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="GA7l3psQ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 39DE681E13; Fri, 28 Mar 2025 09:53:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B5E6E81E5A for ; Fri, 28 Mar 2025 09:53:27 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=neil.armstrong@linaro.org Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-43cf034d4abso20651345e9.3 for ; Fri, 28 Mar 2025 01:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743152007; x=1743756807; darn=lists.denx.de; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cCOh43Wn2/SswNrB4F3kZAstEVfhFUmmW7JLpm5/blY=; b=GA7l3psQeBH0wPMMX5+ulwKVjKRMk6+E/DRbCPAhAB6h+HTYfNyEMUgwU5FJKwRL6V Up4ueq/GDOfVWUV9STLHQONgDKUZIx38ZHRnAwnOA2GfbfLeLdmec8+18we35s/HVQmg f0ZJ8kW62esNfry9kuZbiYSmwe2vEshmGZNG37xpVITr5MRTEPaZUAIA/MM4VQ+MrZGG aoe03bXLTxfzD7s2NRrKmGaD7k0PaRrSVHLmXTjgSRbxOYyROLUOHf+PLriAxVYr/yVZ qAiI7rajvwuXF0YzUaI/LYx3ItZKUUfWS/qpABfLrbot4l6ZZvF6mwli9Yv1Zyk+je8u /c3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743152007; x=1743756807; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cCOh43Wn2/SswNrB4F3kZAstEVfhFUmmW7JLpm5/blY=; b=KLzs8Q3EMSi0L+gqYKXzpuwfieLP/DH7Zmh3WbR28CNaYTR7oBv48fi+I6nNU8KsjZ 9c6sfS1LYqmpCchu302bEGNVcfVLsPn0Gfy6qfhh7m+MZJs1Ew0vcLj+/61HIMsybV+W ov19ohA/jslHygq7h4PX+mc9shoY6Txg6uJly1WoeksV8Vd6ro3uuJrng5t9Ctq8sFam 4Vrg9LUGbj+lmSB1D/6oY4B4Cm69y2MDi18gZAk3jtsR1gjYbLS4hiRSZPSp53dv/T0I hPV5Vz8VBVtqsl+yqZgeaKNE1uAeeNYJWpSx4gYrX5EmFAb5s2mUAUvTdboQ2zpnBYaz 0xtg== X-Forwarded-Encrypted: i=1; AJvYcCWB8LwJODAZRh1GTrE677z2Ap7abWlZJz1g6kfToLknGLtVeMYSTyal7e9PY7ISdMEzfncA4lY=@lists.denx.de X-Gm-Message-State: AOJu0YwPXxNQz6WOaL4tvu/10/p48tdr/mFpJMYDrWZlH46Auiq91Fg9 ygJViSt0Wok78WLZWCBxdMxolh1zUsN6TbHWlUkx2Qh3BueVwkBDCuzGNrR9T3g= X-Gm-Gg: ASbGncvDN9IdS8NF4XQic2hr1+CET8CySkop0L41fTYHtXA30yjbXke0kiKQVYbPTf0 2VNA/XgrhWc8KzgDc/CVZGKQsM/CBPJyz8TWNg9OhxAQqIrS9EOQhEkjeWuXbjysG8eFR3ntm1g W8veKLJ0JVz0NGGbt15enfHhaJp5rDn1j87DospXLWMAcVlm0TxUPZhows5+jpXY9QoSwM/7ExX FYlraan85ju2dxfj/ES/VSBzG3/hqYbTmWOl4XQtj601SeO17FXy2Cq6l1PhYyOTQo2qBBQ7NwD wmZEypa9mqFaMik4jcigMEjC0yEGlgo4OF++YgTQqw1HODwQr8qcHyCvHu5J9sl0xg== X-Received: by 2002:a5d:59a7:0:b0:38d:eb33:79c2 with SMTP id ffacd0b85a97d-39ad174e4famr5797098f8f.32.1743152007044; Fri, 28 Mar 2025 01:53:27 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:3d9:2080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b79e0basm1969794f8f.63.2025.03.28.01.53.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:26 -0700 (PDT) From: Neil Armstrong Date: Fri, 28 Mar 2025 09:53:23 +0100 Subject: [PATCH 3/4] spmi: msm: introduce SPMI_CHANNEL_VALID flag MIME-Version: 1.0 Message-Id: <20250328-topic-sm8x50-spmi-fix-v1-3-a7548d3aef0d@linaro.org> References: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> In-Reply-To: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> To: Caleb Connolly , Sumit Garg , Mateusz Kulikowski , Tom Rini Cc: u-boot-qcom@groups.io, u-boot@lists.denx.de, Neil Armstrong X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2021; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=WO1pfOUJ1dEJ3V3V2lUFZT0TwpTL1J0zFDO7OiyMAgI=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBn5mODMjqK/6QJPUJkCCapl5QIEeU/9yyaXKccOmg5 XtHRihyJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCZ+ZjgwAKCRB33NvayMhJ0UMkD/ 4/xVKTBKJ73m1MRurbZOPjhdIBQEZR1BYzFBfOEIS6iBPJAEsAnX0UmUpdz6wS9J+hOIj3yT3wyHOM Ex4aeaJ+P/RcYNdFMrJRAEuX1Ba2HlHhB3YxS9RPaUjZ1Uf5LCF5sgufKcYXUVMXW3ixQNzBC5XDDP DtdHqeyN+GZHr+trsbBEgxWPFsEdgyAL9DtUaw1WTFNBTrrMfmzt1TWqR3vCzb7MqaFSVuKVvaYFIx JPgDNNrZFU0/Cbtab4ByMuWy7kv6NFzZnBr76xSyTdCq/iAaBzYd0hA4/VdvkS4Yzp6WidlAkpKPSc reYI9ypGm6Smgmdjnm8SlJM9wzmClacW5geb7R5ukweaQZb+dw9TzWf1KoyBjBF7BTLAhlFM+Cp68M fXMlnEQ+q5TBpwsWMuQsssvdk6RBckWrnZhn9X0hhL8d7PVVUPB9xQJ87zaFk3DB9LXSujpeo3qzjA uoj0jHggR+Yl9v0auCB+Xa8AVNl2L64e6JOzBT5pqomJDi1T/yDVosSU5qeOBnJDvweHcGKC2KFrTy iosC8eTzJDzZgjCILbBR3N9yL2MX/xUtDpzabm6vp5Ih+p4FX/HkL6ydQ6gztouRgq+l1JdlopUA1W 8aYO+dlt6sou19iK3p75NKtNDvsSuM+RJbySpR0cDtBwIbZYz2ctNon3cyjA== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Introduce the SPMI_CHANNEL_VALID flag so we can check if a mapping exists for a SPMI command. Signed-off-by: Neil Armstrong --- drivers/spmi/spmi-msm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/spmi/spmi-msm.c b/drivers/spmi/spmi-msm.c index 9b2be1c1b9e381985b621297774500dd97844963..ee3feaf8b5049d51665330a63110ed4949e59bd6 100644 --- a/drivers/spmi/spmi-msm.c +++ b/drivers/spmi/spmi-msm.c @@ -63,6 +63,7 @@ DECLARE_GLOBAL_DATA_PTR; #define SPMI_MAX_PERIPH 256 #define SPMI_CHANNEL_READ_ONLY BIT(31) +#define SPMI_CHANNEL_VALID BIT(30) #define SPMI_CHANNEL_MASK 0xffff enum arb_ver { @@ -117,6 +118,8 @@ static int msm_spmi_write(struct udevice *dev, int usid, int pid, int off, return -EIO; if (pid >= SPMI_MAX_PERIPH) return -EIO; + if (!(priv->channel_map[usid][pid] & SPMI_CHANNEL_VALID)) + return -EINVAL; if (priv->channel_map[usid][pid] & SPMI_CHANNEL_READ_ONLY) return -EPERM; @@ -186,6 +189,8 @@ static int msm_spmi_read(struct udevice *dev, int usid, int pid, int off) return -EIO; if (pid >= SPMI_MAX_PERIPH) return -EIO; + if (!(priv->channel_map[usid][pid] & SPMI_CHANNEL_VALID)) + return -EINVAL; channel = priv->channel_map[usid][pid] & SPMI_CHANNEL_MASK; @@ -256,7 +261,7 @@ static void msm_spmi_channel_map_v5(struct msm_spmi_priv *priv, unsigned int i, uint32_t cnfg = readl(priv->spmi_cnfg + ARB_CHANNEL_OFFSET(i)); uint8_t owner = SPMI_OWNERSHIP_PERIPH2OWNER(cnfg); - priv->channel_map[slave_id][pid] = i; + priv->channel_map[slave_id][pid] = i | SPMI_CHANNEL_VALID; if (owner != priv->owner) priv->channel_map[slave_id][pid] |= SPMI_CHANNEL_READ_ONLY; } @@ -319,7 +324,7 @@ static int msm_spmi_probe(struct udevice *dev) switch (priv->arb_ver) { case V2: case V3: - priv->channel_map[slave_id][pid] = i; + priv->channel_map[slave_id][pid] = i | SPMI_CHANNEL_VALID; break; case V5: From patchwork Fri Mar 28 08:53:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 876720 Delivered-To: patch@linaro.org Received: by 2002:a5d:6dae:0:b0:38f:210b:807b with SMTP id u14csp432892wrs; Fri, 28 Mar 2025 01:54:08 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUI2jaZaqC+mOABFP/Io8uCoG04+Nn6/UtLoKevfuSWB5g135UgTNbBtznHAjHjTVZCRVqo7Q==@linaro.org X-Google-Smtp-Source: AGHT+IFuhP9QDEfgSw0fDjeXSF0NedUhlnvuY7SwVDN/8MlbtidCzpikxNi8OgFNbFBYuRQlLo3l X-Received: by 2002:a05:6102:3e88:b0:4bb:e8c5:b164 with SMTP id ada2fe7eead31-4c586f5f3dfmr6970238137.7.1743152048073; Fri, 28 Mar 2025 01:54:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1743152048; cv=none; d=google.com; s=arc-20240605; b=kShNNaargJXfdsCT/kWfbfJIO1LgHZFXFhBc/apIHo+uV2ocx5jDVl/xJxIkb+jhyB YfbcA+1DBKEKbeW5eX4pzombz7Om/9g9tgKKIPBOEQ9LNOB6QXo1neoEiO8MTEfz0ShL pPvhfjYYX3z7R5tSqbpMR+dvgJ/zOuUv+z71X9V0ZUEtqAWuv+Sk4jaqH/emWRymrz8M 7FV3JmfSEp2fh/rmN1N73It836qIhHLnUiVeZQZryfRNF3Fmd4u8hI/dvizomk+bpkl4 XnUnTxgjx63MqQaxhevUfMdPlWo6AwAA/rT4E4eXmEWCG/wqQ48J26QQDnV7y5rbiJbB uOFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:cc:to:in-reply-to:references :message-id:content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=PcNdDC5c3NpUW5A44JQ3gHNOzUIbT/swSz4ooWAxiDY=; fh=Mf1l1MIomf2UbXydjLpeHfGJauDddiHznX3xYODUs40=; b=MAJK7JJ7Mk3dDPNFcNvBMLYwnZTWQ8IByi2YnoxYTfi+9gLOOajET2HMRdlGLyWFPn Ec6yOgEy4WOZddrsgtj86kBW9pqqwyUrTXOT7OEN/PNh3UGjjbNwhFwS44R2NE8pgIS4 gRVUqtVQlMeCSznkKqQaQG1oDDaSt5VOJ2kdbsPRozg1yIG890fiPDyCGZbouz2xJCdH DfM/t1AgStvlo8TQ73Pp4VUBsPwqq4EYXOc2ONZULOmXCxdp4FzVBSl4Np2Z4z6iQHuX XDs0ubcJPkSbTeF73o36TUKrkE/proY8ScN2blBfRHGSRnqr7i9muAQj/YyTswI3jOuM lWIg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Oq2BtW4L; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id ada2fe7eead31-4c6bfe80260si390874137.526.2025.03.28.01.54.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:54:08 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Oq2BtW4L; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2744381F30; Fri, 28 Mar 2025 09:53:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="Oq2BtW4L"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 53A8481E13; Fri, 28 Mar 2025 09:53:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 43AD481A0C for ; Fri, 28 Mar 2025 09:53:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=neil.armstrong@linaro.org Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-43d0618746bso12916195e9.2 for ; Fri, 28 Mar 2025 01:53:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743152008; x=1743756808; darn=lists.denx.de; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PcNdDC5c3NpUW5A44JQ3gHNOzUIbT/swSz4ooWAxiDY=; b=Oq2BtW4L0gaZmROHVPGxyu5aC2mmOm/IzDG6u80w9zxLjQIa4qWMmbSzTi6fxN30gG SIzVrJ4tQsnqpTb/Qk7+nWdX6g09pnPlsUoAVxbs26h3dVaQWI6tfPJAqmSAAAMh+pZQ 9v4d6TriZ2qqtlCp+dWgvHvNjMEIqu03VaPJZBGNeOOuc4no+5qDZ1CMJLzbdkEkHuh2 cQem+SdsKnyuQ0JYk3DV5DE4j5aBl4neo8ewgwxiSWENf+LyM2U4iE4VP1XBGNjChIxu 85f/kYfZUQJbZtOrBlX7vKCuaqOKNO8oynf/NxpK5zgcWhpYJFjxhuAGIyEMBMehh/zC CHqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743152008; x=1743756808; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PcNdDC5c3NpUW5A44JQ3gHNOzUIbT/swSz4ooWAxiDY=; b=VuaxyGcrMfAM17mw6/U0ZN75Eo+vFKyF7GDV1NNp2wyfD1i10Az4O0+nDbUlv7RRM4 3ukCgZHg1Ofbfd/4f8KMEalpqN/aNioHJS7Ja72EQSlpyHQrDPakt4pMDo5cPjL997MP PX7t4/9Dt9pKu9lmyVnmQajiucVfP5b82/OhaMKjzggc85qcyH11xYFT2w4AkX/f8Hih VagvxcekE4pZG78HpEL+TomjxP9GwQXm9zHFQTWk9lru5CHTOsMbAoCbX7p6q4VGQdTw e2M5hwj7JWTGKyt4eGdJvmqDh15nBajLadzISDVImWmigwAAkR6M5bNAE1FdpNL7GQRz z2sQ== X-Forwarded-Encrypted: i=1; AJvYcCUqZtnsfNwbFE+c8fZ3X10eI48/6U9iLIVcWmUe+hi/D7/wax9n9fJcO+jfi08RUj4dk77Qjmg=@lists.denx.de X-Gm-Message-State: AOJu0YwvzB/ZywaU5vIalyx69mAWNp4jB0Mgx41RiC6u8IeTsV2mkdkZ V9pGitPB8KlRdVtHYduFrkzUsqYKGHfSnQDSUlKK2kl8Q29Y/4LDUup27dwKHz0= X-Gm-Gg: ASbGncttkGyF5qumInh+KLI2B9hGAEYyx6ebvo8ZKG7TbwnVAi2SdaSxCM7fW9Es/bR ztzcnYQi99o8VJ/3Xj6r9SKEqCSr3L6Bt7oW6+kf7Itdj3D+Re8csuj0qzip58Ca4K6y8XwWzO/ amk+ZEcztU4VqELxkoBWVSPpc+IC3uruM3hHollrJZcYkZHTRj4Y59A0E3SrH90KwzK44fB45yw 6mmFRBubbZV3/G5EfAUXrEC78U3ZNMxO1EVu0HtTAMe/Ik66m077+2Uh+qfP5Osbju6LsyVlOMV OJFR5NdvZ3jCP5ILGQQQoYaWRq4KLIqxFcgz5oktLJEQbYqS7p4+ADnEDwKiel58nA== X-Received: by 2002:a05:6000:40cd:b0:390:fe8b:f442 with SMTP id ffacd0b85a97d-39ad1783345mr6063379f8f.54.1743152007654; Fri, 28 Mar 2025 01:53:27 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:3d9:2080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c0b79e0basm1969794f8f.63.2025.03.28.01.53.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 01:53:27 -0700 (PDT) From: Neil Armstrong Date: Fri, 28 Mar 2025 09:53:24 +0100 Subject: [PATCH 4/4] spmi: msm: correctly handle multiple mapping entries MIME-Version: 1.0 Message-Id: <20250328-topic-sm8x50-spmi-fix-v1-4-a7548d3aef0d@linaro.org> References: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> In-Reply-To: <20250328-topic-sm8x50-spmi-fix-v1-0-a7548d3aef0d@linaro.org> To: Caleb Connolly , Sumit Garg , Mateusz Kulikowski , Tom Rini Cc: u-boot-qcom@groups.io, u-boot@lists.denx.de, Neil Armstrong X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2260; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=y+9WZsaquJH+tlZ4eFkf2vRdKpR35s1NrW2mHCAui48=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBn5mOEvdmj5mz3Eda2AC5pl2qgSpRsre8C61s+bmsr Ov4h9uuJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCZ+ZjhAAKCRB33NvayMhJ0atVD/ 9yMoAHMXnKZnP98iN9okB0HTjUSZO6UsaGaGeUF5dBkaMyqlXNbDmMbQCn7yjCtbsrQ9bRbbwCCxJT mMJbgbZ/pNdNF2G6vvd0BY35uM3jgHITbfLo5Wr3G16prYbGv8cVQx+L3fVf7a+PTP+5/0qGtF7rBB or9TpB3On+ZLHsFWPJEmsPI5Ao/zEElfzX6XeDXdm/LCXTn4Ld2VpofPi5w8QMaMwU8w8K4KLXGyQb 8hMbKfvs5aH510lmY91RY2D/eKCg7YMThICUt1jWkwTNJgSvdjZg30S2CjixIlG1eSqrbrthaU2/cE nxDySIZVAwYKbpYt90ASgXijAdqK6SXJLObVQ4XH90cDlADm1MdWLT5bRiNOHNehpUuPNZUOSStCRP qi7vJvjZeq13LV00IX3rbvewo3m2SKVVAHMd4FqA+LyOGd6SOVjqfBLD9Gv+YNF2ceH49PJMDHFwLH xGy+3QHTREnAE06e8E5x1WLn2qEt4HU61nA3z71lAw/sn9CNs+CAsmgRTii/ukGEhRgDvHRE2McRJ1 6b+oQdIAnIWI41uSelstu6wwvXTX4iVXaFn0pVYeCRSAPFeWkKsFiCe/4jry6t4PF+9djX0R9K+UK3 MsgETWvpqsnwpRfSRM+7jGpI8OmSS4POW/53CcU7VoxxWXNARPDpkDVhE0Fg== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean On v5 & v7 controllers, multiple mapping for different Execution Environment exists, if the mapping owner is for a different Execution Environment we can only read and not write any data. To allow us to find a Write mapping for our Execution Environment, we can overwritte a mapping if we encounter a new one which we own. Implement this logic, the result is the same mapping table as in Linux. Signed-off-by: Neil Armstrong --- drivers/spmi/spmi-msm.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/spmi/spmi-msm.c b/drivers/spmi/spmi-msm.c index ee3feaf8b5049d51665330a63110ed4949e59bd6..faae54e9fef025466787541631ce5b5171444621 100644 --- a/drivers/spmi/spmi-msm.c +++ b/drivers/spmi/spmi-msm.c @@ -254,16 +254,30 @@ static struct dm_spmi_ops msm_spmi_ops = { .write = msm_spmi_write, }; +/* + * In order to allow multiple EEs to write to a single PPID in arbiter + * version 5 and 7, there is more than one APID mapped to each PPID. + * The owner field for each of these mappings specifies the EE which is + * allowed to write to the APID. + */ static void msm_spmi_channel_map_v5(struct msm_spmi_priv *priv, unsigned int i, uint8_t slave_id, uint8_t pid) { /* Mark channels read-only when from different owner */ uint32_t cnfg = readl(priv->spmi_cnfg + ARB_CHANNEL_OFFSET(i)); uint8_t owner = SPMI_OWNERSHIP_PERIPH2OWNER(cnfg); - - priv->channel_map[slave_id][pid] = i | SPMI_CHANNEL_VALID; - if (owner != priv->owner) - priv->channel_map[slave_id][pid] |= SPMI_CHANNEL_READ_ONLY; + bool prev_valid = priv->channel_map[slave_id][pid] & SPMI_CHANNEL_VALID; + uint32_t prev_read_only = priv->channel_map[slave_id][pid] & SPMI_CHANNEL_READ_ONLY; + + if (!prev_valid) { + /* First PPID mapping */ + priv->channel_map[slave_id][pid] = i | SPMI_CHANNEL_VALID; + if (owner != priv->owner) + priv->channel_map[slave_id][pid] |= SPMI_CHANNEL_READ_ONLY; + } else if ((owner == priv->owner) && prev_read_only) { + /* Read only and we found one we own, switch */ + priv->channel_map[slave_id][pid] = i | SPMI_CHANNEL_VALID; + } } static int msm_spmi_probe(struct udevice *dev)