nxp:add qspi driver
NXP QuadSPI driver support NXP SoC. - Supporting QSPI flash Signed-off-by: Pankaj Gupta <pankaj.gupta@nxp.com> Change-Id: I928cbec8ea31f4d8f9e320ac9c5105f7ab0ecb73
This commit is contained in:
parent
b525a8f0d2
commit
c20e123cab
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 NXP
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#include <common/debug.h>
|
||||||
|
#include <lib/mmio.h>
|
||||||
|
#include <lib/xlat_tables/xlat_tables_v2.h>
|
||||||
|
#include <qspi.h>
|
||||||
|
|
||||||
|
int qspi_io_setup(uintptr_t nxp_qspi_flash_addr,
|
||||||
|
size_t nxp_qspi_flash_size,
|
||||||
|
uintptr_t fip_offset)
|
||||||
|
{
|
||||||
|
uint32_t qspi_mcr_val = qspi_in32(CHS_QSPI_MCR);
|
||||||
|
|
||||||
|
/* Enable and change endianness of QSPI IP */
|
||||||
|
qspi_out32(CHS_QSPI_MCR, (qspi_mcr_val | CHS_QSPI_64LE));
|
||||||
|
|
||||||
|
/* Adding QSPI Memory Map in XLAT Table */
|
||||||
|
mmap_add_region(nxp_qspi_flash_addr, nxp_qspi_flash_addr,
|
||||||
|
nxp_qspi_flash_size, MT_MEMORY | MT_RW);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 NXP
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef QSPI_H
|
||||||
|
#define QSPI_H
|
||||||
|
|
||||||
|
#include <endian.h>
|
||||||
|
#include <lib/mmio.h>
|
||||||
|
|
||||||
|
#define CHS_QSPI_MCR 0x01550000
|
||||||
|
#define CHS_QSPI_64LE 0xC
|
||||||
|
|
||||||
|
#ifdef NXP_QSPI_BE
|
||||||
|
#define qspi_in32(a) bswap32(mmio_read_32((uintptr_t)(a)))
|
||||||
|
#define qspi_out32(a, v) mmio_write_32((uintptr_t)(a), bswap32(v))
|
||||||
|
#elif defined(NXP_QSPI_LE)
|
||||||
|
#define qspi_in32(a) mmio_read_32((uintptr_t)(a))
|
||||||
|
#define qspi_out32(a, v) mmio_write_32((uintptr_t)(a), (v))
|
||||||
|
#else
|
||||||
|
#error Please define CCSR QSPI register endianness
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int qspi_io_setup(uintptr_t nxp_qspi_flash_addr,
|
||||||
|
size_t nxp_qspi_flash_size,
|
||||||
|
uintptr_t fip_offset);
|
||||||
|
#endif /* __QSPI_H__ */
|
|
@ -0,0 +1,28 @@
|
||||||
|
#
|
||||||
|
# Copyright 2020 NXP
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
#
|
||||||
|
|
||||||
|
ifeq (${QSPI_ADDED},)
|
||||||
|
|
||||||
|
QSPI_ADDED := 1
|
||||||
|
|
||||||
|
QSPI_DRIVERS_PATH := ${PLAT_DRIVERS_PATH}/qspi
|
||||||
|
|
||||||
|
QSPI_SOURCES := $(QSPI_DRIVERS_PATH)/qspi.c
|
||||||
|
|
||||||
|
PLAT_INCLUDES += -I$(QSPI_DRIVERS_PATH)
|
||||||
|
|
||||||
|
ifeq (${BL_COMM_QSPI_NEEDED},yes)
|
||||||
|
BL_COMMON_SOURCES += ${QSPI_SOURCES}
|
||||||
|
else
|
||||||
|
ifeq (${BL2_QSPI_NEEDED},yes)
|
||||||
|
BL2_SOURCES += ${QSPI_SOURCES}
|
||||||
|
endif
|
||||||
|
ifeq (${BL31_QSPI_NEEDED},yes)
|
||||||
|
BL31_SOURCES += ${QSPI_SOURCES}
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
Loading…
Reference in New Issue