/* * Copyright (c) 2015-2019, Renesas Electronics Corporation. * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #define BOARDNUM 22 #define BOARD_JUDGE_AUTO #ifdef BOARD_JUDGE_AUTO static uint32_t _board_judge(void); static uint32_t boardcnf_get_brd_type(void) { return _board_judge(); } #else static uint32_t boardcnf_get_brd_type(void) { return 1; } #endif #define DDR_FAST_INIT struct _boardcnf_ch { uint8_t ddr_density[CS_CNT]; uint64_t ca_swap; uint16_t dqs_swap; uint32_t dq_swap[SLICE_CNT]; uint8_t dm_swap[SLICE_CNT]; uint16_t wdqlvl_patt[16]; int8_t cacs_adj[16]; int8_t dm_adj_w[SLICE_CNT]; int8_t dq_adj_w[SLICE_CNT * 8]; int8_t dm_adj_r[SLICE_CNT]; int8_t dq_adj_r[SLICE_CNT * 8]; }; struct _boardcnf { uint8_t phyvalid; uint8_t dbi_en; uint16_t cacs_dly; int16_t cacs_dly_adj; uint16_t dqdm_dly_w; uint16_t dqdm_dly_r; struct _boardcnf_ch ch[DRAM_CH_CNT]; }; #define WDQLVL_PAT {\ 0x00AA,\ 0x0055,\ 0x00AA,\ 0x0155,\ 0x01CC,\ 0x0133,\ 0x00CC,\ 0x0033,\ 0x00F0,\ 0x010F,\ 0x01F0,\ 0x010F,\ 0x00F0,\ 0x00F0,\ 0x000F,\ 0x010F} static const struct _boardcnf boardcnfs[BOARDNUM] = { { /* boardcnf[0] RENESAS SALVATOR-X board with M3-W/SIP */ .phyvalid = 0x03, .dbi_en = 0x01, .cacs_dly = 0x02c0, .cacs_dly_adj = 0, .dqdm_dly_w = 0x0300, .dqdm_dly_r = 0x00a0, .ch = { { {0x02, 0x02}, 0x00543210U, 0x3201U, {0x70612543, 0x43251670, 0x45326170, 0x10672534}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00543210, 0x2310, {0x01327654, 0x34526107, 0x35421670, 0x70615324}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[1] RENESAS KRIEK board with M3-W/SoC */ { 0x03, 0x01, 0x2c0, 0, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[2] RENESAS SALVATOR-X board with H3 Ver.1.x/SIP(8Gbit 1rank) */ { 0x0f, 0x00, 0x300, -320, 0x300, 0x0a0, { { {0x02, 0xff}, 0x00543210, 0x3210, {0x20741365, 0x34256107, 0x57460321, 0x70614532}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x3102, {0x23547610, 0x34526107, 0x67452310, 0x32106754}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x0213, {0x30216754, 0x67453210, 0x70165243, 0x07162345}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x0213, {0x01327654, 0x70615432, 0x54760123, 0x07162345}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[3] RENESAS Starter Kit board with M3-W/SIP(8Gbit 1rank) */ { 0x03, 0x01, 0x02c0, 0, 0x0300, 0x00a0, { { {0x02, 0xFF}, 0x00543210U, 0x3201, {0x70612543, 0x43251670, 0x45326170, 0x10672534}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xFF}, 0x00543210, 0x2310, {0x01327654, 0x34526107, 0x35421670, 0x70615324}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[4] RENESAS SALVATOR-M(1rank) board with H3 Ver.1.x/SoC */ { 0x0f, 0x00, 0x2c0, -320, 0x300, 0x0a0, { { {0x02, 0xff}, 0x00315024, 0x3120, {0x30671254, 0x26541037, 0x17054623, 0x12307645}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00025143, 0x3210, {0x70613542, 0x16245307, 0x30712645, 0x21706354}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00523104, 0x2301, {0x70613542, 0x16245307, 0x30712645, 0x21706354}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00153402, 0x2031, {0x30671254, 0x26541037, 0x17054623, 0x12307645}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[5] RENESAS KRIEK-1rank board with M3-W/SoC */ { 0x03, 0x01, 0x2c0, 0, 0x300, 0x0a0, { { {0x02, 0xff}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[6] RENESAS SALVATOR-X board with H3 Ver.1.x/SIP(8Gbit 2rank) */ { 0x0f, 0x00, 0x300, -320, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00543210, 0x3210, {0x20741365, 0x34256107, 0x57460321, 0x70614532}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00543210, 0x3102, {0x23547610, 0x34526107, 0x67452310, 0x32106754}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00543210, 0x0213, {0x30216754, 0x67453210, 0x70165243, 0x07162345}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00543210, 0x0213, {0x01327654, 0x70615432, 0x54760123, 0x07162345}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* * boardcnf[7] RENESAS SALVATOR-X board with * H3 Ver.2.0 or later/SIP(8Gbit 1rank) */ { 0x0f, 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0xff}, 0x00543210, 0x2310, {0x70631425, 0x34527016, 0x43527610, 0x32104567}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00105432, 0x3210, {0x43256107, 0x07162354, 0x10234567, 0x01235467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x2301, {0x01327654, 0x02316457, 0x10234567, 0x01325467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x2301, {0x12034765, 0x23105467, 0x23017645, 0x32106745}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* * boardcnf[8] RENESAS SALVATOR-X board with * H3 Ver.2.0 or later/SIP(8Gbit 2rank) */ { #if RCAR_DRAM_CHANNEL == 5 0x05, #else 0x0f, #endif 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00543210, 0x2310, {0x70631425, 0x34527016, 0x43527610, 0x32104567}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #if ((RCAR_DRAM_CHANNEL == 5) && (RCAR_DRAM_SPLIT == 2)) { {0x02, 0x02}, 0x00543210, 0x2301, {0x01327654, 0x02316457, 0x10234567, 0x01325467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #else { {0x02, 0x02}, 0x00105432, 0x3210, {0x43256107, 0x07162354, 0x10234567, 0x01235467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #endif { {0x02, 0x02}, 0x00543210, 0x2301, {0x01327654, 0x02316457, 0x10234567, 0x01325467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00543210, 0x2301, {0x12034765, 0x23105467, 0x23017645, 0x32106745}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[9] RENESAS SALVATOR-MS(1rank) board with H3 Ver.2.0 or later/SoC */ { 0x0f, 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0xff}, 0x00543210, 0x3210, {0x27645310, 0x75346210, 0x53467210, 0x23674510}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00543210, 0x2301, {0x23764510, 0x43257610, 0x43752610, 0x37652401}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {-128, -128, -128, -128, -128, -128, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00452103, 0x3210, {0x32764510, 0x43257610, 0x43752610, 0x26573401}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0xff}, 0x00520413, 0x2301, {0x47652301, 0x75346210, 0x53467210, 0x32674501}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[10] RENESAS Kriek(2rank) board with M3-N/SoC */ { 0x01, 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[11] RENESAS SALVATOR-X board with M3-N/SIP(8Gbit 2rank) */ { 0x01, 0x01, 0x300, 0, 0x300, 0x0a0, { { #if (RCAR_DRAM_LPDDR4_MEMCONF == 2) {0x04, 0x04}, #else {0x02, 0x02}, #endif 0x00342501, 0x3201, {0x10672534, 0x43257106, 0x34527601, 0x71605243}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[12] RENESAS CONDOR board with V3H/SoC */ { 0x01, 0x1, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00501342, 0x3201, {0x70562134, 0x34526071, 0x23147506, 0x12430567}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[13] RENESAS KRIEK board with PM3/SoC */ { 0x05, 0x00, 0x2c0, -320, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0xff, 0xff}, 0, 0, {0, 0, 0, 0}, {0, 0, 0, 0}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[14] SALVATOR-X board with H3 Ver.2.0 or later/SIP(16Gbit 1rank) */ { #if RCAR_DRAM_CHANNEL == 5 0x05, #else 0x0f, #endif 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x04, 0xff}, 0x00543210, 0x2310, {0x70631425, 0x34527016, 0x43527610, 0x32104567}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #if ((RCAR_DRAM_CHANNEL == 5) && (RCAR_DRAM_SPLIT == 2)) { {0x04, 0xff}, 0x00543210, 0x2301, {0x01327654, 0x02316457, 0x10234567, 0x01325467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #else { {0x04, 0xff}, 0x00105432, 0x3210, {0x43256107, 0x07162354, 0x10234567, 0x01235467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, #endif { {0x04, 0xff}, 0x00543210, 0x2301, {0x01327654, 0x02316457, 0x10234567, 0x01325467}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0xff}, 0x00543210, 0x2301, {0x12034765, 0x23105467, 0x23017645, 0x32106745}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[15] RENESAS KRIEK board with H3N */ { 0x05, 0x01, 0x300, 0, 0x300, 0x0a0, { { {0x02, 0x02}, 0x00345201, 0x3201, {0x01672543, 0x45367012, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x02, 0x02}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0xff, 0xff}, 0, 0, {0, 0, 0, 0}, {0, 0, 0, 0}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[16] RENESAS KRIEK-P2P board with M3-W/SoC */ { 0x03, 0x01, 0x0320, 0, 0x0300, 0x00a0, { { {0x04, 0x04}, 0x520314FFFF523041, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0x04}, 0x314250FFFF312405, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[17] RENESAS KRIEK-P2P board with M3-N/SoC */ { 0x01, 0x01, 0x0300, 0, 0x0300, 0x00a0, { { {0x04, 0x04}, 0x520314FFFF523041, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[18] RENESAS SALVATOR-X board with M3-W/SIP(16Gbit 2rank) */ { 0x03, 0x01, 0x02c0, 0, 0x0300, 0x00a0, { { {0x04, 0x04}, 0x00543210, 0x3201, {0x70612543, 0x43251670, 0x45326170, 0x10672534}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0x04}, 0x00543210, 0x2310, {0x01327654, 0x34526107, 0x35421670, 0x70615324}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[19] RENESAS SALVATOR-X board with M3-W/SIP(16Gbit 1rank) */ { 0x03, 0x01, 0x02c0, 0, 0x0300, 0x00a0, { { {0x04, 0xff}, 0x00543210, 0x3201, {0x70612543, 0x43251670, 0x45326170, 0x10672534}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0xff}, 0x00543210, 0x2310, {0x01327654, 0x34526107, 0x35421670, 0x70615324}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[20] RENESAS KRIEK 16Gbit/2rank/2ch board with M3-W/SoC */ { 0x03, 0x01, 0x02c0, 0, 0x0300, 0x00a0, { { {0x04, 0x04}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0x04}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } }, /* boardcnf[21] RENESAS KRIEK 16Gbit/1rank/2ch board with M3-W/SoC */ { 0x03, 0x01, 0x02c0, 0, 0x0300, 0x00a0, { { {0x04, 0xff}, 0x00345201, 0x3201, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, { {0x04, 0xff}, 0x00302154, 0x2310, {0x01672543, 0x45361207, 0x45632107, 0x60715234}, {0x08, 0x08, 0x08, 0x08}, WDQLVL_PAT, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } } } }; void boardcnf_get_brd_clk(uint32_t brd, uint32_t *clk, uint32_t *div) { uint32_t md; if ((prr_product == PRR_PRODUCT_H3) && (prr_cut == PRR_PRODUCT_10)) { *clk = 50; *div = 3; } else { md = (mmio_read_32(RST_MODEMR) >> 13) & 0x3; switch (md) { case 0x0: *clk = 50; *div = 3; break; case 0x1: *clk = 60; *div = 3; break; case 0x2: *clk = 75; *div = 3; break; case 0x3: *clk = 100; *div = 3; break; } } (void)brd; } void boardcnf_get_ddr_mbps(uint32_t brd, uint32_t *mbps, uint32_t *div) { uint32_t md; md = (mmio_read_32(RST_MODEMR) >> 17) & 0x5; md = (md | (md >> 1)) & 0x3; switch (md) { case 0x0: *mbps = 3200; *div = 1; break; case 0x1: *mbps = 2800; *div = 1; break; case 0x2: *mbps = 2400; *div = 1; break; case 0x3: *mbps = 1600; *div = 1; break; } (void)brd; } #define _def_REFPERIOD 1890 #define M3_SAMPLE_TT_A84 0xB866CC10, 0x3B250421 #define M3_SAMPLE_TT_A85 0xB866CC10, 0x3AA50421 #define M3_SAMPLE_TT_A86 0xB866CC10, 0x3AA48421 #define M3_SAMPLE_FF_B45 0xB866CC10, 0x3AB00C21 #define M3_SAMPLE_FF_B49 0xB866CC10, 0x39B10C21 #define M3_SAMPLE_FF_B56 0xB866CC10, 0x3AAF8C21 #define M3_SAMPLE_SS_E24 0xB866CC10, 0x3BA39421 #define M3_SAMPLE_SS_E28 0xB866CC10, 0x3C231421 #define M3_SAMPLE_SS_E32 0xB866CC10, 0x3C241421 static const uint32_t termcode_by_sample[20][3] = { {M3_SAMPLE_TT_A84, 0x000158D5}, {M3_SAMPLE_TT_A85, 0x00015955}, {M3_SAMPLE_TT_A86, 0x00015955}, {M3_SAMPLE_FF_B45, 0x00015690}, {M3_SAMPLE_FF_B49, 0x00015753}, {M3_SAMPLE_FF_B56, 0x00015793}, {M3_SAMPLE_SS_E24, 0x00015996}, {M3_SAMPLE_SS_E28, 0x000159D7}, {M3_SAMPLE_SS_E32, 0x00015997}, {0xFFFFFFFF, 0xFFFFFFFF, 0x0001554F} }; #ifdef BOARD_JUDGE_AUTO /* * SAMPLE board detect function */ #define PFC_PMMR 0xE6060000U #define PFC_PUEN5 0xE6060414U #define PFC_PUEN6 0xE6060418U #define PFC_PUD5 0xE6060454U #define PFC_PUD6 0xE6060458U #define GPIO_INDT5 0xE605500CU #define GPIO_GPSR6 0xE6060118U #if (RCAR_GEN3_ULCB == 0) static void pfc_write_and_poll(uint32_t a, uint32_t v) { mmio_write_32(PFC_PMMR, ~v); v = ~mmio_read_32(PFC_PMMR); mmio_write_32(a, v); while (v != mmio_read_32(a)) ; dsb_sev(); } #endif #ifndef RCAR_GEN3_ULCB #define RCAR_GEN3_ULCB 0 #endif #if (RCAR_GEN3_ULCB == 0) /* non Starter Kit */ static uint32_t opencheck_SSI_WS6(void) { uint32_t dataL, down, up; uint32_t gpsr6_bak; uint32_t puen5_bak; uint32_t pud5_bak; gpsr6_bak = mmio_read_32(GPIO_GPSR6); puen5_bak = mmio_read_32(PFC_PUEN5); pud5_bak = mmio_read_32(PFC_PUD5); dsb_sev(); dataL = (gpsr6_bak & ~BIT(15)); pfc_write_and_poll(GPIO_GPSR6, dataL); /* Pull-Up/Down Enable (PUEN5[22]=1) */ dataL = puen5_bak; dataL |= (BIT(22)); pfc_write_and_poll(PFC_PUEN5, dataL); /* Pull-Down-Enable (PUD5[22]=0, PUEN5[22]=1) */ dataL = pud5_bak; dataL &= ~(BIT(22)); pfc_write_and_poll(PFC_PUD5, dataL); /* GPSR6[15]=SSI_WS6 */ rcar_micro_delay(10); down = (mmio_read_32(GPIO_INDT6) >> 15) & 0x1; dsb_sev(); /* Pull-Up-Enable (PUD5[22]=1, PUEN5[22]=1) */ dataL = pud5_bak; dataL |= (BIT(22)); pfc_write_and_poll(PFC_PUD5, dataL); /* GPSR6[15]=SSI_WS6 */ rcar_micro_delay(10); up = (mmio_read_32(GPIO_INDT6) >> 15) & 0x1; dsb_sev(); pfc_write_and_poll(GPIO_GPSR6, gpsr6_bak); pfc_write_and_poll(PFC_PUEN5, puen5_bak); pfc_write_and_poll(PFC_PUD5, pud5_bak); if (down == up) { /* Same = Connect */ return 0; } /* Diff = Open */ return 1; } #endif static uint32_t _board_judge(void) { uint32_t brd; #if (RCAR_GEN3_ULCB == 1) /* Starter Kit */ if (prr_product == PRR_PRODUCT_H3) { if (prr_cut <= PRR_PRODUCT_11) { /* RENESAS Starter Kit(H3 Ver.1.x/SIP) board */ brd = 2; } else { /* RENESAS Starter Kit(H3 Ver.2.0 or later/SIP) board */ #if (RCAR_DRAM_LPDDR4_MEMCONF == 0) brd = 7; #else brd = 8; #endif } } else if (prr_product == PRR_PRODUCT_M3) { /* RENESAS Starter Kit(M3-W/SIP 8Gbit 1rank) board */ brd = 3; } else { /* RENESAS Starter Kit(M3-N/SIP) board */ brd = 11; } #else uint32_t usb2_ovc_open; usb2_ovc_open = opencheck_SSI_WS6(); /* RENESAS Eva-board */ brd = 99; if (prr_product == PRR_PRODUCT_V3H) { /* RENESAS Condor board */ brd = 12; } else if (usb2_ovc_open) { if (prr_product == PRR_PRODUCT_M3N) { /* RENESAS Kriek board with M3-N */ brd = 10; } else if (prr_product == PRR_PRODUCT_M3) { /* RENESAS Kriek board with M3-W */ brd = 1; } else if ((prr_product == PRR_PRODUCT_H3) && (prr_cut <= PRR_PRODUCT_11)) { /* RENESAS Kriek board with PM3 */ brd = 13; } else if ((prr_product == PRR_PRODUCT_H3) && (prr_cut > PRR_PRODUCT_20)) { /* RENESAS Kriek board with H3N */ brd = 15; } } else { if (prr_product == PRR_PRODUCT_H3) { if (prr_cut <= PRR_PRODUCT_11) { /* RENESAS SALVATOR-X (H3 Ver.1.x/SIP) */ brd = 2; } else if (prr_cut < PRR_PRODUCT_30) { /* RENESAS SALVATOR-X (H3 Ver.2.0/SIP) */ brd = 7; // 8Gbit/1rank } else { /* RENESAS SALVATOR-X (H3 Ver.3.0/SIP) */ #if (RCAR_DRAM_LPDDR4_MEMCONF == 0) brd = 7; #else brd = 8; #endif } } else if (prr_product == PRR_PRODUCT_M3N) { /* RENESAS SALVATOR-X (M3-N/SIP) */ brd = 11; } else if ((prr_product == PRR_PRODUCT_M3) && (prr_cut <= PRR_PRODUCT_20)) { /* RENESAS SALVATOR-X (M3-W/SIP) */ brd = 0; } else if ((prr_product == PRR_PRODUCT_M3) && (prr_cut < PRR_PRODUCT_30)) { /* RENESAS SALVATOR-X (M3-W Ver.1.x/SIP) */ brd = 19; } else if ((prr_product == PRR_PRODUCT_M3) && (prr_cut >= PRR_PRODUCT_30)) { /* RENESAS SALVATOR-X (M3-W ver.3.0/SIP) */ brd = 18; } } #endif return brd; } #endif