From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 95028C52D6F for ; Sat, 24 Aug 2024 15:51:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tnaI3J8L9jqL+YCydiZGDt22B1OuKa1x9XBslS2zAxQ=; b=KVmitunwpk8MKLttXBLiyqptBT A7hObrmts1ogkwBCHlhcT6FnUrCF0fzj47N7d6V6f57CtMHCtu/WtJCZd4VS7mTTcytTPpYDarp54 x+wrXGkWKygQ2wuCPfNJ9SI2JhxFcwb5aj3/VeTEarddF2Oz+TgDrp89/IK4WGl/WtzN3ksGcsim+ rBCXivGln2589KJQ//NldgzXbVQR5LB///cJFG5MnxpWDeKvaWwJOezWsyzBhnbc3aqWEhzmeprN8 TBHkvA5e15tNRquQR7MEnlw4J2o5XvwnNw2qQ/ZBI7YQrfh9MCiZXLrcqxAZal2OzZ6IXLtw1AG3O TXzXV2oQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sht38-00000002TWR-0Wuq; Sat, 24 Aug 2024 15:51:34 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sht2M-00000002TS0-2kQ7 for linux-arm-kernel@lists.infradead.org; Sat, 24 Aug 2024 15:50:48 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5bed72ff2f2so3713298a12.2 for ; Sat, 24 Aug 2024 08:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1724514645; x=1725119445; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=tnaI3J8L9jqL+YCydiZGDt22B1OuKa1x9XBslS2zAxQ=; b=DI7/qE9+0gBF2t3jimY03QzxrpwiGsJj0oIAw88vtdwIPiQoGVhXVKgaViBfElCKHt Ct++vWHYO+2ekmomp5JyCAXBvHYh16Z54f4pnOf0rn3K/EPzXTJ9HqvwW2GOatPzdO1k Fhx9NEPjMhVyt4yXAWlJZg8yNJTIe+pnUqadVIGfADl4YActJg7EMmSxLw8QsolP73n1 eHH3skWvtEq+GfSxOB8hkhpN5PCf7YVBgisQTPEJXvS3vYoh3UGO8XAM8jTiXypUoPHp PnFEjx7w5dFmG4mDvdGZQ4Kxiq3zmHFyD17B1oEgIekTh2NNsVpA2AR/aPZoKbesz69J SG3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724514645; x=1725119445; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tnaI3J8L9jqL+YCydiZGDt22B1OuKa1x9XBslS2zAxQ=; b=pI+sKalXUwcy+F7po8etJ452Aqv+DjltmsvFipY6nlWnT8iLZfiZwI+BPj4PLXKcE7 eIjNd9vKx0gmRnWCc4y6EeUOubSViBI4FY1iso4Z049CY77RuUcMl9Z5OpE/Xu023+Tu 6UNdtPu2+hnvhT2suaBIPFzLmOxcQiSHatU70HtWZfVYySGqSgYnuyb5Yx7jYeLgZbwm CgUAfYNnaSPn7z4WV60KVv5nOy7qAYSrdLjAharj2RT35RwEDB1uZjRfQbfLQikZ4KrV qlj+7Fbok9MT2BVCodzA6zZhwwvCFml2gZRKc1l4qK2T18Gd1fYSHqf+nipRJQo8oKBg /mCQ== X-Forwarded-Encrypted: i=1; AJvYcCVhylewziiHszMzoz/W5cJzMcoJTXyHe6KfNDah8YPIRoZ/LLR2UdbEyZyLIUNhZDqCJvCMiwiUK+dDeOVuXWwH@lists.infradead.org X-Gm-Message-State: AOJu0YzKfzibvKm0q9yQlHH8QB3aYFuBz3SGXe/omUsqdttnVuaSwv1e f4doFHIbQlW2poxd3i3pQjzqlOK+KVVeYicq6PlREJ9SRJSHwsNGkFF2tZnCmOQ= X-Google-Smtp-Source: AGHT+IHxl8Ii7QkfKZckiGTzrwPt4ARSR1aUCLMT/Aw2okyL4ipRxnvwWURpN6mu9B++Zj8yAyum6Q== X-Received: by 2002:a05:6402:1e8d:b0:5be:ff22:8eef with SMTP id 4fb4d7f45d1cf-5c0891ac450mr2833551a12.36.1724514644647; Sat, 24 Aug 2024 08:50:44 -0700 (PDT) Received: from [192.168.50.4] ([82.78.167.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c04a3ca4d2sm3434336a12.36.2024.08.24.08.50.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 24 Aug 2024 08:50:44 -0700 (PDT) Message-ID: <7938fb2b-77c4-43a8-a2dc-55dda38404b2@tuxon.dev> Date: Sat, 24 Aug 2024 18:50:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 12/12] nvmem: microchip-otpc: Expose UID registers as 2nd nvmem device Content-Language: en-US To: Alexander Dahl Cc: Christian Melki , Srinivas Kandagatla , "moderated list:MICROCHIP OTPC DRIVER" , open list References: <20240821105943.230281-1-ada@thorsis.com> <20240821105943.230281-13-ada@thorsis.com> From: claudiu beznea In-Reply-To: <20240821105943.230281-13-ada@thorsis.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240824_085046_731225_B9C1B6A5 X-CRM114-Status: GOOD ( 22.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 21.08.2024 13:59, Alexander Dahl wrote: > For SAM9X60 the Product UID x Register containing the Unique Product ID > is part of the OTPC registers. We have everything at hand here to just > create a trivial nvmem device for those. I'm not sure what is the best option to expose this. I let it to NVMEM maintainers. > > Signed-off-by: Alexander Dahl > --- > drivers/nvmem/microchip-otpc.c | 41 +++++++++++++++++++++++++++++++++- > 1 file changed, 40 insertions(+), 1 deletion(-) > > diff --git a/drivers/nvmem/microchip-otpc.c b/drivers/nvmem/microchip-otpc.c > index 047ca5ac6407..52af4c137204 100644 > --- a/drivers/nvmem/microchip-otpc.c > +++ b/drivers/nvmem/microchip-otpc.c > @@ -45,6 +45,9 @@ > #define MCHP_OTPC_NAME "mchp-otpc" > #define MCHP_OTPC_SIZE (11 * 1024) > > +#define MCHP_OTPC_UID_NAME "mchp-uid" > +#define MCHP_OTPC_UID_SIZE 16 > + > /** > * struct mchp_otpc - OTPC private data structure > * @base: base address > @@ -249,6 +252,16 @@ static int mchp_otpc_init_packets_list(struct mchp_otpc *otpc, u32 *size) > return 0; > } > > +static int mchp_otpc_uid_read(void *priv, unsigned int offset, > + void *val, size_t bytes) > +{ > + struct mchp_otpc *otpc = priv; > + > + memcpy_fromio(val, otpc->base + MCHP_OTPC_UID0R + offset, bytes); > + > + return 0; > +} > + > static struct nvmem_config mchp_nvmem_config = { > .name = MCHP_OTPC_NAME, > .type = NVMEM_TYPE_OTP, > @@ -258,6 +271,15 @@ static struct nvmem_config mchp_nvmem_config = { > .reg_read = mchp_otpc_read, > }; > > +static struct nvmem_config mchp_otpc_uid_nvmem_config = { > + .name = MCHP_OTPC_UID_NAME, > + .read_only = true, > + .word_size = 4, > + .stride = 4, > + .size = MCHP_OTPC_UID_SIZE, > + .reg_read = mchp_otpc_uid_read, > +}; > + > static int mchp_otpc_probe(struct platform_device *pdev) > { > struct nvmem_device *nvmem; > @@ -303,8 +325,25 @@ static int mchp_otpc_probe(struct platform_device *pdev) > mchp_nvmem_config.size = size; > mchp_nvmem_config.priv = otpc; > nvmem = devm_nvmem_register(&pdev->dev, &mchp_nvmem_config); > + if (IS_ERR(nvmem)) { > + dev_err(&pdev->dev, > + "Error (%ld) registering OTP as nvmem device\n", > + PTR_ERR(nvmem)); > + return PTR_ERR(nvmem); return dev_err_probe(); > + } > > - return PTR_ERR_OR_ZERO(nvmem); > + mchp_otpc_uid_nvmem_config.dev = otpc->dev; > + mchp_otpc_uid_nvmem_config.priv = otpc; > + > + nvmem = devm_nvmem_register(&pdev->dev, &mchp_otpc_uid_nvmem_config); > + if (IS_ERR(nvmem)) { > + dev_err(&pdev->dev, > + "Error (%ld) registering UIDxR as nvmem device\n", > + PTR_ERR(nvmem)); > + return PTR_ERR(nvmem); return dev_err_probe(); > + } > + > + return 0; > } > > static const struct of_device_id __maybe_unused mchp_otpc_ids[] = {