blob: ad874435f7833da69ff17fb5d27d9569ee9ec703 [file] [log] [blame]
/*
* Copyright 2018 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <dram.h>
#include <mmio.h>
struct dram_cfg_param lpddr4_phy_pie[] = {
{ .reg = DDRPHY_REG(0xd0000), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90000), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90001), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x90002), .cfg = 0x10e},
{ .reg = DDRPHY_REG(0x90003), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90004), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90005), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90029), .cfg = 0xb},
{ .reg = DDRPHY_REG(0x9002a), .cfg = 0x480},
{ .reg = DDRPHY_REG(0x9002b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9002c), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9002d), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x9002e), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x9002f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90030), .cfg = 0x478},
{ .reg = DDRPHY_REG(0x90031), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90032), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90033), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x90034), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90035), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x90036), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90037), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x90038), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90039), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x9003a), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x9003b), .cfg = 0x44},
{ .reg = DDRPHY_REG(0x9003c), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9003d), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9003e), .cfg = 0x14f},
{ .reg = DDRPHY_REG(0x9003f), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90040), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90041), .cfg = 0x47},
{ .reg = DDRPHY_REG(0x90042), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90043), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90044), .cfg = 0x4f},
{ .reg = DDRPHY_REG(0x90045), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90046), .cfg = 0x179},
{ .reg = DDRPHY_REG(0x90047), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90048), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x90049), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9004a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9004b), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9004c), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9004d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9004e), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x9004f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90050), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90051), .cfg = 0x45a},
{ .reg = DDRPHY_REG(0x90052), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x90053), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90054), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x90055), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90056), .cfg = 0x40},
{ .reg = DDRPHY_REG(0x90057), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90058), .cfg = 0x179},
{ .reg = DDRPHY_REG(0x90059), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x9005a), .cfg = 0x618},
{ .reg = DDRPHY_REG(0x9005b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9005c), .cfg = 0x40c0},
{ .reg = DDRPHY_REG(0x9005d), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9005e), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9005f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90060), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90061), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90062), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x90063), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90064), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90065), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90066), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90067), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90068), .cfg = 0x40},
{ .reg = DDRPHY_REG(0x90069), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9006a), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9006b), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x9006c), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x9006d), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x9006e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9006f), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90070), .cfg = 0x78},
{ .reg = DDRPHY_REG(0x90071), .cfg = 0x549},
{ .reg = DDRPHY_REG(0x90072), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90073), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90074), .cfg = 0xd49},
{ .reg = DDRPHY_REG(0x90075), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90076), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90077), .cfg = 0x94a},
{ .reg = DDRPHY_REG(0x90078), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90079), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9007a), .cfg = 0x441},
{ .reg = DDRPHY_REG(0x9007b), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9007c), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9007d), .cfg = 0x42},
{ .reg = DDRPHY_REG(0x9007e), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9007f), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90080), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x90081), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90082), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90083), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90084), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x90085), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90086), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90087), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90088), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90089), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9008a), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x9008b), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9008c), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9008d), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x9008e), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9008f), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90090), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90091), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90092), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90093), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x90094), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90095), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90096), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90097), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90098), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90099), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x9009a), .cfg = 0x58},
{ .reg = DDRPHY_REG(0x9009b), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x9009c), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x9009d), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9009e), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x9009f), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a0), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900a1), .cfg = 0x5},
{ .reg = DDRPHY_REG(0x900a2), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x900a3), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900a4), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a5), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a6), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x40000), .cfg = 0x811},
{ .reg = DDRPHY_REG(0x40020), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x40040), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40060), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40001), .cfg = 0x4008},
{ .reg = DDRPHY_REG(0x40021), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40041), .cfg = 0x4f},
{ .reg = DDRPHY_REG(0x40061), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40002), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x40022), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40042), .cfg = 0x51},
{ .reg = DDRPHY_REG(0x40062), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40003), .cfg = 0x811},
{ .reg = DDRPHY_REG(0x40023), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x40043), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40063), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40004), .cfg = 0x720},
{ .reg = DDRPHY_REG(0x40024), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40044), .cfg = 0x1740},
{ .reg = DDRPHY_REG(0x40064), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40005), .cfg = 0x16},
{ .reg = DDRPHY_REG(0x40025), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40045), .cfg = 0x4b},
{ .reg = DDRPHY_REG(0x40065), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40006), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40026), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40046), .cfg = 0x2001},
{ .reg = DDRPHY_REG(0x40066), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40007), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40027), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40047), .cfg = 0x2800},
{ .reg = DDRPHY_REG(0x40067), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40008), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40028), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40048), .cfg = 0xf00},
{ .reg = DDRPHY_REG(0x40068), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40009), .cfg = 0x720},
{ .reg = DDRPHY_REG(0x40029), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40049), .cfg = 0x1400},
{ .reg = DDRPHY_REG(0x40069), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000a), .cfg = 0xe08},
{ .reg = DDRPHY_REG(0x4002a), .cfg = 0xc15},
{ .reg = DDRPHY_REG(0x4004a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000b), .cfg = 0x623},
{ .reg = DDRPHY_REG(0x4002b), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x4004b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000c), .cfg = 0x4028},
{ .reg = DDRPHY_REG(0x4002c), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x4004c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000d), .cfg = 0xe08},
{ .reg = DDRPHY_REG(0x4002d), .cfg = 0xc1a},
{ .reg = DDRPHY_REG(0x4004d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000e), .cfg = 0x623},
{ .reg = DDRPHY_REG(0x4002e), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x4004e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000f), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x4002f), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x4004f), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006f), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40010), .cfg = 0x2604},
{ .reg = DDRPHY_REG(0x40030), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40050), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40070), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40011), .cfg = 0x708},
{ .reg = DDRPHY_REG(0x40031), .cfg = 0x5},
{ .reg = DDRPHY_REG(0x40051), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40071), .cfg = 0x2002},
{ .reg = DDRPHY_REG(0x40012), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x40032), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x40052), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40072), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40013), .cfg = 0x2604},
{ .reg = DDRPHY_REG(0x40033), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40053), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40073), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40014), .cfg = 0x708},
{ .reg = DDRPHY_REG(0x40034), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x40054), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40074), .cfg = 0x2002},
{ .reg = DDRPHY_REG(0x40015), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x40035), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x40055), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40075), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40016), .cfg = 0x60a},
{ .reg = DDRPHY_REG(0x40036), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40056), .cfg = 0x1200},
{ .reg = DDRPHY_REG(0x40076), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40017), .cfg = 0x61a},
{ .reg = DDRPHY_REG(0x40037), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40057), .cfg = 0x1300},
{ .reg = DDRPHY_REG(0x40077), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40018), .cfg = 0x60a},
{ .reg = DDRPHY_REG(0x40038), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40058), .cfg = 0x1200},
{ .reg = DDRPHY_REG(0x40078), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40019), .cfg = 0x642},
{ .reg = DDRPHY_REG(0x40039), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40059), .cfg = 0x1300},
{ .reg = DDRPHY_REG(0x40079), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4001a), .cfg = 0x4808},
{ .reg = DDRPHY_REG(0x4003a), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x4005a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4007a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900a7), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900a8), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900a9), .cfg = 0x11a},
{ .reg = DDRPHY_REG(0x900aa), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900ab), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x900ac), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x900ad), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900ae), .cfg = 0x7b2},
{ .reg = DDRPHY_REG(0x900af), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x900b0), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900b1), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x900b2), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900b3), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900b4), .cfg = 0x2a8},
{ .reg = DDRPHY_REG(0x900b5), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x900b6), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900b7), .cfg = 0x370},
{ .reg = DDRPHY_REG(0x900b8), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x900b9), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x900ba), .cfg = 0x3c8},
{ .reg = DDRPHY_REG(0x900bb), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x900bc), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x900bd), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900be), .cfg = 0x199},
{ .reg = DDRPHY_REG(0x900bf), .cfg = 0x14},
{ .reg = DDRPHY_REG(0x900c0), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900c1), .cfg = 0x11a},
{ .reg = DDRPHY_REG(0x900c2), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900c3), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x900c4), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x900c5), .cfg = 0xe},
{ .reg = DDRPHY_REG(0x900c6), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900c7), .cfg = 0x199},
{ .reg = DDRPHY_REG(0x900c8), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900c9), .cfg = 0x8568},
{ .reg = DDRPHY_REG(0x900ca), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x900cb), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x900cc), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900cd), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900ce), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900cf), .cfg = 0x1d8},
{ .reg = DDRPHY_REG(0x900d0), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900d1), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900d2), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x900d3), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900d4), .cfg = 0x70},
{ .reg = DDRPHY_REG(0x900d5), .cfg = 0x788},
{ .reg = DDRPHY_REG(0x900d6), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900d7), .cfg = 0x1ff8},
{ .reg = DDRPHY_REG(0x900d8), .cfg = 0x85a8},
{ .reg = DDRPHY_REG(0x900d9), .cfg = 0x1e8},
{ .reg = DDRPHY_REG(0x900da), .cfg = 0x50},
{ .reg = DDRPHY_REG(0x900db), .cfg = 0x798},
{ .reg = DDRPHY_REG(0x900dc), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900dd), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x900de), .cfg = 0x7a0},
{ .reg = DDRPHY_REG(0x900df), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900e0), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900e1), .cfg = 0x8310},
{ .reg = DDRPHY_REG(0x900e2), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900e3), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900e4), .cfg = 0xa310},
{ .reg = DDRPHY_REG(0x900e5), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900e6), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x900e7), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900e8), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900e9), .cfg = 0x6e},
{ .reg = DDRPHY_REG(0x900ea), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900eb), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900ec), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900ed), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900ee), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900ef), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900f0), .cfg = 0x8310},
{ .reg = DDRPHY_REG(0x900f1), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900f2), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900f3), .cfg = 0xa310},
{ .reg = DDRPHY_REG(0x900f4), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900f5), .cfg = 0x1ff8},
{ .reg = DDRPHY_REG(0x900f6), .cfg = 0x85a8},
{ .reg = DDRPHY_REG(0x900f7), .cfg = 0x1e8},
{ .reg = DDRPHY_REG(0x900f8), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900f9), .cfg = 0x798},
{ .reg = DDRPHY_REG(0x900fa), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900fb), .cfg = 0x78},
{ .reg = DDRPHY_REG(0x900fc), .cfg = 0x7a0},
{ .reg = DDRPHY_REG(0x900fd), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900fe), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900ff), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x90100), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x90101), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90102), .cfg = 0x8b10},
{ .reg = DDRPHY_REG(0x90103), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90104), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90105), .cfg = 0xab10},
{ .reg = DDRPHY_REG(0x90106), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90107), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90108), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90109), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x9010a), .cfg = 0x58},
{ .reg = DDRPHY_REG(0x9010b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9010c), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x9010d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9010e), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x9010f), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90110), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90111), .cfg = 0x8b10},
{ .reg = DDRPHY_REG(0x90112), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90113), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90114), .cfg = 0xab10},
{ .reg = DDRPHY_REG(0x90115), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90116), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90117), .cfg = 0x1d8},
{ .reg = DDRPHY_REG(0x90118), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90119), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x9011a), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x9011b), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x9011c), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x9011d), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x9011e), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x9011f), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90120), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90121), .cfg = 0x1e9},
{ .reg = DDRPHY_REG(0x90122), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90123), .cfg = 0x8080},
{ .reg = DDRPHY_REG(0x90124), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x90125), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90126), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90127), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90128), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x90129), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012a), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x9012b), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9012c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012d), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x9012e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012f), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90130), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90131), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90132), .cfg = 0x8080},
{ .reg = DDRPHY_REG(0x90133), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x90134), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90135), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x90136), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x90137), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90138), .cfg = 0x8568},
{ .reg = DDRPHY_REG(0x90139), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x9013a), .cfg = 0xb7},
{ .reg = DDRPHY_REG(0x9013b), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x9013c), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x9013d), .cfg = 0x1f},
{ .reg = DDRPHY_REG(0x9013e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9013f), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x90140), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90141), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x90142), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90143), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90144), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90145), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90146), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x90147), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90148), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x90149), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9014a), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x9014b), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x9014c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9014d), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x9014e), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x9014f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90150), .cfg = 0x3c8},
{ .reg = DDRPHY_REG(0x90151), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x90152), .cfg = 0x3},
{ .reg = DDRPHY_REG(0x90153), .cfg = 0x370},
{ .reg = DDRPHY_REG(0x90154), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x90155), .cfg = 0x20},
{ .reg = DDRPHY_REG(0x90156), .cfg = 0x2aa},
{ .reg = DDRPHY_REG(0x90157), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x90158), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90159), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x9015a), .cfg = 0x10e},
{ .reg = DDRPHY_REG(0x9015b), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9015c), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x9015d), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9015e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9015f), .cfg = 0x8140},
{ .reg = DDRPHY_REG(0x90160), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90161), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90162), .cfg = 0x8138},
{ .reg = DDRPHY_REG(0x90163), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90164), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90165), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x90166), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x90167), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90168), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90169), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9016a), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9016b), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x9016c), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9016d), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x9016e), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x9016f), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90170), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90171), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x90172), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90173), .cfg = 0x47},
{ .reg = DDRPHY_REG(0x90174), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90175), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90176), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90177), .cfg = 0x618},
{ .reg = DDRPHY_REG(0x90178), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90179), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9017a), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x9017b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9017c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9017d), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9017e), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9017f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90180), .cfg = 0x8140},
{ .reg = DDRPHY_REG(0x90181), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90182), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90183), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x90184), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90185), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90186), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90187), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90188), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90189), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9018a), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x90006), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90007), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90008), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90009), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0xd00e7), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x90017), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9001f), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x90026), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x400d0), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x400d1), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x400d2), .cfg = 0x105},
{ .reg = DDRPHY_REG(0x400d3), .cfg = 0x107},
{ .reg = DDRPHY_REG(0x400d4), .cfg = 0x10f},
{ .reg = DDRPHY_REG(0x400d5), .cfg = 0x202},
{ .reg = DDRPHY_REG(0x400d6), .cfg = 0x20a},
{ .reg = DDRPHY_REG(0x400d7), .cfg = 0x20b},
{ .reg = DDRPHY_REG(0x2003a), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x2000b), .cfg = 0x5d},
{ .reg = DDRPHY_REG(0x2000c), .cfg = 0xbb},
{ .reg = DDRPHY_REG(0x2000d), .cfg = 0x753},
{ .reg = DDRPHY_REG(0x2000e), .cfg = 0x2c},
{ .reg = DDRPHY_REG(0x9000c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000d), .cfg = 0x173},
{ .reg = DDRPHY_REG(0x9000e), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x9000f), .cfg = 0x6110},
{ .reg = DDRPHY_REG(0x90010), .cfg = 0x2152},
{ .reg = DDRPHY_REG(0x90011), .cfg = 0xdfbd},
{ .reg = DDRPHY_REG(0x90012), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x90013), .cfg = 0x6152},
{ .reg = DDRPHY_REG(0x20010), .cfg = 0x5a},
{ .reg = DDRPHY_REG(0x20011), .cfg = 0x3},
{ .reg = DDRPHY_REG(0x40080), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40081), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x40082), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40083), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x40084), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40085), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x400fd), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x10011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x10018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x100b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x101b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x102b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x103b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x104b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x105b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x106b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x107b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x108b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x11018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x110b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x111b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x112b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x113b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x114b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x115b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x116b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x117b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x118b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x12018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x120b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x121b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x122b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x123b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x124b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x125b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x126b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x127b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x128b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x13018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x130b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x131b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x132b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x133b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x134b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x135b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x136b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x137b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x138b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x2003a), .cfg = 0x2},
{ .reg = DDRPHY_REG(0xc0080), .cfg = 0x2},
{ .reg = DDRPHY_REG(0xd0000), .cfg = 0x1},
};
void ddrphy_load_pie_image(void)
{
unsigned int reg, cfg;
int num = ARRAY_SIZE(lpddr4_phy_pie);
for (int i = 0; i < num; i ++) {
reg = lpddr4_phy_pie[i].reg;
cfg = lpddr4_phy_pie[i].cfg;
mmio_write_32(reg, cfg);
}
}