Add support for Willem EPROM programmer SPI socket. Tested on PCB4.0.
Signed-off-by: Ondrej Zary <linux(a)rainbow-software.org>
--- a/rayer_spi.c 2013-03-16 23:13:31.000000000 +0100
+++ b/rayer_spi.c 2013-03-16 23:13:39.000000000 +0100
@@ -124,6 +124,22 @@ static struct rayer_pinout wiggler_lpt =
.miso_inverted = 1,
};
+static void willem_preinit(void *);
+static int willem_shutdown(void *);
+
+static struct rayer_pinout willem = {
+ .cs_bit = 3, /* SELIN */
+ .cs_reg = 2, /* control register */
+ .cs_inverted = 1,
+ .sck_bit = 1, /* D1 */
+ .mosi_bit = 0, /* D0 */
+ .mosi_inverted = 1,
+ .miso_bit = 7, /* BUSY */
+ .miso_inverted = 1,
+ .preinit = willem_preinit,
+ .shutdown = willem_shutdown,
+};
+
struct rayer_programmer rayer_spi_types[] = {
{"rayer", NT, "RayeR SPIPGM", &rayer_spipgm},
{"xilinx", NT, "Xilinx Parallel Cable III (DLC 5)", &xilinx_dlc5},
@@ -131,6 +147,7 @@ struct rayer_programmer rayer_spi_types[
{"byteblaster", NT, "Altera ByteBlaster", &altera_byteblaster},
{"stk200", NT, "Atmel STK200/300 adapter", &atmel_stk200},
{"wiggler", NT, "Wiggler LPT", &wiggler_lpt},
+ {"willem", NT, "Willem EPROM Programmer SPI", &willem},
{0},
};
@@ -305,6 +322,21 @@ static int stk200_shutdown(void *data) {
return 0;
}
+static void willem_preinit(void *data) {
+ msg_pdbg("willem_init\n");
+ /* Disable VPP, enable VCC and OE. */
+ lpt_outbyte[2] = (1 << 2) | (1 << 1) | (1 << 0);
+ OUTB(lpt_outbyte[2], lpt_iobase + 2);
+}
+
+static int willem_shutdown(void *data) {
+ msg_pdbg("willem_shutdown\n");
+ /* Disable VPP, VCC and OE. */
+ lpt_outbyte[2] = (1 << 0);
+ OUTB(lpt_outbyte[2], lpt_iobase + 2);
+ return 0;
+}
+
#else
#error PCI port I/O access is not supported on this architecture yet.
#endif
--
Ondrej Zary