OvmfPkg/LsiScsiDxe: Open PciIo protocol and initialize the device

Open PciIo protocol and use it to initialize the device. The
initialization of LSI 53C895A is simple: just set the SRST bit in
Interrupt Status Zero register to reset the device.

v2:
  - Use the BITx macros for the bit constants
  - Add the closing of PciIo protocol in LsiScsiControllerStop()

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Signed-off-by: Gary Lin <glin@suse.com>
Message-Id: <20200717061130.8881-8-glin@suse.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Gary Lin
2020-07-17 14:11:26 +08:00
committed by mergify[bot]
parent 12d99b8f23
commit 8d6193902f
3 changed files with 159 additions and 1 deletions

View File

@@ -17,4 +17,25 @@
#define LSI_LOGIC_PCI_VENDOR_ID 0x1000
#define LSI_53C895A_PCI_DEVICE_ID 0x0012
//
// LSI 53C895A Registers
//
#define LSI_REG_DSTAT 0x0C
#define LSI_REG_ISTAT0 0x14
#define LSI_REG_DSP 0x2C
#define LSI_REG_SIST0 0x42
#define LSI_REG_SIST1 0x43
//
// The status bits for Interrupt Status Zero (ISTAT0)
//
#define LSI_ISTAT0_DIP BIT0
#define LSI_ISTAT0_SIP BIT1
#define LSI_ISTAT0_INTF BIT2
#define LSI_ISTAT0_CON BIT3
#define LSI_ISTAT0_SEM BIT4
#define LSI_ISTAT0_SIGP BIT5
#define LSI_ISTAT0_SRST BIT6
#define LSI_ISTAT0_ABRT BIT7
#endif // _LSI_SCSI_H_