diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7282c4123b08..dc44ea1e6c9f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1091,9 +1091,8 @@ config ARCH_SNAPDRAGON
 	select GPIO_EXTRA_HEADER
 	select MSM_SMEM
 	select OF_CONTROL
 	select OF_SEPARATE
-	select SMEM
 	select SPMI
 	select BOARD_LATE_INIT
 	select OF_BOARD
 	select SAVE_PREV_BL_FDT_ADDR
diff --git a/drivers/Kconfig b/drivers/Kconfig
index a073230c26dd..6dbbc3172076 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -119,10 +119,8 @@ source "drivers/scsi/Kconfig"
 source "drivers/serial/Kconfig"
 
 source "drivers/sm/Kconfig"
 
-source "drivers/smem/Kconfig"
-
 source "drivers/sound/Kconfig"
 
 source "drivers/soc/Kconfig"
 
diff --git a/drivers/Makefile b/drivers/Makefile
index 9440af1b09bc..385ea3b7918b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -113,9 +113,8 @@ obj-y += pwm/
 obj-y += reset/
 obj-y += input/
 obj-y += iommu/
 # SOC specific infrastructure drivers.
-obj-y += smem/
 obj-y += thermal/
 obj-$(CONFIG_TEE) += tee/
 obj-$(CONFIG_ARM_FFA_TRANSPORT) += firmware/arm-ffa/
 obj-y += axi/
