Browse Source

Silicon/AtSha204a: Test the ControllerHandle is managed by this driver

Test the @ControllerHandle is not NULL and is actually managed by
this driver.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Kazuhiko Sakamoto 2 years ago
parent
commit
0766bfaff9

+ 1 - 0
Silicon/Atmel/AtSha204a/AtSha204aDriver.h

@@ -59,6 +59,7 @@ typedef struct {
 #define ATSHA204A_OPCODE_RANDOM   0x1b
 
 extern EFI_COMPONENT_NAME2_PROTOCOL gAtSha204aDriverComponentName2;
+extern EFI_DRIVER_BINDING_PROTOCOL  gI2cHwrngDriverBinding;
 
 EFI_STATUS
 AtSha204aInit (

+ 13 - 0
Silicon/Atmel/AtSha204a/ComponentName.c

@@ -159,6 +159,19 @@ AtSha204aGetControllerName (
   OUT CHAR16                                          **ControllerName
   )
 {
+  EFI_STATUS  Status;
+
+  if (!ControllerHandle) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status = EfiTestManagedDevice (ControllerHandle,
+                                 gI2cHwrngDriverBinding.DriverBindingHandle,
+                                 &gEfiI2cIoProtocolGuid);
+  if (EFI_ERROR (Status)) {
+    return Status;
+  }
+
   if (ChildHandle != NULL) {
     return EFI_UNSUPPORTED;
   }

+ 0 - 1
Silicon/Atmel/AtSha204a/DriverBinding.c

@@ -132,7 +132,6 @@ I2cHwrngDriverBindingStop (
 }
 
 
-STATIC
 EFI_DRIVER_BINDING_PROTOCOL  gI2cHwrngDriverBinding = {
   I2cHwrngDriverBindingSupported,
   I2cHwrngDriverBindingStart,