[][src]Struct aw_fel::soc::Info

pub struct Info {
    soc_id: u32,
    name: &'static str,
    spl_addr: u32,
    scratch_addr: u32,
    thunk_addr: u32,
    thunk_size: u32,
    needs_l2en: bool,
    mmu_tt_addr: Option<u32>,
    sid_addr: Option<u32>,
    rvbar_reg: Option<u32>,
    swap_buffers: &'static [SRAMSwapBuffers],
}

SoC information structure.

Each SoC variant may have its own list of memory buffers to be exchanged and the information about the placement of the thunk code, which handles the transition of execution from the BROM FEL code to the U-Boot SPL and back.

Note: the entries in the swap_buffers tables need to be sorted by buf1 addresses. And the buf1 addresses are the BROM data buffers, while buf2 addresses are the intended backup locations.

Also for performance reasons, we optionally want to have MMU enabled with optimal section attributes configured (the code from the BROM should use I-cache, writing data to the DRAM area should use write combining). The reason is that the BROM FEL protocol implementation moves data using the CPU somewhere on the performance critical path when transferring data over USB. The older SoC variants (A10/A13/A20/A31/A23) already have MMU enabled and we only need to adjust section attributes. The BROM in newer SoC variants (A33/A83T/H3) doesn't enable MMU any more, so we need to find some 16K of spare space in SRAM to place the translation table there and specify it as the mmu_tt_addr field in the soc_sram_info structure. The mmu_tt_addr address must be 16K aligned.

Fields

ID of the SoC.

Human-readable SoC name string.

SPL load address.

A safe place to upload & run code.

Address of the thunk code.

Maximal size of the thunk code.

Set the L2EN bit.

MMU translation table address.

Base address for SID_KEY[0-3] registers.

MMIO address of RVBARADDR0_L register.

SRAM buffers.

Methods

impl Info
[src]

Gets the SoC information structure for the given ID, if supported.

Gets the SoC information structure from the given SoCVersion, if supported.

Gets the SoC ID.

Gets the name of the SoC.

Gets the SPL load address for the SoC.

Gets the scratch address.

Gets the address of the thunk code.

Gets the size of the thunk code.

Gets the MMU translation table address.

Gets the SID register address.

Get the RVBAR register address, if supported.

Gets the SoC swap buffers.

Trait Implementations

impl Clone for Info
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Copy for Info
[src]

impl PartialEq<Info> for Info
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Debug for Info
[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl Send for Info

impl Sync for Info

Blanket Implementations

impl<T> From for T
[src]

Performs the conversion.

impl<T, U> Into for T where
    U: From<T>, 
[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Borrow for T where
    T: ?Sized
[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut for T where
    T: ?Sized
[src]

Mutably borrows from an owned value. Read more

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more