mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
@ 2026-07-02  9:24 Bartosz Golaszewski
  2026-07-02  9:40 ` Arnd Bergmann
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Bartosz Golaszewski @ 2026-07-02  9:24 UTC (permalink / raw)
  To: Arnd Bergmann, Greg Kroah-Hartman, Srinivas Kandagatla,
	Wolfram Sang, Andi Shyti, Bartosz Golaszewski
  Cc: linux-kernel, Bartosz Golaszewski

For historical reasons EEPROM drivers have lived under
drivers/misc/eeprom/. Also for historical reasons changes to most of
them would go through the char-misc tree while some would be queued
through the I2C tree. Over the years some of them have also been
converted to using nvmem - the dedicated subsystem for non-volatile
memory - while get_maintainer.pl does not Cc the maintainer of nvmem on
patches changing them.

Move the EEPROM drivers using nvmem under drivers/nvmem/ for
consistency of the review process and path upstream.

Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
Changes in v2:
- Put the Kconfig entries behind a NVMEM_SYSFS guard
- Rebase on top of v7.2-rc1
- Link to v1: https://patch.msgid.link/20260618-eeprom-move-to-nvmem-v1-1-21771f30efcc@oss.qualcomm.com
---
 MAINTAINERS                                    |  4 +-
 drivers/misc/eeprom/Kconfig                    | 93 --------------------------
 drivers/misc/eeprom/Makefile                   |  5 --
 drivers/nvmem/Kconfig                          | 87 ++++++++++++++++++++++++
 drivers/nvmem/Makefile                         |  5 ++
 drivers/{misc/eeprom => nvmem}/at24.c          |  0
 drivers/{misc/eeprom => nvmem}/at25.c          |  0
 drivers/{misc/eeprom => nvmem}/ee1004.c        |  0
 drivers/{misc/eeprom => nvmem}/eeprom_93xx46.c |  0
 drivers/{misc/eeprom => nvmem}/m24lr.c         |  0
 10 files changed, 94 insertions(+), 100 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 15011f5752a994cf1b354f490d6c4e411588df88..ea5bb279a09f890ca2039b01c4f53316ae1438fe 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4168,11 +4168,11 @@ F:	include/linux/async_tx.h
 
 AT24 EEPROM DRIVER
 M:	Bartosz Golaszewski <brgl@kernel.org>
-L:	linux-i2c@vger.kernel.org
+L:	linux-kernel@vger.kernel.org
 S:	Maintained
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
 F:	Documentation/devicetree/bindings/eeprom/at24.yaml
-F:	drivers/misc/eeprom/at24.c
+F:	drivers/nvmem/at24.c
 
 ATA OVER ETHERNET (AOE) DRIVER
 M:	"Justin Sanders" <justin@coraid.com>
diff --git a/drivers/misc/eeprom/Kconfig b/drivers/misc/eeprom/Kconfig
index 4d0ce47aa282c12dc277661cae552cca1923ec0d..d6af02588c6677997b34ceb175553480cd76d685 100644
--- a/drivers/misc/eeprom/Kconfig
+++ b/drivers/misc/eeprom/Kconfig
@@ -1,52 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 menu "EEPROM support"
 
-config EEPROM_AT24
-	tristate "I2C EEPROMs / RAMs / ROMs from most vendors"
-	depends on I2C && SYSFS
-	select NVMEM
-	select NVMEM_SYSFS
-	select REGMAP
-	select REGMAP_I2C
-	help
-	  Enable this driver to get read/write support to most I2C EEPROMs
-	  and compatible devices like FRAMs, SRAMs, ROMs etc. After you
-	  configure the driver to know about each chip on your target
-	  board.  Use these generic chip names, instead of vendor-specific
-	  ones like at24c64, 24lc02 or fm24c04:
-
-	     24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08,
-	     24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048
-
-	  Unless you like data loss puzzles, always be sure that any chip
-	  you configure as a 24c32 (32 kbit) or larger is NOT really a
-	  24c16 (16 kbit) or smaller, and vice versa. Marking the chip
-	  as read-only won't help recover from this. Also, if your chip
-	  has any software write-protect mechanism you may want to review the
-	  code to make sure this driver won't turn it on by accident.
-
-	  If you use this with an SMBus adapter instead of an I2C adapter,
-	  full functionality is not available.  Only smaller devices are
-	  supported (24c16 and below, max 4 kByte).
-
-	  This driver can also be built as a module.  If so, the module
-	  will be called at24.
-
-config EEPROM_AT25
-	tristate "SPI EEPROMs (FRAMs) from most vendors"
-	depends on SPI && SYSFS
-	select NVMEM
-	select NVMEM_SYSFS
-	select SPI_MEM
-	help
-	  Enable this driver to get read/write support to most SPI EEPROMs
-	  and Cypress FRAMs,
-	  after you configure the board init code to know about each eeprom
-	  on your target board.
-
-	  This driver can also be built as a module.  If so, the module
-	  will be called at25.
-
 config EEPROM_MAX6875
 	tristate "Maxim MAX6874/5 power supply supervisor"
 	depends on I2C
@@ -69,22 +23,6 @@ config EEPROM_93CX6
 
 	  If unsure, say N.
 
-config EEPROM_93XX46
-	tristate "Microwire EEPROM 93XX46 support"
-	depends on SPI && SYSFS
-	select REGMAP
-	select NVMEM
-	select NVMEM_SYSFS
-	help
-	  Driver for the microwire EEPROM chipsets 93xx46x. The driver
-	  supports both read and write commands and also the command to
-	  erase the whole EEPROM.
-
-	  This driver can also be built as a module.  If so, the module
-	  will be called eeprom_93xx46.
-
-	  If unsure, say N.
-
 config EEPROM_DIGSY_MTC_CFG
 	bool "DigsyMTC display configuration EEPROMs device"
 	depends on GPIO_MPC5200 && SPI_GPIO
@@ -107,35 +45,4 @@ config EEPROM_IDT_89HPESX
 	  This driver can also be built as a module. If so, the module
 	  will be called idt_89hpesx.
 
-config EEPROM_EE1004
-	tristate "SPD EEPROMs on DDR4 memory modules"
-	depends on I2C && SYSFS
-	select NVMEM
-	select NVMEM_SYSFS
-	help
-	  Enable this driver to get read support to SPD EEPROMs following
-	  the JEDEC EE1004 standard. These are typically found on DDR4
-	  SDRAM memory modules.
-
-	  This driver can also be built as a module.  If so, the module
-	  will be called ee1004.
-
-config EEPROM_M24LR
-	tristate "STMicroelectronics M24LR RFID/NFC EEPROM support"
-	depends on I2C && SYSFS
-	select REGMAP_I2C
-	select NVMEM
-	select NVMEM_SYSFS
-	help
-	  This enables support for STMicroelectronics M24LR RFID/NFC EEPROM
-	  chips. These dual-interface devices expose two I2C addresses:
-	  one for EEPROM memory access and another for control and system
-	  configuration (e.g. UID, password handling).
-
-	  This driver provides a sysfs interface for control functions and
-	  integrates with the nvmem subsystem for EEPROM access.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called m24lr.
-
 endmenu
diff --git a/drivers/misc/eeprom/Makefile b/drivers/misc/eeprom/Makefile
index 8f311fd6a4ce18bd621995811fcf3e971b0988cb..44a20cf025a1b4cb244b5c50d5542e3470b5e977 100644
--- a/drivers/misc/eeprom/Makefile
+++ b/drivers/misc/eeprom/Makefile
@@ -1,10 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_EEPROM_AT24)	+= at24.o
-obj-$(CONFIG_EEPROM_AT25)	+= at25.o
 obj-$(CONFIG_EEPROM_MAX6875)	+= max6875.o
 obj-$(CONFIG_EEPROM_93CX6)	+= eeprom_93cx6.o
-obj-$(CONFIG_EEPROM_93XX46)	+= eeprom_93xx46.o
 obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
 obj-$(CONFIG_EEPROM_IDT_89HPESX) += idt_89hpesx.o
-obj-$(CONFIG_EEPROM_EE1004)	+= ee1004.o
-obj-$(CONFIG_EEPROM_M24LR) += m24lr.o
diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
index 74ddbd0f79b0ece5a657c70f90aa04c4fef6fdee..bb8e2952ec7c751e72b260d197ebaecd5ceb0bd3 100644
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
@@ -28,6 +28,93 @@ source "drivers/nvmem/layouts/Kconfig"
 
 # Devices
 
+if NVMEM_SYSFS
+
+config EEPROM_AT24
+	tristate "I2C EEPROMs / RAMs / ROMs from most vendors"
+	depends on I2C && SYSFS
+	select REGMAP
+	select REGMAP_I2C
+	help
+	  Enable this driver to get read/write support to most I2C EEPROMs
+	  and compatible devices like FRAMs, SRAMs, ROMs etc. After you
+	  configure the driver to know about each chip on your target
+	  board.  Use these generic chip names, instead of vendor-specific
+	  ones like at24c64, 24lc02 or fm24c04:
+
+	     24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08,
+	     24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048
+
+	  Unless you like data loss puzzles, always be sure that any chip
+	  you configure as a 24c32 (32 kbit) or larger is NOT really a
+	  24c16 (16 kbit) or smaller, and vice versa. Marking the chip
+	  as read-only won't help recover from this. Also, if your chip
+	  has any software write-protect mechanism you may want to review the
+	  code to make sure this driver won't turn it on by accident.
+
+	  If you use this with an SMBus adapter instead of an I2C adapter,
+	  full functionality is not available.  Only smaller devices are
+	  supported (24c16 and below, max 4 kByte).
+
+	  This driver can also be built as a module.  If so, the module
+	  will be called at24.
+
+config EEPROM_AT25
+	tristate "SPI EEPROMs (FRAMs) from most vendors"
+	depends on SPI && SYSFS
+	select SPI_MEM
+	help
+	  Enable this driver to get read/write support to most SPI EEPROMs
+	  and Cypress FRAMs,
+	  after you configure the board init code to know about each eeprom
+	  on your target board.
+
+	  This driver can also be built as a module.  If so, the module
+	  will be called at25.
+
+config EEPROM_93XX46
+	tristate "Microwire EEPROM 93XX46 support"
+	depends on SPI && SYSFS
+	select REGMAP
+	help
+	  Driver for the microwire EEPROM chipsets 93xx46x. The driver
+	  supports both read and write commands and also the command to
+	  erase the whole EEPROM.
+
+	  This driver can also be built as a module.  If so, the module
+	  will be called eeprom_93xx46.
+
+	  If unsure, say N.
+
+config EEPROM_EE1004
+	tristate "SPD EEPROMs on DDR4 memory modules"
+	depends on I2C && SYSFS
+	help
+	  Enable this driver to get read support to SPD EEPROMs following
+	  the JEDEC EE1004 standard. These are typically found on DDR4
+	  SDRAM memory modules.
+
+	  This driver can also be built as a module.  If so, the module
+	  will be called ee1004.
+
+config EEPROM_M24LR
+	tristate "STMicroelectronics M24LR RFID/NFC EEPROM support"
+	depends on I2C && SYSFS
+	select REGMAP_I2C
+	help
+	  This enables support for STMicroelectronics M24LR RFID/NFC EEPROM
+	  chips. These dual-interface devices expose two I2C addresses:
+	  one for EEPROM memory access and another for control and system
+	  configuration (e.g. UID, password handling).
+
+	  This driver provides a sysfs interface for control functions and
+	  integrates with the nvmem subsystem for EEPROM access.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called m24lr.
+
+endif # NVMEM_SYSFS
+
 config NVMEM_AN8855_EFUSE
 	tristate "Airoha AN8855 eFuse support"
 	depends on COMPILE_TEST
diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
index 7252b8ec88d46981f0f4e78ec795b5a304bd9dd2..a27791800f8cccaa7391cfafd81944850cbaf6e0 100644
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
@@ -10,6 +10,11 @@ nvmem_layouts-y			:= layouts.o
 obj-y				+= layouts/
 
 # Devices
+obj-$(CONFIG_EEPROM_AT24)		+= at24.o
+obj-$(CONFIG_EEPROM_AT25)		+= at25.o
+obj-$(CONFIG_EEPROM_93XX46)		+= eeprom_93xx46.o
+obj-$(CONFIG_EEPROM_EE1004)		+= ee1004.o
+obj-$(CONFIG_EEPROM_M24LR)		+= m24lr.o
 obj-$(CONFIG_NVMEM_AN8855_EFUSE)	+= nvmem-an8855-efuse.o
 nvmem-an8855-efuse-y 			:= an8855-efuse.o
 obj-$(CONFIG_NVMEM_APPLE_EFUSES)	+= nvmem-apple-efuses.o
diff --git a/drivers/misc/eeprom/at24.c b/drivers/nvmem/at24.c
similarity index 100%
rename from drivers/misc/eeprom/at24.c
rename to drivers/nvmem/at24.c
diff --git a/drivers/misc/eeprom/at25.c b/drivers/nvmem/at25.c
similarity index 100%
rename from drivers/misc/eeprom/at25.c
rename to drivers/nvmem/at25.c
diff --git a/drivers/misc/eeprom/ee1004.c b/drivers/nvmem/ee1004.c
similarity index 100%
rename from drivers/misc/eeprom/ee1004.c
rename to drivers/nvmem/ee1004.c
diff --git a/drivers/misc/eeprom/eeprom_93xx46.c b/drivers/nvmem/eeprom_93xx46.c
similarity index 100%
rename from drivers/misc/eeprom/eeprom_93xx46.c
rename to drivers/nvmem/eeprom_93xx46.c
diff --git a/drivers/misc/eeprom/m24lr.c b/drivers/nvmem/m24lr.c
similarity index 100%
rename from drivers/misc/eeprom/m24lr.c
rename to drivers/nvmem/m24lr.c

---
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260618-eeprom-move-to-nvmem-a1b55796d9a6

Best regards,
-- 
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
  2026-07-02  9:24 [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/ Bartosz Golaszewski
@ 2026-07-02  9:40 ` Arnd Bergmann
  2026-07-02 14:42 ` Greg Kroah-Hartman
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Arnd Bergmann @ 2026-07-02  9:40 UTC (permalink / raw)
  To: Bartosz Golaszewski, Greg Kroah-Hartman, Srinivas Kandagatla,
	Wolfram Sang, Andi Shyti, Bartosz Golaszewski
  Cc: linux-kernel

On Thu, Jul 2, 2026, at 11:24, Bartosz Golaszewski wrote:
> For historical reasons EEPROM drivers have lived under
> drivers/misc/eeprom/. Also for historical reasons changes to most of
> them would go through the char-misc tree while some would be queued
> through the I2C tree. Over the years some of them have also been
> converted to using nvmem - the dedicated subsystem for non-volatile
> memory - while get_maintainer.pl does not Cc the maintainer of nvmem on
> patches changing them.
>
> Move the EEPROM drivers using nvmem under drivers/nvmem/ for
> consistency of the review process and path upstream.
>
> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Signed-off-by: Bartosz Golaszewski 
> <bartosz.golaszewski@oss.qualcomm.com>

Acked-by: Arnd Bergmann <arnd@arndb.de>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
  2026-07-02  9:24 [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/ Bartosz Golaszewski
  2026-07-02  9:40 ` Arnd Bergmann
