[Concept,13/16] tkey: Provide a real tkey device with test.dts

Message ID 20251115185212.539268-14-sjg@u-boot.org
State New
Headers
Series Continue TKey development |

Commit Message

Simon Glass Nov. 15, 2025, 6:52 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

It is sometimes useful to use a real TKey even when running with the
test devicetree. Put it first, so it becomes the default. Update tests
to select the emulator explicitly.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 arch/sandbox/dts/test.dts |  5 +++++
 test/cmd/tkey.c           |  7 +++----
 test/dm/tkey.c            | 23 ++++++++++++-----------
 3 files changed, 20 insertions(+), 15 deletions(-)
  

Patch

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 1d0ebc33387..7fef23a9285 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -1124,6 +1124,11 @@ 
 		};
 	};
 
+	tkey {
+		compatible = "sandbox,tkey";
+		sandbox,device-path = "/dev/ttyACM0";
+	};
+
 	tkey-emul {
 		compatible = "tkey,emul";
 	};
diff --git a/test/cmd/tkey.c b/test/cmd/tkey.c
index f2d52850d4e..15ff5283b62 100644
--- a/test/cmd/tkey.c
+++ b/test/cmd/tkey.c
@@ -28,10 +28,9 @@  CMD_TEST(cmd_test_tkey_help, UTF_DM | UTF_SCAN_FDT | UTF_CONSOLE);
 /* Test 'tkey' subcommands with emulator */
 static int cmd_test_tkey_sandbox(struct unit_test_state *uts)
 {
-	struct udevice *dev;
-
-	/* TKey device should be available in sandbox */
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	/* Use tkey-emul for predictable test results */
+	ut_assertok(run_command("tkey connect tkey-emul", 0));
+	ut_assert_nextline("Connected to TKey device");
 
 	/* Test info command */
 	ut_assertok(run_command("tkey info", 0));
diff --git a/test/dm/tkey.c b/test/dm/tkey.c
index 4ff5ecad7ea..5835e214f50 100644
--- a/test/dm/tkey.c
+++ b/test/dm/tkey.c
@@ -16,8 +16,9 @@  static int dm_test_tkey_find(struct unit_test_state *uts)
 {
 	struct udevice *dev;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 	ut_assertnonnull(dev);
+	ut_asserteq_str("tkey-emul", dev->name);
 
 	return 0;
 }
@@ -29,7 +30,7 @@  static int dm_test_tkey_get_udi(struct unit_test_state *uts)
 	u8 udi[TKEY_UDI_SIZE];
 	struct udevice *dev;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	ut_assertok(tkey_get_udi(dev, udi));
 
@@ -54,7 +55,7 @@  static int dm_test_tkey_get_name_version(struct unit_test_state *uts)
 	struct udevice *dev;
 	u32 version;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Get name and version */
 	ut_assertok(tkey_get_name_version(dev, name0, name1, &version));
@@ -74,7 +75,7 @@  static int dm_test_tkey_in_app_mode(struct unit_test_state *uts)
 	struct udevice *dev;
 	int ret;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Check mode - should be in firmware mode initially */
 	ret = tkey_in_app_mode(dev);
@@ -92,7 +93,7 @@  static int dm_test_tkey_load_app(struct unit_test_state *uts)
 	u8 dummy_app[128];
 	int ret;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Create a dummy app */
 	memset(dummy_app, 0x42, sizeof(dummy_app));
@@ -118,7 +119,7 @@  static int dm_test_tkey_get_pubkey(struct unit_test_state *uts)
 	u8 dummy_app[128];
 	int i;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Load a dummy app first */
 	memset(dummy_app, 0x42, sizeof(dummy_app));
@@ -149,7 +150,7 @@  static int dm_test_tkey_derive_wrapping_key(struct unit_test_state *uts)
 	};
 	struct udevice *dev;
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Derive wrapping key from password */
 	ut_assertok(tkey_derive_wrapping_key(dev, password, wrapping_key));
@@ -192,7 +193,7 @@  static int dm_test_tkey_derive_disk_key(struct unit_test_state *uts)
 	struct udevice *dev;
 	u8 dummy_app[128];
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Create a dummy signer app */
 	memset(dummy_app, 0x42, sizeof(dummy_app));
@@ -217,7 +218,7 @@  static int dm_test_tkey_udi_app_mode(struct unit_test_state *uts)
 	struct udevice *dev;
 	u8 dummy_app[128];
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Load an app to enter app mode */
 	memset(dummy_app, 0x42, sizeof(dummy_app));
@@ -240,7 +241,7 @@  static int dm_test_tkey_load_app_with_uss(struct unit_test_state *uts)
 	u8 dummy_app[128];
 	const char *uss = "my_secret";
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Create a dummy app */
 	memset(dummy_app, 0x55, sizeof(dummy_app));
@@ -270,7 +271,7 @@  static int dm_test_tkey_read_write(struct unit_test_state *uts)
 	u8 write_buf[129];  /* Header + command */
 	u8 read_buf[256];
 
-	ut_assertok(uclass_first_device_err(UCLASS_TKEY, &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_TKEY, "tkey-emul", &dev));
 
 	/* Prepare a GET_NAME_VERSION command */
 	write_buf[0] = 0x10;  /* Header: CMD, FIRMWARE endpoint */