/*
 * Locations of devices in the Cronus ASIC
 *
 * Copyright (C) 2005-2009 Scientific-Atlanta, 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; either version 2 of the License, or
 * (at your option) any later version.
 *
 * 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
 *
 * Author:       Ken Eppinett
 *               David Schleef <ds@schleef.org>
 *
 * Description:  Defines the platform resources for the SA settop.
 */

#include <linux/init.h>
#include <asm/mach-powertv/asic.h>

#define CRONUS_ADDR(x)	(CRONUS_IO_BASE + (x))

const struct register_map cronus_register_map __initconst = {
	.eic_slow0_strt_add = {.phys = CRONUS_ADDR(0x000000)},
	.eic_cfg_bits = {.phys = CRONUS_ADDR(0x000038)},
	.eic_ready_status = {.phys = CRONUS_ADDR(0x00004C)},

	.chipver3 = {.phys = CRONUS_ADDR(0x2A0800)},
	.chipver2 = {.phys = CRONUS_ADDR(0x2A0804)},
	.chipver1 = {.phys = CRONUS_ADDR(0x2A0808)},
	.chipver0 = {.phys = CRONUS_ADDR(0x2A080C)},

	/* The registers of IRBlaster */
	.uart1_intstat = {.phys = CRONUS_ADDR(0x2A1800)},
	.uart1_inten = {.phys = CRONUS_ADDR(0x2A1804)},
	.uart1_config1 = {.phys = CRONUS_ADDR(0x2A1808)},
	.uart1_config2 = {.phys = CRONUS_ADDR(0x2A180C)},
	.uart1_divisorhi = {.phys = CRONUS_ADDR(0x2A1810)},
	.uart1_divisorlo = {.phys = CRONUS_ADDR(0x2A1814)},
	.uart1_data = {.phys = CRONUS_ADDR(0x2A1818)},
	.uart1_status = {.phys = CRONUS_ADDR(0x2A181C)},

	.int_stat_3 = {.phys = CRONUS_ADDR(0x2A2800)},
	.int_stat_2 = {.phys = CRONUS_ADDR(0x2A2804)},
	.int_stat_1 = {.phys = CRONUS_ADDR(0x2A2808)},
	.int_stat_0 = {.phys = CRONUS_ADDR(0x2A280C)},
	.int_config = {.phys = CRONUS_ADDR(0x2A2810)},
	.int_int_scan = {.phys = CRONUS_ADDR(0x2A2818)},
	.ien_int_3 = {.phys = CRONUS_ADDR(0x2A2830)},
	.ien_int_2 = {.phys = CRONUS_ADDR(0x2A2834)},
	.ien_int_1 = {.phys = CRONUS_ADDR(0x2A2838)},
	.ien_int_0 = {.phys = CRONUS_ADDR(0x2A283C)},
	.int_level_3_3 = {.phys = CRONUS_ADDR(0x2A2880)},
	.int_level_3_2 = {.phys = CRONUS_ADDR(0x2A2884)},
	.int_level_3_1 = {.phys = CRONUS_ADDR(0x2A2888)},
	.int_level_3_0 = {.phys = CRONUS_ADDR(0x2A288C)},
	.int_level_2_3 = {.phys = CRONUS_ADDR(0x2A2890)},
	.int_level_2_2 = {.phys = CRONUS_ADDR(0x2A2894)},
	.int_level_2_1 = {.phys = CRONUS_ADDR(0x2A2898)},
	.int_level_2_0 = {.phys = CRONUS_ADDR(0x2A289C)},
	.int_level_1_3 = {.phys = CRONUS_ADDR(0x2A28A0)},
	.int_level_1_2 = {.phys = CRONUS_ADDR(0x2A28A4)},
	.int_level_1_1 = {.phys = CRONUS_ADDR(0x2A28A8)},
	.int_level_1_0 = {.phys = CRONUS_ADDR(0x2A28AC)},
	.int_level_0_3 = {.phys = CRONUS_ADDR(0x2A28B0)},
	.int_level_0_2 = {.phys = CRONUS_ADDR(0x2A28B4)},
	.int_level_0_1 = {.phys = CRONUS_ADDR(0x2A28B8)},
	.int_level_0_0 = {.phys = CRONUS_ADDR(0x2A28BC)},
	.int_docsis_en = {.phys = CRONUS_ADDR(0x2A28F4)},

	.mips_pll_setup = {.phys = CRONUS_ADDR(0x1C0000)},
	.fs432x4b4_usb_ctl = {.phys = CRONUS_ADDR(0x1C0028)},
	.test_bus = {.phys = CRONUS_ADDR(0x1C00CC)},
	.crt_spare = {.phys = CRONUS_ADDR(0x1c00d4)},
	.usb2_ohci_int_mask = {.phys = CRONUS_ADDR(0x20000C)},
	.usb2_strap = {.phys = CRONUS_ADDR(0x200014)},
	.ehci_hcapbase = {.phys = CRONUS_ADDR(0x21FE00)},
	.ohci_hc_revision = {.phys = CRONUS_ADDR(0x21fc00)},
	.bcm1_bs_lmi_steer = {.phys = CRONUS_ADDR(0x2E0008)},
	.usb2_control = {.phys = CRONUS_ADDR(0x2E004C)},
	.usb2_stbus_obc = {.phys = CRONUS_ADDR(0x21FF00)},
	.usb2_stbus_mess_size = {.phys = CRONUS_ADDR(0x21FF04)},
	.usb2_stbus_chunk_size = {.phys = CRONUS_ADDR(0x21FF08)},

	.pcie_regs = {.phys = CRONUS_ADDR(0x220000)},
	.tim_ch = {.phys = CRONUS_ADDR(0x2A2C10)},
	.tim_cl = {.phys = CRONUS_ADDR(0x2A2C14)},
	.gpio_dout = {.phys = CRONUS_ADDR(0x2A2C20)},
	.gpio_din = {.phys = CRONUS_ADDR(0x2A2C24)},
	.gpio_dir = {.phys = CRONUS_ADDR(0x2A2C2C)},
	.watchdog = {.phys = CRONUS_ADDR(0x2A2C30)},
	.front_panel = {.phys = CRONUS_ADDR(0x2A3800)},
};
