# project-silicium/mu-silicium architecture

> Architecture diagram of the GitHub repository project-silicium/mu-silicium, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/project-silicium/mu-silicium
- Repository: https://github.com/project-silicium/mu-silicium

## Overview

Project Silicium is ARM64 UEFI firmware intended to let supported devices boot Windows or Linux. The user-facing path is device firmware startup through platform boot management to an OS boot option; optional firmware capabilities include secure-boot policy handling, USB mass-storage mode, and keypad input. Platform- and SoC-specific code supplies memory maps, memory-range discovery, and hardware support. The tree and excerpts establish these responsibilities, but do not show the complete firmware dispatch/configuration wiring, so unsampled connections are omitted.

Main entry points: [`Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c`](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c) (USB Mass Storage), [`Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c`](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c) (Secure Boot Handler), [`Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c`](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c) (Platform Boot Manager), [`Silicon/Silicium/SiliciumPkg/Drivers/RamManagerDxe/RamManager.c`](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/RamManagerDxe/RamManager.c) (UEFI RAM Mapping)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Device Platforms"]
  node_platform_maps["Platform Memory Maps"]
  node_platform_security["Platform Security"]
end

subgraph group_boot["Boot Services"]
  node_boot_manager["Platform Boot Manager<br/>[BootManager.c]"]
  node_secure_boot["Secure Boot Handler"]
  node_mass_storage["USB Mass Storage<br/>[MassStorage.c]"]
  node_mass_storage_types["Storage Device Path<br/>[MassStorage.h]"]
end

subgraph group_memory["Memory Management"]
  node_silicium_ram["UEFI RAM Mapping<br/>[RamManager.c]"]
  node_samsung_ram["Samsung RAM Ranges<br/>[RamManager.c]"]
  node_mediatek_ram["MediaTek RAM Ranges<br/>[RamManager.c]"]
end

subgraph group_hardware["Hardware Drivers"]
  node_keypad["Keypad Input Driver<br/>[KeypadController.c]"]
  node_keypad_protocol["Keypad Driver Interface<br/>[KeypadDxe.h]"]
  node_soc_drivers["SoC Hardware Drivers"]
end

node_device(("UEFI Device"))
node_os(("Windows or Linux"))
node_uefi_filesystem[("UEFI File System")]
node_usb_msd_protocol{{"USB MSD Protocol"}}
node_block_io{{"Block I/O Protocol"}}
node_emi_hardware["EMI Registers"]

node_device -.->|"starts firmware boot"| node_boot_manager
node_boot_manager -->|"boots option"| node_os
node_secure_boot -->|"reads and updates policy"| node_uefi_filesystem
node_secure_boot -->|"enrolls keys"| node_platform_security
node_mass_storage -->|"starts USB device"| node_usb_msd_protocol
node_mass_storage -->|"assigns storage handles"| node_block_io
node_mass_storage -->|"uses device path"| node_mass_storage_types
node_keypad -->|"uses interface types"| node_keypad_protocol
node_silicium_ram -.->|"parses memory map"| node_platform_maps
node_mediatek_ram -->|"reads rank registers"| node_emi_hardware

click node_platform_maps "https://github.com/project-silicium/mu-silicium/tree/main/Platforms"
click node_platform_security "https://github.com/project-silicium/mu-silicium/tree/main/Silicon"
click node_boot_manager "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c"
click node_secure_boot "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c"
click node_mass_storage "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c"
click node_mass_storage_types "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.h"
click node_silicium_ram "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/RamManagerDxe/RamManager.c"
click node_samsung_ram "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Samsung/SamsungPkg/Library/RamManagerLib/RamManager.c"
click node_mediatek_ram "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/MediaTek/MediaTekPkg/Library/RamManagerLib/RamManager.c"
click node_keypad "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadController.c"
click node_keypad_protocol "https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadDxe.h"
click node_soc_drivers "https://github.com/project-silicium/mu-silicium/tree/main/Silicon/MediaTek/MediaTekPkg/Drivers"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_platform_maps,node_platform_security toneBlue
class node_boot_manager,node_secure_boot,node_mass_storage,node_mass_storage_types,node_uefi_filesystem toneAmber
class node_silicium_ram,node_samsung_ram,node_mediatek_ram toneMint
class node_keypad,node_keypad_protocol,node_soc_drivers toneRose
class node_device,node_os,node_usb_msd_protocol,node_block_io,node_emi_hardware toneIndigo
```

## Components

### Device Platforms

- [Platform Memory Maps](https://github.com/project-silicium/mu-silicium/tree/main/Platforms): `Platforms`
- [Platform Security](https://github.com/project-silicium/mu-silicium/tree/main/Silicon): `Silicon`

### Boot Services

- [Platform Boot Manager](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c): `Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c`
- [Secure Boot Handler](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c): `Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c`
- [USB Mass Storage](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c): `Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c`
- [Storage Device Path](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.h): `Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.h`

### Memory Management

- [UEFI RAM Mapping](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/RamManagerDxe/RamManager.c): `Silicon/Silicium/SiliciumPkg/Drivers/RamManagerDxe/RamManager.c`
- [Samsung RAM Ranges](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Samsung/SamsungPkg/Library/RamManagerLib/RamManager.c): `Silicon/Samsung/SamsungPkg/Library/RamManagerLib/RamManager.c`
- [MediaTek RAM Ranges](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/MediaTek/MediaTekPkg/Library/RamManagerLib/RamManager.c): `Silicon/MediaTek/MediaTekPkg/Library/RamManagerLib/RamManager.c`

### Hardware Drivers

- [Keypad Input Driver](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadController.c): `Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadController.c`
- [Keypad Driver Interface](https://github.com/project-silicium/mu-silicium/blob/main/Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadDxe.h): `Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadDxe.h`
- [SoC Hardware Drivers](https://github.com/project-silicium/mu-silicium/tree/main/Silicon/MediaTek/MediaTekPkg/Drivers): `Silicon/MediaTek/MediaTekPkg/Drivers`

### Other components

- **UEFI Device**
- **Windows or Linux**
- **UEFI File System**
- **USB MSD Protocol**
- **Block I/O Protocol**
- **EMI Registers**

## Connections

- UEFI Device → Platform Boot Manager: starts firmware boot (evidence: `README.md`)
- Platform Boot Manager → Windows or Linux: boots option (evidence: `Silicon/Silicium/SiliciumPkg/Library/BootManagerLib/BootManager.c`)
- Secure Boot Handler → UEFI File System: reads and updates policy (evidence: `Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c`)
- Secure Boot Handler → Platform Security: enrolls keys (evidence: `Silicon/Silicium/SiliciumPkg/Library/SecureBootHandlerLib/SecureBootHandler.c`)
- USB Mass Storage → USB MSD Protocol: starts USB device (evidence: `Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c`)
- USB Mass Storage → Block I/O Protocol: assigns storage handles (evidence: `Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c`)
- USB Mass Storage → Storage Device Path: uses device path (evidence: `Silicon/Qualcomm/QcomPkg/Applications/MassStorage/MassStorage.c`)
- Keypad Input Driver → Keypad Driver Interface: uses interface types (evidence: `Silicon/Silicium/SiliciumPkg/Drivers/KeypadDxe/KeypadController.c`)
- UEFI RAM Mapping → Platform Memory Maps: parses memory map
- MediaTek RAM Ranges → EMI Registers: reads rank registers (evidence: `Silicon/MediaTek/MediaTekPkg/Library/RamManagerLib/RamManager.c`)