@ 2026-07-02 14:42 ` Greg Kroah-Hartman
  2026-07-08 20:33 ` Srinivas Kandagatla
  2026-07-12  7:42 ` Srinivas Kandagatla
  3 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2026-07-02 14:42 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Arnd Bergmann, Srinivas Kandagatla, Wolfram Sang, Andi Shyti,
	Bartosz Golaszewski, linux-kernel

On Thu, Jul 02, 2026 at 11:24:37AM +0200, Bartosz Golaszewski wrote:
> For historical reasons EEPROM drivers have lived under
> drivers/misc/eeprom/. Also for historical reasons changes to most of
> them would go through the char-misc tree while some would be queued
> through the I2C tree. Over the years some of them have also been
> converted to using nvmem - the dedicated subsystem for non-volatile
> memory - while get_maintainer.pl does not Cc the maintainer of nvmem on
> patches changing them.
> 
> Move the EEPROM drivers using nvmem under drivers/nvmem/ for
> consistency of the review process and path upstream.
> 
> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> ---
> Changes in v2:
> - Put the Kconfig entries behind a NVMEM_SYSFS guard
> - Rebase on top of v7.2-rc1
> - Link to v1: https://patch.msgid.link/20260618-eeprom-move-to-nvmem-v1-1-21771f30efcc@oss.qualcomm.com

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
  2026-07-02  9:24 [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/ Bartosz Golaszewski
  2026-07-02  9:40 ` Arnd Bergmann
  2026-07-02 14:42 ` Greg Kroah-Hartman
@ 2026-07-08 20:33 ` Srinivas Kandagatla
  2026-07-12  7:42 ` Srinivas Kandagatla
  3 siblings, 0 replies; 5+ messages in thread
From: Srinivas Kandagatla @ 2026-07-08 20:33 UTC (permalink / raw)
  To: Bartosz Golaszewski, Arnd Bergmann, Greg Kroah-Hartman,
	Srinivas Kandagatla, Wolfram Sang, Andi Shyti,
	Bartosz Golaszewski
  Cc: linux-kernel



On 7/2/26 10:24 AM, Bartosz Golaszewski wrote:
> For historical reasons EEPROM drivers have lived under
> drivers/misc/eeprom/. Also for historical reasons changes to most of
> them would go through the char-misc tree while some would be queued
> through the I2C tree. Over the years some of them have also been
> converted to using nvmem - the dedicated subsystem for non-volatile
> memory - while get_maintainer.pl does not Cc the maintainer of nvmem on
> patches changing them.
> 
> Move the EEPROM drivers using nvmem under drivers/nvmem/ for
> consistency of the review process and path upstream.
> 
> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> ---
> Changes in v2:
> - Put the Kconfig entries behind a NVMEM_SYSFS guard
> - Rebase on top of v7.2-rc1
> - Link to v1: https://patch.msgid.link/20260618-eeprom-move-to-nvmem-v1-1-21771f30efcc@oss.qualcomm.com
> ---
>  MAINTAINERS                                    |  4 +-
>  drivers/misc/eeprom/Kconfig                    | 93 --------------------------
>  drivers/misc/eeprom/Makefile                   |  5 --
>  drivers/nvmem/Kconfig                          | 87 ++++++++++++++++++++++++
>  drivers/nvmem/Makefile                         |  5 ++
>  drivers/{misc/eeprom => nvmem}/at24.c          |  0
>  drivers/{misc/eeprom => nvmem}/at25.c          |  0
>  drivers/{misc/eeprom => nvmem}/ee1004.c        |  0
>  drivers/{misc/eeprom => nvmem}/eeprom_93xx46.c |  0
>  drivers/{misc/eeprom => nvmem}/m24lr.c         |  0
>  10 files changed, 94 insertions(+), 100 deletions(-)
> 
Hi Bart,

This Does not apply to linux-next, can you please rebase and send

--srini
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 15011f5752a994cf1b354f490d6c4e411588df88..ea5bb279a09f890ca2039b01c4f53316ae1438fe 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4168,11 +4168,11 @@ F:	include/linux/async_tx.h
>  
>  AT24 EEPROM DRIVER
>  M:	Bartosz Golaszewski <brgl@kernel.org>
> -L:	linux-i2c@vger.kernel.org
> +L:	linux-kernel@vger.kernel.org
>  S:	Maintained
>  T:	git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
>  F:	Documentation/devicetree/bindings/eeprom/at24.yaml
> -F:	drivers/misc/eeprom/at24.c
> +F:	drivers/nvmem/at24.c
>  
>  ATA OVER ETHERNET (AOE) DRIVER
>  M:	"Justin Sanders" <justin@coraid.com>
> diff --git a/drivers/misc/eeprom/Kconfig b/drivers/misc/eeprom/Kconfig
> index 4d0ce47aa282c12dc277661cae552cca1923ec0d..d6af02588c6677997b34ceb175553480cd76d685 100644
> --- a/drivers/misc/eeprom/Kconfig
> +++ b/drivers/misc/eeprom/Kconfig
> @@ -1,52 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0-only
>  menu "EEPROM support"
>  
> -config EEPROM_AT24
> -	tristate "I2C EEPROMs / RAMs / ROMs from most vendors"
> -	depends on I2C && SYSFS
> -	select NVMEM
> -	select NVMEM_SYSFS
> -	select REGMAP
> -	select REGMAP_I2C
> -	help
> -	  Enable this driver to get read/write support to most I2C EEPROMs
> -	  and compatible devices like FRAMs, SRAMs, ROMs etc. After you
> -	  configure the driver to know about each chip on your target
> -	  board.  Use these generic chip names, instead of vendor-specific
> -	  ones like at24c64, 24lc02 or fm24c04:
> -
> -	     24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08,
> -	     24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048
> -
> -	  Unless you like data loss puzzles, always be sure that any chip
> -	  you configure as a 24c32 (32 kbit) or larger is NOT really a
> -	  24c16 (16 kbit) or smaller, and vice versa. Marking the chip
> -	  as read-only won't help recover from this. Also, if your chip
> -	  has any software write-protect mechanism you may want to review the
> -	  code to make sure this driver won't turn it on by accident.
> -
> -	  If you use this with an SMBus adapter instead of an I2C adapter,
> -	  full functionality is not available.  Only smaller devices are
> -	  supported (24c16 and below, max 4 kByte).
> -
> -	  This driver can also be built as a module.  If so, the module
> -	  will be called at24.
> -
> -config EEPROM_AT25
> -	tristate "SPI EEPROMs (FRAMs) from most vendors"
> -	depends on SPI && SYSFS
> -	select NVMEM
> -	select NVMEM_SYSFS
> -	select SPI_MEM
> -	help
> -	  Enable this driver to get read/write support to most SPI EEPROMs
> -	  and Cypress FRAMs,
> -	  after you configure the board init code to know about each eeprom
> -	  on your target board.
> -
> -	  This driver can also be built as a module.  If so, the module
> -	  will be called at25.
> -
>  config EEPROM_MAX6875
>  	tristate "Maxim MAX6874/5 power supply supervisor"
>  	depends on I2C
> @@ -69,22 +23,6 @@ config EEPROM_93CX6
>  
>  	  If unsure, say N.
>  
> -config EEPROM_93XX46
> -	tristate "Microwire EEPROM 93XX46 support"
> -	depends on SPI && SYSFS
> -	select REGMAP
> -	select NVMEM
> -	select NVMEM_SYSFS
> -	help
> -	  Driver for the microwire EEPROM chipsets 93xx46x. The driver
> -	  supports both read and write commands and also the command to
> -	  erase the whole EEPROM.
> -
> -	  This driver can also be built as a module.  If so, the module
> -	  will be called eeprom_93xx46.
> -
> -	  If unsure, say N.
> -
>  config EEPROM_DIGSY_MTC_CFG
>  	bool "DigsyMTC display configuration EEPROMs device"
>  	depends on GPIO_MPC5200 && SPI_GPIO
> @@ -107,35 +45,4 @@ config EEPROM_IDT_89HPESX
>  	  This driver can also be built as a module. If so, the module
>  	  will be called idt_89hpesx.
>  
> -config EEPROM_EE1004
> -	tristate "SPD EEPROMs on DDR4 memory modules"
> -	depends on I2C && SYSFS
> -	select NVMEM
> -	select NVMEM_SYSFS
> -	help
> -	  Enable this driver to get read support to SPD EEPROMs following
> -	  the JEDEC EE1004 standard. These are typically found on DDR4
> -	  SDRAM memory modules.
> -
> -	  This driver can also be built as a module.  If so, the module
> -	  will be called ee1004.
> -
> -config EEPROM_M24LR
> -	tristate "STMicroelectronics M24LR RFID/NFC EEPROM support"
> -	depends on I2C && SYSFS
> -	select REGMAP_I2C
> -	select NVMEM
> -	select NVMEM_SYSFS
> -	help
> -	  This enables support for STMicroelectronics M24LR RFID/NFC EEPROM
> -	  chips. These dual-interface devices expose two I2C addresses:
> -	  one for EEPROM memory access and another for control and system
> -	  configuration (e.g. UID, password handling).
> -
> -	  This driver provides a sysfs interface for control functions and
> -	  integrates with the nvmem subsystem for EEPROM access.
> -
> -	  To compile this driver as a module, choose M here: the
> -	  module will be called m24lr.
> -
>  endmenu
> diff --git a/drivers/misc/eeprom/Makefile b/drivers/misc/eeprom/Makefile
> index 8f311fd6a4ce18bd621995811fcf3e971b0988cb..44a20cf025a1b4cb244b5c50d5542e3470b5e977 100644
> --- a/drivers/misc/eeprom/Makefile
> +++ b/drivers/misc/eeprom/Makefile
> @@ -1,10 +1,5 @@
>  # SPDX-License-Identifier: GPL-2.0
> -obj-$(CONFIG_EEPROM_AT24)	+= at24.o
> -obj-$(CONFIG_EEPROM_AT25)	+= at25.o
>  obj-$(CONFIG_EEPROM_MAX6875)	+= max6875.o
>  obj-$(CONFIG_EEPROM_93CX6)	+= eeprom_93cx6.o
> -obj-$(CONFIG_EEPROM_93XX46)	+= eeprom_93xx46.o
>  obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
>  obj-$(CONFIG_EEPROM_IDT_89HPESX) += idt_89hpesx.o
> -obj-$(CONFIG_EEPROM_EE1004)	+= ee1004.o
> -obj-$(CONFIG_EEPROM_M24LR) += m24lr.o
> diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
> index 74ddbd0f79b0ece5a657c70f90aa04c4fef6fdee..bb8e2952ec7c751e72b260d197ebaecd5ceb0bd3 100644
> --- a/drivers/nvmem/Kconfig
> +++ b/drivers/nvmem/Kconfig
> @@ -28,6 +28,93 @@ source "drivers/nvmem/layouts/Kconfig"
>  
>  # Devices
>  
> +if NVMEM_SYSFS
> +
> +config EEPROM_AT24
> +	tristate "I2C EEPROMs / RAMs / ROMs from most vendors"
> +	depends on I2C && SYSFS
> +	select REGMAP
> +	select REGMAP_I2C
> +	help
> +	  Enable this driver to get read/write support to most I2C EEPROMs
> +	  and compatible devices like FRAMs, SRAMs, ROMs etc. After you
> +	  configure the driver to know about each chip on your target
> +	  board.  Use these generic chip names, instead of vendor-specific
> +	  ones like at24c64, 24lc02 or fm24c04:
> +
> +	     24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08,
> +	     24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048
> +
> +	  Unless you like data loss puzzles, always be sure that any chip
> +	  you configure as a 24c32 (32 kbit) or larger is NOT really a
> +	  24c16 (16 kbit) or smaller, and vice versa. Marking the chip
> +	  as read-only won't help recover from this. Also, if your chip
> +	  has any software write-protect mechanism you may want to review the
> +	  code to make sure this driver won't turn it on by accident.
> +
> +	  If you use this with an SMBus adapter instead of an I2C adapter,
> +	  full functionality is not available.  Only smaller devices are
> +	  supported (24c16 and below, max 4 kByte).
> +
> +	  This driver can also be built as a module.  If so, the module
> +	  will be called at24.
> +
> +config EEPROM_AT25
> +	tristate "SPI EEPROMs (FRAMs) from most vendors"
> +	depends on SPI && SYSFS
> +	select SPI_MEM
> +	help
> +	  Enable this driver to get read/write support to most SPI EEPROMs
> +	  and Cypress FRAMs,
> +	  after you configure the board init code to know about each eeprom
> +	  on your target board.
> +
> +	  This driver can also be built as a module.  If so, the module
> +	  will be called at25.
> +
> +config EEPROM_93XX46
> +	tristate "Microwire EEPROM 93XX46 support"
> +	depends on SPI && SYSFS
> +	select REGMAP
> +	help
> +	  Driver for the microwire EEPROM chipsets 93xx46x. The driver
> +	  supports both read and write commands and also the command to
> +	  erase the whole EEPROM.
> +
> +	  This driver can also be built as a module.  If so, the module
> +	  will be called eeprom_93xx46.
> +
> +	  If unsure, say N.
> +
> +config EEPROM_EE1004
> +	tristate "SPD EEPROMs on DDR4 memory modules"
> +	depends on I2C && SYSFS
> +	help
> +	  Enable this driver to get read support to SPD EEPROMs following
> +	  the JEDEC EE1004 standard. These are typically found on DDR4
> +	  SDRAM memory modules.
> +
> +	  This driver can also be built as a module.  If so, the module
> +	  will be called ee1004.
> +
> +config EEPROM_M24LR
> +	tristate "STMicroelectronics M24LR RFID/NFC EEPROM support"
> +	depends on I2C && SYSFS
> +	select REGMAP_I2C
> +	help
> +	  This enables support for STMicroelectronics M24LR RFID/NFC EEPROM
> +	  chips. These dual-interface devices expose two I2C addresses:
> +	  one for EEPROM memory access and another for control and system
> +	  configuration (e.g. UID, password handling).
> +
> +	  This driver provides a sysfs interface for control functions and
> +	  integrates with the nvmem subsystem for EEPROM access.
> +
> +	  To compile this driver as a module, choose M here: the
> +	  module will be called m24lr.
> +
> +endif # NVMEM_SYSFS
> +
>  config NVMEM_AN8855_EFUSE
>  	tristate "Airoha AN8855 eFuse support"
>  	depends on COMPILE_TEST
> diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
> index 7252b8ec88d46981f0f4e78ec795b5a304bd9dd2..a27791800f8cccaa7391cfafd81944850cbaf6e0 100644
> --- a/drivers/nvmem/Makefile
> +++ b/drivers/nvmem/Makefile
> @@ -10,6 +10,11 @@ nvmem_layouts-y			:= layouts.o
>  obj-y				+= layouts/
>  
>  # Devices
> +obj-$(CONFIG_EEPROM_AT24)		+= at24.o
> +obj-$(CONFIG_EEPROM_AT25)		+= at25.o
> +obj-$(CONFIG_EEPROM_93XX46)		+= eeprom_93xx46.o
> +obj-$(CONFIG_EEPROM_EE1004)		+= ee1004.o
> +obj-$(CONFIG_EEPROM_M24LR)		+= m24lr.o
>  obj-$(CONFIG_NVMEM_AN8855_EFUSE)	+= nvmem-an8855-efuse.o
>  nvmem-an8855-efuse-y 			:= an8855-efuse.o
>  obj-$(CONFIG_NVMEM_APPLE_EFUSES)	+= nvmem-apple-efuses.o
> diff --git a/drivers/misc/eeprom/at24.c b/drivers/nvmem/at24.c
> similarity index 100%
> rename from drivers/misc/eeprom/at24.c
> rename to drivers/nvmem/at24.c
> diff --git a/drivers/misc/eeprom/at25.c b/drivers/nvmem/at25.c
> similarity index 100%
> rename from drivers/misc/eeprom/at25.c
> rename to drivers/nvmem/at25.c
> diff --git a/drivers/misc/eeprom/ee1004.c b/drivers/nvmem/ee1004.c
> similarity index 100%
> rename from drivers/misc/eeprom/ee1004.c
> rename to drivers/nvmem/ee1004.c
> diff --git a/drivers/misc/eeprom/eeprom_93xx46.c b/drivers/nvmem/eeprom_93xx46.c
> similarity index 100%
> rename from drivers/misc/eeprom/eeprom_93xx46.c
> rename to drivers/nvmem/eeprom_93xx46.c
> diff --git a/drivers/misc/eeprom/m24lr.c b/drivers/nvmem/m24lr.c
> similarity index 100%
> rename from drivers/misc/eeprom/m24lr.c
> rename to drivers/nvmem/m24lr.c
> 
> ---
> base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
> change-id: 20260618-eeprom-move-to-nvmem-a1b55796d9a6
> 
> Best regards,


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
  2026-07-02  9:24 [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/ Bartosz Golaszewski
                   ` (2 preceding siblings ...)
  2026-07-08 20:33 ` Srinivas Kandagatla
@ 2026-07-12  7:42 ` Srinivas Kandagatla
  3 siblings, 0 replies; 5+ messages in thread
