00001 #ifndef IO_H
00002 #define IO_H
00003
00004 #define GPIO_INDIRECT_ADDRESS_MODE_16
00005 #define __SSD1921
00006
00007
00008 #define NULL 0
00009 #define __inline__
00010
00011
00012 #ifdef __SSD1921
00013 #define MAX_MEM_SIZE (256*1024)
00014 #define MAX_REG_SIZE (256*1024)
00015 #else
00016 #define MAX_MEM_SIZE (512*1024)
00017 #define MAX_REG_SIZE (512*1024)
00018 #endif
00019
00020 #define SSD_MAP_IO 0x83800000
00021 #define SSD_MAP_MEM 0x83880000
00022
00023 #define PORTD_CS 23 //chip select
00024 #define PORTD_RD 16 //read
00025 #define PORTD_WR 21 //write
00026 #define PORTD_DC 24 //Data command select
00027 #define PORTD_DATA 0//data bit 0 is at data15
00028 #define PORTD_BEEP 19 //write
00029 #define PORTD_LCDPOWER 22
00030 #define PORTD_SSD1928_RESET 25
00031
00032 #define PORTD_P017 17
00033 #define PORTD_P018 18
00034
00035 #define PORTD_P027 27
00036 #define PORTD_P028 28
00037 #define PORTD_P029 29
00038
00039 #define SSD_IOB(x) (*((volatile unsigned char *)(SSD_MAP_IO+(x))))
00040 #define SSD_IOW(x) (*((volatile unsigned short *)(SSD_MAP_IO+(x))))
00041 #define SSD_IOL(x) (*((volatile unsigned long *)(SSD_MAP_IO+(x))))
00042
00043 #define SSD_MEMB(x) (*((volatile unsigned char *)(SSD_MAP_MEM+(x))))
00044 #define SSD_MEMW(x) (*((volatile unsigned short *)(SSD_MAP_MEM+(x))))
00045 #define SSD_MEML(x) (*((volatile unsigned long *)(SSD_MAP_MEM+(x))))
00046
00047 #define SSD192X_MEMB(x) (*((volatile unsigned char *)(SSD_MAP_MEM+(x))))
00048 #define SSD192X_MEMW(x) (*((volatile unsigned short *)(SSD_MAP_MEM+(x))))
00049 #define SSD192X_MEML(x) (*((volatile unsigned long *)(SSD_MAP_MEM+(x))))
00050
00051
00052 #define mdelay(x) delay_ms(x)
00053 #define udelay(x) delay_us(x)
00054
00055 void indirect_fast();
00056 void indirect_slow();
00057
00058 UINT16 indirect_mem_readseek(UINT32 address);
00059 UINT16 indirect_mem_writeseek(UINT32 address, UINT8 byteWrite);
00060 UINT16 indirect_reg_readWord();
00061 UINT16 indirect_reg_writeWord(UINT16 value);
00062 void indirect_WriteDataBus(UINT16 value);
00063
00064 extern UINT8 SSD_INDIRECT_REGRB(UINT32 regNum);
00065 extern void SSD_INDIRECT_REGWB(UINT32 regNum,UINT8 dat);
00066 extern void SSD_INDIRECT_REGWW(UINT32 regNum,UINT16 dat);
00067 extern void SSD_INDIRECT_REGWL(UINT32 regNum,UINT32 dat);
00068 extern UINT8 SSD_INDIRECT_MEMRB(UINT32 regNum);
00069 extern UINT16 SSD_INDIRECT_MEMRW(UINT32 address);
00070 extern UINT32 SSD_INDIRECT_MEMRL(UINT32 address);
00071 extern void SSD_INDIRECT_MEMWB(UINT32 address,UINT8 dat);
00072 extern void SSD_INDIRECT_MEMWW(UINT32 address,UINT16 dat);
00073 extern void SSD_INDIRECT_MEMWL(UINT32 address,UINT32 dat);
00074 extern UINT8 SSD_MEMRB(UINT32 memAddr);
00075 extern UINT16 SSD_MEMRW(UINT32 memAddr);
00076 extern UINT32 SSD_MEMRL(UINT32 memAddr);
00077
00078 extern UINT16 SSD_INDIRECT_REGRW(UINT32 regNum);
00079 extern UINT32 SSD_INDIRECT_REGRL(UINT32 regNum);
00080 extern UINT16 SSD_INDIRECT_REGRW(UINT32 regNum);
00081 extern UINT16 SSD_INDIRECT_MEMRW(UINT32 address);
00082 extern UINT32 SSD_INDIRECT_REGRL(UINT32 regNum);
00083 extern UINT32 SSD_INDIRECT_MEMRL(UINT32 address);
00084 extern void SSD_INDIRECT_REGWW(UINT32 regNum,UINT16 dat);
00085 extern void SSD_INDIRECT_MEMWW(UINT32 address,UINT16 dat);
00086 extern void SSD_INDIRECT_REGWL(UINT32 regNum,UINT32 dat);
00087 extern void SSD_INDIRECT_MEMWL(UINT32 address,UINT32 dat);
00088
00089 #define SSD_REGRB SSD_INDIRECT_REGRB
00090 #define SSD_REGRW SSD_INDIRECT_REGRW
00091 #define SSD_REGRL SSD_INDIRECT_REGRL
00092 #define SSD_REGWB SSD_INDIRECT_REGWB
00093 #define SSD_REGWW SSD_INDIRECT_REGWW
00094 #define SSD_REGWL SSD_INDIRECT_REGWL
00095 #define SSD_MEMRB SSD_INDIRECT_MEMRB
00096 #define SSD_MEMRW SSD_INDIRECT_MEMRW
00097 #define SSD_MEMRL SSD_INDIRECT_MEMRL
00098 #define SSD_MEMWB SSD_INDIRECT_MEMWB
00099 #define SSD_MEMWW SSD_INDIRECT_MEMWW
00100 #define SSD_MEMWL SSD_INDIRECT_MEMWL
00101
00102 void SSD_INDIRECT_MEMRB_burst(UINT32 address,UINT8* pReadbackData,UINT32 count);
00103 #define SSD_MEMRB_burst SSD_INDIRECT_MEMRB_burst
00104
00105 void SSD1928_CSUp(void);
00106 void SSD1928_CSDown(void);
00107
00108 enum ioCmdEnum
00109 {
00110 ioCmdSSD_EXIT_IOCMD_MODE=0x40,
00111 ioCmdSSD_MIN_VALUE=0x50,
00112 ioCmdSSD_REGRB,
00113 ioCmdSSD_REGRW,
00114 ioCmdSSD_REGRL,
00115 ioCmdSSD_REGWB,
00116 ioCmdSSD_REGWW,
00117 ioCmdSSD_REGWL,
00118 ioCmdSSD_MEMRB,
00119 ioCmdSSD_MEMRW,
00120 ioCmdSSD_MEMRL,
00121 ioCmdSSD_MEMWB,
00122 ioCmdSSD_MEMWW,
00123 ioCmdSSD_MEMWL,
00124 ioCmdSSD_MEMWW_Burst,
00125 ioCmdSSD_REGWB_mod_And,
00126 ioCmdSSD_REGWB_mod_Or,
00127 ioCmdSSD_REGWB_mod_Add,
00128 ioCmdSSD_REGWB_mod_Sub,
00129 ioCmdSSD_REGWW_RB_mod_And,
00130 ioCmdSSD_REGWW_RB_mod_Or,
00131 ioCmdSSD_REGWW_RB_mod_Add,
00132 ioCmdSSD_REGWW_RB_mod_Sub,
00133 ioCmdSSD_REGWW_mod_And,
00134 ioCmdSSD_REGWW_mod_Or,
00135 ioCmdSSD_REGWW_mod_Add,
00136 ioCmdSSD_REGWW_mod_Sub,
00137 ioCmdSSD_MAX_VALUE,
00138 };
00139
00140 typedef struct ioCmdTag
00141 {
00142 UINT8 cmdType;
00143 UINT32 regIn;
00144 UINT32 dataInOut;
00145 } ioCmdType;
00146
00147 void ProcessIOCmd(ioCmdType* ioReq);
00148
00149 enum ioCmdMod
00150 {
00151 ioModAnd=0,
00152 ioModOr,
00153 ioModAdd,
00154 ioModSub
00155 };
00156
00157 void SSD_REGWB_mod(UINT32 regNum, UINT8 mod, UINT8 value);
00158 void SSD_REGWW_RB_mod(UINT32 regNum, UINT8 mod, UINT16 value);
00159 void SSD_REGWW_mod(UINT32 regNum, UINT8 mod, UINT16 value);
00160
00161 #endif