blob: a16285fea8f4e1a6b0c7795b5ff480640ffe4324 [file] [log] [blame]
proc psu_pll_init_data {} {
mask_write 0XFF5E0030 0x00017F00 0x00013000
mask_write 0XFF5E0030 0x00000008 0x00000008
mask_write 0XFF5E0030 0x00000001 0x00000001
mask_write 0XFF5E0030 0x00000001 0x00000000
mask_poll 0XFF5E0040 0x00000002
mask_write 0XFF5E0030 0x00000008 0x00000000
mask_write 0XFF5E0048 0x00003F00 0x00000300
mask_write 0XFF5E0020 0x00017F00 0x00013C00
mask_write 0XFF5E0020 0x00000008 0x00000008
mask_write 0XFF5E0020 0x00000001 0x00000001
mask_write 0XFF5E0020 0x00000001 0x00000000
mask_poll 0XFF5E0040 0x00000001
mask_write 0XFF5E0020 0x00000008 0x00000000
mask_write 0XFF5E0044 0x00003F00 0x00000400
mask_write 0XFD1A0020 0x00017F00 0x00013C00
mask_write 0XFD1A0020 0x00000008 0x00000008
mask_write 0XFD1A0020 0x00000001 0x00000001
mask_write 0XFD1A0020 0x00000001 0x00000000
mask_poll 0XFD1A0044 0x00000001
mask_write 0XFD1A0020 0x00000008 0x00000000
mask_write 0XFD1A0048 0x00003F00 0x00000400
mask_write 0XFD1A002C 0x00017F00 0x00013C00
mask_write 0XFD1A002C 0x00000008 0x00000008
mask_write 0XFD1A002C 0x00000001 0x00000001
mask_write 0XFD1A002C 0x00000001 0x00000000
mask_poll 0XFD1A0044 0x00000002
mask_write 0XFD1A002C 0x00000008 0x00000000
mask_write 0XFD1A004C 0x00003F00 0x00000400
mask_write 0XFD1A0038 0x00017F00 0x00013F00
mask_write 0XFD1A0038 0x00000008 0x00000008
mask_write 0XFD1A0038 0x00000001 0x00000001
mask_write 0XFD1A0038 0x00000001 0x00000000
mask_poll 0XFD1A0044 0x00000004
mask_write 0XFD1A0038 0x00000008 0x00000000
mask_write 0XFD1A0050 0x00003F00 0x00000400
}
proc psu_clock_init_data {} {
mask_write 0XFF5E0050 0x063F3F07 0x06022800
mask_write 0XFF5E0054 0x063F3F07 0x06022800
mask_write 0XFF5E0058 0x063F3F07 0x06022800
mask_write 0XFF5E005C 0x063F3F07 0x06022800
mask_write 0XFF5E0060 0x023F3F07 0x02013200
mask_write 0XFF5E004C 0x023F3F07 0x02010800
mask_write 0XFF5E0068 0x013F3F07 0x01023200
mask_write 0XFF5E006C 0x013F3F07 0x01023200
mask_write 0XFF5E0070 0x013F3F07 0x01023200
mask_write 0XFF5E0074 0x013F3F07 0x01022800
mask_write 0XFF5E0078 0x013F3F07 0x01022800
mask_write 0XFF5E0120 0x013F3F07 0x01022800
mask_write 0XFF5E0124 0x013F3F07 0x010A3200
mask_write 0XFF5E007C 0x013F3F07 0x01022800
mask_write 0XFF5E0080 0x013F3F07 0x010A3200
mask_write 0XFF5E0084 0x013F3F07 0x01022800
mask_write 0XFF5E0088 0x013F3F07 0x01022800
mask_write 0XFF5E0090 0x01003F07 0x01003F02
mask_write 0XFF5E009C 0x01003F07 0x01000600
mask_write 0XFF5E00A4 0x01003F07 0x01000800
mask_write 0XFF5E00A8 0x01003F07 0x01000402
mask_write 0XFF5E00AC 0x01003F07 0x01001402
mask_write 0XFF5E00B0 0x01003F07 0x01003F00
mask_write 0XFF5E00B4 0x013F3F07 0x01023200
mask_write 0XFF5E00B8 0x01003F07 0x01000402
mask_write 0XFF5E0108 0x013F3F07 0x01012800
mask_write 0XFF5E0104 0x00000007 0x00000000
mask_write 0XFF5E0128 0x01003F07 0x01001402
mask_write 0XFD1A00B4 0x01003F07 0x01003F00
mask_write 0XFD1A0070 0x013F3F07 0x01153200
mask_write 0XFD1A0074 0x013F3F07 0x01022A00
mask_write 0XFD1A007C 0x013F3F07 0x01022A00
mask_write 0XFD1A0060 0x03003F07 0x03003F00
mask_write 0XFD1A0064 0x01003F07 0x01003F02
mask_write 0XFD1A0068 0x01003F07 0x01003F02
mask_write 0XFD1A0080 0x00003F07 0x00000A00
mask_write 0XFD1A0084 0x07003F07 0x07003F02
mask_write 0XFD1A00B8 0x01003F07 0x01000303
mask_write 0XFD1A00BC 0x01003F07 0x01000303
mask_write 0XFD1A00C0 0x01003F07 0x01000303
mask_write 0XFD1A00C4 0x01003F07 0x01001400
mask_write 0XFD1A00C8 0x01003F07 0x01001102
mask_write 0XFD1A00F8 0x00003F07 0x00000802
}
proc psu_ddr_init_data_3_0 {} {
}
proc psu_mio_init_data {} {
# mask_write 0XFF180000 0x000000FE 0x00000002
# mask_write 0XFF180004 0x000000FE 0x00000002
# mask_write 0XFF180008 0x000000FE 0x00000002
# mask_write 0XFF18000C 0x000000FE 0x00000002
# mask_write 0XFF180010 0x000000FE 0x00000002
# mask_write 0XFF180014 0x000000FE 0x00000002
# mask_write 0XFF180018 0x000000FE 0x00000000
# mask_write 0XFF18001C 0x000000FE 0x00000000
# mask_write 0XFF180020 0x000000FE 0x00000000
# mask_write 0XFF180024 0x000000FE 0x00000000
# mask_write 0XFF180028 0x000000FE 0x00000004
# mask_write 0XFF18002C 0x000000FE 0x00000004
# mask_write 0XFF180030 0x000000FE 0x00000000
# mask_write 0XFF180034 0x000000FE 0x00000004
# mask_write 0XFF180038 0x000000FE 0x00000004
# mask_write 0XFF18003C 0x000000FE 0x00000004
# mask_write 0XFF180040 0x000000FE 0x00000004
# mask_write 0XFF180044 0x000000FE 0x00000004
# mask_write 0XFF180048 0x000000FE 0x00000004
# mask_write 0XFF18004C 0x000000FE 0x00000004
# mask_write 0XFF180050 0x000000FE 0x00000004
# mask_write 0XFF180054 0x000000FE 0x00000004
# mask_write 0XFF180058 0x000000FE 0x00000004
# mask_write 0XFF18005C 0x000000FE 0x00000004
# mask_write 0XFF180060 0x000000FE 0x00000004
# mask_write 0XFF180064 0x000000FE 0x00000004
# mask_write 0XFF180068 0x000000FE 0x00000004
# mask_write 0XFF18006C 0x000000FE 0x00000000
# mask_write 0XFF180070 0x000000FE 0x00000000
# mask_write 0XFF180074 0x000000FE 0x00000080
# mask_write 0XFF180078 0x000000FE 0x00000000
# mask_write 0XFF18007C 0x000000FE 0x00000000
# mask_write 0XFF180080 0x000000FE 0x00000004
# mask_write 0XFF180084 0x000000FE 0x00000000
# mask_write 0XFF180088 0x000000FE 0x00000000
# mask_write 0XFF18008C 0x000000FE 0x00000080
# mask_write 0XFF180090 0x000000FE 0x00000000
# mask_write 0XFF180094 0x000000FE 0x00000000
# mask_write 0XFF180098 0x000000FE 0x00000000
# mask_write 0XFF18009C 0x000000FE 0x00000010
# mask_write 0XFF1800A0 0x000000FE 0x00000010
# mask_write 0XFF1800A4 0x000000FE 0x00000010
# mask_write 0XFF1800A8 0x000000FE 0x00000010
# mask_write 0XFF1800AC 0x000000FE 0x00000010
# mask_write 0XFF1800B0 0x000000FE 0x00000000
# mask_write 0XFF1800B4 0x000000FE 0x00000000
# mask_write 0XFF1800B8 0x000000FE 0x00000010
# mask_write 0XFF1800BC 0x000000FE 0x00000010
# mask_write 0XFF1800C0 0x000000FE 0x00000010
# mask_write 0XFF1800C4 0x000000FE 0x00000010
# mask_write 0XFF1800C8 0x000000FE 0x00000010
# mask_write 0XFF1800CC 0x000000FE 0x00000010
# mask_write 0XFF1800D0 0x000000FE 0x00000004
# mask_write 0XFF1800D4 0x000000FE 0x00000004
# mask_write 0XFF1800D8 0x000000FE 0x00000004
# mask_write 0XFF1800DC 0x000000FE 0x00000004
# mask_write 0XFF1800E0 0x000000FE 0x00000004
# mask_write 0XFF1800E4 0x000000FE 0x00000004
# mask_write 0XFF1800E8 0x000000FE 0x00000004
# mask_write 0XFF1800EC 0x000000FE 0x00000004
# mask_write 0XFF1800F0 0x000000FE 0x00000004
# mask_write 0XFF1800F4 0x000000FE 0x00000004
# mask_write 0XFF1800F8 0x000000FE 0x00000004
# mask_write 0XFF1800FC 0x000000FE 0x00000004
# mask_write 0XFF180100 0x000000FE 0x00000008
# mask_write 0XFF180104 0x000000FE 0x00000008
# mask_write 0XFF180108 0x000000FE 0x00000008
# mask_write 0XFF18010C 0x000000FE 0x00000008
# mask_write 0XFF180110 0x000000FE 0x00000008
# mask_write 0XFF180114 0x000000FE 0x00000008
# mask_write 0XFF180118 0x000000FE 0x00000008
# mask_write 0XFF18011C 0x000000FE 0x00000008
# mask_write 0XFF180120 0x000000FE 0x00000008
# mask_write 0XFF180124 0x000000FE 0x00000008
# mask_write 0XFF180128 0x000000FE 0x00000008
# mask_write 0XFF18012C 0x000000FE 0x00000008
# mask_write 0XFF180130 0x000000FE 0x00000008
# mask_write 0XFF180134 0x000000FE 0x00000000
# mask_write 0XFF180204 0xFFFFFFFF 0x00000C00
# mask_write 0XFF180208 0xFFFFFFFF 0x00B00000
# mask_write 0XFF18020C 0x00003FFF 0x00001002
# mask_write 0XFF180200 0x0000000F 0x00000000
}
proc psu_peripherals_init_data_3_0 {} {
mask_write 0XFF5E0230 0x0000000F 0x00000000
mask_write 0XFF5E0238 0x00000001 0x00000000
mask_write 0XFF5E0238 0x00010000 0x00000000
mask_write 0XFF5E023C 0x00000540 0x00000000
mask_write 0XFF5E0238 0x00000060 0x00000000
mask_write 0XFF180310 0x00008001 0x00000000
mask_write 0XFF180320 0x33803380 0x02800280
mask_write 0XFF5E0238 0x00000180 0x00000000
mask_write 0XFF5E0238 0x00000600 0x00000000
mask_write 0XFF5E0238 0x00000018 0x00000000
mask_write 0XFF5E0238 0x00007800 0x00000000
mask_write 0XFF5E0238 0x00000006 0x00000000
mask_write 0XFF000034 0x000000FF 0x00000000
mask_write 0XFF000018 0x0000FFFF 0x00000000
mask_write 0XFF000000 0x000001FF 0x00000017
mask_write 0XFF000004 0x000003FF 0x00000020
mask_write 0XFF010034 0x000000FF 0x00000000
mask_write 0XFF010018 0x0000FFFF 0x00000000
mask_write 0XFF010000 0x000001FF 0x00000017
mask_write 0XFF010004 0x000003FF 0x00000020
mask_write 0XFF4B0024 0x000000FF 0x000000FF
mask_write 0XFFCA5000 0x00001FFF 0x00000000
}
proc psu_post_config {} {
}
proc psu_peripherals_powerdwn_data_3_0 {} {
}
proc psu_security_data_3_0 {} {
mask_write 0XFF980100 0xC3FF03FF 0x00000000
mask_write 0XFF980104 0xC3FF03FF 0x00000000
mask_write 0XFF980108 0xC3FF03FF 0x00000000
mask_write 0XFF98010C 0xC3FF03FF 0x00000000
mask_write 0XFF980110 0xC3FF03FF 0x00000000
mask_write 0XFF980114 0xC3FF03FF 0x00000000
mask_write 0XFF980118 0xC3FF03FF 0x00000000
mask_write 0XFF98011C 0xC3FF03FF 0x00000000
mask_write 0XFF980120 0xC3FF03FF 0x00000000
mask_write 0XFF980124 0xC3FF03FF 0x00000000
mask_write 0XFF980128 0xC3FF03FF 0x00000000
mask_write 0XFF98012C 0xC3FF03FF 0x00000000
mask_write 0XFF980130 0xC3FF03FF 0x00000000
mask_write 0XFF980134 0xC3FF03FF 0x00000000
mask_write 0XFF980138 0xC3FF03FF 0x00000000
mask_write 0XFF98013C 0xC3FF03FF 0x00000000
mask_write 0XFF980140 0xC3FF03FF 0x00000000
mask_write 0XFF980144 0xC3FF03FF 0x00000000
mask_write 0XFF980148 0xC3FF03FF 0x00000000
mask_write 0XFF98014C 0xC3FF03FF 0x00000000
}
proc init_ddrc {} {
mask_write 0XFD1A0108 0xFFFFFFFF 0x0000000F
mask_write 0xFD070000 0xFFFFFFFF 0x41040001
mask_write 0xFD070034 0xFFFFFFFF 0x00404310
mask_write 0xFD070064 0xFFFFFFFF 0x0040001E
mask_write 0xFD070070 0xFFFFFFFF 0x00000010
mask_write 0xFD070074 0xFFFFFFFF 0x00000000
mask_write 0xFD0700C4 0xFFFFFFFF 0x10000200
mask_write 0xFD0700C8 0xFFFFFFFF 0x0030051F
mask_write 0xFD0700D0 0xFFFFFFFF 0x40020004
mask_write 0xFD0700D4 0xFFFFFFFF 0x00010000
mask_write 0xFD0700D8 0xFFFFFFFF 0x00001205
mask_write 0xFD0700DC 0xFFFFFFFF 0x09300000
mask_write 0xFD0700E0 0xFFFFFFFF 0x02080000
mask_write 0xFD0700E4 0xFFFFFFFF 0x00110004
mask_write 0xFD070100 0xFFFFFFFF 0x090E110A
mask_write 0xFD070104 0xFFFFFFFF 0x0007020E
mask_write 0xFD070108 0xFFFFFFFF 0x03040407
mask_write 0xFD07010C 0xFFFFFFFF 0x00502006
mask_write 0xFD070110 0xFFFFFFFF 0x04020205
mask_write 0xFD070114 0xFFFFFFFF 0x03030202
mask_write 0xFD070118 0xFFFFFFFF 0x01010003
mask_write 0xFD07011C 0xFFFFFFFF 0x00000101
mask_write 0xFD070120 0xFFFFFFFF 0x03030903
mask_write 0xFD070130 0xFFFFFFFF 0x00020608
mask_write 0xFD070180 0xFFFFFFFF 0x00800020
mask_write 0xFD070184 0xFFFFFFFF 0x0200CB52
mask_write 0xFD070190 0xFFFFFFFF 0x02838204
mask_write 0xFD070194 0xFFFFFFFF 0x00020404
mask_write 0xFD0701A4 0xFFFFFFFF 0x00010087
mask_write 0xFD0701B0 0xFFFFFFFF 0x00000001
mask_write 0xFD0701B4 0xFFFFFFFF 0x00000202
mask_write 0xFD0701C0 0xFFFFFFFF 0x00000000
mask_write 0xFD070200 0xFFFFFFFF 0x0000001F
mask_write 0xFD070204 0xFFFFFFFF 0x00080808
mask_write 0xFD070208 0xFFFFFFFF 0x00000000
mask_write 0xFD07020C 0xFFFFFFFF 0x00000000
mask_write 0xFD070210 0xFFFFFFFF 0x00000F0F
mask_write 0xFD070214 0xFFFFFFFF 0x07070707
mask_write 0xFD070218 0xFFFFFFFF 0x07070707
mask_write 0xFD07021C 0xFFFFFFFF 0x00000F0F
mask_write 0xFD070220 0xFFFFFFFF 0x00000000
mask_write 0xFD070240 0xFFFFFFFF 0x06000604
mask_write 0xFD070244 0xFFFFFFFF 0x00000001
mask_write 0xFD070250 0xFFFFFFFF 0x01002001
mask_write 0xFD070264 0xFFFFFFFF 0x08000040
mask_write 0xFD07026C 0xFFFFFFFF 0x08000040
mask_write 0xFD070294 0xFFFFFFFF 0x00000001
mask_write 0xFD07030C 0xFFFFFFFF 0x00000000
mask_write 0xFD070320 0xFFFFFFFF 0x00000000
mask_write 0xFD070400 0xFFFFFFFF 0x00000001
mask_write 0xFD070404 0xFFFFFFFF 0x0000600F
mask_write 0xFD070408 0xFFFFFFFF 0x0000600F
mask_write 0xFD070490 0xFFFFFFFF 0x00000001
mask_write 0xFD070494 0xFFFFFFFF 0x0021000B
mask_write 0xFD070498 0xFFFFFFFF 0x004F004F
mask_write 0xFD0704B4 0xFFFFFFFF 0x0000600F
mask_write 0xFD0704B8 0xFFFFFFFF 0x0000600F
mask_write 0xFD070540 0xFFFFFFFF 0x00000001
mask_write 0xFD070544 0xFFFFFFFF 0x02000B03
mask_write 0xFD070548 0xFFFFFFFF 0x00010040
mask_write 0xFD070564 0xFFFFFFFF 0x0000600F
mask_write 0xFD070568 0xFFFFFFFF 0x0000600F
mask_write 0xFD0705F0 0xFFFFFFFF 0x00000001
mask_write 0xFD0705F4 0xFFFFFFFF 0x02000B03
mask_write 0xFD0705F8 0xFFFFFFFF 0x00010040
mask_write 0xFD070614 0xFFFFFFFF 0x0000600F
mask_write 0xFD070618 0xFFFFFFFF 0x0000600F
mask_write 0xFD0706A0 0xFFFFFFFF 0x00000001
mask_write 0xFD0706A4 0xFFFFFFFF 0x00100003
mask_write 0xFD0706A8 0xFFFFFFFF 0x002F004F
mask_write 0xFD0706AC 0xFFFFFFFF 0x00100007
mask_write 0xFD0706B0 0xFFFFFFFF 0x0000004F
mask_write 0xFD0706C4 0xFFFFFFFF 0x0000600F
mask_write 0xFD0706C8 0xFFFFFFFF 0x0000600F
mask_write 0xFD070750 0xFFFFFFFF 0x00000001
mask_write 0xFD070754 0xFFFFFFFF 0x00100003
mask_write 0xFD070758 0xFFFFFFFF 0x002F004F
mask_write 0xFD07075C 0xFFFFFFFF 0x00100007
mask_write 0xFD070760 0xFFFFFFFF 0x0000004F
mask_write 0xFD070774 0xFFFFFFFF 0x0000600F
mask_write 0xFD070778 0xFFFFFFFF 0x0000600F
mask_write 0xFD070800 0xFFFFFFFF 0x00000001
mask_write 0xFD070804 0xFFFFFFFF 0x00100003
mask_write 0xFD070808 0xFFFFFFFF 0x002F004F
mask_write 0xFD07080C 0xFFFFFFFF 0x00100007
mask_write 0xFD070810 0xFFFFFFFF 0x0000004F
mask_write 0xFD070F04 0xFFFFFFFF 0x00000000
mask_write 0xFD070F08 0xFFFFFFFF 0x00000000
mask_write 0xFD070F0C 0xFFFFFFFF 0x00000010
mask_write 0xFD070F10 0xFFFFFFFF 0x0000000F
set RegValue [mrd -force -value 0XFD1A0108]
mask_write 0XFD1A0108 0xFFFFFFFF 0x00000000
set RegValue [mrd -force -value 0XFD1A0108]
}
proc init_peripheral {} {
# Turn on IOU Clock
mask_write 0xFF5E009C 0xFFFFFFFF 0x01001500
# Release all resets in the IOU
mask_write 0xFF5E0230 0xFFFFFFFF 0x00000000
mask_write 0xFF5E0234 0xFFFFFFFF 0x00000000
mask_write 0xFF5E0238 0xFFFFFFFF 0x00000000
# Activate GPU clocks
mask_write 0xFD1A0084 0xFFFFFFFF 0x07001500
# Take LPD out of reset except R5
set RegValue [mrd -force -value 0xFF5E023C]
set RegValue [expr $RegValue & 0x3]
mask_write 0xFF5E023C 0xFFFFFFFF $RegValue
# Take most of FPD out of reset
mask_write 0XFD1A0100 0xFFFFFFFF 0x00000000
}
proc psu_init {} {
psu_mio_init_data
psu_pll_init_data
psu_clock_init_data
psu_ddr_init_data_3_0
init_ddrc
init_peripheral
psu_peripherals_init_data_3_0
psu_peripherals_powerdwn_data_3_0
psu_security_data_3_0
}