5 unsigned long lpciap_buff[ISP_RAM2FLASH_BLOCK_SIZE/4];
6 char *lpciap_addr_base=NULL;
8 #define ISP_RAM2FLASH_BLOCK_SIZE_MASK (ISP_RAM2FLASH_BLOCK_SIZE-1)
10 int lpcisp_kvpb_erase(struct kvpb_block *store, void *base,int size)
12 return lpcisp_erase(base, size);
15 int lpcisp_kvpb_flush(struct kvpb_block *store)
17 if (lpciap_addr_base==NULL) return -1;
18 lpcisp_write(lpciap_addr_base,lpciap_buff,ISP_RAM2FLASH_BLOCK_SIZE);
19 lpciap_addr_base=NULL;
23 int lpcisp_kvpb_copy(struct kvpb_block *store,void *des, const void *src, int len)
25 char *addr_base,*addr_src=(char*)src;
29 addr_base=(char*)((unsigned long)des&~ISP_RAM2FLASH_BLOCK_SIZE_MASK);
30 cp_len=ISP_RAM2FLASH_BLOCK_SIZE-((unsigned long)des&ISP_RAM2FLASH_BLOCK_SIZE_MASK);
31 if (len<cp_len) cp_len=len;
32 if (lpciap_addr_base) {
33 if (lpciap_addr_base!=addr_base) {
34 lpcisp_kvpb_flush(store);
35 memcpy(lpciap_buff,addr_base,ISP_RAM2FLASH_BLOCK_SIZE);
36 lpciap_addr_base=addr_base;
39 memcpy(lpciap_buff,addr_base,ISP_RAM2FLASH_BLOCK_SIZE);
40 lpciap_addr_base=addr_base;
42 memcpy((char*)lpciap_buff+((unsigned long)des&ISP_RAM2FLASH_BLOCK_SIZE_MASK),addr_src,cp_len);
43 des=(char*)des+cp_len;
46 if (((unsigned long)des&ISP_RAM2FLASH_BLOCK_SIZE_MASK)==0x00)
47 lpcisp_kvpb_flush(store);