mirror of https://github.com/acidanthera/audk.git
MdeModulePkg: AtaAtapiPassThru: select master/slave around DIAG command
Some IDE controllers only update ID fields such as sector information on specific commands such as the DIAG command. The master/slave device is therefore selected both before and after sending the DIAG command; otherwise reading the IDE registers yields the master's ID fields. (Reza's patch originally *moved* the master/slave selection from after the DIAG command before it, however Feng asked for the original master/slave select to be preserved; effectively making the master/slave select *bracket* the DIAG command. See this subthread: <http://thread.gmane.org/gmane.comp.bios.tianocore.devel/10545/focus=10550>.) Cc: Alexander Graf <agraf@suse.de> Cc: Reza Jelveh <reza.jelveh@tuhh.de> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Hannes Reinecke <hare@suse.de> Cc: Gabriel L. Somlo <somlo@cmu.edu> Cc: Feng Tian <feng.tian@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Reza Jelveh <reza.jelveh@tuhh.de> [feng.tian@intel.com: see above] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> [lersek@redhat.com: updated commit message] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Tested-by: Gabriel Somlo <somlo@cmu.edu> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18529 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
bcab714134
commit
2dc5090d76
|
@ -2613,6 +2613,11 @@ DetectAndConfigIdeDevice (
|
|||
PciIo = Instance->PciIo;
|
||||
|
||||
for (IdeDevice = 0; IdeDevice < EfiIdeMaxDevice; IdeDevice++) {
|
||||
//
|
||||
// Select Master or Slave device to get the return signature for ATA DEVICE DIAGNOSTIC cmd.
|
||||
//
|
||||
IdeWritePortB (PciIo, IdeRegisters->Head, (UINT8)((IdeDevice << 4) | 0xe0));
|
||||
|
||||
//
|
||||
// Send ATA Device Execut Diagnostic command.
|
||||
// This command should work no matter DRDY is ready or not
|
||||
|
|
Loading…
Reference in New Issue