comparison target-utils/loadagent/intelflash.c @ 659:761e8b0c65b0

loadagent: first step in implementation of binary flash programming
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 03 Mar 2020 17:55:20 +0000
parents 0da2cf5a999c
children b34384991094
comparison
equal deleted inserted replaced
658:0da2cf5a999c 659:761e8b0c65b0
78 return; 78 return;
79 } 79 }
80 } 80 }
81 } 81 }
82 82
83 intelflash_binary_prog(offset, nwords, data)
84 u32 offset;
85 unsigned nwords;
86 u16 *data;
87 {
88 volatile u16 *flashptr;
89 u16 stat;
90 int i;
91
92 flashptr = (volatile u16 *)(base_addr + offset);
93 while (nwords) {
94 *flashptr = 0x40;
95 *flashptr = *data;
96 for (i = 10000; i; i--) {
97 stat = *flashptr;
98 if (stat & 0x80)
99 break;
100 }
101 if (!i) {
102 serial_out(0x15); /* NAK */
103 printf("ERROR: flash write timeout at %08X\n",
104 (u_long) flashptr);
105 return(-1);
106 }
107 if (stat & 0x10) {
108 serial_out(0x15); /* NAK */
109 printf("ERROR: program operation failed at %08X\n",
110 (u_long) flashptr);
111 return(-1);
112 }
113 flashptr++;
114 data++;
115 nwords--;
116 }
117 return(0);
118 }
119
83 void 120 void
84 cmd_intel_rewrite_sector(argbulk) 121 cmd_intel_rewrite_sector(argbulk)
85 char *argbulk; 122 char *argbulk;
86 { 123 {
87 char *argv[4]; 124 char *argv[4];