From patchwork Fri Mar 14 16:40:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 873738 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (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 47C67202F95 for ; Fri, 14 Mar 2025 16:40:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741970407; cv=none; b=T+MD9mUD8ymVRVsg70J35ZN9ef8zZ7fkFG9OWxhFhzlk0I5Gxb/+hgRTtFpkn4BAJ21qhKzIk1A3GngyZwGG5NgIBHckwb1hYbwUplbqhY9mS0ACmsBIJM9rIhhl5VGSWZNPd5IuKfjQ4e4CmoKlgu8+n6jGRplmgWe90/PEYqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741970407; c=relaxed/simple; bh=kaiSqcv9xXbQ+flypO0ZL/5TK5gbHyomS/uDIQTFCwo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NmWkM13rNKSukva0xq8VlaPFstvV3OsV0wLL6DdZJfPLwlv96Ue04Yu19mf44Hyz70mUc9+Aaa3i3DKwszkwMANf+0aujgsi0Ti9jLsKL4bjhBJF8aQ1LSFmfu8z82uAkdyfur0lxLcYQ6hOcNpXaOxEVuB1/r/TS7d/e8BRb2M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ynWrFGxX; arc=none smtp.client-ip=209.85.208.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ynWrFGxX" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5e5deb6482cso6092833a12.1 for ; Fri, 14 Mar 2025 09:40:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741970403; x=1742575203; darn=vger.kernel.org; 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=AhIDu7E2Q2Kcazbx0KU6LBkMGAXZzziiTNuKzlBCpUg=; b=ynWrFGxXD0plDUw5jzpcAROIMnP+5r2RLc6ogTYbLVUCLziczreW/JG/2Y3Uxalhqq 9vB/KmXDFprj+cjBsj2SFMS5tH8GV+4vfG54q0lNCLp/0P2TjVsH3MkSguuWIVHCeiOM HE+VaVyCDSYmjoMuk6yXItGUML83ul6l/mgHut3a7kthJwYFjz/SChJngCoTChWX15Lf iRHp756TWFlg+5BwSBNDrfJMBW5OoXpPS/tsGcVtH3tQ+iKQkBse2vEgREPpS3I9qxSv AuDdnQhEDqFaJg2W0L6D2f4toLl0YQVUDetiAh6Dh9jxx/dI64rR/xJfQTYGPlz8t7PC NGVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741970403; x=1742575203; 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=AhIDu7E2Q2Kcazbx0KU6LBkMGAXZzziiTNuKzlBCpUg=; b=AIDLg/hZ7LS/Gn+XF1CrLNXAfn8Dv3TKZyUjBQ4l6zGMuuDfyDzGOmotXPVZG/a7mv DyPbtcjQ0J/xH15LmRWViOQAjVKX+wgipo0+uvZ7ryrFCAMrafD9LXjAMjHOk6ROM88Q mzlMoiWj1BcNVNWocxyp2GH8uJiIWCH6zKHJexJnYFJhzn8lVXGEyR4qawZ8MoCdUsdM dBN1qJm6pe2EpwVN4SMeXxM2FrAdU/VFUkn+Gi3rENEaA87oFUZ0RgTjuVxq48xmmP3+ d1WHABXFgipb5rq7dffFMEMdV/DaZkyawjBmdP3RsNiBbilxziOJCKFEALmp3YcUVqpp zQPw== X-Forwarded-Encrypted: i=1; AJvYcCWrs+kzD47g2jROqErZrDEU6BvoSBMEEirMuBj/4L7a83JLwxHHWNcQ1INVjMCuuFUxyWi4TRg1Nzt5xaq9W9VPkw==@vger.kernel.org X-Gm-Message-State: AOJu0YwUNz/77K3r8uPtimnkryjUxun9vS8cAttTC483jtrnOZyFhqA7 5Wo6/Us/Bfq09xMQKf7iU0f/H39l171t9tfxZVbq13H/OS3IdNFJfYOUdMVtVho= X-Gm-Gg: ASbGncvjQS9WI2jqOgEWpx4jVQm0VsZP5YmG2YhOLYZGE6YQnXyodo9YMFys4dsIRfC TRk2DejdxGJRNBkAp0NXDslk3AXiW6KhjstBwtBXS2jJhs/I898HtTwYQqhMr+aMeNRmY3SEQ6B c++TcdCMjozoXw6bJMwP5dtVBLRyzzswmsYUL91h0vgRNHrUHbbPTNu6klJSZLKvO7+31v1oLC9 9F2V2HZjwjzZzssRVlaZK30VYlK2cD5AvvWSBCQ7tyWm6De1/zavHhIhTgwQa/FHQElBIRgE8Jq 6lNg/AF2TtAuZmJ7j8ddHaErdQAiaB0fdzWdxIHis1BIia/sewrNHoO1MBKOMf2stkx+AmHWzrG lXqGtA9aotELUNDYvDrMpnP5bU5Ko X-Google-Smtp-Source: AGHT+IHsoW+BdLyhYz/cgXiDBGGL8Zn1OXVl8nizdj55crxxXTbUykUjSJOPZPoQVfuKYqW9bGrg3A== X-Received: by 2002:a05:6402:3546:b0:5e4:95fc:d748 with SMTP id 4fb4d7f45d1cf-5e814d7f805mr8253334a12.5.1741970403405; Fri, 14 Mar 2025 09:40:03 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e816968cd8sm2115727a12.18.2025.03.14.09.40.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 09:40:03 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 14 Mar 2025 16:40:01 +0000 Subject: [PATCH 1/3] firmware: exynos-acpm: fix reading longer results Precedence: bulk X-Mailing-List: linux-samsung-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250314-acpm-fixes-v1-1-ab03ca8e723f@linaro.org> References: <20250314-acpm-fixes-v1-0-ab03ca8e723f@linaro.org> In-Reply-To: <20250314-acpm-fixes-v1-0-ab03ca8e723f@linaro.org> To: Tudor Ambarus , Krzysztof Kozlowski , Alim Akhtar Cc: Peter Griffin , Will McVicker , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski , =?utf-8?q?Andr=C3=A9?= =?utf-8?q?_Draszik?= X-Mailer: b4 0.14.2 ACPM commands that return more than 8 bytes currently don't work correctly, as this driver ignores any such returned bytes. This is evident in at least acpm_pmic_bulk_read(), where up to 8 registers can be read back and those 8 register values are placed starting at &xfer->rxd[8]. The reason is that xfter->rxlen is initialized with the size of a pointer (8 bytes), rather than the size of the byte array that pointer points to (16 bytes) Update the code such that we set the number of bytes expected to be the size of the rx buffer. Note1: While different commands have different lengths rx buffers, we have to specify the same length for all rx buffers since acpm_get_rx() assumes they're all the same length. Note2: The different commands also have different lengths tx buffers, but before switching the code to use the minimum possible length, some more testing would have to be done to ensure this works correctly in all situations. It seems wiser to just apply this fix here without additional logic changes for now. Fixes: a88927b534ba ("firmware: add Exynos ACPM protocol driver") Signed-off-by: André Draszik --- issue is in linux-next only afaics at this stage, as driver is not merged into Linus' tree yet --- drivers/firmware/samsung/exynos-acpm-pmic.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/firmware/samsung/exynos-acpm-pmic.c b/drivers/firmware/samsung/exynos-acpm-pmic.c index 85e90d236da21ed76f7adba59caec165138ad313..39b33a356ebd240506b6390163229a70a2d1fe68 100644 --- a/drivers/firmware/samsung/exynos-acpm-pmic.c +++ b/drivers/firmware/samsung/exynos-acpm-pmic.c @@ -43,13 +43,13 @@ static inline u32 acpm_pmic_get_bulk(u32 data, unsigned int i) return (data >> (ACPM_PMIC_BULK_SHIFT * i)) & ACPM_PMIC_BULK_MASK; } -static void acpm_pmic_set_xfer(struct acpm_xfer *xfer, u32 *cmd, +static void acpm_pmic_set_xfer(struct acpm_xfer *xfer, u32 *cmd, size_t cmdlen, unsigned int acpm_chan_id) { xfer->txd = cmd; xfer->rxd = cmd; - xfer->txlen = sizeof(cmd); - xfer->rxlen = sizeof(cmd); + xfer->txlen = cmdlen; + xfer->rxlen = cmdlen; xfer->acpm_chan_id = acpm_chan_id; } @@ -71,7 +71,7 @@ int acpm_pmic_read_reg(const struct acpm_handle *handle, int ret; acpm_pmic_init_read_cmd(cmd, type, reg, chan); - acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id); + acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id); ret = acpm_do_xfer(handle, &xfer); if (ret) @@ -104,7 +104,7 @@ int acpm_pmic_bulk_read(const struct acpm_handle *handle, return -EINVAL; acpm_pmic_init_bulk_read_cmd(cmd, type, reg, chan, count); - acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id); + acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id); ret = acpm_do_xfer(handle, &xfer); if (ret) @@ -144,7 +144,7 @@ int acpm_pmic_write_reg(const struct acpm_handle *handle, int ret; acpm_pmic_init_write_cmd(cmd, type, reg, chan, value); - acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id); + acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id); ret = acpm_do_xfer(handle, &xfer); if (ret) @@ -184,7 +184,7 @@ int acpm_pmic_bulk_write(const struct acpm_handle *handle, return -EINVAL; acpm_pmic_init_bulk_write_cmd(cmd, type, reg, chan, count, buf); - acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id); + acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id); ret = acpm_do_xfer(handle, &xfer); if (ret) @@ -214,7 +214,7 @@ int acpm_pmic_update_reg(const struct acpm_handle *handle, int ret; acpm_pmic_init_update_cmd(cmd, type, reg, chan, value, mask); - acpm_pmic_set_xfer(&xfer, cmd, acpm_chan_id); + acpm_pmic_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id); ret = acpm_do_xfer(handle, &xfer); if (ret) From patchwork Fri Mar 14 16:40:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 873737 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (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 63B0F2036F3 for ; Fri, 14 Mar 2025 16:40:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741970408; cv=none; b=H3qYMU2D8PYsFkZOvfi9TNkjc+lRSnGvcnMf3SxLOfYWjyV7rSaTYuePK/k9nP/O5+HktwK68iWB2LVDypYmaXZu2n1jtVBBQngGCXtRAP2uWLZkQJFA1NCu569PUWgRSqKN3kRuHD9h58PPH32WltiDd8rCAU64aCLCQpub1iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741970408; c=relaxed/simple; bh=W7OrtNale60JOsrxsaBAlHsDJ4WH3rrsx+Tnb7U2MME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gTTDazBG7KlkMfDOgf9udPa4oKk+HL2ypiG1T0l7ydTLpuR1wOFN83PRD4Y5J5MDP82HsaE8FYkYEMbTqo/wmiIfjiA9kwZ5wQ98SVlY4nWfgZsjxbkquoj6Y9WDPR2IvQ4WD+I2wOc7syz/pN2gaeZi/PM0TFJEdm4YI6/pqwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=UND6oMNs; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="UND6oMNs" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5e686d39ba2so4594093a12.2 for ; Fri, 14 Mar 2025 09:40:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741970404; x=1742575204; darn=vger.kernel.org; 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=FqlKsxagPbT76Z6CLNAsMWFx/025f7qb7NuOScguaQY=; b=UND6oMNsPyx969ds3VEUYTRVcHo0xohPWHSOWKyD0LAMM1xJO+h777IilgNxOefsWl qkiPetbmfP3YUrr6nfVezMjIweY97GHkrvNUjLFNPujSx2ucXeOiuhZ3HU9sn+pSWpsf R0Ji6fu0WvFFTg0GCx1hY1Dws3CsaJDSEGw/KZvHDZ/BZMrfL06iDH+BTn9YpCjKdekG 866WO/Oo+iMhfYzlyxv3kRA6uq+J7OAYd90WkBqwUESSMtvf0yjxBJeCvRnwFz5JeUUc uyfntCkdEiFIw0RR0fc7cKpnqcaUjXT5dnveLaT10OeG3W4oA51I8N7L1445pq4QvBeW cUwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741970404; x=1742575204; 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=FqlKsxagPbT76Z6CLNAsMWFx/025f7qb7NuOScguaQY=; b=dXSIWiWBlvhsuRCRBPKv7lDfbYxvziVPm3cWFZdDuP6Mk276c5Zw6Us9EPyitrkiKj 2qX8+8XUGsY3i5okwHK+7vXgbfYvWkZE0oIzr5rEWcbboEMseKxAPafqIg6ePjK5jHEf Pwf9qswYOkr5sGZ7GvdW4lhwGrfdgGvHnXe7WX9SmAVeaHjjl6Y3BWFaLqYEKdAxZ0uZ UnREwdPLC9xqHSP//w/3/xTo2Vadz5WNR9E0mnCOF2Xzx8KnoBpkpSSW7kUWiDY2Jb0I wkwTC2yRmOALhd3r0/6avvaZx8M18sPnqTFDbUYgtySz3Yv7Tn20k2kvbf6Bm7IUvuKD 7GRQ== X-Forwarded-Encrypted: i=1; AJvYcCVLzWaYNCtmnq3zdoLWmn9jjw59afq1pM4M9KC2iSuwy2KkWaGVWh7lpDO5+f6+k0AOu2rKjygKcr5Y+aVE1ad76A==@vger.kernel.org X-Gm-Message-State: AOJu0Yy+996oA6EkdgDUBB5eIMRMcJJ6mX1/Vo5PCbozSB7x4QchTySw bGWQgNn48Al5kDCVfwGR/ad/NnED/HZhIH9vZPxu4IzsTXrX1E8FML7PQeeJeXE= X-Gm-Gg: ASbGncsh7iOh6BK1reV10JgmBiPLq4xNbIu1lzVzxg0re0ys5rlRuRLMOROxBpVKZEe M+w2hBqCrTM7vrpACAF6c6zYG5MMpzTXnfcUHkSKEj9XKBDm7Gd4rc2g+uclYli0fcKLUBKveAm w2m2x2GQlcmoq/qZAFE2zJGXwSa8lNrKxx5m7Gfm975vLdtFlVH4vcr7cAy7FPZSRSA5dSCA5BV YFV33ZGrMaP5kKmtnsebswSEPUI7ZHpjdDx8nUOc9wiixwxTAftrS8oPmVVuS+hz3hUyZqM4By7 a2vRoEaVe28N8kH6Gz60zAXmq3zaeCp/6esYN32Bb+XG5h7LF1KZzONodLyoL4zE3BHJcgawK1l l0fE0bSj0OAb3es93LB2zQBf+UeAW X-Google-Smtp-Source: AGHT+IHLsxwF/DHZEPhOyEzlgmcKjsoUUujUnQwnbW8+qgc574E5shkDM/HanOkkYGXBGqTnr36IXw== X-Received: by 2002:a05:6402:254d:b0:5e6:267c:a6bd with SMTP id 4fb4d7f45d1cf-5e8a051fdf9mr4301988a12.28.1741970404463; Fri, 14 Mar 2025 09:40:04 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e816968cd8sm2115727a12.18.2025.03.14.09.40.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 09:40:04 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 14 Mar 2025 16:40:03 +0000 Subject: [PATCH 3/3] firmware: exynos-acpm: convert to dev_err_probe() in client API Precedence: bulk X-Mailing-List: linux-samsung-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250314-acpm-fixes-v1-3-ab03ca8e723f@linaro.org> References: <20250314-acpm-fixes-v1-0-ab03ca8e723f@linaro.org> In-Reply-To: <20250314-acpm-fixes-v1-0-ab03ca8e723f@linaro.org> To: Tudor Ambarus , Krzysztof Kozlowski , Alim Akhtar Cc: Peter Griffin , Will McVicker , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski , =?utf-8?q?Andr=C3=A9?= =?utf-8?q?_Draszik?= X-Mailer: b4 0.14.2 dev_err_probe() exists to simplify code and unify error messages by using its message template. Convert the remaining dev_err() in acpm_get_by_phandle() to dev_err_probe(). Signed-off-by: André Draszik --- drivers/firmware/samsung/exynos-acpm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/samsung/exynos-acpm.c index 48f1e3cacaa709ae703115169df138b659ddae44..03f907a95c6acd66d89cd8af2f52e7c6dadf492a 100644 --- a/drivers/firmware/samsung/exynos-acpm.c +++ b/drivers/firmware/samsung/exynos-acpm.c @@ -701,12 +701,14 @@ static const struct acpm_handle *acpm_get_by_phandle(struct device *dev, link = device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_SUPPLIER); if (!link) { - dev_err(&pdev->dev, - "Failed to create device link to consumer %s.\n", - dev_name(dev)); + int ret = -EINVAL; + + dev_err_probe(&pdev->dev, ret, + "Failed to create device link to consumer %s.\n", + dev_name(dev)); platform_device_put(pdev); module_put(pdev->dev.driver->owner); - return ERR_PTR(-EINVAL); + return ERR_PTR(ret); } return &acpm->handle;