mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-03 18:10:13 +00:00
4daa6bb6f7
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: Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
79 lines
3 KiB
Makefile
79 lines
3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# (C) Copyright 2000-2007
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
# There are many options which enable SPI, so make this library available
|
|
ifdef CONFIG_$(SPL_TPL_)DM_SPI
|
|
obj-y += spi-uclass.o
|
|
obj-$(CONFIG_CADENCE_QSPI) += cadence_qspi.o cadence_qspi_apb.o
|
|
obj-$(CONFIG_CADENCE_OSPI_VERSAL) += cadence_ospi_versal.o
|
|
obj-$(CONFIG_SANDBOX) += spi-emul-uclass.o
|
|
obj-$(CONFIG_SOFT_SPI) += soft_spi.o
|
|
obj-$(CONFIG_SPI_ASPEED_SMC) += spi-aspeed-smc.o
|
|
obj-$(CONFIG_SPI_MEM) += spi-mem.o
|
|
obj-$(CONFIG_TI_QSPI) += ti_qspi.o
|
|
obj-$(CONFIG_FSL_QSPI) += fsl_qspi.o
|
|
else
|
|
obj-y += spi.o
|
|
obj-$(CONFIG_SPI_MEM) += spi-mem-nodm.o
|
|
endif
|
|
|
|
obj-$(CONFIG_ALTERA_SPI) += altera_spi.o
|
|
obj-$(CONFIG_APPLE_SPI) += apple_spi.o
|
|
obj-$(CONFIG_ATH79_SPI) += ath79_spi.o
|
|
obj-$(CONFIG_ATMEL_QSPI) += atmel-quadspi.o
|
|
obj-$(CONFIG_ATMEL_SPI) += atmel_spi.o
|
|
obj-$(CONFIG_BCM63XX_HSSPI) += bcm63xx_hsspi.o
|
|
obj-$(CONFIG_BCM63XX_SPI) += bcm63xx_spi.o
|
|
obj-$(CONFIG_BCMSTB_SPI) += bcmstb_spi.o
|
|
obj-$(CONFIG_CF_SPI) += cf_spi.o
|
|
obj-$(CONFIG_CORTINA_SFLASH) += ca_sflash.o
|
|
obj-$(CONFIG_DAVINCI_SPI) += davinci_spi.o
|
|
obj-$(CONFIG_DESIGNWARE_SPI) += designware_spi.o
|
|
obj-$(CONFIG_EXYNOS_SPI) += exynos_spi.o
|
|
obj-$(CONFIG_FSL_DSPI) += fsl_dspi.o
|
|
obj-$(CONFIG_FSL_ESPI) += fsl_espi.o
|
|
obj-$(CONFIG_SYNQUACER_SPI) += spi-synquacer.o
|
|
obj-$(CONFIG_GXP_SPI) += gxp_spi.o
|
|
obj-$(CONFIG_ICH_SPI) += ich.o
|
|
obj-$(CONFIG_IPROC_QSPI) += iproc_qspi.o
|
|
obj-$(CONFIG_KIRKWOOD_SPI) += kirkwood_spi.o
|
|
obj-$(CONFIG_MESON_SPIFC) += meson_spifc.o
|
|
obj-$(CONFIG_MPC8XX_SPI) += mpc8xx_spi.o
|
|
obj-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o
|
|
obj-$(CONFIG_MTK_SNFI_SPI) += mtk_snfi_spi.o
|
|
obj-$(CONFIG_MTK_SNOR) += mtk_snor.o
|
|
obj-$(CONFIG_MT7620_SPI) += mt7620_spi.o
|
|
obj-$(CONFIG_MT7621_SPI) += mt7621_spi.o
|
|
obj-$(CONFIG_MSCC_BB_SPI) += mscc_bb_spi.o
|
|
obj-$(CONFIG_MVEBU_A3700_SPI) += mvebu_a3700_spi.o
|
|
obj-$(CONFIG_MXC_SPI) += mxc_spi.o
|
|
obj-$(CONFIG_MXS_SPI) += mxs_spi.o
|
|
obj-$(CONFIG_NPCM_FIU_SPI) += npcm_fiu_spi.o
|
|
obj-$(CONFIG_NXP_FSPI) += nxp_fspi.o
|
|
obj-$(CONFIG_ATCSPI200_SPI) += atcspi200_spi.o
|
|
obj-$(CONFIG_OCTEON_SPI) += octeon_spi.o
|
|
obj-$(CONFIG_OMAP3_SPI) += omap3_spi.o
|
|
obj-$(CONFIG_PIC32_SPI) += pic32_spi.o
|
|
obj-$(CONFIG_PL022_SPI) += pl022_spi.o
|
|
obj-$(CONFIG_SPI_QUP) += spi-qup.o
|
|
obj-$(CONFIG_SPI_MXIC) += spi-mxic.o
|
|
obj-$(CONFIG_RENESAS_RPC_SPI) += renesas_rpc_spi.o
|
|
obj-$(CONFIG_ROCKCHIP_SFC) += rockchip_sfc.o
|
|
obj-$(CONFIG_ROCKCHIP_SPI) += rk_spi.o
|
|
obj-$(CONFIG_SANDBOX_SPI) += sandbox_spi.o
|
|
obj-$(CONFIG_SPI_SIFIVE) += spi-sifive.o
|
|
obj-$(CONFIG_SPI_SUNXI) += spi-sunxi.o
|
|
obj-$(CONFIG_SH_QSPI) += sh_qspi.o
|
|
obj-$(CONFIG_STM32_QSPI) += stm32_qspi.o
|
|
obj-$(CONFIG_STM32_SPI) += stm32_spi.o
|
|
obj-$(CONFIG_TEGRA114_SPI) += tegra114_spi.o
|
|
obj-$(CONFIG_TEGRA20_SFLASH) += tegra20_sflash.o
|
|
obj-$(CONFIG_TEGRA20_SLINK) += tegra20_slink.o
|
|
obj-$(CONFIG_TEGRA210_QSPI) += tegra210_qspi.o
|
|
obj-$(CONFIG_UNIPHIER_SPI) += uniphier_spi.o
|
|
obj-$(CONFIG_XILINX_SPI) += xilinx_spi.o
|
|
obj-$(CONFIG_ZYNQ_SPI) += zynq_spi.o
|
|
obj-$(CONFIG_ZYNQ_QSPI) += zynq_qspi.o
|
|
obj-$(CONFIG_ZYNQMP_GQSPI) += zynqmp_gqspi.o
|