Initial revision
authorwdenk <wdenk>
Sat, 20 Jan 2001 01:23:52 +0000 (01:23 +0000)
committerwdenk <wdenk>
Sat, 20 Jan 2001 01:23:52 +0000 (01:23 +0000)
board/cogent/mb.h [new file with mode: 0644]
include/configs/cogent_common.h [new file with mode: 0644]

diff --git a/board/cogent/mb.h b/board/cogent/mb.h
new file mode 100644 (file)
index 0000000..e37a39c
--- /dev/null
@@ -0,0 +1,525 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * defines for Cogent Motherboards
+ */
+
+#ifndef _COGENT_MB_H
+#define _COGENT_MB_H
+
+/*
+ * Cogent Motherboard Address Map
+ *
+ * The size of a Cogent motherboard address space is 256 Mbytes (i.e. 28 bits).
+ *
+ * The first 32 Mbyte (0x0000000-0x1FFFFFF) is usually RAM. The following
+ * 3 x 32 Mbyte areas (0x2000000-0x3FFFFFF, 0x4000000-0x5FFFFFF and
+ * 0x6000000-0x7FFFFFF) are general I/O "slots" (slots 1, 2 and 3).
+ * Most other motherboard devices have registers mapped into the area
+ * 0xE000000-0xFFFFFFF (Motherboard I/O slot?). The area 0x8000000-0xDFFFFFF
+ * is free for whatever.
+ *
+ * The location of the motherboard address space in the physical address space
+ * of the cpu is given by CMA_MB_BASE. This value is determined by the cpu
+ * module plugged into the motherboard and is configured above.
+ *
+ * Motherboard I/O devices mapped into the area (0xE000000-0xFFFFFFF)
+ * generally only use byte lane 0 (D0-7) for their transfers, i.e. only
+ * 8 bit, or 1 byte, transfers can take place, so all the registers are
+ * only 8 bits wide. The exceptions are the motherboard flash, which uses
+ * byte lanes 0 and 1 (i.e. 16 bits), and the mapped PCI address space.
+ *
+ * I/O registers within the mapped motherboard devices are 64 bit aligned
+ * i.e. they are 8 bytes apart. For big endian addressing, the 8 bit register
+ * will be at byte 7 (the address + 7). For little endian addressing, the
+ * register will be at byte 0 (the address + 0). To learn the endianess
+ * we must include <asm/byteorder.h>
+ *
+ * Take the CMA102 and CMA111 motherboards as examples...
+ *
+ * The CMA102 has three CMABus I/O Expansion slots and no PCI bridge. The 3
+ * CMABus slots are each mapped directly onto the three general I/O slots.
+ *
+ * The CMA111 has only one CMABus I/O Expansion slot, but has a V360EPC PCI
+ * bridge. The CMABus slot is mapped onto general I/O slot 1. The standard
+ * PCI Bus space is mapped onto general I/O slot 2, with a small area at the
+ * top reserved for access to the V360EPC registers (0x5FF0000-0x5FFFFFF).
+ * I/O slot 3 is unused. The extended PCI Bus space is mapped onto the area
+ * 0xA000000-0xDFFFFFF.
+ */
+
+#define CMA_MB_RAM_BASE                (CFG_CMA_MB_BASE+0x0000000)
+#define CMA_MB_RAM_SIZE                0x2000000       /* dip sws set actual size */
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT1)
+#define CMA_MB_SLOT1_BASE      (CFG_CMA_MB_BASE+0x2000000)
+#define CMA_MB_SLOT1_SIZE      0x2000000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
+#define CMA_MB_SLOT2_BASE      (CFG_CMA_MB_BASE+0x4000000)
+#define CMA_MB_SLOT2_SIZE      0x2000000
+#endif
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
+#define CMA_MB_STDPCI_BASE     (CFG_CMA_MB_BASE+0x4000000)
+#define CMA_MB_STDPCI_SIZE     0x1ff0000
+#define CMA_MB_V360EPC_BASE    (CFG_CMA_MB_BASE+0x5ff0000)
+#define CMA_MB_V360EPC_SIZE    0x10000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
+#define CMA_MB_SLOT3_BASE      (CFG_CMA_MB_BASE+0x6000000)
+#define CMA_MB_SLOT3_SIZE      0x2000000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT)
+#define CMA_MB_EXTPCI_BASE     (CFG_CMA_MB_BASE+0xa000000)
+#define CMA_MB_EXTPCI_SIZE     0x4000000
+#endif
+
+#define CMA_MB_ROMLOW_BASE     (CFG_CMA_MB_BASE+0xe000000)
+#define CMA_MB_ROMLOW_SIZE     0x800000
+#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
+#define CMA_MB_FLLOW_EXEC_BASE (CFG_CMA_MB_BASE+0xe000000)
+#define CMA_MB_FLLOW_EXEC_SIZE 0x100000
+#define CMA_MB_FLLOW_RDWR_BASE (CFG_CMA_MB_BASE+0xe400000)
+#define CMA_MB_FLLOW_RDWR_SIZE 0x400000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
+#define CMA_MB_RTC_BASE                (CFG_CMA_MB_BASE+0xe800000)
+#define CMA_MB_RTC_SIZE                0x4000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
+#define CMA_MB_SERPAR_BASE     (CFG_CMA_MB_BASE+0xe900000)
+#define   CMA_MB_SERIALB_BASE    (CMA_MB_SERPAR_BASE+0x00)
+#define   CMA_MB_SERIALA_BASE    (CMA_MB_SERPAR_BASE+0x40)
+#define   CMA_MB_PARALLEL_BASE   (CMA_MB_SERPAR_BASE+0x80)
+#define CMA_MB_SERPAR_SIZE     0xa0
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_KBM)
+#define CMA_MB_PKBM_BASE       (CFG_CMA_MB_BASE+0xe900100)
+#define CMA_MB_PKBM_SIZE       0x10
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
+#define CMA_MB_LCD_BASE                (CFG_CMA_MB_BASE+0xeb00000)
+#define CMA_MB_LCD_SIZE                0x10
+#endif
+
+#define CMA_MB_DIPSW_BASE      (CFG_CMA_MB_BASE+0xec00000)
+#define CMA_MB_DIPSW_SIZE      0x10
+
+#if (CMA_MB_CAPS & (CMA_MB_CAP_SLOT1|CMA_MB_CAP_SER2|CMA_MB_CAP_KBM))
+#define CMA_MB_SLOT1CFG_BASE   (CFG_CMA_MB_BASE+0xf100000)
+#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
+#define   CMA_MB_SER2_BASE       (CMA_MB_SLOT1CFG_BASE+0x80)
+#define     CMA_MB_SER2B_BASE      (CMA_MB_SER2_BASE+0x00)
+#define     CMA_MB_SER2A_BASE      (CMA_MB_SER2_BASE+0x40)
+#endif
+#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT1)
+#define   CMA_MB_S1KBM_BASE      (CMA_MB_SLOT1CFG_BASE+0x200)
+#endif
+#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) && !defined(COGENT_CMA150)
+#define   CMA_MB_IREQ1STAT_BASE          (CMA_MB_SLOT1CFG_BASE+0x100)
+#define   CMA_MB_AKBM_BASE       (CMA_MB_SLOT1CFG_BASE+0x200)
+#define   CMA_MB_IREQ1MASK_BASE          (CMA_MB_SLOT1CFG_BASE+0x300)
+#endif
+#define CMA_MB_SLOT1CFG_SIZE   0x400
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
+#define CMA_MB_SLOT2CFG_BASE   (CFG_CMA_MB_BASE+0xf200000)
+#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT2)
+#define   CMA_MB_S2KBM_BASE      (CMA_MB_SLOT2CFG_BASE+0x200)
+#endif
+#define CMA_MB_SLOT2CFG_SIZE   0x400
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
+#define CMA_MB_PCICTL_BASE     (CFG_CMA_MB_BASE+0xf200000)
+#define   CMA_MB_PCI_V3CTL_BASE          (CMA_MB_PCICTL_BASE+0x100)
+#define   CMA_MB_PCI_IDSEL_BASE          (CMA_MB_PCICTL_BASE+0x200)
+#define   CMA_MB_PCI_IMASK_BASE          (CMA_MB_PCICTL_BASE+0x300)
+#define   CMA_MB_PCI_ISTAT_BASE          (CMA_MB_PCICTL_BASE+0x400)
+#define   CMA_MB_PCI_MBID_BASE   (CMA_MB_PCICTL_BASE+0x500)
+#define   CMA_MB_PCI_MBREV_BASE          (CMA_MB_PCICTL_BASE+0x600)
+#define CMA_MB_PCICTL_SIZE     0x700
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SLOT3)
+#define CMA_MB_SLOT3CFG_BASE   (CFG_CMA_MB_BASE+0xf300000)
+#if defined(CONFIG_CMA302) && defined(CONFIG_CMA302_SLOT3)
+#define   CMA_MB_S3KBM_BASE      (CMA_MB_SLOT3CFG_BASE+0x200)
+#endif
+#define CMA_MB_SLOT3CFG_SIZE   0x400
+#endif
+
+#define CMA_MB_ROMHIGH_BASE    (CFG_CMA_MB_BASE+0xf800000)
+#define CMA_MB_ROMHIGH_SIZE    0x800000
+#if (CMA_MB_CAPS & CMA_MB_CAP_FLASH)
+#define CMA_MB_FLHIGH_EXEC_BASE        (CFG_CMA_MB_BASE+0xf800000)
+#define CMA_MB_FLHIGH_EXEC_SIZE        0x100000
+#define CMA_MB_FLHIGH_RDWR_BASE        (CFG_CMA_MB_BASE+0xfc00000)
+#define CMA_MB_FLHIGH_RDWR_SIZE        0x400000
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
+
+/* PCI Control Register bits */
+
+/* V360EPC Control register bits */
+#define CMA_MB_PCI_V3CTL_RESET 0x01
+#define CMA_MB_PCI_V3CTL_EXTADD        0x08
+
+/* PCI ID Select register bits */
+#define CMA_MB_PCI_IDSEL_SLOTA 0x01
+#define CMA_MB_PCI_IDSEL_SLOTB 0x02
+#define CMA_MB_PCI_IDSEL_GD82559 0x04
+#define CMA_MB_PCI_IDSEL_B69000        0x08
+#define CMA_MB_PCI_IDSEL_PD6832        0x10
+
+/* PCI Interrupt Mask/Status register bits */
+#define CMA_MB_PCI_IMS_INTA    0x01
+#define CMA_MB_PCI_IMS_INTB    0x02
+#define CMA_MB_PCI_IMS_INTC    0x04
+#define CMA_MB_PCI_IMS_INTD    0x08
+#define CMA_MB_PCI_IMS_CBINT   0x10
+#define CMA_MB_PCI_IMS_V3LINT  0x80
+
+#endif
+
+#if (CMA_MB_CAPS & (CMA_MB_CAP_KBM|CMA_MB_CAP_SER2)) && !defined(COGENT_CMA150)
+
+/*
+ * IREQ1 Interrupt Mask/Status register bits
+ * (Note: not available on CMA150 - must poll HT6542B interrupt register)
+ */
+
+#define IREQ1_MINT     0x01
+#define IREQ1_KINT     0x02
+#if (CMA_MB_CAPS & CMA_MB_CAP_SER2)
+#define IREQ1_SINT2    0x04
+#define IREQ1_SINT3    0x08
+#endif
+
+#endif
+
+#ifndef __ASSEMBLY__
+
+#include <asm/byteorder.h>
+
+/* a single CMA10x motherboard i/o register */
+typedef
+    struct {
+#if defined(__LITTLE_ENDIAN)
+       unsigned char value;
+#endif
+       unsigned char filler[7];
+#if defined(__BIG_ENDIAN)
+       unsigned char value;
+#endif
+    }
+cma_mb_reg;
+
+extern __inline__ unsigned char
+cma_mb_reg_read(volatile cma_mb_reg *reg)
+{
+    unsigned char data = reg->value;
+    __asm__ __volatile__ ("eieio" : : : "memory");
+    return data;
+}
+
+extern __inline__ void
+cma_mb_reg_write(volatile cma_mb_reg *reg, unsigned char data)
+{
+    reg->value = data;
+    __asm__ __volatile__ ("eieio" : : : "memory");
+}
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_RTC)
+
+/* MK48T02 RTC registers */
+typedef
+    struct {
+       cma_mb_reg sram[2040];/* Battery-Backed SRAM */
+       cma_mb_reg clk_ctl;     /* Clock Control Register */
+       cma_mb_reg clk_sec;     /* Clock Seconds Register */
+       cma_mb_reg clk_min;     /* Clock Minutes Register */
+       cma_mb_reg clk_hour;    /* Clock Hour Register */
+       cma_mb_reg clk_day;     /* Clock Day Register */
+       cma_mb_reg clk_date;    /* Clock Date Register */
+       cma_mb_reg clk_month;   /* Clock Month Register */
+       cma_mb_reg clk_year;    /* Clock Year Register */
+    }
+cma_mb_rtc;
+
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
+
+/* ST16C522 Serial I/O */
+typedef
+    struct {
+       cma_mb_reg ser_rhr;     /* Receive Holding Register (R, DLAB=0) */
+       cma_mb_reg ser_ier;     /* Interrupt Enable Register (R/W, DLAB=0) */
+       cma_mb_reg ser_isr;     /* Interrupt Status Register (R) */
+       cma_mb_reg ser_lcr;     /* Line Control Register (R/W) */
+       cma_mb_reg ser_mcr;     /* Modem Control Register (R/W) */
+       cma_mb_reg ser_lsr;     /* Line Status Register (R) */
+       cma_mb_reg ser_msr;     /* Modem Status Register (R/W) */
+       cma_mb_reg ser_spr;     /* Scratch Pad Register (R/W) */
+    }
+cma_mb_serial;
+
+#define ser_thr        ser_rhr         /* Transmit Holding Register (W, DLAB=0) */
+#define ser_brl        ser_rhr         /* Baud Rate Divisor Low Byte (R/W, DLAB=1) */
+#define ser_brh        ser_ier         /* Baud Rate Divisor High Byte (R/W, DLAB=1) */
+#define ser_fcr        ser_isr         /* FIFO Control Register (W) */
+#define ser_nop        ser_lsr         /* No Operation (W) */
+
+/* ST16C522 Parallel I/O */
+typedef
+    struct {
+       cma_mb_reg par_rdr;     /* Port Read Data Register (R) */
+       cma_mb_reg par_sr;      /* Status Register (R) */
+       cma_mb_reg par_cmd;     /* Command Register (R) */
+    }
+cma_mb_parallel;
+
+#define par_wdr        par_rdr         /* Port Write Data Register (W) */
+#define par_ios        par_sr          /* I/O Select Register (W) */
+#define par_ctl        par_cmd         /* Control Register (W) */
+
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_KBM) || defined(CONFIG_CMA302)
+
+/* HT6542B PS/2 Keyboard/Mouse Controller */
+typedef
+    struct {
+       cma_mb_reg kbm_rdr;     /* Read Data Register (R) */
+       cma_mb_reg kbm_sr;      /* Status Register (R) */
+    }
+cma_mb_kbm;
+
+#define kbm_wdr        kbm_rdr         /* Write Data Register (W) */
+#define kbm_cmd        kbm_sr          /* Command Register (W) */
+
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_LCD)
+
+/* HD44780 LCD Display */
+typedef
+    struct {
+       cma_mb_reg lcd_ccr;     /* Current Character Register (R/W) */
+       cma_mb_reg lcd_bsr;     /* Busy Status Register (R) */
+    }
+cma_mb_lcd;
+
+#define lcd_cmd        lcd_bsr         /* Command Register (W) */
+
+#endif
+
+/* 8-Position Configuration Switch */
+typedef
+    struct {
+       cma_mb_reg dip_val;     /* Dip Switch value (R) */
+    }
+cma_mb_dipsw;
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI)
+
+/* V360EPC PCI Bridge */
+typedef
+    struct {
+#if defined(__LITTLE_ENDIAN)
+       unsigned short v3_pci_vendor;           /* 0x00 */
+       unsigned short v3_pci_device;
+       unsigned short v3_pci_cmd;              /* 0x04 */
+       unsigned short v3_pci_stat;
+       unsigned long  v3_pci_cc_rev;           /* 0x08 */
+       unsigned long  v3_pci_hdr_cfg;          /* 0x0c */
+       unsigned long  v3_pci_io_base;          /* 0x10 */
+       unsigned long  v3_pci_base0;            /* 0x14 */
+       unsigned long  v3_pci_base1;            /* 0x18 */
+       unsigned long  reserved1[4];            /* 0x1c */
+       unsigned short v3_pci_sub_vendor;       /* 0x2c */
+       unsigned short v3_pci_sub_id;
+       unsigned long  v3_pci_rom;              /* 0x30 */
+       unsigned long  reserved2[2];            /* 0x34 */
+       unsigned long  v3_pci_bparam;           /* 0x3c */
+       unsigned long  v3_pci_map0;             /* 0x40 */
+       unsigned long  v3_pci_map1;             /* 0x44 */
+       unsigned long  v3_pci_int_stat;         /* 0x48 */
+       unsigned long  v3_pci_int_cfg;          /* 0x4c */
+       unsigned long  reserved3[1];            /* 0x50 */
+       unsigned long  v3_lb_base0;             /* 0x54 */
+       unsigned long  v3_lb_base1;             /* 0x58 */
+       unsigned short reserved4;               /* 0x5c */
+       unsigned short v3_lb_map0;
+       unsigned short reserved5;               /* 0x60 */
+       unsigned short v3_lb_map1;
+       unsigned short v3_lb_base2;             /* 0x64 */
+       unsigned short v3_lb_map2;
+       unsigned long  v3_lb_size;              /* 0x68 */
+       unsigned short reserved6;               /* 0x6c */
+       unsigned short v3_lb_io_base;
+       unsigned short v3_fifo_cfg;             /* 0x70 */
+       unsigned short v3_fifo_priority;
+       unsigned short v3_fifo_stat;            /* 0x74 */
+       unsigned char  v3_lb_istat;
+       unsigned char  v3_lb_imask;
+       unsigned short v3_system;               /* 0x78 */
+       unsigned short v3_lb_cfg;
+       unsigned short v3_pci_cfg;              /* 0x7c */
+       unsigned short reserved7;
+       unsigned long  v3_dma_pci_addr0;        /* 0x80 */
+       unsigned long  v3_dma_local_addr0;      /* 0x84 */
+       unsigned long  v3_dma_length0:24;       /* 0x88 */
+       unsigned long  v3_dma_csr0:8;
+       unsigned long  v3_dma_ctlb_adr0;        /* 0x8c */
+       unsigned long  v3_dma_pci_addr1;        /* 0x90 */
+       unsigned long  v3_dma_local_addr1;      /* 0x94 */
+       unsigned long  v3_dma_length1:24;       /* 0x98 */
+       unsigned long  v3_dma_csr1:8;
+       unsigned long  v3_dma_ctlb_adr1;        /* 0x9c */
+       unsigned long  v3_i20_mups[8];          /* 0xa0 */
+       unsigned char  v3_mail_data0;           /* 0xc0 */
+       unsigned char  v3_mail_data1;
+       unsigned char  v3_mail_data2;
+       unsigned char  v3_mail_data3;
+       unsigned char  v3_mail_data4;           /* 0xc4 */
+       unsigned char  v3_mail_data5;
+       unsigned char  v3_mail_data6;
+       unsigned char  v3_mail_data7;
+       unsigned char  v3_mail_data8;           /* 0xc8 */
+       unsigned char  v3_mail_data9;
+       unsigned char  v3_mail_data10;
+       unsigned char  v3_mail_data11;
+       unsigned char  v3_mail_data12;          /* 0xcc */
+       unsigned char  v3_mail_data13;
+       unsigned char  v3_mail_data14;
+       unsigned char  v3_mail_data15;
+       unsigned short v3_pci_mail_iewr;        /* 0xd0 */
+       unsigned short v3_pci_mail_ierd;
+       unsigned short v3_lb_mail_iewr;         /* 0xd4 */
+       unsigned short v3_lb_mail_ierd;
+       unsigned short v3_mail_wr_stat;         /* 0xd8 */
+       unsigned short v3_mail_rd_stat;
+       unsigned long  v3_qba_map;              /* 0xdc */
+       unsigned long  v3_dma_delay:8;          /* 0xe0 */
+       unsigned long  reserved8:24;
+       unsigned long  reserved9[7];            /* 0xe4 */
+#endif
+#if defined(__BIG_ENDIAN)
+       unsigned short v3_pci_device;           /* 0x00 */
+       unsigned short v3_pci_vendor;
+       unsigned short v3_pci_stat;             /* 0x04 */
+       unsigned short v3_pci_cmd;
+       unsigned long  v3_pci_cc_rev;           /* 0x08 */
+       unsigned long  v3_pci_hdr_cfg;          /* 0x0c */
+       unsigned long  v3_pci_io_base;          /* 0x10 */
+       unsigned long  v3_pci_base0;            /* 0x14 */
+       unsigned long  v3_pci_base1;            /* 0x18 */
+       unsigned long  reserved1[4];            /* 0x1c */
+       unsigned short v3_pci_sub_id;           /* 0x2c */
+       unsigned short v3_pci_sub_vendor;
+       unsigned long  v3_pci_rom;              /* 0x30 */
+       unsigned long  reserved2[2];            /* 0x34 */
+       unsigned long  v3_pci_bparam;           /* 0x3c */
+       unsigned long  v3_pci_map0;             /* 0x40 */
+       unsigned long  v3_pci_map1;             /* 0x44 */
+       unsigned long  v3_pci_int_stat;         /* 0x48 */
+       unsigned long  v3_pci_int_cfg;          /* 0x4c */
+       unsigned long  reserved3;               /* 0x50 */
+       unsigned long  v3_lb_base0;             /* 0x54 */
+       unsigned long  v3_lb_base1;             /* 0x58 */
+       unsigned short v3_lb_map0;              /* 0x5c */
+       unsigned short reserved4;
+       unsigned short v3_lb_map1;              /* 0x60 */
+       unsigned short reserved5;
+       unsigned short v3_lb_map2;              /* 0x64 */
+       unsigned short v3_lb_base2;
+       unsigned long  v3_lb_size;              /* 0x68 */
+       unsigned short v3_lb_io_base;           /* 0x6c */
+       unsigned short reserved6;
+       unsigned short v3_fifo_priority;        /* 0x70 */
+       unsigned short v3_fifo_cfg;
+       unsigned char  v3_lb_imask;             /* 0x74 */
+       unsigned char  v3_lb_istat;
+       unsigned short v3_fifo_stat;
+       unsigned short v3_lb_cfg;               /* 0x78 */
+       unsigned short v3_system;
+       unsigned short reserved7;               /* 0x7c */
+       unsigned short v3_pci_cfg;
+       unsigned long  v3_dma_pci_addr0;        /* 0x80 */
+       unsigned long  v3_dma_local_addr0;      /* 0x84 */
+       unsigned long  v3_dma_csr0:8;           /* 0x88 */
+       unsigned long  v3_dma_length0:24;
+       unsigned long  v3_dma_ctlb_adr0;        /* 0x8c */
+       unsigned long  v3_dma_pci_addr1;        /* 0x90 */
+       unsigned long  v3_dma_local_addr1;      /* 0x94 */
+       unsigned long  v3_dma_csr1:8;           /* 0x98 */
+       unsigned long  v3_dma_length1:24;
+       unsigned long  v3_dma_ctlb_adr1;        /* 0x9c */
+       unsigned long  v3_i20_mups[8];          /* 0xa0 */
+       unsigned char  v3_mail_data3;           /* 0xc0 */
+       unsigned char  v3_mail_data2;
+       unsigned char  v3_mail_data1;
+       unsigned char  v3_mail_data0;
+       unsigned char  v3_mail_data7;           /* 0xc4 */
+       unsigned char  v3_mail_data6;
+       unsigned char  v3_mail_data5;
+       unsigned char  v3_mail_data4;
+       unsigned char  v3_mail_data11;          /* 0xc8 */
+       unsigned char  v3_mail_data10;
+       unsigned char  v3_mail_data9;
+       unsigned char  v3_mail_data8;
+       unsigned char  v3_mail_data15;          /* 0xcc */
+       unsigned char  v3_mail_data14;
+       unsigned char  v3_mail_data13;
+       unsigned char  v3_mail_data12;
+       unsigned short v3_pci_mail_ierd;        /* 0xd0 */
+       unsigned short v3_pci_mail_iewr;
+       unsigned short v3_lb_mail_ierd;         /* 0xd4 */
+       unsigned short v3_lb_mail_iewr;
+       unsigned short v3_mail_rd_stat;         /* 0xd8 */
+       unsigned short v3_mail_wr_stat;
+       unsigned long  v3_qba_map;              /* 0xdc */
+       unsigned long  reserved8:24;            /* 0xe0 */
+       unsigned long  v3_dma_delay:8;
+       unsigned long  reserved9[7];            /* 0xe4 */
+#endif
+    }                                          /* 0x100 */
+cma_mb_v360epc;
+
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _COGENT_MB_H */
diff --git a/include/configs/cogent_common.h b/include/configs/cogent_common.h
new file mode 100644 (file)
index 0000000..7eab9ea
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * (C) Copyright 2000
+ * Murray Jensen, CSIRO-MST
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _CONFIG_COGENT_COMMON_H
+#define _CONFIG_COGENT_COMMON_H
+
+/*
+ * Cogent Motherboard Capabilities
+ */
+#define CMA_MB_CAP_SERPAR      0x0001  /* has dual serial+parallel (16C552) */
+#define CMA_MB_CAP_LCD         0x0002  /* has LCD display (HD44780) */
+#define CMA_MB_CAP_FLASH       0x0004  /* has flash (E28F800B or AM29F800BB) */
+#define CMA_MB_CAP_RTC         0x0008  /* has RTC+NVRAM (MK48T02) */
+#define CMA_MB_CAP_ETHER       0x0010  /* has Ethernet (MB86964) */
+#define CMA_MB_CAP_SLOT1       0x0020  /* has CMABus slot 1 */
+#define CMA_MB_CAP_SLOT2       0x0040  /* has CMABus slot 2 */
+#define CMA_MB_CAP_SLOT3       0x0080  /* has CMABus slot 3 */
+#define CMA_MB_CAP_KBM         0x0100  /* has PS/2 keyboard+mouse (HT6542B) */
+#define CMA_MB_CAP_SER2                0x0200  /* has 2nd dual serial (16C2552) */
+#define CMA_MB_CAP_PCI         0x0400  /* has pci bridge (V360EPC) */
+#define CMA_MB_CAP_PCI_EXT     0x0800  /* can access extended pci space  */
+#define CMA_MB_CAP_PCI_ETHER   0x1000  /* has 10/100 ether on PCI (GD82559) */
+#define CMA_MB_CAP_PCI_VIDEO   0x2000  /* has video int'face on PCI (B69000) */
+#define CMA_MB_CAP_PCI_CARDBUS 0x4000  /* has Cardbus Ctlr on PCI (PD6832) */
+
+/*
+ * Cogent option sanity checking
+ */
+
+#if defined(CONFIG_MPC821) || defined(CONFIG_MPC823) || \
+      defined(CONFIG_MPC850) || defined(CONFIG_MPC860)
+
+/*
+ * check a PowerPC 8xx cpu module has been selected
+ */
+
+# if defined(CONFIG_CMA286_21)
+
+#  define COGENT_CPU_MODULE    "CMA286-21"
+
+# elif defined(CONFIG_CMA286_60_OLD)
+
+#  define COGENT_CPU_MODULE    "CMA286-60 (old)"
+
+# elif defined(CONFIG_CMA286_60)
+
+#  define COGENT_CPU_MODULE    "CMA286-60"
+
+# elif defined(CONFIG_CMA286_60P)
+
+#  define COGENT_CPU_MODULE    "CMA286-60P"
+
+# elif defined(CONFIG_CMA287_21)
+
+#  define COGENT_CPU_MODULE    "CMA287-21"
+
+# elif defined(CONFIG_CMA287_50)
+
+#  define COGENT_CPU_MODULE    "CMA287-50"
+
+# else
+
+#  error Cogent CPU Module must be a PowerPC MPC8xx module
+
+# endif
+
+#elif defined(CONFIG_MPC8260)
+
+/*
+ * check a PowerPC 8260 cpu module has been selected
+ */
+
+# if defined(CONFIG_CMA282)
+
+#  define COGENT_CPU_MODULE    "CMA282"
+
+# else
+
+#  error Cogent CPU Module must be a PowerPC MPC8260 module
+
+# endif
+
+#else
+
+# error CPU type must be PowerPC 8xx or 8260
+
+#endif
+
+/*
+ * check a motherboard has been selected
+ * define the motherboard capabilities while we're at it
+ */
+
+#if defined(CONFIG_CMA101)
+
+# define COGENT_MOTHERBOARD    "CMA101"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_RTC | CMA_MB_CAP_ETHER | \
+                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_SLOT2 | \
+                                CMA_MB_CAP_SLOT3)
+# define CMA_MB_NSLOTS         3
+
+#elif defined(CONFIG_CMA102)
+
+# define COGENT_MOTHERBOARD    "CMA102"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_RTC | CMA_MB_CAP_SLOT1 | \
+                                CMA_MB_CAP_SLOT2 | CMA_MB_CAP_SLOT3)
+# define CMA_MB_NSLOTS         3
+
+#elif defined(CONFIG_CMA110)
+
+# define COGENT_MOTHERBOARD    "CMA110"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
+                                CMA_MB_CAP_KBM | CMA_MB_CAP_PCI)
+# define CMA_MB_NSLOTS         0
+
+#elif defined(CONFIG_CMA111)
+
+# define COGENT_MOTHERBOARD    "CMA111"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
+                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_KBM | \
+                                CMA_MB_CAP_PCI | CMA_MB_CAP_PCI_EXT | \
+                                CMA_MB_CAP_PCI_ETHER)
+# define CMA_MB_NSLOTS         1
+
+#elif defined(CONFIG_CMA120)
+
+# define COGENT_MOTHERBOARD    "CMA120"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
+                                CMA_MB_CAP_SLOT1 | CMA_MB_CAP_KBM | \
+                                CMA_MB_CAP_SER2 | CMA_MB_CAP_PCI | \
+                                CMA_MB_CAP_PCI_EXT | CMA_MB_CAP_PCI_ETHER | \
+                                CMA_MB_CAP_PCI_VIDEO | CMA_MB_CAP_PCI_CARDBUS)
+# define CMA_MB_NSLOTS         1
+
+#elif defined(CONFIG_CMA150)
+
+# define COGENT_MOTHERBOARD    "CMA150"
+# define CMA_MB_CAPS           (CMA_MB_CAP_SERPAR | CMA_MB_CAP_LCD | \
+                                CMA_MB_CAP_FLASH | CMA_MB_CAP_RTC | \
+                                CMA_MB_CAP_KBM)
+# define CMA_MB_NSLOTS         0
+
+#else
+
+# error Cogent Motherboard either unsupported or undefined
+
+#endif
+
+/*
+ * check a flash i/o module has been selected if no flash on m/b
+ */
+
+#if defined(CONFIG_CMA302)
+
+# define COGENT_FLASH_MODULE   "CMA302"
+
+#elif (CMA_MB_CAPS & CMA_MB_CAP_FLASH) == 0
+
+# error Cogent Flash I/O module (e.g. CMA302) is required with this Motherboard
+
+#endif
+
+/*
+ * some further sanity checks
+ */
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI) && (CMA_MB_CAPS & CMA_MB_CAP_SLOT2)
+#error Cogent Sanity Check: Both Slot2 and PCI are defined
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_EXT) && !(CMA_MB_CAPS & CMA_MB_CAP_PCI)
+#error Extended PCI capability defined without PCI capability
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_PCI_ETHER) && !(CMA_MB_CAPS & CMA_MB_CAP_PCI)
+#error Motherboard ethernet capability defined without PCI capability
+#endif
+
+#if (CMA_MB_CAPS & CMA_MB_CAP_SER2) && !(CMA_MB_CAPS & CMA_MB_CAP_SERPAR)
+#error 2nd dual serial capability defined without serial/parallel capability
+#endif
+#include <board/cogent/mb.h>
+#endif /* _CONFIG_COGENT_COMMON_H */