/*
 * This file is part of the coreboot project.
 *
 * Copyright (C) 2008 Advanced Micro Devices, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 */

static void setup_sitemp_resource_map(void)
{
	static const unsigned int register_values[] = {
		/* Careful set limit registers before base registers which contain the enables */
		/* DRAM Limit i Registers
		* F1:0x44 i = 0
		* F1:0x4C i = 1
		* F1:0x54 i = 2
		* F1:0x5C i = 3
		* F1:0x64 i = 4
		* F1:0x6C i = 5
		* F1:0x74 i = 6
		* F1:0x7C i = 7
		* [ 2: 0] Destination Node ID
		*	000 = Node 0
		*	001 = Node 1
		*	010 = Node 2
		*	011 = Node 3
		*	100 = Node 4
		*	101 = Node 5
		*	110 = Node 6
		*	111 = Node 7
		* [ 7: 3] Reserved
		* [10: 8] Interleave select
		*	specifies the values of A[14:12] to use with interleave enable.
		* [15:11] Reserved
		* [31:16] DRAM Limit Address i Bits 39-24
		*	This field defines the upper address bits of a 40 bit  address
		*	that define the end of the DRAM region.
		*/
		PCI_ADDR(0, 0x18, 1, 0x44), 0x0000f8f8, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x4C), 0x0000f8f8, 0x00000001,
		PCI_ADDR(0, 0x18, 1, 0x54), 0x0000f8f8, 0x00000002,
		PCI_ADDR(0, 0x18, 1, 0x5C), 0x0000f8f8, 0x00000003,
		PCI_ADDR(0, 0x18, 1, 0x64), 0x0000f8f8, 0x00000004,
		PCI_ADDR(0, 0x18, 1, 0x6C), 0x0000f8f8, 0x00000005,
		PCI_ADDR(0, 0x18, 1, 0x74), 0x0000f8f8, 0x00000006,
		PCI_ADDR(0, 0x18, 1, 0x7C), 0x0000f8f8, 0x00000007,
		/* DRAM Base i Registers
		* F1:0x40 i = 0
		* F1:0x48 i = 1
		* F1:0x50 i = 2
		* F1:0x58 i = 3
		* F1:0x60 i = 4
		* F1:0x68 i = 5
		* F1:0x70 i = 6
		* F1:0x78 i = 7
		* [ 0: 0] Read Enable
		*	0 = Reads Disabled
		*	1 = Reads Enabled
		* [ 1: 1] Write Enable
		*	0 = Writes Disabled
		*	1 = Writes Enabled
		* [ 7: 2] Reserved
		* [10: 8] Interleave Enable
		*	000 = No interleave
		*	001 = Interleave on A[12] (2 nodes)
		*	010 = reserved
		*	011 = Interleave on A[12] and A[14] (4 nodes)
		*	100 = reserved
		*	101 = reserved
		*	110 = reserved
		*	111 = Interleve on A[12] and A[13] and A[14] (8 nodes)
		* [15:11] Reserved
		* [13:16] DRAM Base Address i Bits 39-24
		*	This field defines the upper address bits of a 40-bit address
		*	that define the start of the DRAM region.
		*/
		PCI_ADDR(0, 0x18, 1, 0x40), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x48), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x50), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x58), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x60), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x68), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x70), 0x0000f8fc, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x78), 0x0000f8fc, 0x00000000,

		/* Memory-Mapped I/O Limit i Registers
		 * F1:0x84 i = 0
		 * F1:0x8C i = 1
		 * F1:0x94 i = 2
		 * F1:0x9C i = 3
		 * F1:0xA4 i = 4
		 * F1:0xAC i = 5
		 * F1:0xB4 i = 6
		 * F1:0xBC i = 7
		 * [ 2: 0] Destination Node ID
		 *	000 = Node 0
		 *	001 = Node 1
		 *	010 = Node 2
		 *	011 = Node 3
		 *	100 = Node 4
		 *	101 = Node 5
		 *	110 = Node 6
		 *	111 = Node 7
		 * [ 3: 3] Reserved
		 * [ 5: 4] Destination Link ID
		 *	00 = Link 0
		 *	01 = Link 1
		 *	10 = Link 2
		 *	11 = Reserved
		 * [ 6: 6] Reserved
		 * [ 7: 7] Non-Posted
		 *	0 = CPU writes may be posted
		 *	1 = CPU writes must be non-posted
		 * [31: 8] Memory-Mapped I/O Limit Address i (39-16)
		 *	This field defines the upp adddress bits of a 40-bit address that
		 *	defines the end of a memory-mapped I/O region n
		 */
		PCI_ADDR(0, 0x18, 1, 0x84), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x8C), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x94), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x9C), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xA4), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xAC), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xB4), 0x00000048, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xBC), 0x00000048, 0x00ffff00,

		/* Memory-Mapped I/O Base i Registers
		* F1:0x80 i = 0
		* F1:0x88 i = 1
		* F1:0x90 i = 2
		* F1:0x98 i = 3
		* F1:0xA0 i = 4
		* F1:0xA8 i = 5
		* F1:0xB0 i = 6
		* F1:0xB8 i = 7
		* [ 0: 0] Read Enable
		*	0 = Reads disabled
		*	1 = Reads Enabled
		* [ 1: 1] Write Enable
		*	0 = Writes disabled
		*	1 = Writes Enabled
		* [ 2: 2] Cpu Disable
		*	0 = Cpu can use this I/O range
		*	1 = Cpu requests do not use this I/O range
		* [ 3: 3] Lock
		*	0 = base/limit registers i are read/write
		*	1 = base/limit registers i are read-only
		* [ 7: 4] Reserved
		* [31: 8] Memory-Mapped I/O Base Address i (39-16)
		*	This field defines the upper address bits of a 40bit address
		*	that defines the start of memory-mapped I/O region i
		*/
		PCI_ADDR(0, 0x18, 1, 0x80), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x88), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x90), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0x98), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xA0), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xA8), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xB0), 0x000000f0, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xB8), 0x000000f0, 0x00fc0003,

		/* PCI I/O Limit i Registers
		* F1:0xC4 i = 0
		* F1:0xCC i = 1
		* F1:0xD4 i = 2
		* F1:0xDC i = 3
		* [ 2: 0] Destination Node ID
		*	000 = Node 0
		*	001 = Node 1
		*	010 = Node 2
		*	011 = Node 3
		*	100 = Node 4
		*	101 = Node 5
		*	110 = Node 6
		*	111 = Node 7
		* [ 3: 3] Reserved
		* [ 5: 4] Destination Link ID
		*	00 = Link 0
		*	01 = Link 1
		*	10 = Link 2
		*	11 = reserved
		* [11: 6] Reserved
		* [24:12] PCI I/O Limit Address i
		*	This field defines the end of PCI I/O region n
		* [31:25] Reserved
		*/
		PCI_ADDR(0, 0x18, 1, 0xC4), 0xFE000FC8, 0x01fff000,
		PCI_ADDR(0, 0x18, 1, 0xCC), 0xFE000FC8, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xD4), 0xFE000FC8, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xDC), 0xFE000FC8, 0x00000000,

		/* PCI I/O Base i Registers
		 * F1:0xC0 i = 0
		 * F1:0xC8 i = 1
		 * F1:0xD0 i = 2
		 * F1:0xD8 i = 3
		 * [ 0: 0] Read Enable
		 *	0 = Reads Disabled
		 *	1 = Reads Enabled
		 * [ 1: 1] Write Enable
		 *	0 = Writes Disabled
		 *	1 = Writes Enabled
		 * [ 3: 2] Reserved
		 * [ 4: 4] VGA Enable
		 *	0 = VGA matches Disabled
		 *	1 = matches all address < 64K and where A[9:0] is in the
		 *	range 3B0-3BB or 3C0-3DF independen of the base & limit registers
		 * [ 5: 5] ISA Enable
		 *	0 = ISA matches Disabled
		 *	1 = Blocks address < 64K and in the last 768 bytes of eack 1K block
		 *	from matching agains this base/limit pair
		 * [11: 6] Reserved
		 * [24:12] PCI I/O Base i
		 *	This field defines the start of PCI I/O region n
		 * [31:25] Reserved
		 */
		PCI_ADDR(0, 0x18, 1, 0xC0), 0xFE000FCC, 0x00000003,
		PCI_ADDR(0, 0x18, 1, 0xC8), 0xFE000FCC, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xD0), 0xFE000FCC, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xD8), 0xFE000FCC, 0x00000000,

		/* Config Base and Limit i Registers
		 * F1:0xE0 i = 0
		 * F1:0xE4 i = 1
		 * F1:0xE8 i = 2
		 * F1:0xEC i = 3
		 * [ 0: 0] Read Enable
		 *	0 = Reads Disabled
		 *	1 = Reads Enabled
		 * [ 1: 1] Write Enable
		 *	0 = Writes Disabled
		 *	1 = Writes Enabled
		 * [ 2: 2] Device Number Compare Enable
		 *	0 = The ranges are based on bus number
		 *	1 = The ranges are ranges of devices on bus 0
		 * [ 3: 3] Reserved
		 * [ 6: 4] Destination Node
		 *	000 = Node 0
		 *	001 = Node 1
		 *	010 = Node 2
		 *	011 = Node 3
		 *	100 = Node 4
		 *	101 = Node 5
		 *	110 = Node 6
		 *	111 = Node 7
		 * [ 7: 7] Reserved
		 * [ 9: 8] Destination Link
		 *	00 = Link 0
		 *	01 = Link 1
		 *	10 = Link 2
		 *	11 - Reserved
		 * [15:10] Reserved
		 * [23:16] Bus Number Base i
		 *	This field defines the lowest bus number in configuration region i
		 * [31:24] Bus Number Limit i
		 *	This field defines the highest bus number in configuration regin i
		 */
		PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x08000003,
		PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xE8), 0x0000FC88, 0x00000000,
		PCI_ADDR(0, 0x18, 1, 0xEC), 0x0000FC88, 0x00000000,
	};

	int max;
	max = ARRAY_SIZE(register_values);
	setup_resource_map(register_values, max);
}
