{"id":2220935,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2220935/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260408121841.186410-8-aswin.murugan@oss.qualcomm.com/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.2/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260408121841.186410-8-aswin.murugan@oss.qualcomm.com>","list_archive_url":null,"date":"2026-04-08T12:18:41","name":"[v4,7/7] misc: update API documentation for bit field support in NVMEM","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"ab8f638a961705c9c16dcda04b825327ddf95452","submitter":{"id":90811,"url":"http://patchwork.ozlabs.org/api/1.2/people/90811/?format=json","name":"Aswin Murugan","email":"aswin.murugan@oss.qualcomm.com"},"delegate":{"id":151538,"url":"http://patchwork.ozlabs.org/api/1.2/users/151538/?format=json","username":"kcxt","first_name":"Casey","last_name":"Connolly","email":"casey.connolly@linaro.org"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260408121841.186410-8-aswin.murugan@oss.qualcomm.com/mbox/","series":[{"id":499133,"url":"http://patchwork.ozlabs.org/api/1.2/series/499133/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=499133","date":"2026-04-08T12:18:34","name":"qcom: Add NVMEM bitfield support and reboot���mode integration","version":4,"mbox":"http://patchwork.ozlabs.org/series/499133/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2220935/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2220935/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=K0VYV84z;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=JEx6ocKN;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=oss.qualcomm.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"K0VYV84z\";\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"JEx6ocKN\";\n\tdkim-atps=neutral","phobos.denx.de; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com","phobos.denx.de;\n spf=pass smtp.mailfrom=aswin.murugan@oss.qualcomm.com"],"Received":["from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frMcX6Jgyz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 22:21:32 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 41D148418C;\n\tWed,  8 Apr 2026 14:21:27 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 026308414B; Wed,  8 Apr 2026 14:21:26 +0200 (CEST)","from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.131])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 3A6FC841C2\n for <u-boot@lists.denx.de>; Wed,  8 Apr 2026 14:21:21 +0200 (CEST)","from pps.filterd (m0279870.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 6387Q4CK2451202\n for <u-boot@lists.denx.de>; Wed, 8 Apr 2026 12:21:19 GMT","from mail-pg1-f197.google.com (mail-pg1-f197.google.com\n [209.85.215.197])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ddae6aq0s-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <u-boot@lists.denx.de>; Wed, 08 Apr 2026 12:21:19 +0000 (GMT)","by mail-pg1-f197.google.com with SMTP id\n 41be03b00d2f7-b630b4d8d52so3950708a12.3\n for <u-boot@lists.denx.de>; Wed, 08 Apr 2026 05:21:19 -0700 (PDT)","from hu-aswinm-blr.qualcomm.com\n (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82cf9a24039sm20512602b3a.0.2026.04.08.05.21.09\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 08 Apr 2026 05:21:17 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-transfer-encoding:date:from:in-reply-to:message-id\n :mime-version:references:subject:to; s=qcppdkim1; bh=9UpYA7IIq/O\n l5ltl8etEhl+fI9ks0CQF1vfaQBqqkDQ=; b=K0VYV84z54gKE7yPjldNs1JGZ9o\n MRzY+pwCeGAKeJu/lvpcGKNhTe44NAxen9PwmrSaE9DFqpdQOd3HnPCSPrMSlk8V\n NDM8MO/agFi7y7TIfitM4uP8S9cYxjhmmSrcU94+O1RixGsfajQnzPRTP7Car0pP\n xxfSCoAeIfJRyfp0CbQ8XSfxSIFf7LvLvUfd4LQqhYXnOn3clchkyomiT1c28AHD\n fGn9fCEX61gBa0fvEiCCqruy0K/oSS0dYoevCfs1tUwaN6DMEAWWVxsMUzammF66\n KJJ6dL1ph5vlDdq7fGbj+uAZy11Oudfxup7i4zsob7rk6MXNajVp8z6pJAQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775650879; x=1776255679; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:from:to:cc:subject:date:message-id\n :reply-to; bh=9UpYA7IIq/Ol5ltl8etEhl+fI9ks0CQF1vfaQBqqkDQ=;\n b=JEx6ocKNxo5kLFrfcbNv9BYHYRNpRaHpIQi/ihvyucIFBJOygRame7ZloCkYuAFM4M\n mB82mUIyUTbsZxbRzJMcq8nhFOJMrB41TV3HMu3IfukrbbARdqsW4x7Dq9Ib9vMub+0Z\n vZ3uFv9bhM/6/Zb2IdTuV7Pg+5O9C7e8xiaANOlWwqx1X48lM2b20L/lOCAMBZTbGXhg\n 21+6CYrxjGCRUfoj+B6GxyMDjGRsN28hyGroLotWCrey9R0DkH0vtibbEmloiDZA71z/\n hdFrzslWDf5Nkjomk+7poMj3SMfpBfa12WuCbFzLscGcARAVklvGEq+JFZvvud1VN0LP\n GPDw=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775650879; x=1776255679;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=9UpYA7IIq/Ol5ltl8etEhl+fI9ks0CQF1vfaQBqqkDQ=;\n b=LS7o8Kili0DDYKFsikxKK48RSFCWjdBYBGUo+3FTUK2g/gqNg/GioQghP5r9O1YCyn\n k0sMiuaRAlUGjMO/MsF2dWGAEDkhdGSohHvWykVv6/DflJywH41D6FRQvY82ysM32+t5\n 8o07PExO4gjS+W7NgnVc8Jq0+DiDnVeonynxJH1D3c+DcJ3uXKtvhbLusuwFY/N/OupD\n 4shpK3EQfjTMCrRLLXFOt5/iRah4XzZ3lyQWa3FUDdo4mezG3A9chQhJcV/Yxayy/KPs\n N5SChY1yTvStMBnvOhhvd8XWRRg7vTeZrHrib1mcxDg/2w0b1K5oJWPIKIECrDjvVMv1\n 4wTQ==","X-Forwarded-Encrypted":"i=1;\n AJvYcCVMEiR5JfPqcuYNHS26iShqmLMzQkmVoRYHnqr/S11r298/zMvysQOZq+BDud5nvLGiq5IJBMI=@lists.denx.de","X-Gm-Message-State":"AOJu0YxyU6g7FY34nftxyUbSZfBGpC4nR4s+XQwLXExDthhuMCdRIz0C\n PjFkMwtH8tWZlQetuWg+aT/DLwmKtqBn5TLqz4XJ9YauPVFZnE2sPISwBNaOxupVm0nLH3kNZ8G\n t+bNjijphF9ZEqYRhA+9s3pSqNY+KPIe6/vieGMYd9YKkMu6dbo+9Upo0","X-Gm-Gg":"AeBDies5fR7Gwc0rXvPwdB6RnTGntwphrU9ngEAyVzLVH0hP/xEOKthX+bjcob79heS\n w4LR1PptsJEWQISjrl5WBX6S5aVZ9f281ozAQaCi9BVHgaPHKBNiP91+/rUu52SwddUZKCRVCmI\n XItDqM64AAaNXTLn88R+dyNsb8/4QUahoTtDm7Owiy/BRYCran9/93Js6J8gD+yboTM3eXgVPcy\n KPzp2zmLAQ3DMX6h97p5rAFGgrnNHSV5XZLPP9/Mu2rc1BciSEx4TRZhs/bKXMVzrKpie6GiPPh\n eXt/jGY6+RF9rwP8If9lRYuiyQjBHXMX1xpjKx0ZSDwebIm37M7O9rdBOVLWFw1ogMiZEWAXLKw\n 9NjCiHk9yBZ6V7IGUvaSk5kIH/YC+qA+8H/Jxkp0XpsdVxONgXBztla8m98qp7qZtRteA6Q9ygI\n R3G/4f7gn5HigG1Hx8Snr8piY4UdxJlk53JZ+YaUHf","X-Received":["by 2002:a05:6a00:3693:b0:829:7d31:dd99 with SMTP id\n d2e1a72fcca58-82d0db7e27cmr21032965b3a.38.1775650878504;\n Wed, 08 Apr 2026 05:21:18 -0700 (PDT)","by 2002:a05:6a00:3693:b0:829:7d31:dd99 with SMTP id\n d2e1a72fcca58-82d0db7e27cmr21032924b3a.38.1775650877852;\n Wed, 08 Apr 2026 05:21:17 -0700 (PDT)"],"From":"Aswin Murugan <aswin.murugan@oss.qualcomm.com>","To":"trini@konsulko.com, aswin.murugan@oss.qualcomm.com,\n casey.connolly@linaro.org, neil.armstrong@linaro.org,\n sumit.garg@kernel.org, sjg@chromium.org, seanga2@gmail.com,\n sughosh.ganu@arm.com, gchan9527@gmail.com, ilias.apalodimas@linaro.org,\n mkorpershoek@kernel.org, marek.vasut+renesas@mailbox.org,\n hs@nabladev.com, msp@baylibre.com, ravi@prevas.dk,\n dinesh.maniyam@altera.com, sajattack@postmarketos.org,\n peng.fan@nxp.com, quentin.schulz@cherry.de,\n jamie.gibbons@microchip.com, mateuslima.ti@gmail.com,\n justin@tidylabs.net, wens@kernel.org, n-francis@ti.com,\n ycliang@andestech.com, jerome.forissier@arm.com, clamor95@gmail.com,\n u-boot@lists.denx.de, u-boot-qcom@groups.io","Subject":"[PATCH v4 7/7] misc: update API documentation for bit field support\n in NVMEM","Date":"Wed,  8 Apr 2026 17:48:41 +0530","Message-Id":"<20260408121841.186410-8-aswin.murugan@oss.qualcomm.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260408121841.186410-1-aswin.murugan@oss.qualcomm.com>","References":"<20260408121841.186410-1-aswin.murugan@oss.qualcomm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDA4MDExMiBTYWx0ZWRfX6Vmqmfu4PGzH\n lOXASTkOO2M8daCm7ypSNCI6sRcEVIMFLF+35GOXY0z6NWR5fqc3WF+Pb1CdLz6qaYInCguNuKl\n cT37dcbGOeEBenX8AKEaGizsvsvlWpNK46DDdMZCKYdfyws+RxBFueNNOunO/ZEgLGQkqKa5+D+\n OMU3tDImY87DxdY6iDYsoWcMWQymTh7GfwAw7qo4MwnJPoWKTX8oGNiMm4jYcKGqZCJeJ9+Kd5y\n ZvfsMOAlT23bq+2cRPeNRJnV1Su4Rfvx/7Yy3OIstvzGf8tuZqcj7Heqw9Qk9UGSXsWRMy4C6sC\n svPrjOkZ623bOW3rom1Ak7rR2n1vYOmnY+oOR2awQKww5GaOEhUsDoTZzT7qUUtxK5LVAExFjBl\n 5DzHEpCAzkfKjwk3Y352D4/G4cv9FiHb3pXvdnio4UknjlxJekJyJyutU+Ghz60mzwMalpxFKJa\n EUbPGzZ5FJcGckSe5Jg==","X-Proofpoint-GUID":"8qtxsLyAPx5zluVTVIdcsOsVa_5ewHfc","X-Proofpoint-ORIG-GUID":"8qtxsLyAPx5zluVTVIdcsOsVa_5ewHfc","X-Authority-Analysis":"v=2.4 cv=K4AS2SWI c=1 sm=1 tr=0 ts=69d6483f cx=c_pps\n a=rz3CxIlbcmazkYymdCej/Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8\n a=xnw-sE8SsPs_kYMhUbAA:9 a=bFCP_H2QrGi7Okbo017w:22","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015\n phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 adultscore=0\n suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000\n definitions=main-2604080112","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"Update the nvmem_cell_read() and nvmem_cell_write() documentation to\ndescribe the new bit field operation mode.\n\nThe documentation now clearly explains:\n\nFor bit field mode (nbits > 0):\n- Read: extracts the bit field from raw hardware bytes\n- Write: performs read-modify-write to preserve other bits\n- Requirements: buffer size must be sizeof(u32), cell size <= 4 bytes\n\nFor non-bit-field mode (nbits == 0):\n- Read/Write: direct byte-level access\n- Requirements: buffer size must equal the cell size\n\nThis helps developers understand when to use each mode and the\nassociated buffer size requirements.\n\nSigned-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>\n---\nChanges in v4:\n1. Added explicit documentation for all `@cell` parameters:\n   - `@cell->offset` - Byte offset within NVMEM device\n   - `@cell->size` - Size of cell in bytes\n   - `@cell->nbits` - Number of bits (0 = byte-level mode)\n   - `@cell->bit_offset` - Starting bit position\n---\n include/nvmem.h | 36 ++++++++++++++++++++++++++++++++----\n 1 file changed, 32 insertions(+), 4 deletions(-)","diff":"diff --git a/include/nvmem.h b/include/nvmem.h\nindex dd82122f16f..c3d845c3a7e 100644\n--- a/include/nvmem.h\n+++ b/include/nvmem.h\n@@ -43,13 +43,27 @@ struct udevice;\n \n /**\n  * nvmem_cell_read() - Read the value of an nvmem cell\n- * @cell: The nvmem cell to read\n+ * @cell: The nvmem cell to read, containing:\n+ *        - @cell->offset: Byte offset within the NVMEM device\n+ *        - @cell->size: Size of the cell in bytes\n+ *        - @cell->nbits: Number of bits to extract (0 = read entire cell)\n+ *        - @cell->bit_offset: Starting bit position for extraction\n  * @buf: The buffer to read into\n  * @size: The size of @buf\n  *\n+ * For cells with bit fields (@cell->nbits > 0), this function:\n+ * - Reads the raw bytes from @cell->offset in hardware\n+ * - Extracts the bit field using @cell->bit_offset and @cell->nbits\n+ * - Returns the extracted value in @buf\n+ * - Requires @size == sizeof(u32) and @cell->size <= sizeof(u32)\n+ *\n+ * For cells without bit fields (@cell->nbits == 0):\n+ * - Reads raw bytes directly from @cell->offset\n+ * - Requires @size == @cell->size\n+ *\n  * Return:\n  * * 0 on success\n- * * -EINVAL if @buf is not the same size as @cell.\n+ * * -EINVAL if @size doesn't match requirements\n  * * -ENOSYS if CONFIG_NVMEM is disabled\n  * * A negative error if there was a problem reading the underlying storage\n  */\n@@ -57,13 +71,27 @@ int nvmem_cell_read(struct nvmem_cell *cell, void *buf, size_t size);\n \n /**\n  * nvmem_cell_write() - Write a value to an nvmem cell\n- * @cell: The nvmem cell to write\n+ * @cell: The nvmem cell to write, containing:\n+ *        - @cell->offset: Byte offset within the NVMEM device\n+ *        - @cell->size: Size of the cell in bytes\n+ *        - @cell->nbits: Number of bits to write (0 = write entire cell)\n+ *        - @cell->bit_offset: Starting bit position for insertion\n  * @buf: The buffer to write from\n  * @size: The size of @buf\n  *\n+ * For cells with bit fields (@cell->nbits > 0), this function:\n+ * - Performs Read-Modify-Write to preserve other bits at @cell->offset\n+ * - Masks and shifts the value to @cell->bit_offset position\n+ * - Merges with existing bits outside the @cell->nbits field\n+ * - Requires @size == sizeof(u32) and @cell->size <= sizeof(u32)\n+ *\n+ * For cells without bit fields (@cell->nbits == 0):\n+ * - Writes raw bytes directly to @cell->offset\n+ * - Requires @size == @cell->size\n+ *\n  * Return:\n  * * 0 on success\n- * * -EINVAL if @buf is not the same size as @cell\n+ * * -EINVAL if @size doesn't match requirements\n  * * -ENOSYS if @cell is read-only, or if CONFIG_NVMEM is disabled\n  * * A negative error if there was a problem writing the underlying storage\n  */\n","prefixes":["v4","7/7"]}