diff --git a/drivers/smem/Kconfig b/drivers/smem/Kconfig
deleted file mode 100644
index 73d51b3a7a48..000000000000
--- a/drivers/smem/Kconfig
+++ /dev/null
@@ -1,24 +0,0 @@
-menuconfig SMEM
-	bool  "SMEM (Shared Memory mamanger) support"
-
-if SMEM
-
-config SANDBOX_SMEM
-    bool "Sandbox Shared Memory Manager (SMEM)"
-    depends on SANDBOX && DM
-    help
-      enable SMEM support for sandbox. This is an emulation of a real SMEM
-      manager.
-      The sandbox driver allocates a shared memory from the heap and
-      initialzies it on start.
-
-config MSM_SMEM
-    bool "Qualcomm Shared Memory Manager (SMEM)"
-    depends on DM
-    depends on ARCH_SNAPDRAGON || ARCH_IPQ40XX
-    help
-      Enable support for the Qualcomm Shared Memory Manager.
-      The driver provides an interface to items in a heap shared among all
-      processors in a Qualcomm platform.
-
-endif # menu "SMEM Support"
diff --git a/drivers/smem/Makefile b/drivers/smem/Makefile
deleted file mode 100644
index af3e9b50883c..000000000000
--- a/drivers/smem/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# Makefile for the U-Boot SMEM interface drivers
-
-obj-$(CONFIG_SANDBOX_SMEM) += sandbox_smem.o
-obj-$(CONFIG_SMEM) += smem-uclass.o
-obj-$(CONFIG_MSM_SMEM) += msm_smem.o
diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c
deleted file mode 100644
index 4dea5cc4bf1c..000000000000
--- a/drivers/smem/smem-uclass.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (c) 2018 Ramon Fried <ramon.fried@gmail.com>
- */
-
-#define LOG_CATEGORY UCLASS_SMEM
-
-#include <dm.h>
-#include <smem.h>
-
-int smem_alloc(struct udevice *dev, unsigned int host,
-		unsigned int item, size_t size)
-{
-	struct smem_ops *ops = smem_get_ops(dev);
-
-	if (!ops->alloc)
-		return -ENOSYS;
-
-	return ops->alloc(host, item, size);
-}
-
-void *smem_get(struct udevice *dev, unsigned int host,
-		unsigned int item, size_t *size)
-{
-	struct smem_ops *ops = smem_get_ops(dev);
-
-	if (!ops->get)
-		return NULL;
-
-	return ops->get(host, item, size);
-}
-
-int smem_get_free_space(struct udevice *dev, unsigned int host)
-{
-	struct smem_ops *ops = smem_get_ops(dev);
-
-	if (!ops->get_free_space)
-		return -ENOSYS;
-
-	return ops->get_free_space(host);
-}
-
-UCLASS_DRIVER(smem) = {
-	.id     = UCLASS_SMEM,
-	.name       = "smem",
-};
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 270088ad94f7..281abe99acf1 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -128,9 +128,8 @@ enum uclass_id {
 	UCLASS_SCMI_BASE,	/* Interface for SCMI Base protocol */
 	UCLASS_SCSI,		/* SCSI device */
 	UCLASS_SERIAL,		/* Serial UART */
 	UCLASS_SIMPLE_BUS,	/* Bus with child devices */
-	UCLASS_SMEM,		/* Shared memory interface */
 	UCLASS_SOC,		/* SOC Device */
 	UCLASS_SOUND,		/* Playing simple sounds */
 	UCLASS_SPI,		/* SPI bus */
 	UCLASS_SPI_FLASH,	/* SPI flash */
diff --git a/include/smem.h b/include/smem.h
deleted file mode 100644
index b19c534ebc43..000000000000
--- a/include/smem.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * The shared memory system is an allocate-only heap structure that
- * consists of one of more memory areas that can be accessed by the processors
- * in the SoC.
- *
- * Allocation can be done globally for all processors or to an individual processor.
- * This is controlled by the @host parameter.
- *
- * Allocation and management of heap can be implemented in various ways,
- * The @item parameter should be used as an index/hash to the memory region.
- *
- * Copyright (c) 2018 Ramon Fried <ramon.fried@gmail.com>
- */
-
-#ifndef _smemh_
-#define _smemh_
-
-/* struct smem_ops: Operations for the SMEM uclass */
-struct smem_ops {
-	/**
-	 * alloc() - allocate space for a smem item
-	 *
-	 * @host:	remote processor id, or -1 for all processors.
-	 * @item:	smem item handle
-	 * @size:	number of bytes to be allocated
-	 * @return 0 if OK, -ve on error
-	 */
-	int (*alloc)(unsigned int host,
-		unsigned int item, size_t size);
-
-	/**
-	 * get() - Resolve ptr of size of a smem item
-	 *
-	 * @host:	the remote processor, of -1 for all processors.
-	 * @item:	smem item handle
-	 * @size:	pointer to be filled out with the size of the item
-	 * @return	pointer on success, NULL on error
-	 */
-	void *(*get)(unsigned int host,
-		unsigned int item, size_t *size);
-
-	/**
-	 * get_free_space() - Get free space in smem in bytes
-	 *
-	 * @host:   the remote processor identifying a partition, or -1
-	 *			for all processors.
-	 * @return	free space, -ve on error
-	 */
-	int (*get_free_space)(unsigned int host);
-};
-
-#define smem_get_ops(dev)	((struct smem_ops *)(dev)->driver->ops)
-
-/**
- * smem_alloc() - allocate space for a smem item
- * @host:	remote processor id, or -1
- * @item:	smem item handle
- * @size:	number of bytes to be allocated
- * Return: 0 if OK, -ve on error
- *
- * Allocate space for a given smem item of size @size, given that the item is
- * not yet allocated.
- */
-int smem_alloc(struct udevice *dev, unsigned int host, unsigned int item, size_t size);
-
-/**
- * smem_get() - resolve ptr of size of a smem item
- * @host:	the remote processor, or -1 for all processors.
- * @item:	smem item handle
- * @size:	pointer to be filled out with size of the item
- * Return:	pointer on success, NULL on error
- *
- * Looks up smem item and returns pointer to it. Size of smem
- * item is returned in @size.
- */
-void *smem_get(struct udevice *dev, unsigned int host, unsigned int item, size_t *size);
-
-/**
- * smem_get_free_space() - retrieve amount of free space in a partition
- * @host:	the remote processor identifying a partition, or -1
- *			for all processors.
- * Return:	size in bytes, -ve on error
- *
- * To be used by smem clients as a quick way to determine if any new
- * allocations has been made.
- */
-int smem_get_free_space(struct udevice *dev, unsigned int host);
-
-#endif /* _smem_h_ */
