diff mbox series

[u-boot,v2,1/4] dm: memory: Introduce new uclass

Message ID 20221006132400.5628-2-rogerq@kernel.org
State Changes Requested
Delegated to: Tom Rini
Headers show
Series Introduce MEMORY uclass and TI GPMC driver | expand

Commit Message

Roger Quadros Oct. 6, 2022, 1:23 p.m. UTC
Introduce UCLASS_MEMORY for future Memory Controller
device drivers.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
---
 arch/sandbox/dts/test.dts       |  4 ++++
 drivers/memory/Kconfig          | 17 +++++++++++++++++
 drivers/memory/Makefile         |  2 ++
 drivers/memory/memory-sandbox.c | 18 ++++++++++++++++++
 drivers/memory/memory-uclass.c  | 13 +++++++++++++
 include/dm/uclass-id.h          |  1 +
 test/dm/Makefile                |  1 +
 test/dm/memory.c                | 21 +++++++++++++++++++++
 8 files changed, 77 insertions(+)
 create mode 100644 drivers/memory/memory-sandbox.c
 create mode 100644 drivers/memory/memory-uclass.c
 create mode 100644 test/dm/memory.c

Comments

Simon Glass Oct. 6, 2022, 7:07 p.m. UTC | #1
Hi Roger,

On Thu, 6 Oct 2022 at 07:24, Roger Quadros <rogerq@kernel.org> wrote:
>
> Introduce UCLASS_MEMORY for future Memory Controller
> device drivers.
>
> Signed-off-by: Roger Quadros <rogerq@kernel.org>
> ---
>  arch/sandbox/dts/test.dts       |  4 ++++
>  drivers/memory/Kconfig          | 17 +++++++++++++++++
>  drivers/memory/Makefile         |  2 ++
>  drivers/memory/memory-sandbox.c | 18 ++++++++++++++++++
>  drivers/memory/memory-uclass.c  | 13 +++++++++++++
>  include/dm/uclass-id.h          |  1 +
>  test/dm/Makefile                |  1 +
>  test/dm/memory.c                | 21 +++++++++++++++++++++
>  8 files changed, 77 insertions(+)
>  create mode 100644 drivers/memory/memory-sandbox.c
>  create mode 100644 drivers/memory/memory-uclass.c
>  create mode 100644 test/dm/memory.c
>

Reviewed-by: Simon Glass <sjg@chromium.org>
(with change below)

> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
> index 2761588f0d..d65b2d2dcb 100644
> --- a/arch/sandbox/dts/test.dts
> +++ b/arch/sandbox/dts/test.dts
> @@ -926,6 +926,10 @@
>                 };
>         };
>
> +       memory-controller {
> +               compatible = "sandbox,memory";
> +       };
> +
>         misc-test {
>                 #address-cells = <1>;
>                 #size-cells = <1>;
> diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig
> index 7271892763..632feb3aaa 100644
> --- a/drivers/memory/Kconfig
> +++ b/drivers/memory/Kconfig
> @@ -4,6 +4,23 @@
>
>  menu "Memory Controller drivers"
>
> +config DM_MEMORY

Please use MEMORY since there is no non-DM memory option.

> +       bool "Enable Driver Model for Memory Controller drivers"
> +       depends on DM
> +       help
> +         Enable driver model for Memory Controller devices.
> +         These devices provide Memory bus interface to various devices like
> +         SRAM, Ethernet adapters, FPGAs, etc.
> +         For now this uclass has no methods yet.
> +
> +config SANDBOX_MEMORY
> +       bool "Enable Sandbox Memory Controller driver"
> +       depends on SANDBOX && DM_MEMORY
> +       help
> +         This is a driver model based Memory Controller driver for sandbox.
> +         Currently it is a stub only, as there are no usable uclass methods
> +         yet.
> +
>  config STM32_FMC2_EBI
>         bool "Support for FMC2 External Bus Interface on STM32MP SoCs"
>         depends on ARCH_STM32MP
[..]

Regards,
Simon
diff mbox series

Patch

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 2761588f0d..d65b2d2dcb 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -926,6 +926,10 @@ 
 		};
 	};
 
