Marvell IOB address decoding bindings
=====================================

IO bridge configration driver (3rd stage address translation) for Marvell Armada 8K and 8K+ SoCs.

The IOB includes a description of the address decoding configuration.

IOB supports up to n (in CP110 n=24) windows for external memory transaction.
When a transaction passes through the IOB, its address is compared to each of
the enabled windows. If there is a hit and it passes the security checks, it is
advanced to the target port.

Mandatory functions:
	- marvell_get_iob_memory_map
		returns the IOB windows configuration and the number of windows

Mandatory structures:
	iob_memory_map - Array that include the configuration of the windows
	  every window/entry is a struct which has 3 parameters:
	  - Base address of the window
	  - Size of the window
	  - Target-ID of the window

Target ID options:
	- 0x0 = Internal configuration space
	- 0x1 = MCI0
	- 0x2 = PEX1_X1
	- 0x3 = PEX2_X1
	- 0x4 = PEX0_X4
	- 0x5 = NAND flash
	- 0x6 = RUNIT (NOR/SPI/BootRoom)
	- 0x7 = MCI1

Example:
	struct addr_map_win iob_memory_map[] = {
		{0x00000000f7000000,	0x0000000001000000,	PEX1_TID}, /* PEX1_X1 window */
		{0x00000000f8000000,	0x0000000001000000,	PEX2_TID}, /* PEX2_X1 window */
		{0x00000000f6000000,	0x0000000001000000,	PEX0_TID}, /* PEX0_X4 window */
		{0x00000000f9000000,	0x0000000001000000,	NAND_TID}  /* NAND window */
	};
