diff options
author | Kevin Shi <kshi@marvell.com> | 2017-07-05 14:46:02 +0800 |
---|---|---|
committer | Kostya Porotchkin <kostap@marvell.com> | 2017-07-11 11:54:40 +0300 |
commit | 0b1a40f628c555621f075b883f38b41205bf5bf5 (patch) | |
tree | 1aea1fdc1320d359f1b40c669c54c61c35a57e94 /plat/marvell/a8k/a3900/board/dram_port.c | |
parent | 468975dc7296a8b93c4721f519300dc0250a5f16 (diff) |
platform: Add support for Armada 3900 family
Add platform support files for Marvell Armada 3900 SoC family.
A3900 is repackaged from armada-7040.
AP - APN806 *1
CP - CPN-110 *1
RFU:
- map 0xf900_0000 to mochi endpoint.
IOB:
- remove PCI-1 0xf700_0000 mapping and reserve it for PCI0/PCI2 io space mapping
Add fetures:
- Add mochi support
Change-Id: I9f636d2d8fa7354eb62327550d5b9006a43a50dc
Signed-off-by: Kevin Shi <kshi@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/41455
Tested-by: iSoC Platform CI <ykjenk@marvell.com>
Reviewed-by: Kostya Porotchkin <kostap@marvell.com>
Diffstat (limited to 'plat/marvell/a8k/a3900/board/dram_port.c')
-rw-r--r-- | plat/marvell/a8k/a3900/board/dram_port.c | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/plat/marvell/a8k/a3900/board/dram_port.c b/plat/marvell/a8k/a3900/board/dram_port.c new file mode 100644 index 00000000..628e0e73 --- /dev/null +++ b/plat/marvell/a8k/a3900/board/dram_port.c @@ -0,0 +1,106 @@ +/* +* *************************************************************************** +* Copyright (C) 2016 Marvell International Ltd. +* *************************************************************************** +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* +* Neither the name of Marvell nor the names of its contributors may be used +* to endorse or promote products derived from this software without specific +* prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* +*************************************************************************** +*/ + +#include <arch_helpers.h> +#include <plat_marvell.h> +#include <debug.h> +#include <dram_if.h> + +#include <mv_ddr_atf_wrapper.h> +#include <apn806/mv_ddr_apn806.h> +#include <apn806/mv_ddr_apn806_topology.h> +#include <ddr3_topology_def.h> + +struct dram_config dram_cfg; + +/* + * This function may modify the default DRAM parameters + * based on information recieved from SPD or bootloader + * configuration located on non volatile storage + */ +int update_dram_info(struct dram_config *cfg) +{ + NOTICE("Gathering DRAM information\n"); + return 0; +} + +void *plat_get_dram_data(void) +{ + /* Update DRAM for dynamic platforms */ + update_dram_info(&dram_cfg); + + return &dram_cfg; +} + +/* + * This struct provides the DRAM training code with + * the appropriate board DRAM configuration + */ +static struct mv_ddr_topology_map board_topology_map = { +/* FIXME: Z0 board 1CS 8Gb x16 devices of micron - 2400P */ + DEBUG_LEVEL_ERROR, + 0x1, /* active interfaces */ + /* cs_mask, mirror, dqs_swap, ck_swap X subphys */ + { { { {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0}, + {0x1, 0x0, 0, 0} }, + SPEED_BIN_DDR_2400P, /* speed_bin */ + MV_DDR_DEV_WIDTH_16BIT, /* sdram device width */ + MV_DDR_DIE_CAP_8GBIT, /* die capacity */ + DDR_FREQ_SAR, /* frequency */ + 0, 0, /* cas_l, cas_wl */ + MV_DDR_TEMP_LOW} }, /* temperature */ + BUS_MASK_32BIT, /* subphys mask */ + MV_DDR_CFG_DEFAULT, /* ddr configuration data source */ + { {0} }, /* raw spd data */ + {0} /* timing parameters */ +}; + +struct mv_ddr_topology_map *mv_ddr_topology_map_get(void) +{ + /* Return the board topology as defined in the board code */ + return &board_topology_map; +} + +struct dram_config *mv_ddr_dram_config_get(void) +{ + /* Return dram configuration as defined in the board code */ + return &dram_cfg; +} |