Skip to content

PolarFire SoC M-Mode Support with SC QSPI Flash#667

Open
dgarske wants to merge 11 commits intowolfSSL:masterfrom
dgarske:polarfire_soc_m
Open

PolarFire SoC M-Mode Support with SC QSPI Flash#667
dgarske wants to merge 11 commits intowolfSSL:masterfrom
dgarske:polarfire_soc_m

Conversation

@dgarske
Copy link
Contributor

@dgarske dgarske commented Jan 13, 2026

Adds support for running wolfBoot in Machine Mode (M-mode) on the PolarFire SoC MPFS250T, booting from eNVM and loading a signed application from SC QSPI flash into on-chip LIM (Loosely Integrated Memory). No HSS (Hart Software Services) or DDR is required. It also extends the existing PolarFire HAL with multi-hart support, L2 cache configuration, per-hart UART, and refactors shared code (SDHCI, SCB mailbox, linker/test-app) for both S-mode and M-mode builds.

@dgarske dgarske self-assigned this Jan 21, 2026
@dgarske dgarske changed the title PolarFire SoC M-Mode Support with DDR Initialization PolarFire SoC M-Mode Support with SC QSPI Flash Feb 20, 2026
@dgarske dgarske marked this pull request as ready for review February 20, 2026 00:06
Copilot AI review requested due to automatic review settings February 25, 2026 17:49
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds Machine Mode (M-mode) support for PolarFire SoC MPFS250T, enabling wolfBoot to run directly from eNVM without requiring HSS (Hart Software Services) or DDR. The implementation boots from eNVM, executes from L2 Scratchpad SRAM, and loads signed applications from SC QSPI flash into on-chip LIM.

Changes:

  • Added M-mode boot path with multi-hart support, L2 cache configuration, and per-hart UART
  • Extended HAL with SC QSPI flash driver and UART-based QSPI programmer
  • Refactored shared code (SDHCI, SCB mailbox, linker scripts) for both S-mode and M-mode builds

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
test-app/vector_riscv.S Simplified to use mret for M-mode payload
test-app/startup_riscv.c Updated to use M-mode CSRs (mtvec, mcause)
test-app/app_mpfs250.c Removed duplicate UART/HAL init to avoid clearing TX FIFO
test-app/RISCV64-mpfs250.ld Added dummy _main_hart_hls symbol
src/vector_riscv.S Refactored to use MODE_PREFIX macro for CSR access
src/update_disk.c Fixed unused variable warning with conditional compilation
src/sdhci.c Moved power init into card init, added udelay helper, refined debug flags
src/boot_riscv_start.S Added comprehensive M-mode boot sequence with eNVM-to-L2 copy
src/boot_riscv.c Added M-mode to S-mode transition support and direct M-mode jump
hal/riscv.h Extended with CLINT, L2 cache, and additional MSTATUS definitions
hal/mpfs250.h Added L2 cache, UART mapping, HLS structures, and M-mode peripherals
hal/mpfs250.c Refactored with L2 init, multi-hart support, and UART QSPI programmer
hal/mpfs250-m.ld New M-mode linker script for eNVM + L2 SRAM layout
docs/Targets.md Added M-mode documentation and updated S-mode references
config/examples/polarfire_mpfs250_m_qspi.config New M-mode configuration file
config/examples/polarfire_mpfs250.config Updated DTS comment and debug flag name
arch.mk Added M-mode vs S-mode build logic with appropriate flags
.github/workflows/test-configs.yml Added CI tests for M-mode configs
.gdbinit Updated for RISC-V debugging

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings February 27, 2026 20:20
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI review requested due to automatic review settings March 2, 2026 19:56
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 21 out of 21 changed files in this pull request and generated 13 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings March 2, 2026 22:56
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 13 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants