Add PS5 WiFi firmware initramfs loader support

Add a CPIO wrapper to add new files/folders at initrd at runtime
Add early boot scripts (initramfs-tools for debian-based) support
This commit is contained in:
buzzer-re
2026-05-10 19:28:00 -03:00
parent 4355489449
commit 28e2ccd35a
11 changed files with 337 additions and 1 deletions

19
include/cpio.h Normal file
View File

@@ -0,0 +1,19 @@
#ifndef CPIO_H
#define CPIO_H
#include <stddef.h>
#include <stdint.h>
#define CPIO_MODE_DIR 0040755
#define CPIO_MODE_FILE 0100644
size_t cpio_newc_entry_size(const char *name, size_t data_size);
size_t cpio_newc_parent_dirs_size(const char *path);
uint8_t *cpio_newc_data(uint8_t *entry, const char *name);
uint8_t *cpio_newc_write_entry(uint8_t *out, const char *name, uint32_t mode,
const void *data, size_t data_size,
uint32_t ino);
uint8_t *cpio_newc_write_parent_dirs(uint8_t *out, const char *path,
uint32_t *ino);
#endif

8
include/firmware.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef FIRMWARE_H
#define FIRMWARE_H
#include <stddef.h>
int resolve_device_firmwares(void **initrd, size_t *initrd_size);
#endif

View File

@@ -35,6 +35,8 @@ typedef struct _offset_list {
uint64_t KERNEL_UART_OVERRIDE;
uint64_t KERNEL_DEBUG_PATCH;
uint64_t KERNEL_CFI_CHECK;
uint64_t PS5_WIFI_FW_OFFSET;
uint64_t PS5_WIFI_FW_SIZE;
} offset_list;
extern offset_list off_0300;
@@ -47,4 +49,4 @@ extern offset_list off_0403;
extern offset_list off_0450;
extern offset_list off_0451;
#endif
#endif