]>
git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/ArmRealViewEbPkg/Library/GdbSerialLib/GdbSerialLib.c
2 Basic serial IO abstaction for GDB
4 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #include <Library/GdbSerialLib.h>
18 #include <Library/PcdLib.h>
19 #include <Library/IoLib.h>
20 #include <Drivers/PL011Uart.h>
24 GdbSerialLibConstructor (
28 return GdbSerialInit (115200, 0, 8, 1);
40 if ((Parity
!= 0) || (DataBits
!= 8) || (StopBits
!= 1)) {
41 return RETURN_UNSUPPORTED
;
44 if (BaudRate
!= 115200) {
45 // Could add support for different Baud rates....
46 return RETURN_UNSUPPORTED
;
49 UINT32 Base
= PcdGet32 (PcdGdbUartBase
);
51 // initialize baud rate generator to 115200 based on EB clock REFCLK24MHZ
52 MmioWrite32 (Base
+ UARTIBRD
, UART_115200_IDIV
);
53 MmioWrite32 (Base
+ UARTFBRD
, UART_115200_FDIV
);
55 // no parity, 1 stop, no fifo, 8 data bits
56 MmioWrite32 (Base
+ UARTLCR_H
, 0x60);
58 // clear any pending errors
59 MmioWrite32 (Base
+ UARTECR
, 0);
61 // enable tx, rx, and uart overall
62 MmioWrite32 (Base
+ UARTCR
, 0x301);
64 return RETURN_SUCCESS
;
73 UINT32 FR
= PcdGet32 (PcdGdbUartBase
) + UARTFR
;
75 if ((MmioRead32 (FR
) & UART_RX_EMPTY_FLAG_MASK
) == 0) {
88 UINT32 FR
= PcdGet32 (PcdGdbUartBase
) + UARTFR
;
89 UINT32 DR
= PcdGet32 (PcdGdbUartBase
) + UARTDR
;
91 while ((MmioRead32 (FR
) & UART_RX_EMPTY_FLAG_MASK
) == 0);
92 return MmioRead8 (DR
);
101 UINT32 FR
= PcdGet32 (PcdGdbUartBase
) + UARTFR
;
102 UINT32 DR
= PcdGet32 (PcdGdbUartBase
) + UARTDR
;
104 while ((MmioRead32 (FR
) & UART_TX_EMPTY_FLAG_MASK
) != 0);
105 MmioWrite8 (DR
, Char
);
114 while (*String
!= '\0') {
115 GdbPutChar (*String
);