diff options
author | AJFISH <AJFISH@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-08-16 22:15:08 +0000 |
---|---|---|
committer | AJFISH <AJFISH@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-08-16 22:15:08 +0000 |
commit | 065b0bfb762fe6ca99fe3650d2952e34b5d96015 (patch) | |
tree | 3b5ddd29e042fd7c027bedeb3309b8dd39b634f6 /Bus/Isa | |
parent | c7f19f5e083680a0fa00a74ec0e978ddfabea6bd (diff) | |
download | edk2-065b0bfb762fe6ca99fe3650d2952e34b5d96015.zip edk2-065b0bfb762fe6ca99fe3650d2952e34b5d96015.tar.gz edk2-065b0bfb762fe6ca99fe3650d2952e34b5d96015.tar.bz2 |
Updated to use new PCD settings
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/IntelFrameworkModulePkg@3664 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Bus/Isa')
-rw-r--r-- | Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf | 9 | ||||
-rw-r--r-- | Bus/Isa/IsaSerialDxe/Serial.c | 119 | ||||
-rw-r--r-- | Bus/Isa/IsaSerialDxe/Serial.h | 6 |
3 files changed, 83 insertions, 51 deletions
diff --git a/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf b/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf index 7604092..fb2727f 100644 --- a/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf +++ b/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf @@ -65,7 +65,14 @@ gEfiSerialIoProtocolGuid # PROTOCOL BY_START
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
-
[PcdsFeatureFlag.common]
PcdNtEmulatorEnable|gEfiMdeModulePkgTokenSpaceGuid
+
+[PcdsFixedAtBuild.common]
+ PcdUartDefaultBaudRate|gEfiMdePkgTokenSpaceGuid|115200
+ PcdUartDefaultDataBits|gEfiMdePkgTokenSpaceGuid|8
+ PcdUartDefaultParity|gEfiMdePkgTokenSpaceGuid|1
+ PcdUartDefaultStopBits|gEfiMdePkgTokenSpaceGuid|1
+
+
diff --git a/Bus/Isa/IsaSerialDxe/Serial.c b/Bus/Isa/IsaSerialDxe/Serial.c index 1de6fde..3eeb1d4 100644 --- a/Bus/Isa/IsaSerialDxe/Serial.c +++ b/Bus/Isa/IsaSerialDxe/Serial.c @@ -27,6 +27,63 @@ EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver = { };
+SERIAL_DEV gSerialDevTempate = {
+ SERIAL_DEV_SIGNATURE,
+ NULL,
+ { // SerialIo
+ SERIAL_IO_INTERFACE_REVISION,
+ IsaSerialReset,
+ IsaSerialSetAttributes,
+ IsaSerialSetControl,
+ IsaSerialGetControl,
+ IsaSerialWrite,
+ IsaSerialRead,
+ NULL
+ },
+ { // SerialMode
+ SERIAL_PORT_DEFAULT_CONTROL_MASK,
+ SERIAL_PORT_DEFAULT_TIMEOUT,
+ FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate
+ SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH,
+ FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits
+ FixedPcdGet8 (PcdUartDefaultParity), // Parity
+ FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits
+ },
+ NULL,
+ NULL,
+ { // UartDevicePath
+ {
+ MESSAGING_DEVICE_PATH,
+ MSG_UART_DP,
+ (UINT8) (sizeof (UART_DEVICE_PATH)),
+ (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8),
+ },
+ 0,
+ FixedPcdGet64 (PcdUartDefaultBaudRate),
+ FixedPcdGet8 (PcdUartDefaultDataBits),
+ FixedPcdGet8 (PcdUartDefaultParity),
+ FixedPcdGet8 (PcdUartDefaultStopBits)
+ },
+ NULL,
+ 0, //BaseAddress
+ {
+ 0,
+ 0,
+ SERIAL_MAX_BUFFER_SIZE,
+ { 0 }
+ },
+ {
+ 0,
+ 0,
+ SERIAL_MAX_BUFFER_SIZE,
+ { 0 }
+ },
+ FALSE,
+ FALSE,
+ UART16550A,
+ NULL
+};
+
/**
The user Entry Point for module IsaSerial. The user code starts with this function.
@@ -39,7 +96,7 @@ EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver = { **/
EFI_STATUS
EFIAPI
-InitializeIsaSerial(
+InitializeIsaSerial (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
@@ -333,17 +390,15 @@ SerialControllerDriverStart ( //
// Initialize the serial device instance
//
- SerialDevice = AllocatePool (sizeof (SERIAL_DEV));
+ SerialDevice = AllocateCopyPool (sizeof (SERIAL_DEV), &gSerialDevTempate);
if (SerialDevice == NULL) {
Status = EFI_OUT_OF_RESOURCES;
goto Error;
}
- ZeroMem (SerialDevice, sizeof (SERIAL_DEV));
-
+ SerialDevice->SerialIo.Mode = &(SerialDevice->SerialMode);
SerialDevice->IsaIo = IsaIo;
SerialDevice->ParentDevicePath = ParentDevicePath;
- SerialDevice->ControllerNameTable = NULL;
ADD_SERIAL_NAME (SerialDevice, IsaIo);
@@ -371,30 +426,6 @@ SerialControllerDriverStart ( goto Error;
}
- SerialDevice->Signature = SERIAL_DEV_SIGNATURE;
- SerialDevice->Type = UART16550A;
- SerialDevice->SoftwareLoopbackEnable = FALSE;
- SerialDevice->HardwareFlowControl = FALSE;
- SerialDevice->Handle = NULL;
- SerialDevice->Receive.First = 0;
- SerialDevice->Receive.Last = 0;
- SerialDevice->Receive.Surplus = SERIAL_MAX_BUFFER_SIZE;
- SerialDevice->Transmit.First = 0;
- SerialDevice->Transmit.Last = 0;
- SerialDevice->Transmit.Surplus = SERIAL_MAX_BUFFER_SIZE;
-
- //
- // Serial I/O
- //
- SerialDevice->SerialIo.Revision = SERIAL_IO_INTERFACE_REVISION;
- SerialDevice->SerialIo.Reset = IsaSerialReset;
- SerialDevice->SerialIo.SetAttributes = IsaSerialSetAttributes;
- SerialDevice->SerialIo.SetControl = IsaSerialSetControl;
- SerialDevice->SerialIo.GetControl = IsaSerialGetControl;
- SerialDevice->SerialIo.Write = IsaSerialWrite;
- SerialDevice->SerialIo.Read = IsaSerialRead;
- SerialDevice->SerialIo.Mode = &(SerialDevice->SerialMode);
-
if (RemainingDevicePath != NULL) {
//
// Match the configuration of the RemainingDevicePath. IsHandleSupported()
@@ -404,14 +435,9 @@ SerialControllerDriverStart ( CopyMem (&SerialDevice->UartDevicePath, RemainingDevicePath, sizeof (UART_DEVICE_PATH));
} else {
//
- // Build the device path by appending the UART node to the ParentDevicePath
- // from the WinNtIo handle. The Uart setings are zero here, since
- // SetAttribute() will update them to match the default setings.
+ // Use the values from the gSerialDevTempate as no remaining device path was
+ // passed in.
//
- ZeroMem (&SerialDevice->UartDevicePath, sizeof (UART_DEVICE_PATH));
- SerialDevice->UartDevicePath.Header.Type = MESSAGING_DEVICE_PATH;
- SerialDevice->UartDevicePath.Header.SubType = MSG_UART_DP;
- SetDevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) &SerialDevice->UartDevicePath, sizeof (UART_DEVICE_PATH));
}
//
// Build the device path by appending the UART node to the ParentDevicePath
@@ -420,20 +446,17 @@ SerialControllerDriverStart ( //
SerialDevice->DevicePath = AppendDevicePathNode (
ParentDevicePath,
- (EFI_DEVICE_PATH_PROTOCOL *) &SerialDevice->UartDevicePath
+ (EFI_DEVICE_PATH_PROTOCOL *)&SerialDevice->UartDevicePath
);
-
if (SerialDevice->DevicePath == NULL) {
Status = EFI_DEVICE_ERROR;
goto Error;
}
+
//
// Fill in Serial I/O Mode structure based on either the RemainingDevicePath or defaults.
//
- SerialDevice->SerialMode.ControlMask = SERIAL_PORT_DEFAULT_CONTROL_MASK;
- SerialDevice->SerialMode.Timeout = SERIAL_PORT_DEFAULT_TIMEOUT;
SerialDevice->SerialMode.BaudRate = SerialDevice->UartDevicePath.BaudRate;
- SerialDevice->SerialMode.ReceiveFifoDepth = SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH;
SerialDevice->SerialMode.DataBits = SerialDevice->UartDevicePath.DataBits;
SerialDevice->SerialMode.Parity = SerialDevice->UartDevicePath.Parity;
SerialDevice->SerialMode.StopBits = SerialDevice->UartDevicePath.StopBits;
@@ -1132,7 +1155,7 @@ IsaSerialSetAttributes ( // Check for default settings and fill in actual values.
//
if (BaudRate == 0) {
- BaudRate = SERIAL_PORT_DEFAULT_BAUD_RATE;
+ BaudRate = FixedPcdGet64 (PcdUartDefaultBaudRate);
}
if (ReceiveFifoDepth == 0) {
@@ -1144,15 +1167,15 @@ IsaSerialSetAttributes ( }
if (Parity == DefaultParity) {
- Parity = SERIAL_PORT_DEFAULT_PARITY;
+ Parity = FixedPcdGet8 (PcdUartDefaultParity);
}
if (DataBits == 0) {
- DataBits = SERIAL_PORT_DEFAULT_DATA_BITS;
+ DataBits = FixedPcdGet8 (PcdUartDefaultDataBits);
}
if (StopBits == DefaultStopBits) {
- StopBits = (EFI_STOP_BITS_TYPE) SERIAL_PORT_DEFAULT_STOP_BITS;
+ StopBits = (EFI_STOP_BITS_TYPE) FixedPcdGet8 (PcdUartDefaultStopBits);
}
//
// 5 and 6 data bits can not be verified on a 16550A UART
@@ -1801,8 +1824,7 @@ IsaSerialPortPresent ( Temp = READ_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress);
WRITE_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, 0xAA);
- if (READ_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress) != 0xAA)
- {
+ if (READ_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress) != 0xAA) {
if (!FeaturePcdGet (PcdNtEmulatorEnable)) {
Status = FALSE;
}
@@ -1810,8 +1832,7 @@ IsaSerialPortPresent ( WRITE_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress, 0x55);
- if (READ_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress) != 0x55)
- {
+ if (READ_SCR (SerialDevice->IsaIo, SerialDevice->BaseAddress) != 0x55) {
if (!FeaturePcdGet (PcdNtEmulatorEnable)) {
Status = FALSE;
}
diff --git a/Bus/Isa/IsaSerialDxe/Serial.h b/Bus/Isa/IsaSerialDxe/Serial.h index bf78094..0fcc4f3 100644 --- a/Bus/Isa/IsaSerialDxe/Serial.h +++ b/Bus/Isa/IsaSerialDxe/Serial.h @@ -121,14 +121,18 @@ extern EFI_DRIVER_BINDING_PROTOCOL gSerialControllerDriver; //
// Serial Driver Defaults
//
-#define SERIAL_PORT_DEFAULT_BAUD_RATE 115200
#define SERIAL_PORT_DEFAULT_RECEIVE_FIFO_DEPTH 1
#define SERIAL_PORT_DEFAULT_TIMEOUT 1000000
+
+/*
+#define SERIAL_PORT_DEFAULT_BAUD_RATE 115200
#define SERIAL_PORT_DEFAULT_PARITY NoParity
#define SERIAL_PORT_DEFAULT_DATA_BITS 8
#define SERIAL_PORT_DEFAULT_STOP_BITS 1
+*/
#define SERIAL_PORT_DEFAULT_CONTROL_MASK 0
+
//
// (24000000/13)MHz input clock
//
|