/*
 * Copyright (C) Marvell International Ltd. and its affiliates
 *
 * SPDX-License-Identifier:	GPL-2.0
 */

#ifndef _DDR3_A38X_MC_STATIC_H
#define _DDR3_A38X_MC_STATIC_H

#include "ddr3_a38x.h"

#ifdef SUPPORT_STATIC_DUNIT_CONFIG

#ifdef CONFIG_CUSTOMER_BOARD_SUPPORT
static struct reg_data ddr3_customer_800[] = {
	/* parameters for customer board (based on 800MHZ) */
	{0x1400,	0x7b00cc30, 0xffffffff},
	{0x1404,	0x36301820, 0xffffffff},
	{0x1408,	0x5415baab, 0xffffffff},
	{0x140c,	0x38411def, 0xffffffff},
	{0x1410,	0x18300000, 0xffffffff},
	{0x1414,	0x00000700, 0xffffffff},
	{0x1424,	0x0060f3ff, 0xffffffff},
	{0x1428,	0x0011a940, 0xffffffff},
	{0x142c,	0x28c5134,  0xffffffff},
	{0x1474,	0x00000000, 0xffffffff},
	{0x147c,	0x0000d771, 0xffffffff},
	{0x1494,	0x00030000, 0xffffffff},
	{0x149c,	0x00000300, 0xffffffff},
	{0x14a8,	0x00000000, 0xffffffff},
	{0x14cc,	0xbd09000d, 0xffffffff},
	{0x1504,	0xfffffff1, 0xffffffff},
	{0x150c,	0xffffffe5, 0xffffffff},
	{0x1514,	0x00000000, 0xffffffff},
	{0x151c,	0x00000000, 0xffffffff},
	{0x1538,	0x00000b0b, 0xffffffff},
	{0x153c,	0x00000c0c, 0xffffffff},
	{0x15d0,	0x00000670, 0xffffffff},
	{0x15d4,	0x00000046, 0xffffffff},
	{0x15d8,	0x00000010, 0xffffffff},
	{0x15dc,	0x00000000, 0xffffffff},
	{0x15e0,	0x00000023, 0xffffffff},
	{0x15e4,	0x00203c18, 0xffffffff},
	{0x15ec,	0xf8000019, 0xffffffff},
	{0x16a0,	0xcc000006, 0xffffffff},	/* Clock Delay */
	{0xe4124,	0x08008073, 0xffffffff},	/* AVS BG default */
	{0, 0, 0}
};

#else /* CONFIG_CUSTOMER_BOARD_SUPPORT */

struct reg_data ddr3_a38x_933[MV_MAX_DDR3_STATIC_SIZE] = {
	/* parameters for 933MHZ */
	{0x1400,	0x7b00ce3a, 0xffffffff},
	{0x1404,	0x36301820, 0xffffffff},
	{0x1408,	0x7417eccf, 0xffffffff},
	{0x140c,	0x3e421f98, 0xffffffff},
	{0x1410,	0x1a300000, 0xffffffff},
	{0x1414,	0x00000700, 0xffffffff},
	{0x1424,	0x0060f3ff, 0xffffffff},
	{0x1428,	0x0013ca50, 0xffffffff},
	{0x142c,	0x028c5165, 0xffffffff},
	{0x1474,	0x00000000, 0xffffffff},
	{0x147c,	0x0000e871, 0xffffffff},
	{0x1494,	0x00010000, 0xffffffff},
	{0x149c,	0x00000001, 0xffffffff},
	{0x14a8,	0x00000000, 0xffffffff},
	{0x14cc,	0xbd09000d, 0xffffffff},
	{0x1504,	0xffffffe1, 0xffffffff},
	{0x150c,	0xffffffe5, 0xffffffff},
	{0x1514,	0x00000000, 0xffffffff},
	{0x151c,	0x00000000, 0xffffffff},
	{0x1538,	0x00000d0d, 0xffffffff},
	{0x153c,	0x00000d0d, 0xffffffff},
	{0x15d0,	0x00000608, 0xffffffff},
	{0x15d4,	0x00000044, 0xffffffff},
	{0x15d8,	0x00000020, 0xffffffff},
	{0x15dc,	0x00000000, 0xffffffff},
	{0x15e0,	0x00000021, 0xffffffff},
	{0x15e4,	0x00203c18, 0xffffffff},
	{0x15ec,	0xf8000019, 0xffffffff},
	{0x16a0,	0xcc000006, 0xffffffff},	/* Clock Delay */
	{0xe4124,	0x08008073, 0xffffffff},	/* AVS BG default */
	{0, 0, 0}
};

