From nobody Fri Dec 19 12:14:11 2025 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (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 2D0A02253F7 for ; Mon, 17 Feb 2025 16:33:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810010; cv=none; b=epbteawba+YbO1voj6uN6CyMCLlGBiFESYiBN/qcm6uHQlsA5/fodvkIGQzsvBlqvjlpoIIubFh6gb995keMz0EoXcffFaLmz8A3+3TNphvR+tMSjTkMRjN99ySiWrWt7P067wpE+X9cNjD6jsbA1TDZPbIiIGzeVpMfssbzrnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810010; c=relaxed/simple; bh=zhDVJvHjB5Lzuhnk6MLMvE1kAvmruLGrFv1o/of7giQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aaHT0dWfeFNtf5qZWg57dq7Ik+7Zk74ijOFyurZ3uxJ6zZE4rsYP/t+AviIEoxFILFrbQ6+ryQd8eg6FsnPppdrCz1wz9+3HeTtABVcA/SvHS9HsHVlZnV1ysm/mj3Cf3I/K9F7pjf6XAih2qVftCBbUEx8z21Pav/XnDHJcQGo= 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=iiDU8xY1; arc=none smtp.client-ip=209.85.208.173 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="iiDU8xY1" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-30a29f4bd43so14257611fa.0 for ; Mon, 17 Feb 2025 08:33:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739810006; x=1740414806; 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=zTk1JOhDFyU+6z9JRqVi4gh1NwvHjNu6gaxKn+V6LLc=; b=iiDU8xY1FgsqeFI4W+dqes3xnGgFaLSElW4iip+R97pYPVNyT8TqJnaM+qtti0W1CB VZBWVlsHP9LyVoB3HKajjMycFoBNhJ//aaA5hWBdx37fWd+rz4mzkNoihLVZSbncCzqf EAf6meAlL0VmK7+3eCZGQqubQX1mshHKFGSrILMnhb0EDsWFLq615PFZEDZtxQQCoTjc QCKN6tpBDgi7wWIxwjjalpTq89kHRIn8H9kmBTRmSTQpSckLiQ6jxiKA7u+lyi5ULca4 e2ZmPjciRd85Ebix68cDY7fRO9BHPqNFjyoG5KbpwcLexoydfyGXmtwaq77B6D22bzGJ /AUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810006; x=1740414806; 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=zTk1JOhDFyU+6z9JRqVi4gh1NwvHjNu6gaxKn+V6LLc=; b=q01MQ0CnQq4SRONjiSpwKs76Zn0MLCUFhSFERWyrGKN+6urQ09RtsvQxmfgXI+rgPv dGmV8TLFdVlaPeePeHMFrQh1wq1xscOABSAmC87v3EEQC6HTx9KLlF2ELKLjIa6jUxWC jKBQjwrxadt1HdUfSeIf7nXZhBn0CLG8k1Nj002xAhSc2+rKpFIJ8PceKCPsZ0xTUZ0n 6hm+t5RX59EzBPdYJFYEClBVrRVHPwWbw7wEaN6HL2Gy6B1Xg8KA3ywUrtQl0AeWZ2jR GSKuHAc18Uq6yTltOnEO9E0nTgygvyaSdIalttPX8It4d3XEXTDWioS7KQG0t5g0VJDw CKTQ== X-Forwarded-Encrypted: i=1; AJvYcCX5phHyWBGcgQUSGD+B5usj21gf81R/oZ2hCs0ATkLtKH7ECBbMzimpJUbnhoHDPqY0jPboc85CFbr8V+4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5wttq9z9XYc22P+Zoco5ng5PT1CQMddJlkjkKCt1M7UXmdzh3 6QOcHJhrppe3vdTAfnNtXrQSARGhnrlJ6DXcSiqELkzEVCShf8A0dCsanA8qvd0= X-Gm-Gg: ASbGncszPPEzj2M23eS/fAQXU309GMIvpddcfQGa3xy35v5rv1oysyObdQ+NzBjqrYs 2bSGZnLNIESzhzMNc6D/4KpEhpB2GMoOV2XGjd0bZpwrZFeTZ7wt5vkwMNWcVYCSnruHLgLrAvf Z96xIfHRg5G0A/xNFk6Uf7K6EaRNQZDF16YLoE8yUpuH/sHQN3XM6dX1+kWrD4zHzor8nwRZEMp xbgQg2CI3IqHAuSjB4mYaQZl6zsiJAktBTLxnmGaAz2tTWH49scuzv8XwCNRLflIC2/WOvRwRut ZcL8nGRIwGatHNu0+dMylgnNBe+E/L5H8sVrr0oVploKKU0Fek2D3U04ngc= X-Google-Smtp-Source: AGHT+IGzI4BEq8iQ8ebMwalu59c1aO+y/rKFu+C3kD7LqJ5UE6HVzDUxUsXxpYOyGfa6H+jPNWIXDQ== X-Received: by 2002:a2e:9ad6:0:b0:308:e9ae:b5b3 with SMTP id 38308e7fff4ca-30927a2de98mr27830941fa.1.1739810006210; Mon, 17 Feb 2025 08:33:26 -0800 (PST) Received: from [127.0.1.1] (2001-14ba-a0c3-3a00--782.rev.dnainternet.fi. [2001:14ba:a0c3:3a00::782]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30a2cef18d1sm5695991fa.76.2025.02.17.08.33.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:33:25 -0800 (PST) From: Dmitry Baryshkov Date: Mon, 17 Feb 2025 18:33:18 +0200 Subject: [PATCH v5 1/5] dt-bindings: nvmem: fixed-cell: increase bits start value to 31 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250217-sar2130p-nvmem-v5-1-2f01049d1eea@linaro.org> References: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> In-Reply-To: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Akhil P Oommen , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1110; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=zhDVJvHjB5Lzuhnk6MLMvE1kAvmruLGrFv1o/of7giQ=; b=owEBbQKS/ZANAwAKARTbcu2+gGW4AcsmYgBns2TQfC4FtXqBdUxy1mAiGozMMqn5scy5wXUU8 MOU6EDgxoCJAjMEAAEKAB0WIQRdB85SOKWMgfgVe+4U23LtvoBluAUCZ7Nk0AAKCRAU23LtvoBl uF0iEACudRVZ6tx6aH1ir2ml/AYJM9XCw5Qet5H7mXsmcis7xR2iVsfGOH6VGoOLbnSDAKUp/3P 39wzkVXSptHiyxFHWaFqNKKJ0yjdWeh7DnPsI72+kmg8pTYKKuqzTpz2YdgbAPJhUHirHX9G9Be 3UafGfWFiyPIH1wLiWaGfcY2n86VyHBwHx7WZb7+bvnBFLN6BeoKsmhqD5AMFDA0zbNaoPOXX2/ T1PskCjspTRWUBp6ZjU44coFzodswxmoT8wOgXLe0Kbfj2pYMm6UMqNJ6vIEqcceFD2GbWOMruX rA2Bb0xr9cC1YIYWl1r8kFXI/2dmnDoA9GrKjHvwj//Vxc13+hjorWayBRroLbF4J8kDakUlOHY EI8ZbUdQteaI2XLUX80dyDlaaTe5rNfWUx4F3iE4/sgeHBKXrt+e0IObiuffg62+7rgi9UwBP1F KWrjvv4zBYHElX2ZxAEUBP8v+SVPCn4ExYila5NNxalA+Cbsr7tpTIBjgSeFSCBZ+orRNYp7V/L rvyIaJwqWBws7+5euGB1yT+Nl7oSSsXLRUl0cMNLFAvTvEyTkAc0I8zJ8fHFvvX2rW/qu47v45X 7DnMMHbC7tGw3LiuEOzeTzwAW5oHZKGV7vHxFKFJ1bHNnngKEhnb/bSvYLIkHkTz5WDj5EKWqlN LJapm1xwV8ebRew== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A If NVMEM uses a data stride bigger than a byte, the starting bit of the cell might be bigger than a byte (e.g. if the data comes in the second byte of the 4-byte word). Allow the staring bit to be 8 or greater to reflect such usecases. Signed-off-by: Dmitry Baryshkov --- Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yam= l b/Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yaml index 8b3826243dddfcf9c9bea531541c55d3fc04a3bf..38e3ad50ff4fb6200023f22b4c7= 0c506349142df 100644 --- a/Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yaml +++ b/Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yaml @@ -27,7 +27,7 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32-array items: - minimum: 0 - maximum: 7 + maximum: 31 description: Offset in bit within the address range specified by reg. - minimum: 1 --=20 2.39.5 From nobody Fri Dec 19 12:14:11 2025 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.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 D1818225A20 for ; Mon, 17 Feb 2025 16:33:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810012; cv=none; b=aezIdk4JANYF7rN0K2bNZalWfhPyXcASMFGbh2A1B60S/MlCvFmLNTAr6E5iaCV4eYIv4wXZNLCj1y9NUHCLrJsLBe5nWgSqXzLqWow2qthasthGVk22UczZegwu3IhvCHZAvcVN5YClYF6FqPWSk9Lm96yDs6Ew5DEj94hX07Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810012; c=relaxed/simple; bh=1bE1H788nkndn5WpT67KXk3syh82LSTU83DzpaERA9g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xe+nMvYKRuLAQ0WZhrUiveVfyjWsMR5Dg0JQEu4ja+nwbuoUA5e6Q15VbpHpWO5ZtNKmufnM+t2+m2q3gRWv7seWh5W0u8TD5y3XC6awhrJDvkQXDtD0ObN9/CCgO5HtBTSzTjwStOjkB7yTrus2gC4uJTnY8wxf0gzVuEojwRA= 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=QslRI5Ho; arc=none smtp.client-ip=209.85.167.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="QslRI5Ho" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-54529eeb38aso3300411e87.2 for ; Mon, 17 Feb 2025 08:33:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739810008; x=1740414808; 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=xqfY5O4DAa35IC0/x8APktybht+SrgKAkJthvFS6Lv4=; b=QslRI5HoHPHFkzA1x7ba0bvQEc7Rob9wxBkwiuryfT4ZxutAQ1kcz3gUGtlxnS9otw pFBojZeywbj3H8NZm/s7tNKWSF+Xt42r8RXDzP9Bu0yjOCb16Bn1DZl6zx6Nw0m5c3RH bADbzegG/bALVYIuo0Z7/7ZapJWyDL7Op/Uve4/VXaM0MTdGwimqEEa6R0pHPHlgKti9 gFR1EY+nMRoJH7oYDwT1LpsOGgC+7DaiVQjM5NOqCMHoXUeBdY1mgxVNtgypf2EE7V+a OmotBfyAa9xXqQXryM9K6Aato8V83TK/toWFPHSTroTLsYnukMEYCmFMQ/1pP38B6N4U zGeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810008; x=1740414808; 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=xqfY5O4DAa35IC0/x8APktybht+SrgKAkJthvFS6Lv4=; b=wtx/e8Angkm8EhgkOY2bf90czUd9VT8A1+0CipiaV64IuCo6f3A7L7bKiqlzIRRUMf UoLi/R9oWiuSIATnomKGnAahU7ZymulwXq3bLhfoVXEXkBI3DOX99qzOA/IeRIC5/kTX C+oCOWMyTROjef+aBSXhn2vs3U9ql9WHyg+PyfWOnnwpWSS+l0saewDEq+jCc/9n5tqM rY0+MsIOZgpUpE9bB7ghVxgkzwxfIkSC+DDyxBpbPg0FoThtcIlFdHkBEeaoipw9VV0Y owlwLpotzeoWk9EMwdkeAHUJgwdfXpj+C+HPSWKQ9EnU8bPB3SR3VcFRnkkk9INmzaco L46g== X-Forwarded-Encrypted: i=1; AJvYcCUlgjyCCDW5K4SmPkRJSi9RpHY5aZ1YnVDo6GPxLJPzOVzNCoy/n2yaz+2Vljv08Sn3fHvt2BF+7uncXsg=@vger.kernel.org X-Gm-Message-State: AOJu0Yzb4Uz2WodVhXzPB0AZ1MiQkZMyzvQE3Bbag4DRvHzU6dUkYmaR MHJKxrkAuZiF9jwhMUrcXRiXZfNh6NnXXwrnVJNVXKBOvwN4d5XzJafDBtY9Ztw= X-Gm-Gg: ASbGncsl55c1xos/1jhoUiRtkAcgv9KwVhhCJ2P831v/qJBpRGWyP7cNZ8PG3Y5U90v YxRWl9UshknL+eoyNAaq8zO3s6/r7BJtBu8LiuaZmHXRAy6lUxSWeFTkhhQsASofxmf5h4V9idT kM86mCRKrdHD+5UjbNP7P/gRfud8jbt8xOeWxe1uCbMPiAT/NIb8u8SLL58eOm14megTTBO3bSk /gZnyhNXtyIeYzJIXscodOu1W/J5OmvD8Exi28xO67kCu9+yuwErSLsmxX5pSKW30ILKdlDKAzq 2Xd6UMnzqLSqpre16Go2zKLo9/Xxo7Tdi4FWsUclIqbtpKGAlxHKOii2Qeg= X-Google-Smtp-Source: AGHT+IGvyKTEtQYqLlzIkwF+KPWXzOWc1uhtIoRf0rAuPnLTDLg8j9JwQOoNLX/NFdBWeLf6hYNn4Q== X-Received: by 2002:a05:6512:6ce:b0:540:3561:969d with SMTP id 2adb3069b0e04-5452fe8f8b0mr3703568e87.49.1739810007704; Mon, 17 Feb 2025 08:33:27 -0800 (PST) Received: from [127.0.1.1] (2001-14ba-a0c3-3a00--782.rev.dnainternet.fi. [2001:14ba:a0c3:3a00::782]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30a2cef18d1sm5695991fa.76.2025.02.17.08.33.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:33:27 -0800 (PST) From: Dmitry Baryshkov Date: Mon, 17 Feb 2025 18:33:19 +0200 Subject: [PATCH v5 2/5] nvmem: core: fix bit offsets of more than one byte Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250217-sar2130p-nvmem-v5-2-2f01049d1eea@linaro.org> References: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> In-Reply-To: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Akhil P Oommen , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2178; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=1bE1H788nkndn5WpT67KXk3syh82LSTU83DzpaERA9g=; b=owEBbQKS/ZANAwAKARTbcu2+gGW4AcsmYgBns2TQDQ74eoBJ0Ob47kSFE87N3HMHSFSlm31GV LXj2Ym1GsmJAjMEAAEKAB0WIQRdB85SOKWMgfgVe+4U23LtvoBluAUCZ7Nk0AAKCRAU23LtvoBl uA5oEAC+rBH1y65jn+MdJB9Wr8vIjiEhX90bpsuoUJainU8PP0FH78HJv+4/EhA4JXs+iTeNqqe dwUwHtGFEIOirfOlJp+Gw7yV3gGkHvuFCtT8VqhKU2zZOQ6kb2gWe0gUp7wA+nPGkOup64e2uxt N7O9tS1xvr1HyRmeCKGcacm1ddcSlkSEgSlWBgbF7G81cedftPpWazLUla4fULGybklJyQa0sAA 0MJi8U9TrajgTelQy39D2MwSFLwmeXQlgDa2k6HUFBl5qwsc9RdfPMiZKW0dbn3pvT5QTlpPKlJ nOEYZcu2aNUpsAIh3UH7K7WhOmpsj0RtpjOjGGR/5B8/bLf9NMX+u9oIB5tuN02SKuOyV0eHia0 msnfqo5lfsG0JRBA/aY31W9suAUdkP0EOGYwvFJ0qvqQumZ+HksvCPECMwIhm2knnY0tLEQIGLj VYBfTA8O9gX5C3Q0atLaqwJpBj/01mYpaMeSmtan05yoYW60NZUCcRno43AjMaFNopaWyuHPmEY GDZed4u2teOSl03EayOXaUVtkopmVD0fo6JwBITW1PXOsNnaAiJGbJxzOYlVIE9XH3QFLO1+Pjb deAlE1Wk7jkniuN8s9GmGBdhP5LGznyo4u/Zk3f453HyxTDNUHYdYcOlT/zrT7P2qU74Xrf4mDb 9lZEJpVvzDPdxtw== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A If the NVMEM specifies a stride to access data, reading particular cell might require bit offset that is bigger than one byte. Rework NVMEM core code to support bit offsets of more than 8 bits. Signed-off-by: Dmitry Baryshkov --- drivers/nvmem/core.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index fff85bbf0ecd0f638e21f127370105d9f79c00d2..7872903c08a112f11618a5aa6a4= 2ba505106ef6d 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -837,7 +837,9 @@ static int nvmem_add_cells_from_dt(struct nvmem_device = *nvmem, struct device_nod if (addr && len =3D=3D (2 * sizeof(u32))) { info.bit_offset =3D be32_to_cpup(addr++); info.nbits =3D be32_to_cpup(addr); - if (info.bit_offset >=3D BITS_PER_BYTE || info.nbits < 1) { + if (info.bit_offset >=3D BITS_PER_BYTE * info.bytes || + info.nbits < 1 || + info.bit_offset + info.nbits > BITS_PER_BYTE * info.bytes) { dev_err(dev, "nvmem: invalid bits on %pOF\n", child); of_node_put(child); return -EINVAL; @@ -1630,21 +1632,29 @@ EXPORT_SYMBOL_GPL(nvmem_cell_put); static void nvmem_shift_read_buffer_in_place(struct nvmem_cell_entry *cell= , void *buf) { u8 *p, *b; - int i, extra, bit_offset =3D cell->bit_offset; + int i, extra, bytes_offset; + int bit_offset =3D cell->bit_offset; =20 p =3D b =3D buf; - if (bit_offset) { + + bytes_offset =3D bit_offset / BITS_PER_BYTE; + b +=3D bytes_offset; + bit_offset %=3D BITS_PER_BYTE; + + if (bit_offset % BITS_PER_BYTE) { /* First shift */ - *b++ >>=3D bit_offset; + *p =3D *b++ >> bit_offset; =20 /* setup rest of the bytes if any */ for (i =3D 1; i < cell->bytes; i++) { /* Get bits from next byte and shift them towards msb */ - *p |=3D *b << (BITS_PER_BYTE - bit_offset); + *p++ |=3D *b << (BITS_PER_BYTE - bit_offset); =20 - p =3D b; - *b++ >>=3D bit_offset; + *p =3D *b++ >> bit_offset; } + } else if (p !=3D b) { + memmove(p, b, cell->bytes - bytes_offset); + p +=3D cell->bytes - 1; } else { /* point to the msb */ p +=3D cell->bytes - 1; --=20 2.39.5 From nobody Fri Dec 19 12:14:11 2025 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (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 B3B7C224AFF for ; Mon, 17 Feb 2025 16:33:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810013; cv=none; b=pDl+zplHEVMRcsmLQsB1hrRyqjrCjt++BBCcl2hnNs5ca9XomnGi29poRxghdSDlN7ZI/EmVLIgYc4UwPRgkJhaOKamwx8Q75hToH2AMR3B6clLLmK3Yh0h2li5JQvw6auJQzdrhihBuHeuxrNJCKe1dWnc2tGASQ6Bv2IMELrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810013; c=relaxed/simple; bh=0XD7+/ryaoEOL2/PLVXesBusDcDdPYKow+QRoKKCGik=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hvansqkr1gV1feiV0VRBjNKZlX1auRZwMjAF/4YYhRv3bn9wJ4RE+1S9SvpbwomMUP51rA7uMpCCH7TRl/jb0WC7IDZyqFnNBiMcnHD7lt000vFKKtIgxje9BltSeMwpcVn2oEn/tdATgKi2oHmQSZcwhSoUO/+K587v2kKcNps= 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=S7h8Rr4K; arc=none smtp.client-ip=209.85.208.173 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="S7h8Rr4K" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-30227c56b11so47755391fa.3 for ; Mon, 17 Feb 2025 08:33:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739810010; x=1740414810; 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=pAy9TG0v6l4FLNJwlf0af/AH1u4t70IBVqQ4T8QxeEI=; b=S7h8Rr4KCShoDJYlJDhR3F1nXRzNINa5QLHEs0d7wbYbCif+iML9ORFigBc2n3TNNK 6JPZAyzenv5G0EVW8Z30yrMwcPFAdaazNU/UqDOkJ9O5dEeQ+m9gq10FyLNEXEIvDkx3 4NgtFECyIDUrAXdo6Aa8aw4wwms8VjZ9pl040N6TZum5fnZ8Q8cdE0O11BU9dGZjH1PD gIbhtRkjJTvxHqHtP0AGrIRRaABMeTSf+XnrWumhfeM4BFZ94gHpI5nFdkppn6yLPAw4 H23RIMJhmmnwVFXlwqt2XrF6HSGKmdjNaarsVqPDT+CtUZoF+UEC0wQrYxH/KugtDCYj HJTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810010; x=1740414810; 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=pAy9TG0v6l4FLNJwlf0af/AH1u4t70IBVqQ4T8QxeEI=; b=hlx6nNb6duBRqUN2/W4HCGxV6q56iXSCg07BAjjzY/kP+vcdNiC4rk/1tiLIY1NOiq 3clq3ZTwtIB2yFFrs0FlrKMVZ9xkUmMHlDvu71DpcwJEoxOjG4czVjwKh+AIc5COymyE yidBSmrkBqOcxLS1+srkllukak1+46P51s2LbsVdtYiy0NGdaiPTlcXWpi8kFAGPdqc2 2vRbdG/pD00N7MoGc2hx8SDOP8P2GR+N3Wx1g4OriBNd/242R7oG3GslYQlNBVxxT4Q6 TjGnd5qaRlhCI/ZqF/MOw8K28uTuzx+/iakN75tWvNP+DyKV1Sgmwj/E36UFhDc6qOxI fdsQ== X-Forwarded-Encrypted: i=1; AJvYcCXBXvzXGX95V+KP3kedXJ2XZ2NnMDcQtpwX66c8gHE6+eWuhoKL9/boNUe40EaZAHI5VhPQuIRdSw0GqdU=@vger.kernel.org X-Gm-Message-State: AOJu0YxBuv3GNKQ+xJvFKpnX1PevQf1YGZsxbxoTLQrzXnHRD+LySYQJ Da1OqQBthLzjaGyH4LZ/o2ZK7vQxnNhICtBcYYtBQ045zoGLsVyvYRESbcq8WJg= X-Gm-Gg: ASbGnctsj2PWRtguPDxEEV5Iyss2brZP/VapC1HcC3TAvHBTONKRzvygyS0B9jYBjYD UE8BbBtC9jKvnN3xvQtwHccymDzqgwcCbchfaZce9iLe8XY0DGkGciwgpJ0yEGRtDj4x0VLVj35 rmMqc/Cj1DPQF0hKpJcFBB847N615Uyg3jnoIRft2BN8HhRoiyJ0NFjF51AYpAHooOI1a7XLDNq zmWWNWKTnrkBHLWW4gLzag+y7U3R5TKO28l0FXkVbEIcgz5UOU5O1VqrqsAbQEOt7nh+JRxU2Ta rUQlVG2lNHYUgGzoklDNHZb96eLbthAhYktPsbGyM93kCBWemDA+imOfHDM= X-Google-Smtp-Source: AGHT+IHiq9PuuJ+NOS7eZn9UJDLiKjkTzwyRcaP3eSMUdPRvN1Clv7YRbUIctRiOnPscrcaGuXmWww== X-Received: by 2002:a2e:b60e:0:b0:308:efa4:d27f with SMTP id 38308e7fff4ca-30927a3a080mr25850881fa.2.1739810010064; Mon, 17 Feb 2025 08:33:30 -0800 (PST) Received: from [127.0.1.1] (2001-14ba-a0c3-3a00--782.rev.dnainternet.fi. [2001:14ba:a0c3:3a00::782]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30a2cef18d1sm5695991fa.76.2025.02.17.08.33.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:33:28 -0800 (PST) From: Dmitry Baryshkov Date: Mon, 17 Feb 2025 18:33:20 +0200 Subject: [PATCH v5 3/5] nvmem: core: verify cell's raw_len Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250217-sar2130p-nvmem-v5-3-2f01049d1eea@linaro.org> References: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> In-Reply-To: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Akhil P Oommen , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=930; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=0XD7+/ryaoEOL2/PLVXesBusDcDdPYKow+QRoKKCGik=; b=owEBbQKS/ZANAwAKARTbcu2+gGW4AcsmYgBns2TROqWI2Cy8bx4H2e4ziVOKG+oW/OdquTDiZ PW4OdMlSKuJAjMEAAEKAB0WIQRdB85SOKWMgfgVe+4U23LtvoBluAUCZ7Nk0QAKCRAU23LtvoBl uDpeEAC2iiHzZ7+R1fTC8f7h/AOTDlSKIYeW4mWCYZePBY2i7nJreBcYXKXgxs3EKwNd1lVsVvS wx70lZJEwfNPHunMDgNMBIls1y8CAuPWr1KIvMK3xO7BGl0G054va9THDA+G3FoomIuOL3PRclE fltAE/MMV4+JRQ9JK/NAcaPlb/ccuFVaogdzyGImA7qTKeNnaxdmj0rEr2Q6J1kz+ffxoL489m3 K+4Xj4e8pFBkFsC1C7WXFygIvRn8Hkr3EatMOMVRZjdUDDwjvshw8dGJRJQUR5ypMROK76hTV6T 66jMV6caQKTpt9maegcnarhMAHxtyZnT8HrspjL0k8JVHV6E50csxeNH9WFEdz5iXsOE8WiRYZP 4dOWl7hOrgdhwgjCo/Lfs439nCBSol1TAO4BWB34K+Z+9Y0BntEAoDcbzdWIwd7nvvqFVKX9kmM lhFZ9WjmyuheiMHXyACqw6WURDUCMh+ETUGEUO7swuq4eW5HFqMaCE/Uxeqygzm4p///fTN03oL 2wCNFPGYBP/keIHyvrZHsH83fUaPQrQSiiQ2QPNv4jdQT3EJz46Ld+xm3addQPl94+UGbrDlX63 eE6GjbSb0gfBA/S9LEBFCEeNTZJjle3raCd+YavOTf1Rmkg3+y6QvuuMBGS/QQbkEVgUb59YMxM CfuJDc8N1FHGqMw== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A Check that the NVMEM cell's raw_len is a aligned to word_size. Otherwise Otherwise drivers might face incomplete read while accessing the last part of the NVMEM cell. Signed-off-by: Dmitry Baryshkov --- drivers/nvmem/core.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 7872903c08a112f11618a5aa6a42ba505106ef6d..ad9b716e8123537fb5fcef724a6= 84e6db3c1de8e 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -605,6 +605,14 @@ static int nvmem_cell_info_to_nvmem_cell_entry_nodup(s= truct nvmem_device *nvmem, return -EINVAL; } =20 + if (!IS_ALIGNED(cell->raw_len, nvmem->word_size)) { + dev_err(&nvmem->dev, + "cell %s raw len %zd unaligned to nvmem word size %d\n", + cell->name ?: "", cell->raw_len, + nvmem->word_size); + return -EINVAL; + } + return 0; } =20 --=20 2.39.5 From nobody Fri Dec 19 12:14:11 2025 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8659D1531DC for ; Mon, 17 Feb 2025 16:33:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810022; cv=none; b=YJ0GgYOVQvBXJocKlED+/0W5iCsdVL1q+n8xBDdlVC2CKrfdhCPSb+/oFDpaGDzmjgf3GXOAVkFljmnGwfewal0o93eARFlaoOLSv4di/5ww5cLr9thoLigk6FmQcTaJaZ8Rl634oobBlTMKajunJ/WKECNcytbAlGu7lbRXUYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810022; c=relaxed/simple; bh=MOFMpyIIla6kcWU4sBn71wT1zgg+fBI5dj5FKc/I1/4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dG9b5/W4l38NsZ4FuY/TEbUjMF1JxHuNirG3xatZd6KqLCN3poGIqDymbGKU5opOMwwOqFsDrCvleaAfJ+lOw2h2PD0G4zrlA97IzPACsdHY12775KdYUO6aDU9zcZPEL6yFGUTahO14d6nRtwUabqXzta8SwTxZWl8zO6VhU34= 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=YmprIQuS; arc=none smtp.client-ip=209.85.208.171 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="YmprIQuS" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-30918c29da2so35702871fa.0 for ; Mon, 17 Feb 2025 08:33:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739810019; x=1740414819; 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=kEQXbQX6osNEgwYD9EicH6/Mssg7LMg+ZTYyPxgpyYU=; b=YmprIQuSfmYQvy62uhUyzBjhwq/x+JeHk4QaB5Mn100FO4uerHBxPfeAWI2ARKJBsC strufSV1K+79je/5y3rqrtVaWZKnfrEKKEr4rOMT5H2gFTgpt0vOui+YL71MR5AxZqB+ hsb30ckb9Kz16rteSm1/go3VXviahRX0SPZov+BVKK9TWfAMXQflVK77wdWchV0/Ud33 FjSJ4ejl1pcTflH+inoTRq16H0dki+ChOs+nrZIWfYUQOi/a9Lwu4NjBLsXJzZhcLl/5 55eUepaF9wRhSSJGE3iGIkUehli1vx17caK9UdUVFRSyNRe49gDCbmWmGbPqpuTp+t8s 9Dyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810019; x=1740414819; 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=kEQXbQX6osNEgwYD9EicH6/Mssg7LMg+ZTYyPxgpyYU=; b=pyLeiQgyaX/xxFvaJDS/8RlJRMQoJWwdbyQrdXkbsq+F9sX5bOnJm1R4MX4bUT5Wng lrfNtVkxQr72hjkvQGL8du5A4DnF8vCtkQ1+qpvbHuszZDmrpirFGtWLDN66UOTZYMtH 24H1hZzR/gIlNl/ObmaiqyoDhXbM7Ja90UyINWorb5Q0Q+8NG6MDZdcaiCvAh20xnvAB 6kcBhFMV06OlALAzxkPpnBNPwPHmJzoGWDZgAM7RelT+7LOZ060MdvXWOEYyOj2gg49X 5HMukSyRuYo3Q5OtNUW87mIQNSIdchjOaVk6D6aANkaP/iy9LlDjXMKxVMG+Bs1LX+Y2 EkHg== X-Forwarded-Encrypted: i=1; AJvYcCXKH83VvP3Ev93mdO7eKG548RtsjFve5WZT5KFKBT3MaE0V/xQhyKxLif4lbE+L4d8uuYnSG3wt+VMvb/Y=@vger.kernel.org X-Gm-Message-State: AOJu0YyaalXDWYTV/G0XoDyyxkgaPoLAvwvg4Crs4Zd1XLXEWN7ydYPv wOp+N9EiHMVXG1N/LlA8guGU+ZttMYSqs3mqNZMQb3mnGWOCW/z5+yW+iGnYEGM= X-Gm-Gg: ASbGncse/qsCxAjVw0tT1saEcYXfUODEQak6jyo5PSDUD/v4R+3GrHqIgpd0VVXYeGm 48KTpLNx77/WABc2Io5c304Qbz3Al4btDjYyBSKLxmHKq7L63siCaN/5Wc8WUWcnSdKrbH5+Qzz cnkNc91uelJH+9xpY2DfRH4ujVLRgfmxDc5nOMbx846UGBD5N+dVkV68fjXGbvSgJRd/1tNGJBm DXQFqzeUVN9/ORF3SQqlvx838UsgHsyYD4guw5qQc7Ku+EbgnPDz1F6NZFZZUoUPqe6MJczK/cd x8vj+GSuzHrSHGoMrH/1OBG7ZkY7mFORLzb14e/HYb6/uspsRCLt29m89Dc= X-Google-Smtp-Source: AGHT+IHjQA/NzRILMMzlk+y3sSbn+JaPpaVa4aNPG3LAUfe/Dz90G0frgA8Ua4KuSchQq/KSOSbRlg== X-Received: by 2002:a2e:b608:0:b0:309:1ec5:fcbe with SMTP id 38308e7fff4ca-30927a704b4mr30801911fa.22.1739810012362; Mon, 17 Feb 2025 08:33:32 -0800 (PST) Received: from [127.0.1.1] (2001-14ba-a0c3-3a00--782.rev.dnainternet.fi. [2001:14ba:a0c3:3a00::782]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30a2cef18d1sm5695991fa.76.2025.02.17.08.33.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:33:31 -0800 (PST) From: Dmitry Baryshkov Date: Mon, 17 Feb 2025 18:33:21 +0200 Subject: [PATCH v5 4/5] nvmem: core: update raw_len if the bit reading is required Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250217-sar2130p-nvmem-v5-4-2f01049d1eea@linaro.org> References: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> In-Reply-To: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Akhil P Oommen , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=988; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=MOFMpyIIla6kcWU4sBn71wT1zgg+fBI5dj5FKc/I1/4=; b=owEBbQKS/ZANAwAKARTbcu2+gGW4AcsmYgBns2TRvppiN62qcS+vSPo2KVQ6Rpm0nglgR9wyS +QRblUbotyJAjMEAAEKAB0WIQRdB85SOKWMgfgVe+4U23LtvoBluAUCZ7Nk0QAKCRAU23LtvoBl uAA0EAC8YtN615UyWbdr/bLDmW6iTKU2h7QvjDshKnKd7+6bK7RBt6hLoYMVq6n7dda1CVYZhCN 0sBuNEMcyecjNQEttanIqLWTNU/TVMf7v961zhayTEckt7ZirFdewsDXsUIrepug/P3QkFdfI/U 0yavyX4HsW+yazaPWIhwRZvisdGGEGFS0oINdfvT9WjJoqqGFcYhIQKFey+fmbi0z5Q/nSwz0UD It52TwaLDKlAnXykCuBodD2X46rrNuks53dpe7K24znmH5L3B8FuUbVCBkDVijXJPyLqPuT6M1u mOeslyGCV7UG+/uSyyXJRJ962trYh+7DIy+QSi5cMV0gu6i1lx6b2kZadrpE5z6/mPlfMJksUkV 1F33D3UlKMkqmqrHskzqPPmHoae/6BSZT8bdQiJZy5DtGpEJne5jeapaALuldIYisD78otwVgac qUAHMGoWKBaj8daJ+w/iVRBGUjVQ6/PWiKP8OZeJ4MMKnRV7xglbUWkj4sym+ZJeOV6EG3UvNa4 77ECpERsXrB7sIQrIXPjrGOXR4I98PRzG9KVpuXB77204/8d9GPB/Ue2obHCBUThEcdb4pTLcj1 0CvoDrCzVpSrZFBEVBj+zT3yoMWkqMrCC61zF7d3zR0BC98HK/HbF+LlnhHJNbqNIcQJUGU9ytP r+e40/zkWLURg4A== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A If NVMEM cell uses bit offset or specifies bit truncation, update raw_len manually (following the cell->bytes update), ensuring that the NVMEM access is still word-aligned. Signed-off-by: Dmitry Baryshkov --- drivers/nvmem/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index ad9b716e8123537fb5fcef724a684e6db3c1de8e..b6f8544fd9662cff0a04e292bb5= 36418564f0368 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -594,9 +594,11 @@ static int nvmem_cell_info_to_nvmem_cell_entry_nodup(s= truct nvmem_device *nvmem, cell->nbits =3D info->nbits; cell->np =3D info->np; =20 - if (cell->nbits) + if (cell->nbits) { cell->bytes =3D DIV_ROUND_UP(cell->nbits + cell->bit_offset, BITS_PER_BYTE); + cell->raw_len =3D ALIGN(cell->bytes, nvmem->word_size); + } =20 if (!IS_ALIGNED(cell->offset, nvmem->stride)) { dev_err(&nvmem->dev, --=20 2.39.5 From nobody Fri Dec 19 12:14:11 2025 Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) (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 CB68821D59D for ; Mon, 17 Feb 2025 16:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810023; cv=none; b=fd6AgDVLGrCgcf7QVHoSL7LOo1zo71i28xReuj49NTwqmdOVi7mAimWEQhs3iq/0H+fVcCWSI6GvQYanSNKC1+5o8R2fc6NWUzyUyegwAF42EnDXaWa+/CHWZxA+K4hsh2QCXXrm5hv/MzxrUtnTwJCIXPJlxzARtWe6X9Q+Ne8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810023; c=relaxed/simple; bh=Weli6Ud1pnhnVMQNhXbarzN29phyH4B6NUF7IDp6kk8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NSXYBMHfN6e96Z0K2wKbjw3f18+8rkDExyc+KT4elTjDPRRcAkXuWQVo8an50L5rG00yEatO2M546VpG904u86jPPGNKDGqrpRbUNFuRrfDfCQ9MTq2AR2JpNrWm76W/ZutW0V2rRrEU2auiZgwY3gU9RZOzNQMc4Z4YfY179jc= 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=oGaecDA4; arc=none smtp.client-ip=209.85.208.172 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="oGaecDA4" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-30737db1aa9so42963501fa.1 for ; Mon, 17 Feb 2025 08:33:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739810020; x=1740414820; 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=lOzuf/LkISp9KTJoorQzqPXBIv79BHB/w9fYq6gMhqs=; b=oGaecDA42/x9VyO56dlpj0BEff7MpruB4MAv+uQeci+Xlc7XCaz26XRGYj46R15OfJ EEpF6LodR6uC2YJ7e6MbMaiWDPuvH+HKG7n2rDvxqD0ei+A5CGPF1f8dChaaKR/UeDuZ nyefNvJJvwN/EkmYMJmvtaYMjo5Qe7cUfz4X12jC6OQ5VoAUuStKT7eIC9i42RZq+XLZ 0KwBAI+IuqzpNy31nW4dXNSJNazpFaiMY75NXw2sXP0/TqHP3U/FANT+S0yyalJVuyTE R+Dpb8yn31Pbp96awPHHFg8axLZMJmnYnIVnKiQJD29NnM5JhqaUMDF/6zAwnm8U7Is8 kYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739810020; x=1740414820; 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=lOzuf/LkISp9KTJoorQzqPXBIv79BHB/w9fYq6gMhqs=; b=LNJ/R1dLrU6XtD7s9UPUffCtmlhrhj0gXd9l0FczgniWPG4ZaCvsFa5pwNEo8b18VW Y+YRzYXwYzH5yAD7aoA+PWuuufn4wEy1eQ0prTrqLzSeg29pU6eu3FKeBVd/htkj0g40 OiKVqOCbrUF2heSERi4m3cdF3SL2ZfzKD6YbU+8efYvgyWqn3AfRV5ogEQRciufLzGn3 jOxHf2ZmGryGxHo2zYj/xJ6tawbKf9gwBZO3/XGmGyzi7NfqjN3qXjv7krjtFRYmd5nW Ec+U0VDsJA0W74mHwSTZnmDbg5rpw1aflJ3DXz/qBz8YqcSXxyMRCff+EAsE62WrvQ2n byIA== X-Forwarded-Encrypted: i=1; AJvYcCWwiMuTMCWQLS2I/BGngl1XXkvAkrL9iVOi9kSgEVRS48DeGVaTcgyuZBqCzrGToWMrefXyZMUIfc1SQ2I=@vger.kernel.org X-Gm-Message-State: AOJu0YzA704szwRPd6RAaOhSYP87VbOU2e2f+6DrzxWWJa0kqqt8JQJp AktgDTIkdaBEfTbVFs/tfnb2lVf0F9YFz4GFg/1bcsCOSQmFsmTj09XMZi8/h5y6YQUzEq5Ldfm N X-Gm-Gg: ASbGncsqIhF0kjo/X6o2+TjIu85+oBLFrOCFE0c40vWQMMtIVUhEQ2hWo7f5KLNChYk 93ffZ6W8KY8zCoNM7vP72Qm+H7Q0LD5BiCydNEGrveAAiaSc9oCm6S5Kyfi6brrlpJfsPUn9xMt /MbBQvEBWO4OTdf523IVWC13ZhcBnCGrxsWHXkKNL11buJL9BCfxCqT09cTQsTcEbEiEUJLrZcE ZgDYPdB+ORL1d0L/8eD37jHAQVWk7DanrCkAOr7cEvacedHZz5oqL3igsYd7t+jPgiXv+pITCrN Z5Bq3TRs4EPSDrXN2eie2BeK6KeNTk52+fyWmMJ5LHdl00g3+06M6eyTINU= X-Google-Smtp-Source: AGHT+IGIDtOFP2+bSYh/mhrfrW4NqVSHnZ5dGinaXXwTY0e6knbNZgSm7OMksnK3maAilj31D2fOfg== X-Received: by 2002:a2e:7210:0:b0:308:f4cc:952e with SMTP id 38308e7fff4ca-30927a72098mr23385241fa.11.1739810020144; Mon, 17 Feb 2025 08:33:40 -0800 (PST) Received: from [127.0.1.1] (2001-14ba-a0c3-3a00--782.rev.dnainternet.fi. [2001:14ba:a0c3:3a00::782]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30a2cef18d1sm5695991fa.76.2025.02.17.08.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2025 08:33:38 -0800 (PST) From: Dmitry Baryshkov Date: Mon, 17 Feb 2025 18:33:22 +0200 Subject: [PATCH v5 5/5] nvmem: qfprom: switch to 4-byte aligned reads Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250217-sar2130p-nvmem-v5-5-2f01049d1eea@linaro.org> References: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> In-Reply-To: <20250217-sar2130p-nvmem-v5-0-2f01049d1eea@linaro.org> To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , =?utf-8?q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Akhil P Oommen , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2302; i=dmitry.baryshkov@linaro.org; h=from:subject:message-id; bh=Weli6Ud1pnhnVMQNhXbarzN29phyH4B6NUF7IDp6kk8=; b=owEBbQKS/ZANAwAKARTbcu2+gGW4AcsmYgBns2TSEqPikNYmi8q8gYeJniJgTWX3+m9/QROU1 jibeXVol7mJAjMEAAEKAB0WIQRdB85SOKWMgfgVe+4U23LtvoBluAUCZ7Nk0gAKCRAU23LtvoBl uMHoEAC7JTtcprKualFbLDEYz0ZLnmBdS9s1aY6ScpflApOneIGCdgFh8r5RHCue9Dlxhf1PlzR g/1e/On5LZDovcxK7Piaa6tlTN1yr7AjVZt6l/+qe3McCPNTAh54pu80TJlhbdtwgeF8KL3L1OE DQFs4r+69FYZbMAL9omS+myH94hnOSA4/FFnovSkulO3ODRFEeZNT+4Shsls9u/lMdCRB6TkdQ/ t8AutkJr8o60JOW+54SHl94w6Fyr32T8N9ZVd82xm6LlihzASy/I8eagL9H8YP5fGVT0OR8cpSJ l1DtIFpMoGWezZZCdskf+kAsxInYtqNu1yGcrj0Bflao5KHlpwwgbqKyGBcMocrm2Wx6vyuDdti D+N86w1mBxTr2iN136CE+HVx5UlojfKc82FSK6BV+5eeCztMijOlUfKSFyam8slyH6sicCCyGkh TzC5T615kkdaiA+ldrPJ1hMmgsrIOPwtZ0b9YkfZfl/0446dCTiKNIZCpbvliAqzOptxW8ZQTae MEPvyIjHm/NmDfj9ip2eyWeCN06NCXFsV4flcBEN49+g4q6rc2W+oAljnLJZT75LSMxLTeXO4iL O7W41b5mDHoyzh8GHZgQ88xULRjOqU0jgw3nDBH5VVzyajqtue3O5MGh/Mi5JvUISGGP0X2CWk2 XqPfkyLdoQVkMWg== X-Developer-Key: i=dmitry.baryshkov@linaro.org; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A All platforms since Snapdragon 8 Gen1 (SM8450) require using 4-byte reads to access QFPROM data. While older platforms were more than happy with 1-byte reads, change the qfprom driver to use 4-byte reads for all the platforms. Specify stride and word size of 4 bytes. To retain compatibility with the existing DT and to simplify porting data from vendor kernels, use fixup_dt_cell_info in order to bump alignment requirements. Signed-off-by: Dmitry Baryshkov --- drivers/nvmem/qfprom.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/nvmem/qfprom.c b/drivers/nvmem/qfprom.c index 116a39e804c70b4a0374f8ea3ac6ba1dd612109d..a872c640b8c5a558da9ea00e380= 4c904f8987247 100644 --- a/drivers/nvmem/qfprom.c +++ b/drivers/nvmem/qfprom.c @@ -321,19 +321,32 @@ static int qfprom_reg_read(void *context, unsigned int reg, void *_val, size_t bytes) { struct qfprom_priv *priv =3D context; - u8 *val =3D _val; - int i =3D 0, words =3D bytes; + u32 *val =3D _val; void __iomem *base =3D priv->qfpcorrected; + int words =3D DIV_ROUND_UP(bytes, sizeof(u32)); + int i; =20 if (read_raw_data && priv->qfpraw) base =3D priv->qfpraw; =20 - while (words--) - *val++ =3D readb(base + reg + i++); + for (i =3D 0; i < words; i++) + *val++ =3D readl(base + reg + i * sizeof(u32)); =20 return 0; } =20 +/* Align reads to word boundary */ +static void qfprom_fixup_dt_cell_info(struct nvmem_device *nvmem, + struct nvmem_cell_info *cell) +{ + unsigned int byte_offset =3D cell->offset % sizeof(u32); + + cell->bit_offset +=3D byte_offset * BITS_PER_BYTE; + cell->offset -=3D byte_offset; + if (byte_offset && !cell->nbits) + cell->nbits =3D cell->bytes * BITS_PER_BYTE; +} + static void qfprom_runtime_disable(void *data) { pm_runtime_disable(data); @@ -358,10 +371,11 @@ static int qfprom_probe(struct platform_device *pdev) struct nvmem_config econfig =3D { .name =3D "qfprom", .add_legacy_fixed_of_cells =3D true, - .stride =3D 1, - .word_size =3D 1, + .stride =3D 4, + .word_size =3D 4, .id =3D NVMEM_DEVID_AUTO, .reg_read =3D qfprom_reg_read, + .fixup_dt_cell_info =3D qfprom_fixup_dt_cell_info, }; struct device *dev =3D &pdev->dev; struct resource *res; --=20 2.39.5