+	memory-controller {
+		compatible = "sandbox,memory";
+	};
+
 	misc-test {
 		#address-cells = <1>;
 		#size-cells = <1>;
diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig
index 7271892763..632feb3aaa 100644
--- a/drivers/memory/Kconfig
+++ b/drivers/memory/Kconfig
@@ -4,6 +4,23 @@ 
 
 menu "Memory Controller drivers"
 
+config DM_MEMORY
+	bool "Enable Driver Model for Memory Controller drivers"
+	depends on DM
+	help
+	  Enable driver model for Memory Controller devices.
+	  These devices provide Memory bus interface to various devices like
+	  SRAM, Ethernet adapters, FPGAs, etc.
+	  For now this uclass has no methods yet.
+
+config SANDBOX_MEMORY
+	bool "Enable Sandbox Memory Controller driver"
+	depends on SANDBOX && DM_MEMORY
+	help
+	  This is a driver model based Memory Controller driver for sandbox.
+	  Currently it is a stub only, as there are no usable uclass methods
+	  yet.
+
 config STM32_FMC2_EBI
 	bool "Support for FMC2 External Bus Interface on STM32MP SoCs"
 	depends on ARCH_STM32MP
diff --git a/drivers/memory/Makefile b/drivers/memory/Makefile
index fec52efb60..1d68b2b296 100644
--- a/drivers/memory/Makefile
+++ b/drivers/memory/Makefile
@@ -1,3 +1,5 @@ 
 
+obj-$(CONFIG_DM_MEMORY) += memory-uclass.o
+obj-$(CONFIG_SANDBOX_MEMORY) += memory-sandbox.o
 obj-$(CONFIG_STM32_FMC2_EBI) += stm32-fmc2-ebi.o
 obj-$(CONFIG_TI_AEMIF) += ti-aemif.o
diff --git a/drivers/memory/memory-sandbox.c b/drivers/memory/memory-sandbox.c
new file mode 100644
index 0000000000..f2ede50863
--- /dev/null
+++ b/drivers/memory/memory-sandbox.c
@@ -0,0 +1,18 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2022
+ *     Texas Instruments Incorporated, <www.ti.com>
+ */
+
+#include <dm.h>
+
+static const struct udevice_id sandbox_memory_match[] = {
+	{ .compatible = "sandbox,memory" },
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(sandbox_memory) = {
+	.name	= "sandbox_memory",
+	.id	= UCLASS_MEMORY,
+	.of_match = sandbox_memory_match,
+};
diff --git a/drivers/memory/memory-uclass.c b/drivers/memory/memory-uclass.c
new file mode 100644
index 0000000000..d6d37fe777
--- /dev/null
+++ b/drivers/memory/memory-uclass.c
@@ -0,0 +1,13 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2022
+ *     Texas Instruments Incorporated, <www.ti.com>
+ */
+
+#include <dm.h>
+
+UCLASS_DRIVER(memory) = {
+	.name = "memory",
+	.id = UCLASS_MEMORY,
+	.post_bind = dm_scan_fdt_dev,
+};
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index a432e43871..936a16c5d9 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -76,6 +76,7 @@  enum uclass_id {
 	UCLASS_MASS_STORAGE,	/* Mass storage device */
 	UCLASS_MDIO,		/* MDIO bus */
 	UCLASS_MDIO_MUX,	/* MDIO MUX/switch */
+	UCLASS_MEMORY,		/* Memory Controller device */
 	UCLASS_MISC,		/* Miscellaneous device */
 	UCLASS_MMC,		/* SD / MMC card or chip */
 	UCLASS_MOD_EXP,		/* RSA Mod Exp device */
diff --git a/test/dm/Makefile b/test/dm/Makefile
index 7543df8823..01275db2cd 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -47,6 +47,7 @@  ifneq ($(CONFIG_EFI_PARTITION),)
 obj-$(CONFIG_FASTBOOT_FLASH_MMC) += fastboot.o
 endif
 obj-$(CONFIG_FIRMWARE) += firmware.o
+obj-$(CONFIG_DM_MEMORY) += memory.o
 obj-$(CONFIG_DM_HWSPINLOCK) += hwspinlock.o
 obj-$(CONFIG_DM_I2C) += i2c.o
 obj-$(CONFIG_SOUND) += i2s.o
diff --git a/test/dm/memory.c b/test/dm/memory.c
new file mode 100644
index 0000000000..7d9500aa91
--- /dev/null
+++ b/test/dm/memory.c
@@ -0,0 +1,21 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2022
+ *     Texas Instruments Incorporated, <www.ti.com>
+ */
+
+#include <dm.h>
+#include <dm/test.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int dm_test_memory(struct unit_test_state *uts)
+{
+	struct udevice *dev;
+
+	ut_assertok(uclass_first_device_err(UCLASS_MEMORY, &dev));
+
+	return 0;
+}
+
+DM_TEST(dm_test_memory, UT_TESTF_SCAN_FDT);