From patchwork Mon Feb 17 16:33:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 13978210 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 2CFFC2253F6 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-3072f8dc069so46672871fa.3 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=p3jqfsSSjf/6hr1FKPABLgRgE9COKqkUZ0by4tctX4E0wLgm/f22rBcarc91untC9A /yRTVWKWtnY49o4kYguX3i8v9a4VX6ZcuTXP2ElkBFUKxK6BbQVoxvjvvRdnh/z0MhDN Ze4gku5peSTtyn0vvUkO2ni8EHjZC2nt10xjOZWO6azP6RmfUpPOP81DhYuwKwVJTi8X s+ida2RQnaaPntwTPQANEad6pcua01oIBuQ/TIhkZC83RW53LyiDRwLDrwp0X0+WuCQx dHE81dF0T26rYEtOPLMSzBuFVezBSdfN1JV+lkdKiVfJeRmnVQM2f/q1OEQDfyOGMXg8 o8Fg== X-Forwarded-Encrypted: i=1; AJvYcCXNDS7JUwHa/z90WqiD7m2EqlPjPbKS7nuEnstLbmXxx8UWiwGuzAb+2diPrI9jXvW7e0YGfs5HlOtfL3PT@vger.kernel.org X-Gm-Message-State: AOJu0Yz8c4j7JTrh6DGakIULFdp+7sR5BO1W2WECIwi3XzdFZcsTE2wh jYV/CslcBOMbHB2zEv4azk5g9L/A/zwHL2m9Q/sdct+WaItX92E6vJpDynVz0x8= X-Gm-Gg: ASbGncsY4gl784hM6yWum2GbdREuE8MXfXbn6I3VfJvDmcqfg58oknl9hWQvYnl8wcv /ybSshIzkZhJhAMV7f2kcTeOTbUBeKfAV2NiQQCa9MOG9ttXDQfjOUduBMNDBEDm8iN/MOpT+bn kV1/HMy0W546Xm9vEnsLfdXQULjDhmoXtcnB9bAlp+Oc4kevumtu6Nxa4sL/wUqqUMZ3WfQLhZu nhStyD8GA6xf4gYrv3WoNE274INf7tm+PU6LXbflfmflHUTkktD+TupZR0+j5QfPc7cGwiBoJiO lQu7iPB5LDftkMnobFsY4QxIcdpdYi65k4RoYgxiUYdj0bAWcIFj/myw724= 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-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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?b?UmFmYcWCIE1pxYJlY2tp?= 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.yaml b/Documentation/devicetree/bindings/nvmem/layouts/fixed-cell.yaml index 8b3826243dddfcf9c9bea531541c55d3fc04a3bf..38e3ad50ff4fb6200023f22b4c70c506349142df 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 From patchwork Mon Feb 17 16:33:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 13978211 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (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 A3992225767 for ; Mon, 17 Feb 2025 16:33:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810011; cv=none; b=qzQ+BJwvfbZdH+sszKI+bCNQPg81Y+dFKAUNZnfxS8ijJGHojmImbk+jAvAdZtRz33a0vGuJ/SwtjKMHWUXM66cd/L+e+eibW2FGCINBHtOhBfcHksSd6IAxeGDMEpqPm+/936+OI+IPVp0TBt5ktxjNImYgTTD/UTPXm3jS2zA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810011; c=relaxed/simple; bh=1bE1H788nkndn5WpT67KXk3syh82LSTU83DzpaERA9g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hr39FMh0Bfnj4SL0pjzmue8cLIk+fOJaLVm7vgcxCsgfusC04I32BULfaY3U7LmZQ5W1LatsARRBCczxLQMtvcY10k+wobp4V7GG5ekJttosB1bb29doE2DR1gf9AmtSuRiJEuaWZGYNR0zQLH0CN4984BZcDa5U1a/UHnm8GXU= 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.54 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-f54.google.com with SMTP id 2adb3069b0e04-54298ec925bso6160922e87.3 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=S29N9FNSrHMM5VfG2RsNFpiP2qYWtkv0wAPyt5ekGYi+cVli7yStlS/st8w2EB/01V JQb7QxH2lVjV2J4KrceHoGs3E3VQTpaTe6oKp3Ntbk+0eadpik9bbuu5GuTGWVDcCzuP D0y7iWn6LChIKkIiyYYpJtWNdgKLJpgpFU+z6HHdWpQrahFC+tQeyav8JtFYsTn+P3gg rVn3DsiPP79VvHQmfmjsLWfOkXLjyZG1538qAUKszj/G02BZ13cChmnS8wD6ExSiom/e 2OmFkl+evwhqlxIuk5IzSfw1l6ZxNwy44va5LT3I9RKa6nOXWYEnprEOu83s/FTzTVVA 5X/A== X-Forwarded-Encrypted: i=1; AJvYcCUVuTgGJX0n3c19xr7yMcJ38phh1+2KjrPG3lp924LY6z+fT07Tgc+/GPCQGxvbOXEs+ULfs1ygz2HfYr1R@vger.kernel.org X-Gm-Message-State: AOJu0YwV3ds55M57TmrTB2CKetcvVGoSb6ozkG/TJzrAJfPuBCWOZF4q qyRe3oUwYIXSyAjqXAE2RgrdvPW5BNanSLOgj7If8FgFv3reeBx71fHjeCvTjGMSDDdz9ZmeQ0n / X-Gm-Gg: ASbGncv8nB7FPkxxd/+3+gl7/1bE247x+OV0fjYV0ZxA8OsaRsn6HACU7vJKgSsBY+3 WZzhknInmYLir3nWGAeGeUb+3o9X8xcuZJ1kTG1ER3CptzpdjPwazTHbDido1pWRtEAfL1cGpl0 Q1ZKo+6ztnV+hDxU80dGXnxat8XC49AQQfrHXLqH3NiZUtw6Ct0Go8BX98g20FBv+TOt0QunUET PLrG1dSOKh0QHmq+EEgQnOg6g6j3O7gaEz1YGrO6ntj4kbarowHeI9gXmOuFSOh3ERV/gy3mhkx zB3V7awm/BRzHRK9B7Je0HsXBE+R+zVtJ8XoHNM6DZuaqQ8kGpJDccnz/j4= 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-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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?b?UmFmYcWCIE1pxYJlY2tp?= 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..7872903c08a112f11618a5aa6a42ba505106ef6d 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 == (2 * sizeof(u32))) { info.bit_offset = be32_to_cpup(addr++); info.nbits = be32_to_cpup(addr); - if (info.bit_offset >= BITS_PER_BYTE || info.nbits < 1) { + if (info.bit_offset >= 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 = cell->bit_offset; + int i, extra, bytes_offset; + int bit_offset = cell->bit_offset; p = b = buf; - if (bit_offset) { + + bytes_offset = bit_offset / BITS_PER_BYTE; + b += bytes_offset; + bit_offset %= BITS_PER_BYTE; + + if (bit_offset % BITS_PER_BYTE) { /* First shift */ - *b++ >>= bit_offset; + *p = *b++ >> bit_offset; /* setup rest of the bytes if any */ for (i = 1; i < cell->bytes; i++) { /* Get bits from next byte and shift them towards msb */ - *p |= *b << (BITS_PER_BYTE - bit_offset); + *p++ |= *b << (BITS_PER_BYTE - bit_offset); - p = b; - *b++ >>= bit_offset; + *p = *b++ >> bit_offset; } + } else if (p != b) { + memmove(p, b, cell->bytes - bytes_offset); + p += cell->bytes - 1; } else { /* point to the msb */ p += cell->bytes - 1; From patchwork Mon Feb 17 16:33:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 13978212 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 E428C225766 for ; Mon, 17 Feb 2025 16:33:31 +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=1739810013; cv=none; b=LjM9yN8yELj1csEcXu0NK1Nk9TEwZduispT30MZkpT1ryynBvyhZNe5XKA1r8EsZfnMn/B2RwLp4IwDkOe5uMPaGEt3d5DA9NtHhLNZhL+VonbGC4L8d1m/c8JPjnTq8sxIwLVib3bOwNzz/WkenTsy6FqSSU/x4nGtUQPoKClc= 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.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="S7h8Rr4K" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-30227c56b11so47755381fa.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=OVJJ7rhc2D2a+XI+9D3VTFcbfNeI3Mkopc6i0Qp106mN/wtpZsKLNuDkm/rHMN6MPM EIASyOab/TXs3uTp+Cn6j4xLQWA+wK6wRQFPy8czIa7uxrks83NluyO34rhei6Ypk3fm 92tl3qdjrPeMEz1YhdS/IWc7T6VmBKa+RXT6hI6reU2jzVUUlyXR+QTNsjPjEIu0H/Q7 uXc5Bt3NVr5RgG9f3/2efSJapaserNVfcCKxfCjGUDYo4H8DFk0+4+XbR3DAgxW/Qokg ND9nDGljRy/6mA5VJLrkQKoLSAkfTAHJOUKebUM5EvS3igwY2ubbtN1bOP48Fxf44bvf TqNA== X-Forwarded-Encrypted: i=1; AJvYcCXJMTKagSqXOAWvOD2MQkO1a66F5jho9fwHluc9MGtemdaOUUl99GMavsX7wyjiFGxSvrMqu/WEuWms+al+@vger.kernel.org X-Gm-Message-State: AOJu0YylMMOXmOGsbsElT1Imbn8Mk8iQczUo8VawZ7ORmB9CFEHlmQ6Y dZ1t4yRQ8139AT9wymkegf67hG4iD02QIPY0K6tQ6+ha9L6cOJIRZN6VmRRG29A= X-Gm-Gg: ASbGncuyDHnE/YeaszsdI8+SuCR0Z/wHvOTI51hnX2We8qL/wT0qa1GL4O9d2TzUESv Mh3kaGOM6z5Of89DKEuBWJ850JLbKOMGaPwAaMgeklzlQV9pzOEIJM+EB1VPlCdhFHPro2yVZwe fzvclMi7tlnZaC5TN5WUNHzMfvkjQ7XmnVzpCiHQPDUmAwgz8C5XZgoljuGhdzuRCLe6mFgCBX2 NM2934xjCN1ne8Of4ckd2A7LDpfAvpBTfwyfZytCJnEitifHRKQIDErnWC8cXhe+RNZofrVwfg5 /ykbQGJdqewbDBM9/eF+lQByCaSqF+Tava56NNbRUaDjZrV02UVZjmQnnMI= 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-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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?b?UmFmYcWCIE1pxYJlY2tp?= 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..ad9b716e8123537fb5fcef724a684e6db3c1de8e 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(struct nvmem_device *nvmem, return -EINVAL; } + 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; } From patchwork Mon Feb 17 16:33:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 13978213 Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA03A225769 for ; Mon, 17 Feb 2025 16:33:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810022; cv=none; b=mEsdG2W8pUhAd2E01+Yi25DMAgHjugqpeJKKVInvoQ4Ama8t0HEkxxmANaR75OTyd7en3xSiDzal3TSAbdc82V5RUGkMYAO7xIGiFt3rpLr5l1qU4TUFb2UBAsARdk78G+ebKVSG6xOtCaZ/bFhKK6FPr6qK3yiqwlb2NNf4HAk= 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.182 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-f182.google.com with SMTP id 38308e7fff4ca-3091fecb637so28681551fa.1 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=et6XpPQqMNfbBSlTUhZPzfDTw+DdpfDxNC8Z5SukZu6FgEBQQ4AGtFCRA8wU9qX6E/ 2/gazW5WXbPE/KSOn2Zfm3Jt0qc1i2RyAMQcMxm64wlY5BYgYDV45p+Mc1k9eQM74PdL FkIukB1aF7ffp0tPTzyKwlBMhjRJGnUkTukMTYaipF813PH56/xO7iTu/eb54e7kce3Y MXQkKbEeQ9otmJ0JpPZaTCZrmzi26pMuw7BCDAHDoNDbHefESANIv6NQcq1XPVbESXRf T8k2RFD2yHtGBkGL56Clz65d+yv9Vh1/faI58RWMbxMT/u/uY8vxb70sY2QcXNAFlpuy bADA== X-Forwarded-Encrypted: i=1; AJvYcCVXMdMvCSpabAQK0japOwvgazIA0I7Dpnc0xaPRsGDsq6wSxB/z4x4bJJs049LCAzgAccGp8SbyOOX7QNPW@vger.kernel.org X-Gm-Message-State: AOJu0YxlJe0PBqjzRzs+2cU3h955E++xq+KOKMvLwmPlF+lN7LibT3OT BmYYS6St1knaAohCaeCDkIQmWGUgmtxGRaoGXikGMw5VXZKqsAIP5Wz0/EUZn6I= X-Gm-Gg: ASbGncuMvlMCO9cm2327D3qdXZ5F8rLJqY2fZ6NyQcviVeLw4uGhh8oyKUlaBrUYZt8 TKOuBFYQgVoVSkiluWcdW/CY0KYycJmM3h34uEOCksVqIIrDn6LSqQzjGB+wGsH/gpDASjUDcMv AzWyEkX2720ap+rpqCikgETSp91fgtl5kEoHVCuupwY5wWTkyZdhZhh7/1xfoyxkkHjL8+7DWNI EYfOQMGEGTVsRrUHrclEk2cuCX/P0YegPYSAfl+2KBu7xWKTFB+WFaaMtpaolsMFaR0os2Ahet2 7Lk3lYyo6ViiQ2wUdX9+1wWb4qZ8xjuY3vXCQ2+Oz0ZUrAN8MTtrH9GcJVA= 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-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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?b?UmFmYcWCIE1pxYJlY2tp?= 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..b6f8544fd9662cff0a04e292bb536418564f0368 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(struct nvmem_device *nvmem, cell->nbits = info->nbits; cell->np = info->np; - if (cell->nbits) + if (cell->nbits) { cell->bytes = DIV_ROUND_UP(cell->nbits + cell->bit_offset, BITS_PER_BYTE); + cell->raw_len = ALIGN(cell->bytes, nvmem->word_size); + } if (!IS_ALIGNED(cell->offset, nvmem->stride)) { dev_err(&nvmem->dev, From patchwork Mon Feb 17 16:33:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 13978214 Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) (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 1B2FC224AFF for ; Mon, 17 Feb 2025 16:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810024; cv=none; b=FYDEs6ntx3eDe8/XNV8PD4gzq7Rm9c8VnljZrVYfJP8pA5pN5ZXgcAEQqFmpuESvr+P9NGtRCJCtvGpeoLeUCmlMnFaPf6rZOlAQBp1VIFxYwQuxqB68x2oUjShQqOm0KyAUueFj1fZo7fryXQVTZcRvAAlpwyT7QFcW5nZMq8k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739810024; c=relaxed/simple; bh=Weli6Ud1pnhnVMQNhXbarzN29phyH4B6NUF7IDp6kk8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bBa7VWL79qh94942OtChKaKtsAiftNKaGzs8bnp9B3vvhlpjcABLgsSuzXuBmNvAR/rGYHYwuOtq/8LI99uWCMZzNxQb/L899pkWJ7uw/Gj7q3bhbFKxn1z928fnIw7YZeKcTYwjJTOQgwvMPNtPh3YVmIeE4Cw4vWyMo0o1Kv0= 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.180 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-f180.google.com with SMTP id 38308e7fff4ca-30930b0b420so18190561fa.2 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=MFQneRjkTzGH96s3Pfu9KAymALV9usAv1cjXzhDtuPTmOfwzAEP1i4g+EEquGnZ8zv 9+D/LgQGIOWVjn13mpOdd0j+JnZTHpsjvuJEwNeN0Y5NJos+IkINDkvPfgVNiHkuqPa5 4DSIHLFzUQGH9EiUuEVEWpDBgcfVTjdxpb52KyrqbLTtwl0uSQa5eqC+JhvU2kiYUG+K B4sylzbK4608S6TiRpZGEuOgyY/cuinR3IfrZ+qmk5dTPm6g8k2wtHvPu7Azbb0fZOay lC5k+E0gLJha1tyObrm1hna+UomooUbDlVTdALDuI/AiUnS+2nhbCBS8/jTS1dovW5xZ rPGA== X-Forwarded-Encrypted: i=1; AJvYcCWvScZ2N5h3jyLBYpXuodSXvUdWcDxb9vylQt969hXoptcu088giOkle2bLpn863y+BQL5Mxn780iO87wXb@vger.kernel.org X-Gm-Message-State: AOJu0YzRL/dQyZMu/JXeVdyzB34W+0mf+JzrdMJ1uMyEYZpqxF4s42ul U80DFmWM+BgLn0VCL7Zswlj4bVhSWk8ML1pOIi0NMdgttSo819e92X58l92vxJw= X-Gm-Gg: ASbGncv1njPvcHh3bGgde/4dao7f/sCdiBayu9Tx3qLVMqaKvDakzzYiYA8UTc28260 Rgx3UbatkyzGVZ+IAQCpD4hqrcHoUQGxN4bmH4WNKXcKdnJvDk+JatUq8hHaycdF/5bzyEGlyLs chCcjebsCkPxgUGm82L5bLGalgdFBCpvp33LAj38mjg7CSm31mPR5BArnwq/KWf2SKo4QC7AgZ/ O0x7RqnALpIoofzLCuUzgqav2NzGVXZt7d+KEssXK6Ks6Fs4CBsdyf1lr0OEXgEylbUpzRtrh3z zPp1SNLmCLugmGOaGuL7LqpEs4AR7fmnPclbKFRqlFEVsLe90nhta2xc7Uc= 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-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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?b?UmFmYcWCIE1pxYJlY2tp?= 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..a872c640b8c5a558da9ea00e3804c904f8987247 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 = context; - u8 *val = _val; - int i = 0, words = bytes; + u32 *val = _val; void __iomem *base = priv->qfpcorrected; + int words = DIV_ROUND_UP(bytes, sizeof(u32)); + int i; if (read_raw_data && priv->qfpraw) base = priv->qfpraw; - while (words--) - *val++ = readb(base + reg + i++); + for (i = 0; i < words; i++) + *val++ = readl(base + reg + i * sizeof(u32)); return 0; } +/* 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 = cell->offset % sizeof(u32); + + cell->bit_offset += byte_offset * BITS_PER_BYTE; + cell->offset -= byte_offset; + if (byte_offset && !cell->nbits) + cell->nbits = 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 = { .name = "qfprom", .add_legacy_fixed_of_cells = true, - .stride = 1, - .word_size = 1, + .stride = 4, + .word_size = 4, .id = NVMEM_DEVID_AUTO, .reg_read = qfprom_reg_read, + .fixup_dt_cell_info = qfprom_fixup_dt_cell_info, }; struct device *dev = &pdev->dev; struct resource *res;