Skip to content

Commit

Permalink
Kernel/aarch64: Move query_firmware_version into RPi::Mailbox
Browse files Browse the repository at this point in the history
This is for the upcoming commit that merges the x86_64 and aarch64
init.cpp files.
  • Loading branch information
FireFox317 authored and ADKaster committed Apr 4, 2023
1 parent 2613ac4 commit 14d2061
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 30 deletions.
26 changes: 26 additions & 0 deletions Kernel/Arch/aarch64/RPi/Mailbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,30 @@ bool Mailbox::send_queue(void* queue, u32 queue_size) const
return true;
}

class QueryFirmwareVersionMboxMessage : RPi::Mailbox::Message {
public:
u32 version;

QueryFirmwareVersionMboxMessage()
: RPi::Mailbox::Message(0x0000'0001, 4)
{
version = 0;
}
};

u32 Mailbox::query_firmware_version()
{
struct __attribute__((aligned(16))) {
MessageHeader header;
QueryFirmwareVersionMboxMessage query_firmware_version;
MessageTail tail;
} message_queue;

if (!the().send_queue(&message_queue, sizeof(message_queue))) {
return 0xffff'ffff;
}

return message_queue.query_firmware_version.version;
}

}
2 changes: 2 additions & 0 deletions Kernel/Arch/aarch64/RPi/Mailbox.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ class Mailbox {

// Sends message queue to VideoCore
bool send_queue(void* queue, u32 queue_size) const;

u32 query_firmware_version();
};

}
32 changes: 2 additions & 30 deletions Kernel/Arch/aarch64/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ READONLY_AFTER_INIT bool g_in_early_boot;

namespace Kernel {

static u32 query_firmware_version();

extern "C" [[noreturn]] void halt();
extern "C" [[noreturn]] void init();

Expand All @@ -68,8 +66,8 @@ void init_stage2(void*)
{
Process::register_new(Process::current());

auto firmware_version = query_firmware_version();
dmesgln("Firmware version: {}", firmware_version);
auto firmware_version = RPi::Mailbox::the().query_firmware_version();
dmesgln("RPi: Firmware version: {}", firmware_version);

VirtualFileSystem::initialize();

Expand Down Expand Up @@ -179,30 +177,4 @@ extern "C" [[noreturn]] void init()
VERIFY_NOT_REACHED();
}

class QueryFirmwareVersionMboxMessage : RPi::Mailbox::Message {
public:
u32 version;

QueryFirmwareVersionMboxMessage()
: RPi::Mailbox::Message(0x0000'0001, 4)
{
version = 0;
}
};

static u32 query_firmware_version()
{
struct __attribute__((aligned(16))) {
RPi::Mailbox::MessageHeader header;
QueryFirmwareVersionMboxMessage query_firmware_version;
RPi::Mailbox::MessageTail tail;
} message_queue;

if (!RPi::Mailbox::the().send_queue(&message_queue, sizeof(message_queue))) {
return 0xffff'ffff;
}

return message_queue.query_firmware_version.version;
}

}

0 comments on commit 14d2061

Please sign in to comment.