From patchwork Fri Sep 14 14:39:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 10600853 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ECE696CB for ; Fri, 14 Sep 2018 14:40:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CD5992B88B for ; Fri, 14 Sep 2018 14:40:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C057C2B88F; Fri, 14 Sep 2018 14:40:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D25B22B88B for ; Fri, 14 Sep 2018 14:40:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=cteXAQ/SGI4ookRzGqXm2e8vAyKKkOyBqQabAjaOQ3k=; b=BO6 WJc52LNIYMZDFlbBfIPLvkiXMRKuyyXOYOIr53D9Ln3gMuoNA1dFIEh7zz37DuZC8yrMet79kFt20 oHlh8eYDG4oK9YaWa6x3hzyHxn8m5ztF33APrDEBdi5hofQFbHfc3nFhJf6ywi/9hyDwlvqMDZQhG y1TGj6kMiYEB52DpJWU6n62iyHJzA7UegaoXi2c1Ke2aHpLqEhFHNELeNt3a+QHVboNPxZj/0NT6j Q7hajRIS1pj8DQEA26fhgtvxIJPCRadxw2PxJWyh9Yhj263d8qLstpSKPrUhNi8ZwMyg4Y9ans4Lb umgR4zY6A7prGLI8fpk+u+fqmAMg+Kg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1g0pGz-0000ua-0C; Fri, 14 Sep 2018 14:40:41 +0000 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g0pGt-0000dQ-Sq for linux-arm-kernel@lists.infradead.org; Fri, 14 Sep 2018 14:40:38 +0000 Received: by mail-wm1-x341.google.com with SMTP id n11-v6so2188114wmc.2 for ; Fri, 14 Sep 2018 07:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=C7YmUP7Ahf5v3p/iKKH5UAXvHZeq2ka+DLDLIyWbPL4=; b=lAn3HCm2GDNkL0il7S9rSNAQghqC44FhgFZlupusRbwwrOEnu/2UCWta8LV4KU8GTb mRafyifWEc4BCwZWPg5AqbTvTV8d1LAgistgu+6XB0YKK/QWbFiWyUFRhTHTMtDlDMJR r+Aip/BrD5faR4aYhqzO0zxQTyoMEcliFvPxsfEy7eFqiDsqJlB9znoyeojWX+PYVxSj ohhUI3qk8T/r+2nUIsLmR+g++GUNm3ybGRAYkjL1rkaX7Jp7fRFOCtrmV9SWlC9y8SmG zJ+mgoPYFe1rfbCegMXJCziks9MWAyAYPwosNfvlI5Qo4KTQoacL9qIDAfCrSLnZQ15i 1jww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=C7YmUP7Ahf5v3p/iKKH5UAXvHZeq2ka+DLDLIyWbPL4=; b=RFg2RGF38l6UvibgD60aeOnHodtJv4EE3MZARNG73X++N40UBKUCufNX/DJ2tAE6Jb 9/khzxuIqxe/XZrSBjnUJgLG3HCclnYH3OL2D5LCDvXkdYhc2k5aax3Hj3FX+MAhEhg1 otZ9BuwUA8GMcrZaCLBLOEEUjX0GHvpI/qWN7tyEc8hqjI2T1jXO+fgLedtynLNs554Z 7YZnaDQ6XlsgUyf96l6ssYXRgGTByxRs58kdABnwSpfkcrzJZxj30HMkgys+uVHNiXgn 1lzzrWMLTbMwaf0UqDEoBroa3Nd3lExROCnaSyXDMLDVCfBAVlwiCHRasjY9RX6OWt5N +bMg== X-Gm-Message-State: APzg51ASRGkzH/ihZRkG2rJg2CFj4an2jbZLeWpRG2VRBiwBJUxcRH0B tlSE4Ny7wH5zqLolXDViSkMSAw== X-Google-Smtp-Source: ANB0VdYEO6bcD1lGmqRTqpsRb958+seos+wM7pVFx/DAoaSomJGJh0A7qtiBwrM/wPmph6xZfg1pfA== X-Received: by 2002:a1c:c5cc:: with SMTP id v195-v6mr2660444wmf.29.1536936023793; Fri, 14 Sep 2018 07:40:23 -0700 (PDT) Received: from brgl-bgdev.home ([2a01:cb1d:af:5b00:e837:b8d5:48c1:571b]) by smtp.gmail.com with ESMTPSA id v46-v6sm10313526wrc.63.2018.09.14.07.40.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Sep 2018 07:40:23 -0700 (PDT) From: Bartosz Golaszewski To: Srinivas Kandagatla , "David S . Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Andrew Morton , Arnd Bergmann , Jonathan Corbet , Sekhar Nori , Kevin Hilman , David Lechner , Boris Brezillon , Andrew Lunn , Alban Bedel , Maxime Ripard , Chen-Yu Tsai Subject: [PATCH v4 00/22] nvmem: rework of the subsystem for non-DT users Date: Fri, 14 Sep 2018 16:39:49 +0200 Message-Id: <20180914144011.27614-1-brgl@bgdev.pl> X-Mailer: git-send-email 2.18.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180914_074035_972382_0B25EB16 X-CRM114-Status: GOOD ( 19.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bartosz Golaszewski , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Bartosz Golaszewski NOTE: I decided to post v4 despite no new reviews from Srinivas as I'll be off next week. There were a couple issues reported by the kbuild bot and one bug I noticed after sending v3. This series contains nvmem framework changes prerequisite for further development of my previous series[1] that aims at removal of the platform data struct from at24 EEPROM driver. The patches are conceptually split into a couple groups. First five patches fix issues with existing issues. Patch 6 switches the nvmem providers to using kref which is necessary for removal of the return value from nvmem_unregister(). This is an approach similar to the one used in the clock framework where the provider is only removed after the last reference to it is dropped. Patch 7 changes the errno returned from the driver after kzalloc() fails from -EINVAL to -ENOMEM which makes more sense. Patches 8-10 convert last remaining users of nvmem_unregister() who still check its return value to using devm_nvmem_unregister() and patch 11 changes its return value from int to void. Patches 12-15 introduce the most significant changes of this series: we remove the global cell list, add support for static cell definitions external to the provider structure, change the way DT lookup works and allow to associate resources and consumers using lookup tables. The way nvmem_cell_get() for non-DT users is changed but there are no current users and it's currently broken anyway (cell being removed after a call to nvmem_cell_put()). Patch 16 updates the documentation. Patch 17 adds support for notifiers to nvmem so that users can subscribe for events such as device or cell registration or removal. Patches 18 & 19 add some minor improvements to the codebase. Last three patches contain fixes to warnings emitted by checkpatch. It's a good moment to add them if we're already touching a big part of the subsystem's code. Tested both DT and non-DT use cases. [1] https://lkml.org/lkml/2018/8/10/149 v1 -> v2: - extended the lookup structure with a proper con_id independent from the cell name defined in the cell definition table - added a patch that makes the naming convention for the cell name argument in the nvmem_cell_get() family of functions consistent - there were two users of nvmem_unregister() that still checked the return value, now switched to devm_nvmem_register() - fixed build failures reported by kbuild test robot v2 -> v3: - dropped the patch removing unused APIs and introduced changes on top of existing code instead - fixed nvmem provider reference decreasing in error paths - added checkpatch fixes - removed nvmem-machine.h and distributed new definitions among existing consumer and provider headers - reordered patches thematically - added more patches fixing issues in existing codebase v3 -> v4: - fixed the notifier chain call when removing nvmem devices: call the notifier chain for NVMEM_REMOVE before releasing any resources - added patch 7/22 ("sunxi_sid: return -ENOMEM if kzalloc() fails") - fixed the return value in error path for patch 8/22 ("sunxi_sid: use devm_nvmem_register())" - fixed the return value of devm_nvmem_unregister() in patch 11/22 ("change the signature of nvmem_unregister()") Bartosz Golaszewski (22): nvmem: provide nvmem_dev_name() nvmem: remove the name field from struct nvmem_device nvmem: use list_for_each_entry_safe in nvmem_device_remove_all_cells() nvmem: remove a stray newline nvmem: check the return value of nvmem_add_cells() nvmem: use kref nvmem: sunxi_sid: return -ENOMEM if kzalloc() fails nvmem: sunxi_sid: use devm_nvmem_register() nvmem: lpc18xx_eeprom: use devm_nvmem_register() nvmem: mxs-ocotp: use devm_nvmem_register() nvmem: change the signature of nvmem_unregister() nvmem: remove the global cell list nvmem: add support for cell info nvmem: resolve cells from DT at registration time nvmem: add support for cell lookups from machine code Documentation: nvmem: document cell tables and lookup entries nvmem: add a notifier chain nvmem: use SPDX license identifiers nvmem: make the naming of arguments in nvmem_cell_get() consistent nvmem: use EOPNOTSUPP instead of ENOSYS nvmem: fix commenting style nvmem: use octal permissions instead of constants Documentation/nvmem/nvmem.txt | 31 ++ drivers/nvmem/core.c | 527 ++++++++++++++++++++++----------- drivers/nvmem/lpc18xx_eeprom.c | 6 +- drivers/nvmem/mxs-ocotp.c | 4 +- drivers/nvmem/sunxi_sid.c | 20 +- include/linux/nvmem-consumer.h | 100 +++++-- include/linux/nvmem-provider.h | 50 ++-- 7 files changed, 497 insertions(+), 241 deletions(-)