[edk2-devel] [PATCH v2 09/28] Silicon/NXP: Drop DUartPortLib

Leif Lindholm leif at nuviainc.com
Wed Apr 1 09:55:16 UTC 2020


On Fri, Mar 20, 2020 at 20:05:24 +0530, Pankaj Bansal wrote:
> From: Pankaj Bansal <pankaj.bansal at nxp.com>
> 
> DUartPortLib is for ns16550 compatible UART in LS1043A. Therefore, we can
> remove it and use BaseSerialPortLib16550.
> 
> Signed-off-by: Pankaj Bansal <pankaj.bansal at nxp.com>

Reviewed-by: Leif Lindholm <leif at nuviainc.com>

> ---
>  Silicon/NXP/Library/DUartPortLib/DUart.h      | 122 ------
>  .../NXP/Library/DUartPortLib/DUartPortLib.c   | 364 ------------------
>  .../NXP/Library/DUartPortLib/DUartPortLib.inf |  34 --
>  3 files changed, 520 deletions(-)
>  delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUart.h
>  delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
>  delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf
> 
> diff --git a/Silicon/NXP/Library/DUartPortLib/DUart.h b/Silicon/NXP/Library/DUartPortLib/DUart.h
> deleted file mode 100644
> index c71e2ce55d1d..000000000000
> --- a/Silicon/NXP/Library/DUartPortLib/DUart.h
> +++ /dev/null
> @@ -1,122 +0,0 @@
> -/** DUart.h
> -*  Header defining the DUART constants (Base addresses, sizes, flags)
> -*
> -*  Based on Serial I/O Port library headers available in PL011Uart.h
> -*
> -*  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
> -*  Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved.
> -*  Copyright 2017 NXP
> -*
> -*  SPDX-License-Identifier: BSD-2-Clause-Patent
> -*
> -**/
> -
> -#ifndef DUART_H_
> -#define DUART_H_
> -
> -// FIFO Control Register
> -#define DUART_FCR_FIFO_EN          0x01 /* Fifo enable */
> -#define DUART_FCR_CLEAR_RCVR       0x02 /* Clear the RCVR FIFO */
> -#define DUART_FCR_CLEAR_XMIT       0x04 /* Clear the XMIT FIFO */
> -#define DUART_FCR_DMA_SELECT       0x08 /* For DMA applications */
> -#define DUART_FCR_TRIGGER_MASK     0xC0 /* Mask for the FIFO trigger range */
> -#define DUART_FCR_TRIGGER_1        0x00 /* Mask for trigger set at 1 */
> -#define DUART_FCR_TRIGGER_4        0x40 /* Mask for trigger set at 4 */
> -#define DUART_FCR_TRIGGER_8        0x80 /* Mask for trigger set at 8 */
> -#define DUART_FCR_TRIGGER_14       0xC0 /* Mask for trigger set at 14 */
> -#define DUART_FCR_RXSR             0x02 /* Receiver soft reset */
> -#define DUART_FCR_TXSR             0x04 /* Transmitter soft reset */
> -
> -// Modem Control Register
> -#define DUART_MCR_DTR              0x01 /* Reserved  */
> -#define DUART_MCR_RTS              0x02 /* RTS   */
> -#define DUART_MCR_OUT1             0x04 /* Reserved */
> -#define DUART_MCR_OUT2             0x08 /* Reserved */
> -#define DUART_MCR_LOOP             0x10 /* Enable loopback test mode */
> -#define DUART_MCR_AFE              0x20 /* AFE (Auto Flow Control) */
> -#define DUART_MCR_DMA_EN           0x04
> -#define DUART_MCR_TX_DFR           0x08
> -
> -// Line Control Register
> -/*
> -* Note: if the word length is 5 bits (DUART_LCR_WLEN5), then setting
> -* DUART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
> -*/
> -#define DUART_LCR_WLS_MSK          0x03 /* character length select mask */
> -#define DUART_LCR_WLS_5            0x00 /* 5 bit character length */
> -#define DUART_LCR_WLS_6            0x01 /* 6 bit character length */
> -#define DUART_LCR_WLS_7            0x02 /* 7 bit character length */
> -#define DUART_LCR_WLS_8            0x03 /* 8 bit character length */
> -#define DUART_LCR_STB              0x04 /* # stop Bits, off=1, on=1.5 or 2) */
> -#define DUART_LCR_PEN              0x08 /* Parity eneble */
> -#define DUART_LCR_EPS              0x10 /* Even Parity Select */
> -#define DUART_LCR_STKP             0x20 /* Stick Parity */
> -#define DUART_LCR_SBRK             0x40 /* Set Break */
> -#define DUART_LCR_BKSE             0x80 /* Bank select enable */
> -#define DUART_LCR_DLAB             0x80 /* Divisor latch access bit */
> -
> -// Line Status Register
> -#define DUART_LSR_DR               0x01 /* Data ready */
> -#define DUART_LSR_OE               0x02 /* Overrun */
> -#define DUART_LSR_PE               0x04 /* Parity error */
> -#define DUART_LSR_FE               0x08 /* Framing error */
> -#define DUART_LSR_BI               0x10 /* Break */
> -#define DUART_LSR_THRE             0x20 /* Xmit holding register empty */
> -#define DUART_LSR_TEMT             0x40 /* Xmitter empty */
> -#define DUART_LSR_ERR              0x80 /* Error */
> -
> -// Modem Status Register
> -#define DUART_MSR_DCTS             0x01 /* Delta CTS */
> -#define DUART_MSR_DDSR             0x02 /* Reserved */
> -#define DUART_MSR_TERI             0x04 /* Reserved */
> -#define DUART_MSR_DDCD             0x08 /* Reserved */
> -#define DUART_MSR_CTS              0x10 /* Clear to Send */
> -#define DUART_MSR_DSR              0x20 /* Reserved */
> -#define DUART_MSR_RI               0x40 /* Reserved */
> -#define DUART_MSR_DCD              0x80 /* Reserved */
> -
> -// Interrupt Identification Register
> -#define DUART_IIR_NO_INT           0x01 /* No interrupts pending */
> -#define DUART_IIR_ID               0x06 /* Mask for the interrupt ID */
> -#define DUART_IIR_MSI              0x00 /* Modem status interrupt */
> -#define DUART_IIR_THRI             0x02 /* Transmitter holding register empty */
> -#define DUART_IIR_RDI              0x04 /* Receiver data interrupt */
> -#define DUART_IIR_RLSI             0x06 /* Receiver line status interrupt */
> -
> -//  Interrupt Enable Register
> -#define DUART_IER_MSI              0x08 /* Enable Modem status interrupt */
> -#define DUART_IER_RLSI             0x04 /* Enable receiver line status interrupt */
> -#define DUART_IER_THRI             0x02 /* Enable Transmitter holding register int. */
> -#define DUART_IER_RDI              0x01 /* Enable receiver data interrupt */
> -
> -// LCR defaults
> -#define DUART_LCR_8N1              0x03
> -#define DUART_LCRVAL               DUART_LCR_8N1          /* 8 data, 1 stop, no parity */
> -#define DUART_MCRVAL               (DUART_MCR_DTR | \
> -                                   DUART_MCR_RTS)         /* RTS/DTR */
> -#define DUART_FCRVAL               (DUART_FCR_FIFO_EN | \
> -                                   DUART_FCR_RXSR |    \
> -                                   DUART_FCR_TXSR)        /* Clear & enable FIFOs */
> -
> -#define URBR         0x0
> -#define UTHR         0x0
> -#define UDLB         0x0
> -#define UDMB         0x1
> -#define UIER         0x1
> -#define UIIR         0x2
> -#define UFCR         0x2
> -#define UAFR         0x2
> -#define ULCR         0x3
> -#define UMCR         0x4
> -#define ULSR         0x5
> -#define UMSR         0x6
> -#define USCR         0x7
> -#define UDSR         0x10
> -
> -extern
> -UINT64
> -GetBusFrequency (
> -  VOID
> -  );
> -
> -#endif /* DUART_H_ */
> diff --git a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c b/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
> deleted file mode 100644
> index c3c738d3cca8..000000000000
> --- a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
> +++ /dev/null
> @@ -1,364 +0,0 @@
> -/** DuartPortLib.c
> -  DUART (NS16550) library functions
> -
> -  Based on Serial I/O Port library functions available in PL011SerialPortLib.c
> -
> -  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -  Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>
> -  Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved.
> -  Copyright 2017 NXP
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#include <Base.h>
> -#include <Library/IoLib.h>
> -#include <Library/PcdLib.h>
> -#include <Library/SerialPortLib.h>
> -
> -#include "DUart.h"
> -
> -STATIC CONST UINT32 mInvalidControlBits = (EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE | \
> -                                           EFI_SERIAL_DATA_TERMINAL_READY);
> -
> -/**
> -  Assert or deassert the control signals on a serial port.
> -  The following control signals are set according their bit settings :
> -  . Request to Send
> -  . Data Terminal Ready
> -
> -  @param[in]  Control     The following bits are taken into account :
> -                          . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the
> -                            "Request To Send" control signal if this bit is
> -                            equal to one/zero.
> -                          . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert
> -                            the "Data Terminal Ready" control signal if this
> -                            bit is equal to one/zero.
> -                          . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable
> -                            the hardware loopback if this bit is equal to
> -                            one/zero.
> -                          . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported.
> -                          . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/
> -                            disable the hardware flow control based on CTS (Clear
> -                            To Send) and RTS (Ready To Send) control signals.
> -
> -  @retval  EFI_SUCCESS      The new control bits were set on the device.
> -  @retval  EFI_UNSUPPORTED  The device does not support this operation.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -SerialPortSetControl (
> -  IN  UINT32  Control
> -  )
> -{
> -  UINT32  McrBits;
> -  UINTN   UartBase;
> -
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -
> -  if (Control & (mInvalidControlBits)) {
> -    return EFI_UNSUPPORTED;
> -  }
> -
> -  McrBits = MmioRead8 (UartBase + UMCR);
> -
> -  if (Control & EFI_SERIAL_REQUEST_TO_SEND) {
> -    McrBits |= DUART_MCR_RTS;
> -  } else {
> -    McrBits &= ~DUART_MCR_RTS;
> -  }
> -
> -  if (Control & EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) {
> -    McrBits |= DUART_MCR_LOOP;
> -  } else {
> -    McrBits &= ~DUART_MCR_LOOP;
> -  }
> -
> -  if (Control & EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) {
> -    McrBits |= DUART_MCR_AFE;
> -  } else {
> -    McrBits &= ~DUART_MCR_AFE;
> -  }
> -
> -  MmioWrite32 (UartBase + UMCR, McrBits);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Retrieve the status of the control bits on a serial device.
> -
> -  @param[out]  Control     Status of the control bits on a serial device :
> -
> -                         . EFI_SERIAL_DATA_CLEAR_TO_SEND,
> -                           EFI_SERIAL_DATA_SET_READY,
> -                           EFI_SERIAL_RING_INDICATE,
> -                           EFI_SERIAL_CARRIER_DETECT,
> -                           EFI_SERIAL_REQUEST_TO_SEND,
> -                           EFI_SERIAL_DATA_TERMINAL_READY
> -                           are all related to the DTE (Data Terminal Equipment)
> -                           and DCE (Data Communication Equipment) modes of
> -                           operation of the serial device.
> -                         . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the
> -                           receive buffer is empty, 0 otherwise.
> -                         . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the
> -                           transmit buffer is empty, 0 otherwise.
> -                         . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if
> -                           the hardware loopback is enabled (the ouput feeds the
> -                           receive buffer), 0 otherwise.
> -                         . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if
> -                           a loopback is accomplished by software, 0 otherwise.
> -                         . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to
> -                           one if the hardware flow control based on CTS (Clear
> -                           To Send) and RTS (Ready To Send) control signals is
> -                           enabled, 0 otherwise.
> -
> -  @retval EFI_SUCCESS      The control bits were read from the serial device.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -SerialPortGetControl (
> -  OUT  UINT32   *Control
> -  )
> -{
> -  UINT32        MsrRegister;
> -  UINT32        McrRegister;
> -  UINT32        LsrRegister;
> -  UINTN         UartBase;
> -
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -
> -  MsrRegister = MmioRead8 (UartBase + UMSR);
> -  McrRegister = MmioRead8 (UartBase + UMCR);
> -  LsrRegister = MmioRead8 (UartBase + ULSR);
> -
> -  *Control = 0;
> -
> -  if ((MsrRegister & DUART_MSR_CTS) == DUART_MSR_CTS) {
> -    *Control |= EFI_SERIAL_CLEAR_TO_SEND;
> -  }
> -
> -  if ((McrRegister & DUART_MCR_RTS) == DUART_MCR_RTS) {
> -    *Control |= EFI_SERIAL_REQUEST_TO_SEND;
> -  }
> -
> -  if ((LsrRegister & DUART_LSR_TEMT) == DUART_LSR_TEMT) {
> -    *Control |= EFI_SERIAL_OUTPUT_BUFFER_EMPTY;
> -  }
> -
> -  if ((McrRegister & DUART_MCR_AFE) == DUART_MCR_AFE) {
> -    *Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE;
> -  }
> -
> -  if ((McrRegister & DUART_MCR_LOOP) == DUART_MCR_LOOP) {
> -    *Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE;
> -  }
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/*
> - * Return Baud divisor on basis of Baudrate
> - */
> -UINT32
> -CalculateBaudDivisor (
> -  IN UINT64 BaudRate
> -  )
> -{
> -  UINTN DUartClk;
> -  UINTN FreqSystemBus;
> -
> -  FreqSystemBus = GetBusFrequency ();
> -  DUartClk = FreqSystemBus/PcdGet32(PcdPlatformFreqDiv);
> -
> -  return ((DUartClk)/(BaudRate * 16));
> -}
> -
> -/*
> -   Initialise the serial port to the specified settings.
> -   All unspecified settings will be set to the default values.
> -
> -   @return    Always return EFI_SUCCESS or EFI_INVALID_PARAMETER.
> -
> - **/
> -VOID
> -EFIAPI
> -DuartInitializePort (
> -  IN  UINT64  BaudRate
> -  )
> -{
> -  UINTN   UartBase;
> -  UINT32  BaudDivisor;
> -
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -  BaudDivisor = CalculateBaudDivisor (BaudRate);
> -
> -
> -  while (!(MmioRead8 (UartBase + ULSR) & DUART_LSR_TEMT));
> -
> -  //
> -  // Enable and assert interrupt when new data is available on
> -  // external device,
> -  // setup data format, setup baud divisor
> -  //
> -  MmioWrite8 (UartBase + UIER, 0x1);
> -  MmioWrite8 (UartBase + ULCR, DUART_LCR_BKSE | DUART_LCRVAL);
> -  MmioWrite8 (UartBase + UDLB, 0);
> -  MmioWrite8 (UartBase + UDMB, 0);
> -  MmioWrite8 (UartBase + ULCR, DUART_LCRVAL);
> -  MmioWrite8 (UartBase + UMCR, DUART_MCRVAL);
> -  MmioWrite8 (UartBase + UFCR, DUART_FCRVAL);
> -  MmioWrite8 (UartBase + ULCR, DUART_LCR_BKSE | DUART_LCRVAL);
> -  MmioWrite8 (UartBase + UDLB, BaudDivisor & 0xff);
> -  MmioWrite8 (UartBase + UDMB, (BaudDivisor >> 8) & 0xff);
> -  MmioWrite8 (UartBase + ULCR, DUART_LCRVAL);
> -
> -  return;
> -}
> -
> -/**
> -  Programmed hardware of Serial port.
> -
> -  @return    Always return EFI_SUCCESS.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -SerialPortInitialize (
> -  VOID
> -  )
> -{
> -  UINT64  BaudRate;
> -  BaudRate = (UINTN)PcdGet64 (PcdUartDefaultBaudRate);
> -
> -
> -  DuartInitializePort (BaudRate);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Write data to serial device.
> -
> -  @param  Buffer           Point of data buffer which need to be written.
> -  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
> -
> -  @retval 0                Write data failed.
> -  @retval !0               Actual number of bytes written to serial device.
> -
> -**/
> -UINTN
> -EFIAPI
> -SerialPortWrite (
> -  IN  UINT8     *Buffer,
> -  IN  UINTN     NumberOfBytes
> -  )
> -{
> -  UINT8         *Final;
> -  UINTN         UartBase;
> -
> -  Final = &Buffer[NumberOfBytes];
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -
> -  while (Buffer < Final) {
> -    while ((MmioRead8 (UartBase + ULSR) & DUART_LSR_THRE) == 0);
> -    MmioWrite8 (UartBase + UTHR, *Buffer++);
> -  }
> -
> -  return NumberOfBytes;
> -}
> -
> -/**
> -  Read data from serial device and save the data in buffer.
> -
> -  @param  Buffer           Point of data buffer which need to be written.
> -  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
> -
> -  @retval 0                Read data failed.
> -  @retval !0               Actual number of bytes read from serial device.
> -
> -**/
> -UINTN
> -EFIAPI
> -SerialPortRead (
> -  OUT UINT8     *Buffer,
> -  IN  UINTN     NumberOfBytes
> -  )
> -{
> -  UINTN   Count;
> -  UINTN   UartBase;
> -
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -
> -  for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) {
> -     // Loop while waiting for a new char(s) to arrive in the
> -     // RxFIFO
> -    while ((MmioRead8 (UartBase + ULSR) & DUART_LSR_DR) == 0);
> -
> -    *Buffer = MmioRead8 (UartBase + URBR);
> -  }
> -
> -  return NumberOfBytes;
> -}
> -
> -/**
> -  Check to see if any data is available to be read from the debug device.
> -
> -  @retval EFI_SUCCESS       At least one byte of data is available to be read
> -  @retval EFI_NOT_READY     No data is available to be read
> -  @retval EFI_DEVICE_ERROR  The serial device is not functioning properly
> -
> -**/
> -BOOLEAN
> -EFIAPI
> -SerialPortPoll (
> -  VOID
> -  )
> -{
> -  UINTN   UartBase;
> -
> -  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
> -
> -  return ((MmioRead8 (UartBase + ULSR) & DUART_LSR_DR) != 0);
> -}
> -
> -/**
> -  Set new attributes to LS1043a.
> -
> -  @param  BaudRate                The baud rate of the serial device. If the baud rate is not supported,
> -                                  the speed will be reduced down to the nearest supported one and the
> -                                  variable's value will be updated accordingly.
> -  @param  ReceiveFifoDepth        The number of characters the device will buffer on input. If the specified
> -                                  value is not supported, the variable's value will be reduced down to the
> -                                  nearest supported one.
> -  @param  Timeout                 If applicable, the number of microseconds the device will wait
> -                                  before timing out a Read or a Write operation.
> -  @param  Parity                  If applicable, this is the EFI_PARITY_TYPE that is computed or checked
> -                                  as each character is transmitted or received. If the device does not
> -                                  support parity, the value is the default parity value.
> -  @param  DataBits                The number of data bits in each character
> -  @param  StopBits                If applicable, the EFI_STOP_BITS_TYPE number of stop bits per character.
> -                                  If the device does not support stop bits, the value is the default stop
> -                                  bit value.
> -
> -  @retval EFI_SUCCESS             All attributes were set correctly on the serial device.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -SerialPortSetAttributes (
> -  IN  OUT  UINT64              *BaudRate,
> -  IN  OUT  UINT32              *ReceiveFifoDepth,
> -  IN  OUT  UINT32              *Timeout,
> -  IN  OUT  EFI_PARITY_TYPE     *Parity,
> -  IN  OUT  UINT8               *DataBits,
> -  IN  OUT  EFI_STOP_BITS_TYPE  *StopBits
> -  )
> -{
> -  DuartInitializePort (*BaudRate);
> -
> -  return EFI_SUCCESS;
> -}
> diff --git a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf b/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf
> deleted file mode 100644
> index 7a2fa619b027..000000000000
> --- a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -#  DUartPortLib.inf
> -#
> -#  Component description file for DUartPortLib module
> -#
> -#  Copyright (c) 2013, Freescale Ltd. All rights reserved.
> -#  Copyright 2017 NXP
> -#
> -#  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -
> -[Defines]
> -  INF_VERSION                    = 0x0001001A
> -  BASE_NAME                      = DUartPortLib
> -  FILE_GUID                      = c42dfe79-8de5-429e-a055-2d0a58591498
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = SerialPortLib
> -
> -[Sources.common]
> -  DUartPortLib.c
> -
> -[LibraryClasses]
> -  PcdLib
> -  SocLib
> -
> -[Packages]
> -  MdeModulePkg/MdeModulePkg.dec
> -  MdePkg/MdePkg.dec
> -  Silicon/NXP/NxpQoriqLs.dec
> -
> -[Pcd]
> -  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
> -  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
> -  gNxpQoriqLsTokenSpaceGuid.PcdPlatformFreqDiv
> -- 
> 2.17.1
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#56832): https://edk2.groups.io/g/devel/message/56832
Mute This Topic: https://groups.io/mt/72077422/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list