From: Srinivas Kandagatla @ 2026-07-12  7:42 UTC (permalink / raw)
  To: Arnd Bergmann, Greg Kroah-Hartman, Wolfram Sang, Andi Shyti,
	Bartosz Golaszewski, Bartosz Golaszewski
  Cc: linux-kernel


On Thu, 02 Jul 2026 11:24:37 +0200, Bartosz Golaszewski wrote:
> For historical reasons EEPROM drivers have lived under
> drivers/misc/eeprom/. Also for historical reasons changes to most of
> them would go through the char-misc tree while some would be queued
> through the I2C tree. Over the years some of them have also been
> converted to using nvmem - the dedicated subsystem for non-volatile
> memory - while get_maintainer.pl does not Cc the maintainer of nvmem on
> patches changing them.
> 
> [...]

Applied, thanks!

[1/1] eeprom: move nvmem EEPROM drivers to drivers/nvmem/
      commit: addd9b7203a3dfb354fb3e4c117919032f719b46

Best regards,
-- 
Srinivas Kandagatla <srini@kernel.org>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-07-12  7:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-02  9:24 [PATCH v2] eeprom: move nvmem EEPROM drivers to drivers/nvmem/ Bartosz Golaszewski
2026-07-02  9:40 ` Arnd Bergmann
2026-07-02 14:42 ` Greg Kroah-Hartman
2026-07-08 20:33 ` Srinivas Kandagatla
2026-07-12  7:42 ` Srinivas Kandagatla

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome