blob: 97ec09d0ea294e8286ac461671081b682e25517d [file] [log] [blame]
Konstantin Porotchkin62a76462018-02-26 15:51:11 +02001Marvell IOB address decoding bindings
2=====================================
3
4IO bridge configration driver (3rd stage address translation) for Marvell Armada 8K and 8K+ SoCs.
5
6The IOB includes a description of the address decoding configuration.
7
8IOB supports up to n (in CP110 n=24) windows for external memory transaction.
9When a transaction passes through the IOB, its address is compared to each of
10the enabled windows. If there is a hit and it passes the security checks, it is
11advanced to the target port.
12
13Mandatory functions:
14 - marvell_get_iob_memory_map
15 returns the IOB windows configuration and the number of windows
16
17Mandatory structures:
18 iob_memory_map - Array that include the configuration of the windows
19 every window/entry is a struct which has 3 parameters:
20 - Base address of the window
21 - Size of the window
22 - Target-ID of the window
23
24Target ID options:
25 - 0x0 = Internal configuration space
26 - 0x1 = MCI0
27 - 0x2 = PEX1_X1
28 - 0x3 = PEX2_X1
29 - 0x4 = PEX0_X4
30 - 0x5 = NAND flash
31 - 0x6 = RUNIT (NOR/SPI/BootRoom)
32 - 0x7 = MCI1
33
34Example:
35 struct addr_map_win iob_memory_map[] = {
36 {0x00000000f7000000, 0x0000000001000000, PEX1_TID}, /* PEX1_X1 window */
37 {0x00000000f8000000, 0x0000000001000000, PEX2_TID}, /* PEX2_X1 window */
38 {0x00000000f6000000, 0x0000000001000000, PEX0_TID}, /* PEX0_X4 window */
39 {0x00000000f9000000, 0x0000000001000000, NAND_TID} /* NAND window */
40 };