Skip to content
Snippets Groups Projects
  • Chin-Ting Kuo's avatar
    4daa6bb6
    spi: aspeed: Add ASPEED SPI controller driver · 4daa6bb6
    Chin-Ting Kuo authored and Tom Rini's avatar Tom Rini committed
    
    Add ASPEED BMC FMC/SPI memory controller driver with
    spi-mem interface for AST2500 and AST2600 platform.
    
    There are three SPI memory controllers embedded in an ASPEED SoC.
    - FMC: Named as Firmware Memory Controller. After AC on, MCU ROM
           fetches initial device boot image from FMC chip select(CS) 0.
    
    - SPI1: Play the role of a SPI Master controller. Or, there is a
            dedicated path for HOST(X86) to access its BIOS flash mounted
            under BMC. spi-aspeed-smc.c implements the control sequence when
            SPI1 is a SPI master.
    
    - SPI2: It is a pure SPI flash controller. For most scenarios, flashes
            mounted under it are for pure storage purpose.
    
    ASPEED SPI controller supports 1-1-1, 1-1-2 and 1-1-4 SPI flash mode.
    Three types of command mode are supported, normal mode, command
    read/write mode and user mode.
    - Normal mode: Default mode. After power on, normal read command 03h or
                   13h is used to fetch boot image from SPI flash.
                   - AST2500: Only 03h command can be used after power on
                              or reset.
                   - AST2600: If FMC04[6:4] is set, 13h command is used,
                              otherwise, 03h command.
                   The address length is decided by FMC04[2:0].
    
    - Command mode: SPI controller can send command and address
                    automatically when CPU read/write the related remapped
                    or decoded address area. The command used by this mode
                    can be configured by FMC10/14/18[23:16]. Also, the
                    address length is decided by FMC04[2:0]. This mode will
                    be implemented in the following patch series.
    
    - User mode: It is a traditional and pure SPI operation, where
                 SPI transmission is controlled by CPU. It is the main
                 mode in this patch.
    
    Each SPI controller in ASPEED SoC has its own decoded address mapping.
    Within each SPI controller decoded address, driver can assign a specific
    address region for each CS of a SPI controller. The decoded address
    cannot overlap to each other. With normal mode and command mode, the
    decoded address accessed by the CPU determines which CS is active.
    When user mode is adopted, the CS decoded address is a FIFO, CPU can
    send/receive any SPI transmission by accessing the related decoded
    address for the target CS.
    
    This patch only implements user mode initially. Command read/write
    mode will be implemented in the following patches.
    
    Signed-off-by: default avatarChin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
    4daa6bb6
    History
    spi: aspeed: Add ASPEED SPI controller driver
    Chin-Ting Kuo authored and Tom Rini's avatar Tom Rini committed
    
    Add ASPEED BMC FMC/SPI memory controller driver with
    spi-mem interface for AST2500 and AST2600 platform.
    
    There are three SPI memory controllers embedded in an ASPEED SoC.
    - FMC: Named as Firmware Memory Controller. After AC on, MCU ROM
           fetches initial device boot image from FMC chip select(CS) 0.
    
    - SPI1: Play the role of a SPI Master controller. Or, there is a
            dedicated path for HOST(X86) to access its BIOS flash mounted
            under BMC. spi-aspeed-smc.c implements the control sequence when
            SPI1 is a SPI master.
    
    - SPI2: It is a pure SPI flash controller. For most scenarios, flashes
            mounted under it are for pure storage purpose.
    
    ASPEED SPI controller supports 1-1-1, 1-1-2 and 1-1-4 SPI flash mode.
    Three types of command mode are supported, normal mode, command
    read/write mode and user mode.
    - Normal mode: Default mode. After power on, normal read command 03h or
                   13h is used to fetch boot image from SPI flash.
                   - AST2500: Only 03h command can be used after power on
                              or reset.
                   - AST2600: If FMC04[6:4] is set, 13h command is used,
                              otherwise, 03h command.
                   The address length is decided by FMC04[2:0].
    
    - Command mode: SPI controller can send command and address
                    automatically when CPU read/write the related remapped
                    or decoded address area. The command used by this mode
                    can be configured by FMC10/14/18[23:16]. Also, the
                    address length is decided by FMC04[2:0]. This mode will
                    be implemented in the following patch series.
    
    - User mode: It is a traditional and pure SPI operation, where
                 SPI transmission is controlled by CPU. It is the main
                 mode in this patch.
    
    Each SPI controller in ASPEED SoC has its own decoded address mapping.
    Within each SPI controller decoded address, driver can assign a specific
    address region for each CS of a SPI controller. The decoded address
    cannot overlap to each other. With normal mode and command mode, the
    decoded address accessed by the CPU determines which CS is active.
    When user mode is adopted, the CS decoded address is a FIFO, CPU can
    send/receive any SPI transmission by accessing the related decoded
    address for the target CS.
    
    This patch only implements user mode initially. Command read/write
    mode will be implemented in the following patches.
    
    Signed-off-by: default avatarChin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
MAINTAINERS 38.97 KiB