Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 1 | /* |
| 2 | * ap1000.h: AP1000 (e.g. AP1070, AP1100) board specific definitions and functions that are needed globally |
| 3 | * |
| 4 | * Author : James MacAulay |
| 5 | * |
| 6 | * This software may be used and distributed according to the terms of |
| 7 | * the GNU General Public License (GPL) version 2, incorporated herein by |
| 8 | * reference. Drivers based on or derived from this code fall under the GPL |
| 9 | * and must retain the authorship, copyright and this license notice. This |
| 10 | * file is not a complete program and may only be used when the entire |
| 11 | * program is licensed under the GPL. |
| 12 | * |
| 13 | */ |
| 14 | |
| 15 | #ifndef __AP1000_H |
| 16 | #define __AP1000_H |
| 17 | |
| 18 | /* |
| 19 | * Revision Register stuff |
| 20 | */ |
| 21 | #define AP1xx_FPGA_REV_ADDR 0x29000000 |
| 22 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 23 | #define AP1xx_PLATFORM_MASK 0xFF000000 |
| 24 | #define AP100_BASELINE_PLATFORM 0x01000000 |
| 25 | #define AP1xx_QUADGE_PLATFORM 0x02000000 |
| 26 | #define AP1xx_MGT_REF_PLATFORM 0x03000000 |
| 27 | #define AP1xx_STANDARD_PLATFORM 0x04000000 |
| 28 | #define AP1xx_DUAL_PLATFORM 0x05000000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 29 | #define AP1xx_BASE_SRAM_PLATFORM 0x06000000 |
| 30 | |
| 31 | #define AP1000_BASELINE_PLATFORM 0x21000000 |
| 32 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 33 | #define AP1xx_TESTPLATFORM_MASK 0xC0000000 |
| 34 | #define AP1xx_PCI_PCB_TESTPLATFORM 0xC0000000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 35 | #define AP1xx_DUAL_GE_MEZZ_TESTPLATFORM 0xC1000000 |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 36 | #define AP1xx_SFP_MEZZ_TESTPLATFORM 0xC2000000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 37 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 38 | #define AP1000_PCI_PCB_TESTPLATFORM 0xC3000000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 39 | |
| 40 | #define AP1xx_TARGET_MASK 0x00FF0000 |
| 41 | #define AP1xx_AP107_TARGET 0x00010000 |
| 42 | #define AP1xx_AP120_TARGET 0x00020000 |
| 43 | #define AP1xx_AP130_TARGET 0x00030000 |
| 44 | #define AP1xx_AP1070_TARGET 0x00040000 |
| 45 | #define AP1xx_AP1100_TARGET 0x00050000 |
| 46 | |
| 47 | #define AP1xx_UNKNOWN_STR "Unknown" |
| 48 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 49 | #define AP1xx_PLATFORM_STR " Platform" |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 50 | #define AP1xx_BASELINE_PLATFORM_STR "Baseline" |
| 51 | #define AP1xx_QUADGE_PLATFORM_STR "Quad GE" |
| 52 | #define AP1xx_MGT_REF_PLATFORM_STR "MGT Reference" |
| 53 | #define AP1xx_STANDARD_PLATFORM_STR "Standard" |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 54 | #define AP1xx_DUAL_PLATFORM_STR "Dual" |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 55 | #define AP1xx_BASE_SRAM_PLATFORM_STR "Baseline with SRAM" |
| 56 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 57 | #define AP1xx_TESTPLATFORM_STR " Test Platform" |
| 58 | #define AP1xx_PCI_PCB_TESTPLATFORM_STR "Base" |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 59 | #define AP1xx_DUAL_GE_MEZZ_TESTPLATFORM_STR "Dual GE Mezzanine" |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 60 | #define AP1xx_SFP_MEZZ_TESTPLATFORM_STR "SFP Mezzanine" |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 61 | |
| 62 | #define AP1xx_TARGET_STR " Board" |
| 63 | #define AP1xx_AP107_TARGET_STR "AP107" |
| 64 | #define AP1xx_AP120_TARGET_STR "AP120" |
| 65 | #define AP1xx_AP130_TARGET_STR "AP130" |
| 66 | |
| 67 | #define AP1xx_AP1070_TARGET_STR "AP1070" |
| 68 | #define AP1xx_AP1100_TARGET_STR "AP1100" |
| 69 | |
| 70 | /* |
| 71 | * Flash Stuff |
| 72 | */ |
| 73 | #define AP1xx_PROGRAM_FLASH_INDEX 0 |
| 74 | #define AP1xx_CONFIG_FLASH_INDEX 1 |
| 75 | |
| 76 | /* |
| 77 | * System Ace Stuff |
| 78 | */ |
| 79 | #define AP1000_SYSACE_REGBASE 0x28000000 |
| 80 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 81 | #define SYSACE_STATREG0 0x04 /* 7:0 */ |
| 82 | #define SYSACE_STATREG1 0x05 /* 15:8 */ |
| 83 | #define SYSACE_STATREG2 0x06 /* 23:16 */ |
| 84 | #define SYSACE_STATREG3 0x07 /* 31:24 */ |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 85 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 86 | #define SYSACE_ERRREG0 0x08 /* 7:0 */ |
| 87 | #define SYSACE_ERRREG1 0x09 /* 15:8 */ |
| 88 | #define SYSACE_ERRREG2 0x0a /* 23:16 */ |
| 89 | #define SYSACE_ERRREG3 0x0b /* 31:24 */ |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 90 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 91 | #define SYSACE_CTRLREG0 0x18 /* 7:0 */ |
| 92 | #define SYSACE_CTRLREG1 0x19 /* 15:8 */ |
| 93 | #define SYSACE_CTRLREG2 0x1A /* 23:16 */ |
| 94 | #define SYSACE_CTRLREG3 0x1B /* 31:24 */ |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 95 | |
| 96 | /* |
| 97 | * Software reconfig thing |
| 98 | */ |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 99 | #define SW_BYTE_SECTOR_ADDR 0x24FE0000 |
| 100 | #define SW_BYTE_SECTOR_OFFSET 0x0001FFFF |
| 101 | #define SW_BYTE_SECTOR_SIZE 0x00020000 |
| 102 | #define SW_BYTE_MASK 0x00000003 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 103 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 104 | #define DEFAULT_TEMP_ADDR 0x00100000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 105 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 106 | #define AP1000_CPLD_BASE 0x26000000 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 107 | |
| 108 | /* PowerSpan II Stuff */ |
| 109 | #define PSII_SYNC() asm("eieio") |
| 110 | #define PSPAN_BASEADDR 0x30000000 |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 111 | #define EEPROM_DEFAULT { 0x01, /* Byte 0 - Long Load = 0x02, short = 01, use 0xff for try no load */ \ |
| 112 | 0x0,0x0,0x0, /* Bytes 1 - 3 Power span reserved */ \ |
| 113 | 0x0, /* Byte 4 - Powerspan reserved - start of short load */ \ |
| 114 | 0x0F, /* Byte 5 - Enable PCI 1 & 2 as Bus masters and Memory targets. */ \ |
| 115 | 0x0E, /* Byte 6 - PCI 1 Target image prefetch - on for image 0,1,2, off for i20 & 3. */ \ |
| 116 | 0x00, 0x00, /* Byte 7,8 - PCI-1 Subsystem ID - */ \ |
| 117 | 0x00, 0x00, /* Byte 9,10 - PCI-1 Subsystem Vendor Id - */ \ |
| 118 | 0x00, /* Byte 11 - No PCI interrupt generation on PCI-1 PCI-2 int A */ \ |
| 119 | 0x1F, /* Byte 12 - PCI-1 enable bridge registers, all target images */ \ |
| 120 | 0xBA, /* Byte 13 - Target 0 image 128 Meg(Ram), Target 1 image 64 Meg. (config Flash/CPLD )*/ \ |
| 121 | 0xA0, /* Byte 14 - Target 2 image 64 Meg(program Flash), target 3 64k. */ \ |
| 122 | 0x00, /* Byte 15 - Vital Product Data Disabled. */ \ |
| 123 | 0x88, /* Byte 16 - PCI arbiter config complete, all requests routed through PCI-1, Unlock PCI-1 */ \ |
| 124 | 0x40, /* Byte 17 - Interrupt direction control - PCI-1 Int A out, everything else in. */ \ |
| 125 | 0x00, /* Byte 18 - I2O disabled */ \ |
| 126 | 0x00, /* Byte 19 - PCI-2 Target image prefetch - off for all images. */ \ |
| 127 | 0x00,0x00, /* Bytes 20,21 - PCI 2 Subsystem Id */ \ |
| 128 | 0x00,0x00, /* Bytes 22,23 - PCI 2 Subsystem Vendor id */ \ |
| 129 | 0x0C, /* Byte 24 - PCI-2 BAR enables, target image 0, & 1 */ \ |
| 130 | 0xBB, /* Byte 25 - PCI-2 target 0 - 128 Meg(Ram), target 1 - 128 Meg (program/config flash) */ \ |
| 131 | 0x00, /* Byte 26 - PCI-2 target 2 & 3 unused. */ \ |
| 132 | 0x00,0x00,0x00,0x00,0x00, /* Bytes 27,28,29,30, 31 - Reserved */ \ |
| 133 | /* Long Load Information */ \ |
| 134 | 0x82,0x60, /* Bytes 32,33 - PCI-1 Device ID - Powerspan II */ \ |
| 135 | 0x10,0xE3, /* Bytes 24,35 - PCI-1 Vendor ID - Tundra */ \ |
| 136 | 0x06, /* Byte 36 - PCI-1 Class Base - Bridge device. */ \ |
| 137 | 0x80, /* Byte 37 - PCI-1 Class sub class - Other bridge. */ \ |
| 138 | 0x00, /* Byte 38 - PCI-1 Class programing interface - Other bridge */ \ |
| 139 | 0x01, /* Byte 39 - Power span revision 1. */ \ |
| 140 | 0x6E, /* Byte 40 - PB SI0 enabled, translation enabled, decode enabled, 64 Meg */ \ |
| 141 | 0x40, /* Byte 41 - PB SI0 memory command mode, PCI-1 dest */ \ |
| 142 | 0x22, /* Byte 42 - Prefetch discard after read, PCI-little endian conversion, 32 byte prefetch */ \ |
| 143 | 0x00,0x00, /* Bytes 43, 44 - Translation address for SI0, set to zero for now. */ \ |
| 144 | 0x0E, /* Byte 45 - Translation address (0) and PB bus master enables - all. */ \ |
| 145 | 0x2c,00,00, /* Bytes 46,47,48 - PB SI0 processor base address - 0x2C000000 */ \ |
| 146 | 0x30,00,00, /* Bytes 49,50,51 - PB Address for Powerspan registers - 0x30000000, big Endian */ \ |
| 147 | 0x82,0x60, /* Bytes 52, 53 - PCI-2 Device ID - Powerspan II */ \ |
| 148 | 0x10,0xE3, /* Bytes 54,55 - PCI 2 Vendor Id - Tundra */ \ |
| 149 | 0x06, /* Byte 56 - PCI-2 Class Base - Bridge device */ \ |
| 150 | 0x80, /* Byte 57 - PCI-2 Class sub class - Other Bridge. */ \ |
| 151 | 0x00, /* Byte 58 - PCI-2 class programming interface - Other bridge */ \ |
| 152 | 0x01, /* Byte 59 - PCI-2 class revision 1 */ \ |
| 153 | 0x00,0x00,0x00,0x00 }; /* Bytes 60,61, 62, 63 - Powerspan reserved */ |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 154 | |
| 155 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 156 | #define EEPROM_LENGTH 64 /* Long Load */ |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 157 | |
Wolfgang Denk | 3193a65 | 2005-10-09 01:41:48 +0200 | [diff] [blame] | 158 | #define I2C_SENSOR_DEV 0x9 |
Wolfgang Denk | 56811f6 | 2005-10-09 01:04:33 +0200 | [diff] [blame] | 159 | #define I2C_SENSOR_CHIP_SEL 0x4 |
| 160 | |
| 161 | /* |
| 162 | * Board Functions |
| 163 | */ |
| 164 | void set_eat_machine_checks(int a_flag); |
| 165 | int get_eat_machine_checks(void); |
| 166 | unsigned int get_platform(void); |
| 167 | unsigned int get_device(void); |
| 168 | void* memcpyb(void * dest,const void *src,size_t count); |
| 169 | int process_bootflag(ulong bootflag); |
| 170 | void user_led_on(void); |
| 171 | void user_led_off(void); |
| 172 | |
| 173 | #endif /* __COMMON_H_ */ |