1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-01 22:21:16 +02:00

Add serial port bitbanging code

This adds the pony_spi driver which supports the SI_Prog adapter, which
is commonly used for SPI chips with PonyProg 2000, and a custom adapter
called "SERBANG" which differs in the logic of two pins.

Corresponding to flashrom svn r1525.

Signed-off-by: Virgil-Adrian Teaca <darkstarlinux@gmail.com>
Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
This commit is contained in:
Virgil-Adrian Teaca
2012-04-30 23:11:06 +00:00
committed by Michael Karcher
parent 2abab94c18
commit da7c545b06
6 changed files with 283 additions and 1 deletions

View File

@ -32,6 +32,9 @@
#include <conio.h>
#else
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#endif
#include "flash.h"
#include "programmer.h"
@ -172,6 +175,58 @@ fdtype sp_openserport(char *dev, unsigned int baud)
#endif
}
void sp_set_pin(enum SP_PIN pin, int val) {
#ifdef _WIN32
DWORD ctl;
if(pin == PIN_TXD) {
ctl = val ? SETBREAK: CLRBREAK;
}
else if(pin == PIN_DTR) {
ctl = val ? SETDTR: CLRDTR;
}
else {
ctl = val ? SETRTS: CLRRTS;
}
EscapeCommFunction(sp_fd, ctl);
#else
int ctl, s;
if(pin == PIN_TXD) {
ioctl(sp_fd, val ? TIOCSBRK : TIOCCBRK, 0);
}
else {
s = (pin == PIN_DTR) ? TIOCM_DTR : TIOCM_RTS;
ioctl(sp_fd, TIOCMGET, &ctl);
if (val) {
ctl |= s;
}
else {
ctl &= ~s;
}
ioctl(sp_fd, TIOCMSET, &ctl);
}
#endif
}
int sp_get_pin(enum SP_PIN pin) {
int s;
#ifdef _WIN32
DWORD ctl;
s = (pin == PIN_CTS) ? MS_CTS_ON : MS_DSR_ON;
GetCommModemStatus(sp_fd, &ctl);
#else
int ctl;
s = (pin == PIN_CTS) ? TIOCM_CTS : TIOCM_DSR;
ioctl(sp_fd, TIOCMGET, &ctl);
#endif
return ((ctl & s) ? 1 : 0);
}
void sp_flush_incoming(void)
{
#ifdef _WIN32