| ## Use Cases | |
| Use cases are divided into two general groups: | |
| * **Legacy Admissible Architectures**: Where the upstream device, that is, the | |
| device attached to the Root of Trust (RoT), boots from SPI NOR Flash EEPROM. | |
| * **Modern Admissible Architectures**: Where the upstream device supports | |
| flash-less boot (i.e., stream boot). Support for modern architectures will | |
| be added in a future version of this specification. | |
| ### Legacy Admissible Architectures | |
| There are three legacy admissible architectures supported by the OpenPRoT | |
| implementation: | |
| | Architecture | Common Usages | SPI NOR Flash EEPROM | | |
| | :-------------------------- | :---------------------------------- | :-------------------------------------------------- | | |
| | **Dual-Flash Side-by-side** | (Preferred) Most integrations | Two parts, one partition per part (i.e., A + B). | | |
| | **Direct-Connect** | Add-in devices; board-constrained | One part, double-sized to support A/B updates. | | |
| | **TPM** | TPM Daughtercard, Onboard TPM | None | | |
| ### Direct-Connect | |
| In the **Direct-Connect** architecture, OpenPRoT acts as an SPI interposer | |
| between the upstream device and the SPI NOR Flash EEPROM. OpenPRoT examines the | |
| opcode of each transaction and decides whether the operation should pass through | |
| to the backing SPI Flash or be intercepted and handled by its hardware filtering | |
| logic. This policy is controlled by both hardware and firmware. Typically: | |
| * **Control operations** are handled by the RoT hardware directly. | |
| * **Read operations** are passed through to the backing SPI Flash. | |
| * **Write operations** are intercepted by OpenPRoT firmware and may be | |
| replayed to the backing SPI flash based on security policy. | |
| OpenPRoT supports atomic A/B updates by diverting read operations to either the | |
| lower or upper half of the SPI Flash while hiding the opposing half. This | |
| requires the SPI Flash to be double the size needed by the upstream device | |
| (e.g., a 512Mbit Flash for a 256Mbit requirement). | |
| <img src="legacy_direct.svg" alt="legacy_direct" width="800"/> | |
| **Note**: Direct-Connect has a hardware limitation on the maximum supported SPI | |
| frequency due to board capacitance, layout, and the PRoT silicon. The | |
| integration designer must verify that the expected SPI frequency range is | |
| compatible with the upstream device. If this architecture is infeasible, | |
| consider the **Dual-Flash Side-by-Side** architecture instead. | |
| ### Dual-Flash Side-by-Side | |
| In the **Dual-Flash Side-by-Side** architecture, the upstream device has direct | |
| access to one of two physical SPI NOR Flash EEPROM chips, selected by an | |
| OpenPRoT-controlled mux. This arrangement supports atomic A/B updates. OpenPRoT | |
| can also directly access each flash chip. The layout should use the smallest | |
| possible nets to avoid signal integrity issues from stubs. | |
| Both SPI Flash chips **must be the same part**. The OpenPRoT firmware | |
| coordinates the mux control and its two SPI host interfaces to ensure the nets | |
| are not double-driven. | |
| <img src="legacy_side_by_side.svg" alt="legacy_direct" width="800"/> | |
| **Note**: If using quad-SPI, the flash requires a password protection feature, | |
| as the Write Protect (WP) pin is not available. | |
| ### TPM | |
| The **TPM Admissible Architecture** is designed for a direct connection to a | |
| standard TPM-SPI interface. In this configuration, OpenPRoT can be soldered onto | |
| the main board or placed on a separate daughtercard. | |
| TPM integrations do not require a backing SPI NOR Flash EEPROM and generally | |
| only support single-mode SPI. Where possible, these integrations should adhere | |
| to a standard TPM connector design. | |
| <img src="legacy_tpm.svg" alt="legacy_direct" width="500"/> |