[PATCH v2 0/1] dm: fpga: Introduce new uclass

Hei hei,
tried to address all the feedback I got from Simon, thanks for that.
Build tested on Debian GNU/Linux 11 (bullseye) on arch amd64, tried on i386 first, but got some nasty errors there (see IRC backlog).
Tried in sandbox console, and everythings looks fine to me, as far as I can judge. `dm tree` and `dm uclass` and `dm drivers` list the right things, and `ut dm fpga` returns with success.
I refused to add Simon's Reviewed-by, because I did some changes compared to RFC (see notes on patch).
One technical question: should I add SANDBOX_FPGA to sandbox_defconfig?
And Michal, is it okay to add you as maintainer for the unit test as I did in v2 of the patch now?
Greets Alex
Alexander Dahl (1): dm: fpga: Introduce new uclass
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
base-commit: 97c0a9c5708dc60d82cad721a8b882f0ce37e83d

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

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

On 9/30/22 14:04, Alexander Dahl wrote:
Hei hei,
tried to address all the feedback I got from Simon, thanks for that.
Build tested on Debian GNU/Linux 11 (bullseye) on arch amd64, tried on i386 first, but got some nasty errors there (see IRC backlog).
Tried in sandbox console, and everythings looks fine to me, as far as I can judge. `dm tree` and `dm uclass` and `dm drivers` list the right things, and `ut dm fpga` returns with success.
I refused to add Simon's Reviewed-by, because I did some changes compared to RFC (see notes on patch).
One technical question: should I add SANDBOX_FPGA to sandbox_defconfig?
And Michal, is it okay to add you as maintainer for the unit test as I did in v2 of the patch now?
Greets Alex
Alexander Dahl (1): dm: fpga: Introduce new uclass
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
base-commit: 97c0a9c5708dc60d82cad721a8b882f0ce37e83d
Applied. M
participants (3)
-
Alexander Dahl
-
Michal Simek
-
Simon Glass