| /* |
| * 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); |
| } |
| } |