Lines Matching +full:long +full:- +full:press +full:- +full:ms

5  * SPDX-License-Identifier:	GPL-2.0+
8 #include <common.h> /* core U-Boot definitions */
9 #include <spartan2.h> /* Spartan-II device family */
31 #define CONFIG_SYS_FPGA_WAIT CONFIG_SYS_HZ/100 /* 10 ms */
42 /* ------------------------------------------------------------------------- */
43 /* Spartan-II Generic Implementation */
49 switch (desc->iface) { in spartan2_load()
62 __FUNCTION__, desc->iface); in spartan2_load()
72 switch (desc->iface) { in spartan2_dump()
85 __FUNCTION__, desc->iface); in spartan2_dump()
97 /* ------------------------------------------------------------------------- */
98 /* Spartan-II Slave Parallel Generic Implementation */
103 xilinx_spartan2_slave_parallel_fns *fn = desc->iface_fns; in spartan2_sp_load()
111 int cookie = desc->cookie; /* make a local copy */ in spartan2_sp_load()
112 unsigned long ts; /* timestamp */ in spartan2_sp_load()
129 __FUNCTION__, &fn, fn, fn->pre, fn->pgm, fn->init, fn->err, in spartan2_sp_load()
130 fn->clk, fn->cs, fn->wr, fn->rdata, fn->wdata, fn->busy, in spartan2_sp_load()
131 fn->abort, fn->post); in spartan2_sp_load()
136 * the Spartan-II Family. in spartan2_sp_load()
144 if (*fn->pre) { in spartan2_sp_load()
145 (*fn->pre) (cookie); in spartan2_sp_load()
149 (*fn->pgm) (true, true, cookie); /* Assert the program, commit */ in spartan2_sp_load()
153 (*fn->pgm) (false, true, cookie); /* Deassert the program, commit */ in spartan2_sp_load()
161 (*fn->abort) (cookie); /* abort the burn */ in spartan2_sp_load()
164 } while ((*fn->init) (cookie) && (*fn->busy) (cookie)); in spartan2_sp_load()
166 (*fn->wr) (true, true, cookie); /* Assert write, commit */ in spartan2_sp_load()
167 (*fn->cs) (true, true, cookie); /* Assert chip select, commit */ in spartan2_sp_load()
168 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_load()
172 /* XXX - do we check for an Ctrl-C press in here ??? */ in spartan2_sp_load()
173 /* XXX - Check the error bit? */ in spartan2_sp_load()
175 (*fn->wdata) (data[bytecount++], true, cookie); /* write the data */ in spartan2_sp_load()
177 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_sp_load()
179 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_load()
183 while ((*fn->busy) (cookie)) { in spartan2_sp_load()
184 /* XXX - we should have a check in here somewhere to in spartan2_sp_load()
188 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_sp_load()
190 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_load()
194 (*fn->abort) (cookie); /* abort the burn */ in spartan2_sp_load()
207 (*fn->cs) (false, true, cookie); /* Deassert the chip select */ in spartan2_sp_load()
208 (*fn->wr) (false, true, cookie); /* Deassert the write pin */ in spartan2_sp_load()
217 while ((*fn->done) (cookie) == FPGA_FAIL) { in spartan2_sp_load()
220 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_sp_load()
222 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_load()
226 (*fn->abort) (cookie); /* abort the burn */ in spartan2_sp_load()
235 if (*fn->post) in spartan2_sp_load()
236 (*fn->post) (cookie); in spartan2_sp_load()
255 xilinx_spartan2_slave_parallel_fns *fn = desc->iface_fns; in spartan2_sp_dump()
260 int cookie = desc->cookie; /* make a local copy */ in spartan2_sp_dump()
264 (*fn->cs) (true, true, cookie); /* Assert chip select, commit */ in spartan2_sp_dump()
265 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_dump()
269 /* XXX - do we check for an Ctrl-C press in here ??? */ in spartan2_sp_dump()
271 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_sp_dump()
272 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_dump()
273 (*fn->rdata) (&(data[bytecount++]), cookie); /* read the data */ in spartan2_sp_dump()
280 (*fn->cs) (false, false, cookie); /* Deassert the chip select */ in spartan2_sp_dump()
281 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_sp_dump()
282 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_sp_dump()
289 /* XXX - checksum the data? */ in spartan2_sp_dump()
298 /* ------------------------------------------------------------------------- */
303 xilinx_spartan2_slave_serial_fns *fn = desc->iface_fns; in spartan2_ss_load()
313 int cookie = desc->cookie; /* make a local copy */ in spartan2_ss_load()
314 unsigned long ts; /* timestamp */ in spartan2_ss_load()
324 __FUNCTION__, &fn, fn, fn->pgm, fn->init, in spartan2_ss_load()
325 fn->clk, fn->wr, fn->done); in spartan2_ss_load()
333 if (*fn->pre) { in spartan2_ss_load()
334 (*fn->pre) (cookie); in spartan2_ss_load()
338 (*fn->pgm) (true, true, cookie); /* Assert the program, commit */ in spartan2_ss_load()
348 } while (!(*fn->init) (cookie)); in spartan2_ss_load()
352 (*fn->pgm) (false, true, cookie); /* Deassert the program, commit */ in spartan2_ss_load()
362 } while ((*fn->init) (cookie)); in spartan2_ss_load()
369 if ((*fn->done) (cookie) == 0 && (*fn->init) (cookie)) { in spartan2_ss_load()
377 (*fn->clk) (false, true, cookie); in spartan2_ss_load()
380 (*fn->wr) ((val & 0x80), true, cookie); in spartan2_ss_load()
383 (*fn->clk) (true, true, cookie); in spartan2_ss_load()
386 i --; in spartan2_ss_load()
404 (*fn->wr) (true, true, cookie); in spartan2_ss_load()
406 while (! (*fn->done) (cookie)) { in spartan2_ss_load()
409 (*fn->clk) (false, true, cookie); /* Deassert the clock pin */ in spartan2_ss_load()
411 (*fn->clk) (true, true, cookie); /* Assert the clock pin */ in spartan2_ss_load()
426 if (*fn->post) in spartan2_ss_load()
427 (*fn->post) (cookie); in spartan2_ss_load()
446 /* boundary-scan interfaces. */ in spartan2_ss_dump()