summaryrefslogtreecommitdiff
path: root/drivers/fims/fim_reg.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/fims/fim_reg.h')
-rw-r--r--drivers/fims/fim_reg.h279
1 files changed, 279 insertions, 0 deletions
diff --git a/drivers/fims/fim_reg.h b/drivers/fims/fim_reg.h
new file mode 100644
index 000000000000..b70d434150d3
--- /dev/null
+++ b/drivers/fims/fim_reg.h
@@ -0,0 +1,279 @@
+/*
+ * include/asm-arm/arch-ns9xxx/fim_reg.h
+ *
+ * Copyright (C) 2008 by Digi International Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ *
+ * !Revision: $Revision: 1.8 $
+ * !Author: Silvano Najera, Luis Galdos
+ * !Descr:
+ * !References:
+ */
+
+
+#ifndef __FIM_REG_H
+#define __FIM_REG_H
+
+
+/* @FIXME: We must use the IOHUB base address*/
+#define NS92XX_FIM_IOHUB_BASE_PA (0x90000000)
+#define NS92XX_FIM_IOHUB_SIZE (0x1000)
+#define NS92XX_FIM_IOHUB_OFFSET (0x8000)
+
+
+/* Base addresses of all memory regions */
+#define NS92XX_FIM_REG_BASE_PA (0x90001000)
+#define NS92XX_FIM_REG_OFFSET (0x8000)
+#define NS92XX_FIM_REG_SIZE (0x3000)
+
+#define NS92XX_FIM_INSTR_BASE_PA (0x90004000)
+#define NS92XX_FIM_INSTR_OFFSET (0x8000)
+#define NS92XX_FIM_INSTR_SIZE (0x5000)
+
+#define NS92XX_FIM_HWA_BASE_PA (0x90068000)
+#define NS92XX_FIM_HWA_OFFSET (0x8000)
+#define NS92XX_FIM_HWA_SIZE (0x8000)
+
+#define NS92XX_FIM_IO_SPACE_BASE_PA (0x90078000)
+#define NS92XX_FIM_IO_SPACE_OFFSET (0x8000)
+#define NS92XX_FIM_IO_SPACE_SIZE (0x8000)
+
+
+/* FIM register offsets */
+#define NS92XX_FIM_GEN_CTRL_REG (0x00)
+
+#define NS92XX_FIM_CTRL0_REG (0x10)
+#define NS92XX_FIM_CTRL1_REG (0x14)
+#define NS92XX_FIM_CTRL2_REG (0x18)
+#define NS92XX_FIM_CTRL3_REG (0x1c)
+#define NS92XX_FIM_CTRL4_REG (0x20)
+#define NS92XX_FIM_CTRL5_REG (0x24)
+#define NS92XX_FIM_CTRL6_REG (0x28)
+#define NS92XX_FIM_CTRL7_REG (0x2c)
+#define NS92XX_FIM_CTRL8_REG (0x30)
+#define NS92XX_FIM_CTRL9_REG (0x34)
+#define NS92XX_FIM_CTRL10_REG (0x38)
+#define NS92XX_FIM_CTRL11_REG (0x3c)
+#define NS92XX_FIM_CTRL12_REG (0x40)
+#define NS92XX_FIM_CTRL13_REG (0x44)
+#define NS92XX_FIM_CTRL14_REG (0x48)
+#define NS92XX_FIM_CTRL15_REG (0x4c)
+#define NS92XX_FIM_CTRL_REG(i) (NS92XX_FIM_CTRL0_REG + 4*i)
+#define NS92XX_FIM_CTRL_REG_CHECK(i) ((i<0 || i>15)?1:0)
+
+
+/*
+ * According to the HW-reference manual of the FIMs (page 16)
+ * The macros have as offset the address 0x90001000 (NS92XX_FIM_REG_BASE_PA)
+ */
+#define NS92XX_FIM_STAT0_REG (0x50)
+#define NS92XX_FIM_STAT1_REG (0x54)
+#define NS92XX_FIM_STAT2_REG (0x58)
+#define NS92XX_FIM_STAT3_REG (0x5c)
+#define NS92XX_FIM_STAT4_REG (0x60)
+#define NS92XX_FIM_STAT5_REG (0x64)
+#define NS92XX_FIM_STAT6_REG (0x68)
+#define NS92XX_FIM_STAT7_REG (0x6c)
+#define NS92XX_FIM_STAT8_REG (0x70)
+#define NS92XX_FIM_STAT9_REG (0x74)
+#define NS92XX_FIM_STAT10_REG (0x78)
+#define NS92XX_FIM_STAT11_REG (0x7c)
+#define NS92XX_FIM_STAT12_REG (0x80)
+#define NS92XX_FIM_STAT13_REG (0x84)
+#define NS92XX_FIM_STAT14_REG (0x88)
+#define NS92XX_FIM_STAT_REG(i) (NS92XX_FIM_STAT0_REG + 4*i)
+#define NS92XX_FIM_STAT_REG_CHECK(i) ((i<0 || i>14)?1:0)
+
+
+/*
+ * According to the HW-reference manual of the FIMs (page 16)
+ * The macros have as offset the address 0x90001000 (NS92XX_FIM_REG_BASE_PA)
+ */
+#define NS92XX_FIM_EXP0_REG (0x50)
+#define NS92XX_FIM_EXP1_REG (0x54)
+#define NS92XX_FIM_EXP2_REG (0x58)
+#define NS92XX_FIM_EXP3_REG (0x5c)
+#define NS92XX_FIM_EXP4_REG (0x60)
+#define NS92XX_FIM_EXP5_REG (0x64)
+#define NS92XX_FIM_EXP6_REG (0x68)
+#define NS92XX_FIM_EXP7_REG (0x6c)
+#define NS92XX_FIM_EXP8_REG (0x70)
+#define NS92XX_FIM_EXP9_REG (0x74)
+#define NS92XX_FIM_EXP10_REG (0x78)
+#define NS92XX_FIM_EXP11_REG (0x7c)
+#define NS92XX_FIM_EXP12_REG (0x80)
+#define NS92XX_FIM_EXP13_REG (0x84)
+#define NS92XX_FIM_EXP14_REG (0x88)
+#define NS92XX_FIM_EXP15_REG (0x8c)
+#define NS92XX_FIM_EXP_REG(i) (NS92XX_FIM_EXP0_REG + 4*i)
+#define NS92XX_FIM_EXP_REG_CHECK(i) ((i<0 || i>15)?1:0)
+
+
+/* FIM intruction memory offset */
+#define NS92XX_FIM_INSTRUCTION_ADDR (0x00)
+
+/* Hardware assist register offsets */
+#define NS92XX_FIM_HWA_GEN_CONF_REG (0x00)
+
+#define NS92XX_FIM_HWA_SIGNAL0 (0x04)
+#define NS92XX_FIM_HWA_SIGNAL1 (0x08)
+#define NS92XX_FIM_HWA_SIGNAL2 (0x0c)
+#define NS92XX_FIM_HWA_SIGNAL3 (0x10)
+#define NS92XX_FIM_HWA_SIGNAL4 (0x14)
+#define NS92XX_FIM_HWA_SIGNAL5 (0x18)
+#define NS92XX_FIM_HWA_SIGNAL6 (0x1c)
+#define NS92XX_FIM_HWA_SIGNAL7 (0x20)
+#define NS92XX_FIM_HWA_CONTROL0 (0x24)
+#define NS92XX_FIM_HWA_CONTROL1 (0x28)
+#define NS92XX_FIM_HWA_CONTROL2 (0x2c)
+#define NS92XX_FIM_HWA_CONTROL3 (0x30)
+#define NS92XX_FIM_HWA_16_BIT_BUS (0x34)
+#define NS92XX_FIM_HWA_32_BIT_BUS (0x38)
+#define NS92XX_FIM_HWA_SIGNAL(index) (NS92XX_FIM_HWA_GEN_CONF_REG + NS92XX_FIM_HWA_SIGNAL0 + 4*index)
+
+
+/* Fim register bit fields */
+#define NS92XX_FIM_GEN_CTRL_PROGMEM (0x80000000)
+#define NS92XX_FIM_GEN_CTRL_RESERVED1 (0x7fff0000)
+#define NS92XX_FIM_GEN_CTRL_INTACKWR (0x00008000)
+#define NS92XX_FIM_GEN_CTRL_INTTOPIC (0x00007f00)
+#define NS92XX_FIM_GEN_CTRL_INTACKRD (0x00000080)
+#define NS92XX_FIM_GEN_CTRL_INTFROMPIC (0x0000007f)
+
+/* Mask used for the interrupt codes from the ARM to the PICs */
+#define NS92XX_FIM_INT_MASK(code) (code<<8)
+
+
+/* FIM intructions bit fields*/
+#define NS92XX_FIM_INSTRUCTION_MASK (0x00003fff)
+
+/* Hardware assist register bit fields */
+#define NS92XX_FIM_HWA_GEN_CONF_RESERVED1 (0xffffffe0)
+#define NS92XX_FIM_HWA_GEN_CONF_CLKSEL (0x0000001c)
+#define NS92XX_FIM_HWA_GEN_CONF_ENABLE (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL0_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL0_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL0_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL0_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL0_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL0_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL1_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL1_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL1_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL1_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL1_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL1_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL2_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL2_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL2_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL2_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL2_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL2_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL3_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL3_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL3_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL3_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL3_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL3_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL4_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL4_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL4_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL4_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL4_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL4_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL5_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL5_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL5_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL5_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL5_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL5_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL6_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL6_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL6_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL6_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL6_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL6_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_SIGNAL7_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_SIGNAL7_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_SIGNAL7_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_SIGNAL7_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_SIGNAL7_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_SIGNAL7_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_CONTROL0_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_CONTROL0_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_CONTROL0_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_CONTROL0_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_CONTROL0_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_CONTROL0_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_CONTROL1_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_CONTROL1_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_CONTROL1_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_CONTROL1_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_CONTROL1_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_CONTROL1_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_CONTROL2_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_CONTROL2_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_CONTROL2_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_CONTROL2_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_CONTROL2_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_CONTROL2_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_CONTROL3_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_CONTROL3_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_CONTROL3_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_CONTROL3_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_CONTROL3_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_CONTROL3_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_16_BIT_BUS_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_16_BIT_BUS_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_16_BIT_BUS_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_16_BIT_BUS_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_16_BIT_BUS_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_16_BIT_BUS_CLKS (0x00000003)
+
+#define NS92XX_FIM_HWA_32_BIT_BUS_RESERVED (0xfffffc00)
+#define NS92XX_FIM_HWA_32_BIT_BUS_OMODE (0x00000300)
+#define NS92XX_FIM_HWA_32_BIT_BUS_IMODE (0x000000e0)
+#define NS92XX_FIM_HWA_32_BIT_BUS_CLKE (0x00000010)
+#define NS92XX_FIM_HWA_32_BIT_BUS_CNTRL (0x0000000c)
+#define NS92XX_FIM_HWA_32_BIT_BUS_CLKS (0x00000003)
+
+
+
+/* H/W Assist General Configuration Register Codes */
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_2 (0)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_4 (1<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_8 (2<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_16 (3<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_32 (4<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_64 (5<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_128 (6<<2)
+#define FIM_HWA_GEN_CFG_CLKSEL_DIVIDE_BY_256 (7<<2)
+
+
+
+#endif /* __FIM_REG_H */
+
+
+
+
+
+
+
+