static struct reg_data ddr3_a38x_800[] = {
	/* parameters for 800MHZ */
	{0x1400,	0x7b00cc30, 0xffffffff},
	{0x1404,	0x36301820, 0xffffffff},
	{0x1408,	0x5415baab, 0xffffffff},
	{0x140c,	0x38411def, 0xffffffff},
	{0x1410,	0x18300000, 0xffffffff},
	{0x1414,	0x00000700, 0xffffffff},
	{0x1424,	0x0060f3ff, 0xffffffff},
	{0x1428,	0x0011a940, 0xffffffff},
	{0x142c,	0x28c5134,  0xffffffff},
	{0x1474,	0x00000000, 0xffffffff},
	{0x147c,	0x0000d771, 0xffffffff},
	{0x1494,	0x00030000, 0xffffffff},
	{0x149c,	0x00000300, 0xffffffff},
	{0x14a8,	0x00000000, 0xffffffff},
	{0x14cc,	0xbd09000d, 0xffffffff},
	{0x1504,	0xfffffff1, 0xffffffff},
	{0x150c,	0xffffffe5, 0xffffffff},
	{0x1514,	0x00000000, 0xffffffff},
	{0x151c,	0x00000000, 0xffffffff},
	{0x1538,	0x00000b0b, 0xffffffff},
	{0x153c,	0x00000c0c, 0xffffffff},
	{0x15d0,	0x00000670, 0xffffffff},
	{0x15d4,	0x00000046, 0xffffffff},
	{0x15d8,	0x00000010, 0xffffffff},
	{0x15dc,	0x00000000, 0xffffffff},
	{0x15e0,	0x00000023, 0xffffffff},
	{0x15e4,	0x00203c18, 0xffffffff},
	{0x15ec,	0xf8000019, 0xffffffff},
	{0x16a0,	0xcc000006, 0xffffffff},	/* Clock Delay */
	{0xe4124,	0x08008073, 0xffffffff},	/* AVS BG default */
	{0,   0, 0}
};

static struct reg_data ddr3_a38x_667[] = {
	/* parameters for 667MHZ */
	/* DDR SDRAM Configuration Register */
	{0x1400,    0x7b00ca28, 0xffffffff},
	/* Dunit Control Low Register - kw28 bit12 low (disable CLK1) */
	{0x1404,    0x36301820, 0xffffffff},
	/* DDR SDRAM Timing (Low) Register */
	{0x1408,    0x43149997, 0xffffffff},
	/* DDR SDRAM Timing (High) Register */
	{0x140c,    0x38411bc7, 0xffffffff},
	/* DDR SDRAM Address Control Register */
	{0x1410,    0x14330000, 0xffffffff},
	/* DDR SDRAM Open Pages Control Register */
	{0x1414,    0x00000700, 0xffffffff},
	/* Dunit Control High Register (2 :1 - bits 15:12 = 0xd) */
	{0x1424,    0x0060f3ff, 0xffffffff},
	/* Dunit Control High Register */
	{0x1428,    0x000f8830, 0xffffffff},
	/* Dunit Control High Register  (2:1 -  bit 29 = '1') */
	{0x142c,    0x28c50f8,  0xffffffff},
	{0x147c,    0x0000c671, 0xffffffff},
	/* DDR SDRAM ODT Control (Low) Register */
	{0x1494,    0x00030000, 0xffffffff},
	/* DDR SDRAM ODT Control (High) Register, will be configured at WL */
	{0x1498,    0x00000000, 0xffffffff},
	/* DDR Dunit ODT Control Register */
	{0x149c,    0x00000300, 0xffffffff},
	{0x14a8,    0x00000000, 0xffffffff}, /*  */
	{0x14cc,    0xbd09000d, 0xffffffff}, /*  */
	{0x1474,    0x00000000, 0xffffffff},
	/* Read Data Sample Delays Register */
	{0x1538,    0x00000009, 0xffffffff},
	/* Read Data Ready Delay Register */
	{0x153c,    0x0000000c, 0xffffffff},
	{0x1504,    0xfffffff1, 0xffffffff}, /*  */
	{0x150c,    0xffffffe5, 0xffffffff}, /*  */
	{0x1514,    0x00000000, 0xffffffff}, /*  */
	{0x151c,    0x0,	0xffffffff}, /*  */
	{0x15d0,    0x00000650, 0xffffffff}, /* MR0 */
	{0x15d4,    0x00000046, 0xffffffff}, /* MR1 */
	{0x15d8,    0x00000010, 0xffffffff}, /* MR2 */
	{0x15dc,    0x00000000, 0xffffffff}, /* MR3 */
	{0x15e0,    0x23,	0xffffffff}, /*  */
	{0x15e4,    0x00203c18, 0xffffffff}, /* ZQC Configuration Register */
	{0x15ec,    0xf8000019, 0xffffffff}, /* DDR PHY */
	{0x16a0,    0xcc000006, 0xffffffff}, /* Clock Delay */
	{0xe4124,   0x08008073, 0xffffffff}, /* AVS BG default */
	{0, 0, 0}
};

