Message ID | 20220930120430.42307-2-post@lespocky.de |
---|---|
State | Accepted |
Delegated to: | Michal Simek |
Headers | show |
Series | dm: fpga: Introduce new uclass | expand |
On Fri, 30 Sept 2022 at 06:05, Alexander Dahl <post@lespocky.de> wrote: > > For future DM based FPGA drivers and for now to have a meaningful > logging class for old FPGA drivers. > > Suggested-by: Michal Simek <michal.simek@amd.com> > Suggested-by: Simon Glass <sjg@chromium.org> > Signed-off-by: Alexander Dahl <post@lespocky.de> > --- > > Notes: > RFC -> v2: > - Added/Improved Kconfig help texts > - Use `uclass_first_device_err()` in test > - Add compatibles match list to sandbox driver > - Add 'test/dm/fpga.c' to MAINTAINERS > > MAINTAINERS | 1 + > arch/sandbox/dts/test.dts | 4 ++++ > drivers/fpga/Kconfig | 19 +++++++++++++++++++ > drivers/fpga/Makefile | 3 +++ > drivers/fpga/fpga-uclass.c | 11 +++++++++++ > drivers/fpga/sandbox.c | 17 +++++++++++++++++ > include/dm/uclass-id.h | 1 + > test/dm/Makefile | 1 + > test/dm/fpga.c | 20 ++++++++++++++++++++ > 9 files changed, 77 insertions(+) > create mode 100644 drivers/fpga/fpga-uclass.c > create mode 100644 drivers/fpga/sandbox.c > create mode 100644 test/dm/fpga.c Reviewed-by: Simon Glass <sjg@chromium.org> The only thing needed now is a header file, but we can add that once we have some operations.
Hi Simon, On 10/1/22 01:49, Simon Glass wrote: > On Fri, 30 Sept 2022 at 06:05, Alexander Dahl <post@lespocky.de> wrote: >> >> For future DM based FPGA drivers and for now to have a meaningful >> logging class for old FPGA drivers. >> >> Suggested-by: Michal Simek <michal.simek@amd.com> >> Suggested-by: Simon Glass <sjg@chromium.org> >> Signed-off-by: Alexander Dahl <post@lespocky.de> >> --- >> >> Notes: >> RFC -> v2: >> - Added/Improved Kconfig help texts >> - Use `uclass_first_device_err()` in test >> - Add compatibles match list to sandbox driver >> - Add 'test/dm/fpga.c' to MAINTAINERS >> >> MAINTAINERS | 1 + >> arch/sandbox/dts/test.dts | 4 ++++ >> drivers/fpga/Kconfig | 19 +++++++++++++++++++ >> drivers/fpga/Makefile | 3 +++ >> drivers/fpga/fpga-uclass.c | 11 +++++++++++ >> drivers/fpga/sandbox.c | 17 +++++++++++++++++ >> include/dm/uclass-id.h | 1 + >> test/dm/Makefile | 1 + >> test/dm/fpga.c | 20 ++++++++++++++++++++ >> 9 files changed, 77 insertions(+) >> create mode 100644 drivers/fpga/fpga-uclass.c >> create mode 100644 drivers/fpga/sandbox.c >> create mode 100644 test/dm/fpga.c > > Reviewed-by: Simon Glass <sjg@chromium.org> > > The only thing needed now is a header file, but we can add that once > we have some operations. Do you want me to take it via my tree or you want to take it via your DM tree? Both ways works for me. Thanks, Michal
Hi Michal, On Mon, 3 Oct 2022 at 00:34, Michal Simek <michal.simek@amd.com> wrote: > > Hi Simon, > > On 10/1/22 01:49, Simon Glass wrote: > > On Fri, 30 Sept 2022 at 06:05, Alexander Dahl <post@lespocky.de> wrote: > >> > >> For future DM based FPGA drivers and for now to have a meaningful > >> logging class for old FPGA drivers. > >> > >> Suggested-by: Michal Simek <michal.simek@amd.com> > >> Suggested-by: Simon Glass <sjg@chromium.org> > >> Signed-off-by: Alexander Dahl <post@lespocky.de> > >> --- > >> > >> Notes: > >> RFC -> v2: > >> - Added/Improved Kconfig help texts > >> - Use `uclass_first_device_err()` in test > >> - Add compatibles match list to sandbox driver > >> - Add 'test/dm/fpga.c' to MAINTAINERS > >> > >> MAINTAINERS | 1 + > >> arch/sandbox/dts/test.dts | 4 ++++ > >> drivers/fpga/Kconfig | 19 +++++++++++++++++++ > >> drivers/fpga/Makefile | 3 +++ > >> drivers/fpga/fpga-uclass.c | 11 +++++++++++ > >> drivers/fpga/sandbox.c | 17 +++++++++++++++++ > >> include/dm/uclass-id.h | 1 + > >> test/dm/Makefile | 1 + > >> test/dm/fpga.c | 20 ++++++++++++++++++++ > >> 9 files changed, 77 insertions(+) > >> create mode 100644 drivers/fpga/fpga-uclass.c > >> create mode 100644 drivers/fpga/sandbox.c > >> create mode 100644 test/dm/fpga.c > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > The only thing needed now is a header file, but we can add that once > > we have some operations. > > Do you want me to take it via my tree or you want to take it via your DM tree? > Both ways works for me. If you are doing it soon, go ahead! Regards, Simon
diff --git a/MAINTAINERS b/MAINTAINERS index 83346183ee..12a7c62a23 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -918,6 +918,7 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git F: drivers/fpga/ F: cmd/fpga.c F: include/fpga.h +F: test/dm/fpga.c FLATTENED DEVICE TREE M: Simon Glass <sjg@chromium.org> diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 2761588f0d..3b9cc8cd7c 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -650,6 +650,10 @@ }; }; + fpga { + compatible = "sandbox,fpga"; + }; + pinctrl-gpio { compatible = "sandbox,pinctrl-gpio"; diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index e07a9cf80e..e2fd16e6d2 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -118,4 +118,23 @@ config SPL_FPGA_LOAD_SECURE Enables the fpga loads() functions that are used to load secure (authenticated or encrypted or both) bitstreams on to FPGA. +config DM_FPGA + bool "Enable Driver Model for FPGA drivers" + depends on DM + select FPGA + help + Enable driver model for Field-Programmable Gate Array (FPGA) devices. + The devices cover a wide range of applications and are configured at + runtime by loading a bitstream into the FPGA device. + Loading a bitstream from any kind of storage is the main task of the + FPGA drivers. + For now this uclass has no methods yet. + +config SANDBOX_FPGA + bool "Enable sandbox FPGA driver" + depends on SANDBOX && DM_FPGA + help + This is a driver model based FPGA driver for sandbox. + Currently it is a stub only, as there are no usable uclass methods yet. + endmenu diff --git a/drivers/fpga/Makefile b/drivers/fpga/Makefile index 83243fb107..610c168fc3 100644 --- a/drivers/fpga/Makefile +++ b/drivers/fpga/Makefile @@ -4,6 +4,9 @@ # Wolfgang Denk, DENX Software Engineering, wd@denx.de. obj-y += fpga.o +obj-$(CONFIG_DM_FPGA) += fpga-uclass.o +obj-$(CONFIG_SANDBOX_FPGA) += sandbox.o + obj-$(CONFIG_FPGA_SPARTAN2) += spartan2.o obj-$(CONFIG_FPGA_SPARTAN3) += spartan3.o obj-$(CONFIG_FPGA_VERSALPL) += versalpl.o diff --git a/drivers/fpga/fpga-uclass.c b/drivers/fpga/fpga-uclass.c new file mode 100644 index 0000000000..4278ec28e5 --- /dev/null +++ b/drivers/fpga/fpga-uclass.c @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2022 Alexander Dahl <post@lespocky.de> + */ + +#include <dm.h> + +UCLASS_DRIVER(fpga) = { + .name = "fpga", + .id = UCLASS_FPGA, +}; diff --git a/drivers/fpga/sandbox.c b/drivers/fpga/sandbox.c new file mode 100644 index 0000000000..f17a822179 --- /dev/null +++ b/drivers/fpga/sandbox.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2022 Alexander Dahl <post@lespocky.de> + */ + +#include <dm.h> + +static const struct udevice_id sandbox_fpga_match[] = { + { .compatible = "sandbox,fpga" }, + { /* sentinel */ } +}; + +U_BOOT_DRIVER(sandbox_fpga) = { + .name = "sandbox_fpga", + .id = UCLASS_FPGA, + .of_match = sandbox_fpga_match, +}; diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index a432e43871..c2b15881ba 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -56,6 +56,7 @@ enum uclass_id { UCLASS_ETH, /* Ethernet device */ UCLASS_ETH_PHY, /* Ethernet PHY device */ UCLASS_FIRMWARE, /* Firmware */ + UCLASS_FPGA, /* FPGA device */ UCLASS_FUZZING_ENGINE, /* Fuzzing engine */ UCLASS_FS_FIRMWARE_LOADER, /* Generic loader */ UCLASS_GPIO, /* Bank of general-purpose I/O pins */ diff --git a/test/dm/Makefile b/test/dm/Makefile index 7543df8823..666c85f10a 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_FPGA) += fpga.o obj-$(CONFIG_DM_HWSPINLOCK) += hwspinlock.o obj-$(CONFIG_DM_I2C) += i2c.o obj-$(CONFIG_SOUND) += i2s.o diff --git a/test/dm/fpga.c b/test/dm/fpga.c new file mode 100644 index 0000000000..8bb3535853 --- /dev/null +++ b/test/dm/fpga.c @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2022 Alexander Dahl <post@lespocky.de> + */ + +#include <dm.h> +#include <dm/test.h> +#include <test/test.h> +#include <test/ut.h> + +static int dm_test_fpga(struct unit_test_state *uts) +{ + struct udevice *dev; + + ut_assertok(uclass_first_device_err(UCLASS_FPGA, &dev)); + + return 0; +} + +DM_TEST(dm_test_fpga, UT_TESTF_SCAN_FDT);
For future DM based FPGA drivers and for now to have a meaningful logging class for old FPGA drivers. Suggested-by: Michal Simek <michal.simek@amd.com> Suggested-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Dahl <post@lespocky.de> --- Notes: RFC -> v2: - Added/Improved Kconfig help texts - Use `uclass_first_device_err()` in test - Add compatibles match list to sandbox driver - Add 'test/dm/fpga.c' to MAINTAINERS MAINTAINERS | 1 + arch/sandbox/dts/test.dts | 4 ++++ drivers/fpga/Kconfig | 19 +++++++++++++++++++ drivers/fpga/Makefile | 3 +++ drivers/fpga/fpga-uclass.c | 11 +++++++++++ drivers/fpga/sandbox.c | 17 +++++++++++++++++ include/dm/uclass-id.h | 1 + test/dm/Makefile | 1 + test/dm/fpga.c | 20 ++++++++++++++++++++ 9 files changed, 77 insertions(+) create mode 100644 drivers/fpga/fpga-uclass.c create mode 100644 drivers/fpga/sandbox.c create mode 100644 test/dm/fpga.c