From 88ca8e26958b67c05844e7be85a7e983eb594793 Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Fri, 11 Mar 2022 12:10:01 -0700
Subject: [PATCH] disk: Add an option for partitions in SPL

In some cases we do not want to enable partition support in SPL. Add an
option to allow this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 disk/Kconfig               | 24 ++++++++++++++++++++----
 disk/Makefile              |  2 +-
 drivers/block/blk-uclass.c |  2 +-
 3 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/disk/Kconfig b/disk/Kconfig
index cee16a80bc..13700322e9 100644
--- a/disk/Kconfig
+++ b/disk/Kconfig
@@ -4,10 +4,6 @@ menu "Partition Types"
 config PARTITIONS
 	bool "Enable Partition Labels (disklabels) support"
 	default y
-	select SPL_SPRINTF if SPL
-	select TPL_SPRINTF if TPL
-	select SPL_STRTO if SPL
-	select TPL_STRTO if TPL
 	help
 	  Partition Labels (disklabels) Supported:
 	  Zero or more of the following:
@@ -23,6 +19,26 @@ config PARTITIONS
 	  you must configure support for at least one non-MTD partition type
 	  as well.
 
+config SPL_PARTITIONS
+	bool "Enable Partition Labels (disklabels) support in SPL"
+	default y if PARTITIONS
+	select SPL_SPRINTF
+	select SPL_STRTO
+	help
+	  Enable this for base partition support in SPL. The required
+	  partition table types shold be enabled separately. This add a
+	  small amount of size to SPL, typically 500 bytes.
+
+config TPL_PARTITIONS
+	bool "Enable Partition Labels (disklabels) support in TPL"
+	default y if PARTITIONS
+	select TPL_SPRINTF
+	select TPL_STRTO
+	help
+	  Enable this for base partition support in SPL. The required
+	  partition table types shold be enabled separately. This add a
+	  small amount of size to SPL, typically 500 bytes.
+
 config MAC_PARTITION
 	bool "Enable Apple's MacOS partition table"
 	depends on PARTITIONS
diff --git a/disk/Makefile b/disk/Makefile
index 6ce5a687b3..b197692c23 100644
--- a/disk/Makefile
+++ b/disk/Makefile
@@ -5,7 +5,7 @@
 
 #ccflags-y += -DET_DEBUG -DDEBUG
 
-obj-$(CONFIG_PARTITIONS)	+= part.o
+obj-$(CONFIG_$(SPL_TPL_)PARTITIONS)  += part.o
 obj-$(CONFIG_$(SPL_)MAC_PARTITION)   += part_mac.o
 obj-$(CONFIG_$(SPL_)DOS_PARTITION)   += part_dos.o
 obj-$(CONFIG_$(SPL_)ISO_PARTITION)   += part_iso.o
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index bee1cd6f0d..f9f05f4e34 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -712,7 +712,7 @@ int blk_unbind_all(int if_type)
 
 static int blk_post_probe(struct udevice *dev)
 {
-	if (IS_ENABLED(CONFIG_PARTITIONS) &&
+	if (CONFIG_IS_ENABLED(PARTITIONS) &&
 	    IS_ENABLED(CONFIG_HAVE_BLOCK_DEVICE)) {
 		struct blk_desc *desc = dev_get_uclass_plat(dev);
 
-- 
2.39.5