@@ -303,4 +303,142 @@ LZT_TEST_F(
303
303
}
304
304
}
305
305
306
+ LZT_TEST_F (
307
+ FIRMWARE_TEST,
308
+ GivenValidFirmwareHandleWhenFlashingGfxFirmwareThenExpectFirmwareFlashingSuccess) {
309
+ auto fwDirEnv = getenv (" ZE_LZT_FIRMWARE_DIRECTORY" );
310
+ if (nullptr == fwDirEnv) {
311
+ LOG_INFO << " Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set" ;
312
+ GTEST_SKIP ();
313
+ }
314
+ std::string fwDir (fwDirEnv);
315
+ std::vector<char > testFwImage;
316
+ for (auto device : devices) {
317
+ uint32_t count = 0 ;
318
+ count = lzt::get_firmware_handle_count (device);
319
+ if (count > 0 ) {
320
+ is_firmware_supported = true ;
321
+ LOG_INFO << " Firmware handles are available on this device! " ;
322
+ auto firmware_handles = lzt::get_firmware_handles (device, count);
323
+ for (auto firmware_handle : firmware_handles) {
324
+ ASSERT_NE (nullptr , firmware_handle);
325
+ auto propFw = lzt::get_firmware_properties (firmware_handle);
326
+ if (propFw.canControl == true &&
327
+ std::string (reinterpret_cast <char *>(propFw.name )) == " GFX" ) {
328
+ std::string fwName (reinterpret_cast <char *>(propFw.name ));
329
+ std::string fwToLoad = fwDir + " /" + fwName + " .bin" ;
330
+ std::ifstream inFileStream (fwToLoad,
331
+ std::ios::binary | std::ios::ate);
332
+ if (!inFileStream.is_open ()) {
333
+ LOG_INFO << " Skipping test as firmware image not found" ;
334
+ GTEST_SKIP ();
335
+ }
336
+ testFwImage.resize (inFileStream.tellg ());
337
+ inFileStream.seekg (0 , inFileStream.beg );
338
+ inFileStream.read (testFwImage.data (), testFwImage.size ());
339
+ lzt::flash_firmware (firmware_handle,
340
+ static_cast <void *>(testFwImage.data ()),
341
+ testFwImage.size ());
342
+ }
343
+ }
344
+ } else {
345
+ LOG_INFO << " No firmware handles found for this device!" ;
346
+ }
347
+ }
348
+ if (!is_firmware_supported) {
349
+ FAIL () << " No firmware handles found on any of the devices!" ;
350
+ }
351
+ }
352
+
353
+ LZT_TEST_F (
354
+ FIRMWARE_TEST,
355
+ GivenValidFirmwareHandleWhenFlashingOptionRomCodeThenExpectFirmwareFlashingSuccess) {
356
+ auto fwDirEnv = getenv (" ZE_LZT_FIRMWARE_DIRECTORY" );
357
+ if (nullptr == fwDirEnv) {
358
+ LOG_INFO << " Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set" ;
359
+ GTEST_SKIP ();
360
+ }
361
+ std::string fwDir (fwDirEnv);
362
+ std::vector<char > testFwImage;
363
+ for (auto device : devices) {
364
+ uint32_t count = 0 ;
365
+ count = lzt::get_firmware_handle_count (device);
366
+ if (count > 0 ) {
367
+ is_firmware_supported = true ;
368
+ auto firmware_handles = lzt::get_firmware_handles (device, count);
369
+ for (auto firmware_handle : firmware_handles) {
370
+ ASSERT_NE (nullptr , firmware_handle);
371
+ auto propFw = lzt::get_firmware_properties (firmware_handle);
372
+ if (propFw.canControl == true &&
373
+ std::string (reinterpret_cast <char *>(propFw.name )) == " OptionROM" ) {
374
+ std::string fwName (reinterpret_cast <char *>(propFw.name ));
375
+ std::string fwToLoad = fwDir + " /" + fwName + " .bin" ;
376
+ std::ifstream inFileStream (fwToLoad,
377
+ std::ios::binary | std::ios::ate);
378
+ if (!inFileStream.is_open ()) {
379
+ LOG_INFO << " Skipping test as firmware image not found" ;
380
+ GTEST_SKIP ();
381
+ }
382
+ testFwImage.resize (inFileStream.tellg ());
383
+ inFileStream.seekg (0 , inFileStream.beg );
384
+ inFileStream.read (testFwImage.data (), testFwImage.size ());
385
+ lzt::flash_firmware (firmware_handle,
386
+ static_cast <void *>(testFwImage.data ()),
387
+ testFwImage.size ());
388
+ }
389
+ }
390
+ } else {
391
+ LOG_INFO << " No firmware handles found for this device!" ;
392
+ }
393
+ }
394
+ if (!is_firmware_supported) {
395
+ FAIL () << " No firmware handles found on any of the devices!" ;
396
+ }
397
+ }
398
+
399
+ LZT_TEST_F (
400
+ FIRMWARE_TEST,
401
+ GivenValidFirmwareHandleWhenFlashingOptionRomDataThenExpectFirmwareFlashingSuccess) {
402
+ auto fwDirEnv = getenv (" ZE_LZT_FIRMWARE_DIRECTORY" );
403
+ if (nullptr == fwDirEnv) {
404
+ LOG_INFO << " Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set" ;
405
+ GTEST_SKIP ();
406
+ }
407
+ std::string fwDir (fwDirEnv);
408
+ std::vector<char > testFwImage;
409
+ for (auto device : devices) {
410
+ uint32_t count = 0 ;
411
+ count = lzt::get_firmware_handle_count (device);
412
+ if (count > 0 ) {
413
+ is_firmware_supported = true ;
414
+ auto firmware_handles = lzt::get_firmware_handles (device, count);
415
+ for (auto firmware_handle : firmware_handles) {
416
+ ASSERT_NE (nullptr , firmware_handle);
417
+ auto propFw = lzt::get_firmware_properties (firmware_handle);
418
+ if (propFw.canControl == true &&
419
+ std::string (reinterpret_cast <char *>(propFw.name )) == " OptionROM" ) {
420
+ std::string fwName (reinterpret_cast <char *>(propFw.name ));
421
+ std::string fwToLoad = fwDir + " /" + fwName + " .bin" ;
422
+ std::ifstream inFileStream (fwToLoad,
423
+ std::ios::binary | std::ios::ate);
424
+ if (!inFileStream.is_open ()) {
425
+ LOG_INFO << " Skipping test as firmware image not found" ;
426
+ GTEST_SKIP ();
427
+ }
428
+ testFwImage.resize (inFileStream.tellg ());
429
+ inFileStream.seekg (0 , inFileStream.beg );
430
+ inFileStream.read (testFwImage.data (), testFwImage.size ());
431
+ lzt::flash_firmware (firmware_handle,
432
+ static_cast <void *>(testFwImage.data ()),
433
+ testFwImage.size ());
434
+ }
435
+ }
436
+ } else {
437
+ LOG_INFO << " No firmware handles found for this device!" ;
438
+ }
439
+ }
440
+ if (!is_firmware_supported) {
441
+ FAIL () << " No firmware handles found on any of the devices!" ;
442
+ }
443
+ }
306
444
} // namespace
0 commit comments