hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/** @file
 
  Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#include <Uefi.h>
#include <IndustryStandard/RpiMbox.h>
#include <Library/SerialPortLib.h>
#include <Library/PcdLib.h>
#include <Protocol/RpiFirmware.h>
 
EFI_STATUS
EFIAPI
DualSerialPortDxeLibConstructor (
  IN EFI_HANDLE         ImageHandle,
  IN EFI_SYSTEM_TABLE   *SystemTable
  )
{
  RASPBERRY_PI_FIRMWARE_PROTOCOL    *Firmware;
  UINT32                            ClockRate;
  EFI_STATUS                        Status;
 
  Status = SystemTable->BootServices->LocateProtocol (
                                        &gRaspberryPiFirmwareProtocolGuid,
                                        NULL, (VOID **)&Firmware);
  if (EFI_ERROR (Status)) {
    return Status;
  }
 
  Status = Firmware->GetClockRate (RPI_MBOX_CLOCK_RATE_CORE, &ClockRate);
  if (EFI_ERROR (Status)) {
    return Status;
  }
 
  PatchPcdSet32 (PcdSerialClockRate, ClockRate);
  return EFI_SUCCESS;
}