Revert "nvmem: core: remove nvmem_config wp_gpio"

This reverts commit 89991ededcb557dcfe6398fa37eb182d01cfe257 which is
commit 569653f022a29a1a44ea9de5308b657228303fa5 upstream.

It breaks the Android kernel api, and isn't even really needed in the
5.10.y kernel tree yet, as there are no users of the new field.  So
revert it for now.  If it is needed, it can be brought back in an
abi-safe way in the future.

Bug: 161946584
Change-Id: Ib69df930ea19f91d0d35d792e3b90dc1d391980b
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 38c05fc..9da4edb 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -627,7 +627,9 @@
 
 	nvmem->id = rval;
 
-	if (!config->ignore_wp)
+	if (config->wp_gpio)
+		nvmem->wp_gpio = config->wp_gpio;
+	else if (!config->ignore_wp)
 		nvmem->wp_gpio = gpiod_get_optional(config->dev, "wp",
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(nvmem->wp_gpio)) {
diff --git a/include/linux/nvmem-provider.h b/include/linux/nvmem-provider.h
index 5e07f3c..39ec676 100644
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
@@ -49,6 +49,7 @@
  * @word_size:	Minimum read/write access granularity.
  * @stride:	Minimum read/write access stride.
  * @priv:	User context passed to read/write callbacks.
+ * @wp-gpio:	Write protect pin
  * @ignore_wp:  Write Protect pin is managed by the provider.
  *
  * Note: A default "nvmem<id>" name will be assigned to the device if
@@ -63,6 +64,7 @@
 	const char		*name;
 	int			id;
 	struct module		*owner;
+	struct gpio_desc	*wp_gpio;
 	const struct nvmem_cell_info	*cells;
 	int			ncells;
 	enum nvmem_type		type;