static struct reg_data ddr3_a38x_533[] = {
	/* parameters for 533MHZ */
	/* DDR SDRAM Configuration Register */
	{0x1400,    0x7b00d040, 0xffffffff},
	/* Dunit Control Low Register - kw28 bit12 low (disable CLK1) */
	{0x1404,    0x36301820, 0xffffffff},
	/* DDR SDRAM Timing (Low) Register */
	{0x1408,    0x33137772, 0xffffffff},
	/* DDR SDRAM Timing (High) Register */
	{0x140c,    0x3841199f, 0xffffffff},
	/* DDR SDRAM Address Control Register */
	{0x1410,    0x10330000, 0xffffffff},
	/* DDR SDRAM Open Pages Control Register */
	{0x1414,    0x00000700, 0xffffffff},
	/* Dunit Control High Register (2 :1 - bits 15:12 = 0xd) */
	{0x1424,    0x0060f3ff, 0xffffffff},
	/* Dunit Control High Register */
	{0x1428,    0x000d6720, 0xffffffff},
	/* Dunit Control High Register  (2:1 -  bit 29 = '1') */
	{0x142c,    0x028c50c3, 0xffffffff},
	{0x147c,    0x0000b571, 0xffffffff},
	/* DDR SDRAM ODT Control (Low) Register */
	{0x1494,    0x00030000, 0xffffffff},
	/* DDR SDRAM ODT Control (High) Register, will be configured at WL */
	{0x1498,    0x00000000, 0xffffffff},
	/* DDR Dunit ODT Control Register */
	{0x149c,    0x00000003, 0xffffffff},
	{0x14a8,    0x00000000, 0xffffffff}, /*  */
	{0x14cc,    0xbd09000d, 0xffffffff}, /*  */
	{0x1474,    0x00000000, 0xffffffff},
	/* Read Data Sample Delays Register */
	{0x1538,    0x00000707, 0xffffffff},
	/* Read Data Ready Delay Register */
	{0x153c,    0x00000707, 0xffffffff},
	{0x1504,    0xffffffe1, 0xffffffff}, /*  */
	{0x150c,    0xffffffe5, 0xffffffff}, /*  */
	{0x1514,    0x00000000, 0xffffffff}, /*  */
	{0x151c,    0x00000000,	0xffffffff}, /*  */
	{0x15d0,    0x00000630, 0xffffffff}, /* MR0 */
	{0x15d4,    0x00000046, 0xffffffff}, /* MR1 */
	{0x15d8,    0x00000008, 0xffffffff}, /* MR2 */
	{0x15dc,    0x00000000, 0xffffffff}, /* MR3 */
	{0x15e0,    0x00000023,	0xffffffff}, /*  */
	{0x15e4,    0x00203c18, 0xffffffff}, /* ZQC Configuration Register */
	{0x15ec,    0xf8000019, 0xffffffff}, /* DDR PHY */
	{0x16a0,    0xcc000006, 0xffffffff}, /* Clock Delay */
	{0xe4124,   0x08008073, 0xffffffff}, /* AVS BG default */
	{0, 0, 0}
};

#endif /* CONFIG_CUSTOMER_BOARD_SUPPORT */

#endif /* SUPPORT_STATIC_DUNIT_CONFIG */

#endif /* _DDR3_A38X_MC_STATIC_H */