initial bringup

Signed-off-by: Ivaylo Ivanov <ivo.ivanov@null.net>
This commit is contained in:
Ivaylo Ivanov 2021-09-01 15:27:03 +03:00
parent 1cf3e94ab3
commit c75269db6e
10 changed files with 49 additions and 43 deletions

View File

@ -34,19 +34,17 @@ SerialPortInitialize (
VOID
)
{
#if 0
UINT8* base = (UINT8*)0xa1a10000ull;
UINT8* base = (UINT8*)0x8d100000ull;
for (UINTN i = 0; i < 0x200000; i++) {
base[i] = 0;
}
#endif
return RETURN_SUCCESS;
}
static void mem_putchar(UINT8 c) {
static const UINTN size = 0x200000;
static UINTN offset = 0;
UINT8* base = (UINT8*)0xa1a10000ull;
UINT8* base = (UINT8*)0x8d100000ull;
base[offset++] = c;
if (offset >= size) {
offset = 0;

View File

@ -18,31 +18,7 @@
.align 3
ASM_FUNC(ArmPlatformPeiBootAction)
startlabel:
// check if we're located at expected location
adr x4, .
ldr x5, =ArmPlatformPeiBootAction
cmp x4, x5
bne docopy
ret
docopy:
// find our start address by getting our expected offset, then subtracting it from our actual address
ldr x6, =FixedPcdGet64 (PcdFdBaseAddress)
sub x5, x5, x6 // x5 now holds offset of ArmPlatformPeiBootAction from start of FD base
sub x4, x4, x5 // x4 now holds address of actual FD base
// tweak the return address
// note: x30 is lr; gcc5 doesn't have the alias
sub x30, x30, x4
add x30, x30, x6
ldr x5, =FixedPcdGet64 (PcdFdSize)
// crap memcpy
loop:
ldp x2, x3, [x4], #16
stp x2, x3, [x6], #16
subs x5, x5, #16
b.ne loop
ret
.ltorg
//UINTN
//ArmPlatformIsPrimaryCore (

View File

@ -27,7 +27,7 @@
#define DDR_ATTRIBUTES_UNCACHED ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED
#define SDM845_PERIPH_BASE 0x00000000
#define SDM845_PERIPH_SZ 0x80000000
#define SDM845_PERIPH_SZ 0x60000000
#define HIKEY960_MEMORY_SIZE 0x0000000100000000
@ -35,10 +35,17 @@ STATIC struct Pixel3XLReservedMemory {
EFI_PHYSICAL_ADDRESS Offset;
EFI_PHYSICAL_ADDRESS Size;
} Pixel3XLReservedMemoryBuffer [] = {
{ 0x85700000, 0x00600000 }, // hyp_region
{ 0x85e00000, 0x00100000 }, // xbl_region
{ 0x85fc0000, 0x02f40000 }, // removed_region
{ 0x8ab00000, 0x01400000 }, // qseecom_region
/** { 0x86000000, 0x00300000 }, // tz_apps_region
{ 0x86300000, 0x00100000 }, // smem_region
{ 0x86400000, 0x00280000 }, // tz/hyp_region
{ 0x86700000, 0x06C00000 }, // MPSS/EFS/DHMS/PIL_region
**/
/*
{ 0x85A00000, 0x00E00000 }, // tz-apps_region
{ 0x86800000, 0x05400000 }, // mpss_region
{ 0x8bc00000, 0x00200000 }, // gps_region
{ 0x8be00000, 0x00600000 }, // wcnss_region
{ 0x8c400000, 0x00600000 }, // venus_region*/
};
/**

View File

@ -33,7 +33,7 @@
[PcdsFixedAtBuild.common]
# Simple FrameBuffer
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferAddress|0x00400000|UINT32|0x0000a400
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferAddress|0x00400000|UINT32|0x0000a400 # 0x7C400000
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferWidth|1080|UINT32|0x0000a401
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferHeight|1920|UINT32|0x0000a402
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferPixelBpp|32|UINT32|0x0000a403

View File

@ -93,9 +93,9 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString|L"Alpha"
# System Memory (4GB)
# System Memory (1.5GB)
gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000
gArmTokenSpaceGuid.PcdSystemMemorySize|0xe0000000
gArmTokenSpaceGuid.PcdSystemMemorySize|0x60000000
# We only boot one processor here!
gArmPlatformTokenSpaceGuid.PcdCoreCount|1
@ -108,8 +108,8 @@
#
# ARM General Interrupt Controller
#
gArmTokenSpaceGuid.PcdGicDistributorBase|0x17a00000
gArmTokenSpaceGuid.PcdGicRedistributorsBase|0x17a60000
gArmTokenSpaceGuid.PcdGicDistributorBase|0x0b000000
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x0b002000
gArmTokenSpaceGuid.PcdArmArchTimerIntrNum|0x12
gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum|0x13
@ -133,9 +133,9 @@
#
gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|TRUE
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferAddress|0x9d400000
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferWidth|1440
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferHeight|2960
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferAddress|0x8e000000
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferWidth|720
gPixel3XLTokenSpaceGuid.PcdMipiFrameBufferHeight|1280
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20

View File

@ -25,7 +25,7 @@
################################################################################
[FD.PIXEL3XL_UEFI]
BaseAddress = 0xd0000000|gArmTokenSpaceGuid.PcdFdBaseAddress # The base address of the Firmware in NOR Flash.
BaseAddress = 0x80080000|gArmTokenSpaceGuid.PcdFdBaseAddress # The base address of the Firmware in NOR Flash.
Size = 0x00200000|gArmTokenSpaceGuid.PcdFdSize # The size in bytes of the FLASH Device
ErasePolarity = 1

View File

@ -43,6 +43,7 @@ InitPeripherals (
IN VOID
)
{
// MmioWrite32(0x004ab000, 0);
/* This also crashes. Do you really hate memory attributes or something?
EFI_STATUS Status;
// https://lists.01.org/pipermail/edk2-devel/2017-August/013417.html

24
basic.dts Normal file
View File

@ -0,0 +1,24 @@
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
/ {
// This is used by the bootloader to find the correct DTB
qcom,msm-id = <206 0>; // qcom,msm-id = <247 0>; for APQ8016
qcom,board-id = <0xCE08FF01 5>; /* FIXME: Check your downstream device tree */
model = "Samsung Galaxy J5 2015"; // FIXME
compatible = "samsung,j500f", "qcom,msm8916"; // FIXME
#address-cells = <2>;
#size-cells = <2>;
// The bootloader gets really sad if it cannot find those nodes
chosen { };
memory@0 {
device_type = "memory";
/* We expect the bootloader to fill in the reg */
reg = <0 0 0 0>;
};
};

View File

@ -5,4 +5,4 @@ set -e
# not actually GCC5; it's GCC7 on Ubuntu 18.04.
GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -s -n 0 -a AARCH64 -t GCC5 -p Pixel3XL/Pixel3XL.dsc
gzip -c < workspace/Build/Pixel3XL/DEBUG_GCC5/FV/PIXEL3XL_UEFI.fd >uefi.img
cat crosshatch.dtb >>uefi.img
cat j5.dtb >>uefi.img

BIN
j5.dtb Normal file

Binary file not shown.