Rework of bitbanging functions setpin, getpin, highpulsepin to make simplier use of new pindefs data in pgm structure

* linuxgpio.c, bitbang.c, buspirate.c, par.c, pgm.h, term.c, serbb_*.c: changed 
	  interface of setpin, getpin, highpulsepin to take pin function as parameter 
	  (not the real number, which can be found by pgm->pinno[function])

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1252 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
Rene Liebscher
2013-12-04 19:02:55 +00:00
parent 3b793351bb
commit 1c401d5d08
9 changed files with 107 additions and 74 deletions

38
par.c
View File

@@ -74,7 +74,7 @@ static struct ppipins_t ppipins[] = {
#define NPINS (sizeof(ppipins)/sizeof(struct ppipins_t))
static int par_setpin(PROGRAMMER * pgm, int pin, int value)
static int par_setpin_internal(PROGRAMMER * pgm, int pin, int value)
{
int inverted;
@@ -103,23 +103,30 @@ static int par_setpin(PROGRAMMER * pgm, int pin, int value)
return 0;
}
static void par_setmany(PROGRAMMER * pgm, unsigned int pinset, int value)
static int par_setpin(PROGRAMMER * pgm, int pinfunc, int value)
{
return par_setpin_internal(pgm, pgm->pinno[pinfunc], value);
}
static void par_setmany(PROGRAMMER * pgm, int pinfunc, int value)
{
int pin, mask;
int pinset = pgm->pinno[pinfunc];
/* mask is anything non-pin - needs to be applied to each par_setpin to preserve inversion */
mask = pinset & (~PIN_MASK);
for (pin = 1; pin <= 17; pin++) {
if (pinset & (1 << pin))
par_setpin(pgm, pin | mask, value);
par_setpin_internal(pgm, pin | mask, value);
}
}
static int par_getpin(PROGRAMMER * pgm, int pin)
static int par_getpin(PROGRAMMER * pgm, int pinfunc)
{
int value;
int inverted;
int pin = pgm->pinno[pinfunc];
inverted = pin & PIN_INVERSE;
pin &= PIN_MASK;
@@ -144,9 +151,10 @@ static int par_getpin(PROGRAMMER * pgm, int pin)
}
static int par_highpulsepin(PROGRAMMER * pgm, int pin)
static int par_highpulsepin(PROGRAMMER * pgm, int pinfunc)
{
int inverted;
int pin = pgm->pinno[pinfunc];
inverted = pin & PIN_INVERSE;
pin &= PIN_MASK;
@@ -185,7 +193,7 @@ static int par_highpulsepin(PROGRAMMER * pgm, int pin)
*/
static void par_powerup(PROGRAMMER * pgm)
{
par_setmany(pgm, pgm->pinno[PPI_AVR_VCC], 1); /* power up */
par_setmany(pgm, PPI_AVR_VCC, 1); /* power up */
usleep(100000);
}
@@ -195,12 +203,12 @@ static void par_powerup(PROGRAMMER * pgm)
*/
static void par_powerdown(PROGRAMMER * pgm)
{
par_setmany(pgm, pgm->pinno[PPI_AVR_VCC], 0); /* power down */
par_setmany(pgm, PPI_AVR_VCC, 0); /* power down */
}
static void par_disable(PROGRAMMER * pgm)
{
par_setmany(pgm, pgm->pinno[PPI_AVR_BUFF], 1); /* turn off */
par_setmany(pgm, PPI_AVR_BUFF, 1); /* turn off */
}
static void par_enable(PROGRAMMER * pgm)
@@ -216,13 +224,13 @@ static void par_enable(PROGRAMMER * pgm)
* and not via the buffer chip.
*/
par_setpin(pgm, pgm->pinno[PIN_AVR_RESET], 0);
par_setpin(pgm, PIN_AVR_RESET, 0);
usleep(1);
/*
* enable the 74367 buffer, if connected; this signal is active low
*/
par_setmany(pgm, pgm->pinno[PPI_AVR_BUFF], 0);
par_setmany(pgm, PPI_AVR_BUFF, 0);
}
static int par_open(PROGRAMMER * pgm, char * port)
@@ -269,18 +277,18 @@ static void par_close(PROGRAMMER * pgm)
ppi_setall(&pgm->fd, PPIDATA, pgm->ppidata);
ppi_setall(&pgm->fd, PPICTRL, pgm->ppictrl);
par_setmany(pgm, pgm->pinno[PPI_AVR_BUFF], 1);
par_setmany(pgm, PPI_AVR_BUFF, 1);
/*
* Handle exit specs.
*/
switch (pgm->exit_reset) {
case EXIT_RESET_ENABLED:
par_setpin(pgm, pgm->pinno[PIN_AVR_RESET], 0);
par_setpin(pgm, PIN_AVR_RESET, 0);
break;
case EXIT_RESET_DISABLED:
par_setpin(pgm, pgm->pinno[PIN_AVR_RESET], 1);
par_setpin(pgm, PIN_AVR_RESET, 1);
break;
case EXIT_RESET_UNSPEC:
@@ -304,11 +312,11 @@ static void par_close(PROGRAMMER * pgm)
switch (pgm->exit_vcc) {
case EXIT_VCC_ENABLED:
par_setmany(pgm, pgm->pinno[PPI_AVR_VCC], 1);
par_setmany(pgm, PPI_AVR_VCC, 1);
break;
case EXIT_VCC_DISABLED:
par_setmany(pgm, pgm->pinno[PPI_AVR_VCC], 0);
par_setmany(pgm, PPI_AVR_VCC, 0);
break;
case EXIT_VCC_UNSPEC: