IN UINT16 Port\r
)\r
{\r
- return EFI_UNSUPPORTED;\r
+ //\r
+ // Return success directly then upper layer driver could think reset port operation is done.\r
+ //\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
IN UINT16 PortMultiplierPort\r
)\r
{\r
- return EFI_UNSUPPORTED;\r
+ ATA_ATAPI_PASS_THRU_INSTANCE *Instance;\r
+ LIST_ENTRY *Node;\r
+\r
+ Instance = ATA_PASS_THRU_PRIVATE_DATA_FROM_THIS (This);\r
+\r
+ Node = SearchDeviceInfoList (Instance, Port, PortMultiplierPort, EfiIdeHarddisk);\r
+\r
+ if (Node == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Return success directly then upper layer driver could think reset device operation is done.\r
+ //\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This\r
)\r
{\r
- return EFI_UNSUPPORTED;\r
+ //\r
+ // Return success directly then upper layer driver could think reset channel operation is done.\r
+ //\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
IN UINT64 Lun\r
)\r
{\r
- return EFI_UNSUPPORTED;\r
+ ATA_ATAPI_PASS_THRU_INSTANCE *Instance;\r
+ LIST_ENTRY *Node;\r
+ UINT8 Port;\r
+ UINT8 PortMultiplier;\r
+\r
+ Instance = EXT_SCSI_PASS_THRU_PRIVATE_DATA_FROM_THIS (This);\r
+ //\r
+ // For ATAPI device, doesn't support multiple LUN device.\r
+ //\r
+ if (Lun != 0) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ //\r
+ // The layout of Target array:\r
+ // ________________________________________________________________________\r
+ // | Byte 0 | Byte 1 | ... | TARGET_MAX_BYTES - 1 |\r
+ // |_____________________|_____________________|_____|______________________|\r
+ // | | The port multiplier | | |\r
+ // | The port number | port number | N/A | N/A |\r
+ // |_____________________|_____________________|_____|______________________|\r
+ //\r
+ // For ATAPI device, 2 bytes is enough to represent the location of SCSI device.\r
+ //\r
+ Port = Target[0];\r
+ PortMultiplier = Target[1];\r
+\r
+ Node = SearchDeviceInfoList(Instance, Port, PortMultiplier, EfiIdeCdrom);\r
+ if (Node == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Return success directly then upper layer driver could think reset target LUN operation is done.\r
+ //\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r