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 |
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 --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);
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