123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /* Memory.h - Memory mappings and remapping functions declarations */
- /* Copyright - Galileo technology. */
- #ifndef __INCmemoryh
- #define __INCmemoryh
- /* includes */
- #include "core.h"
- /* defines */
- #define DONT_MODIFY 0xffffffff
- #define PARITY_SUPPORT 0x40000000
- #define MINIMUM_MEM_BANK_SIZE 0x10000
- #define MINIMUM_DEVICE_WINDOW_SIZE 0x10000
- #define MINIMUM_PCI_WINDOW_SIZE 0x10000
- #define MINIMUM_ACCESS_WIN_SIZE 0x10000
- #define _8BIT 0x00000000
- #define _16BIT 0x00100000
- #define _32BIT 0x00200000
- #define _64BIT 0x00300000
- /* typedefs */
- typedef struct deviceParam
- { /* boundary values */
- unsigned int turnOff; /* 0x0 - 0xf */
- unsigned int acc2First; /* 0x0 - 0x1f */
- unsigned int acc2Next; /* 0x0 - 0x1f */
- unsigned int ale2Wr; /* 0x0 - 0xf */
- unsigned int wrLow; /* 0x0 - 0xf */
- unsigned int wrHigh; /* 0x0 - 0xf */
- unsigned int badrSkew; /* 0x0 - 0x2 */
- unsigned int DPEn; /* 0x0 - 0x1 */
- unsigned int deviceWidth; /* in Bytes */
- } DEVICE_PARAM;
- typedef enum __memBank{BANK0,BANK1,BANK2,BANK3} MEMORY_BANK;
- typedef enum __memDevice{DEVICE0,DEVICE1,DEVICE2,DEVICE3,BOOT_DEVICE} DEVICE;
- /*typedef enum __memoryProtectRegion{MEM_REGION0,MEM_REGION1,MEM_REGION2, \
- MEM_REGION3,MEM_REGION4,MEM_REGION5, \
- MEM_REGION6,MEM_REGION7} \
- MEMORY_PROTECT_REGION;*/
- /* There are four possible windows that can be defined as protected */
- typedef enum _memoryProtectWindow{MEM_WINDOW0,MEM_WINDOW1,MEM_WINDOW2,
- MEM_WINDOW3
- } MEMORY_PROTECT_WINDOW;
- /* When defining a protected window , this paramter indicates whether it
- is accessible or not */
- typedef enum __memoryAccess{MEM_ACCESS_ALLOWED,MEM_ACCESS_FORBIDEN} \
- MEMORY_ACCESS;
- typedef enum __memoryWrite{MEM_WRITE_ALLOWED,MEM_WRITE_FORBIDEN} \
- MEMORY_ACCESS_WRITE;
- typedef enum __memoryCacheProtect{MEM_CACHE_ALLOWED,MEM_CACHE_FORBIDEN} \
- MEMORY_CACHE_PROTECT;
- typedef enum __memorySnoopType{MEM_NO_SNOOP,MEM_SNOOP_WT,MEM_SNOOP_WB} \
- MEMORY_SNOOP_TYPE;
- typedef enum __memorySnoopRegion{MEM_SNOOP_REGION0,MEM_SNOOP_REGION1, \
- MEM_SNOOP_REGION2,MEM_SNOOP_REGION3} \
- MEMORY_SNOOP_REGION;
- /* There are 21 memory windows dedicated for the varios interfaces (PCI,
- devCS (devices), CS(DDR), interenal registers and SRAM) used by the CPU's
- address decoding mechanism. */
- typedef enum _memoryWindow {CS_0_WINDOW = BIT0, CS_1_WINDOW = BIT1,
- CS_2_WINDOW = BIT2, CS_3_WINDOW = BIT3,
- DEVCS_0_WINDOW = BIT4, DEVCS_1_WINDOW = BIT5,
- DEVCS_2_WINDOW = BIT6, DEVCS_3_WINDOW = BIT7,
- BOOT_CS_WINDOW = BIT8, PCI_0_IO_WINDOW = BIT9,
- PCI_0_MEM0_WINDOW = BIT10,
- PCI_0_MEM1_WINDOW = BIT11,
- PCI_0_MEM2_WINDOW = BIT12,
- PCI_0_MEM3_WINDOW = BIT13, PCI_1_IO_WINDOW = BIT14,
- PCI_1_MEM0_WINDOW = BIT15, PCI_1_MEM1_WINDOW =BIT16,
- PCI_1_MEM2_WINDOW = BIT17, PCI_1_MEM3_WINDOW =BIT18,
- INTEGRATED_SRAM_WINDOW = BIT19,
- INTERNAL_SPACE_WINDOW = BIT20,
- ALL_WINDOWS = 0X1FFFFF
- } MEMORY_WINDOW;
- typedef enum _memoryWindowStatus {MEM_WINDOW_ENABLED,MEM_WINDOW_DISABLED
- } MEMORY_WINDOW_STATUS;
- typedef enum _pciMemWindow{PCI_0_IO,PCI_0_MEM0,PCI_0_MEM1,PCI_0_MEM2,PCI_0_MEM3
- #ifdef INCLUDE_PCI_1
- ,PCI_1_IO,PCI_1_MEM0,PCI_1_MEM1,PCI_1_MEM2,PCI_1_MEM3
- #endif /* INCLUDE_PCI_1 */
- } PCI_MEM_WINDOW;
- /* -------------------------------------------------------------------------------------------------*/
- /* functions */
- unsigned int memoryGetBankBaseAddress(MEMORY_BANK bank);
- unsigned int memoryGetDeviceBaseAddress(DEVICE device);
- /* New at MV6436x */
- unsigned int MemoryGetPciBaseAddr(PCI_MEM_WINDOW pciWindow);
- unsigned int memoryGetBankSize(MEMORY_BANK bank);
- unsigned int memoryGetDeviceSize(DEVICE device);
- unsigned int memoryGetDeviceWidth(DEVICE device);
- /* New at MV6436x */
- unsigned int gtMemoryGetPciWindowSize(PCI_MEM_WINDOW pciWindow);
- /* when given base Address and size Set new WINDOW for SCS_X. (X = 0,1,2 or 3*/
- bool memoryMapBank(MEMORY_BANK bank, unsigned int bankBase,unsigned int bankLength);
- /* Set a new base and size for one of the memory banks (CS0 - CS3) */
- bool gtMemorySetMemoryBank(MEMORY_BANK bank, unsigned int bankBase,
- unsigned int bankSize);
- bool memoryMapDeviceSpace(DEVICE device, unsigned int deviceBase,unsigned int deviceLength);
- /* Change the Internal Register Base Address to a new given Address. */
- bool memoryMapInternalRegistersSpace(unsigned int internalRegBase);
- /* returns internal Register Space Base Address. */
- unsigned int memoryGetInternalRegistersSpace(void);
- /* Returns the integrated SRAM Base Address. */
- unsigned int memoryGetInternalSramBaseAddr(void);
- /* -------------------------------------------------------------------------------------------------*/
- /* Set new base address for the integrated SRAM. */
- void memorySetInternalSramBaseAddr(unsigned int sramBaseAddress);
- /* -------------------------------------------------------------------------------------------------*/
- /* Delete a protection feature to a given space. */
- void memoryDisableProtectRegion(MEMORY_PROTECT_WINDOW window);
- /* -------------------------------------------------------------------------------------------------*/
- /* Writes a new remap value to the remap register */
- unsigned int memorySetPciRemapValue(PCI_MEM_WINDOW memoryWindow,
- unsigned int remapValueHigh,
- unsigned int remapValueLow);
- /* -------------------------------------------------------------------------------------------------*/
- /* Configurate the protection feature to a given space. */
- bool memorySetProtectRegion(MEMORY_PROTECT_WINDOW window,
- MEMORY_ACCESS gtMemoryAccess,
- MEMORY_ACCESS_WRITE gtMemoryWrite,
- MEMORY_CACHE_PROTECT cacheProtection,
- unsigned int baseAddress,
- unsigned int size);
- /* Configurate the protection feature to a given space. */
- /*bool memorySetProtectRegion(MEMORY_PROTECT_REGION region,
- MEMORY_ACCESS memoryAccess,
- MEMORY_ACCESS_WRITE memoryWrite,
- MEMORY_CACHE_PROTECT cacheProtection,
- unsigned int baseAddress,
- unsigned int regionLength); */
- /* Configurate the snoop feature to a given space. */
- bool memorySetRegionSnoopMode(MEMORY_SNOOP_REGION region,
- MEMORY_SNOOP_TYPE snoopType,
- unsigned int baseAddress,
- unsigned int regionLength);
- bool memoryRemapAddress(unsigned int remapReg, unsigned int remapValue);
- bool memoryGetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum);
- bool memorySetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum);
- /* Set a new base and size for one of the PCI windows. */
- bool memorySetPciWindow(PCI_MEM_WINDOW pciWindow, unsigned int pciWindowBase,
- unsigned int pciWindowSize);
- /* Disable or enable one of the 21 windows dedicated for the CPU's
- address decoding mechanism */
- void MemoryDisableWindow(MEMORY_WINDOW window);
- void MemoryEnableWindow (MEMORY_WINDOW window);
- MEMORY_WINDOW_STATUS MemoryGetMemWindowStatus(MEMORY_WINDOW window);
- #endif /* __INCmemoryh */
|