From 8793d1928c87e4f2be29a07c82c3e1b62ae50602 Mon Sep 17 00:00:00 2001 From: Florian Preinstorfer Date: Wed, 1 Oct 2014 10:26:35 +0200 Subject: [PATCH] Replace eeprom->rs232_inversion with eeprom->invert. Summary: * The field eeprom->rs232_inversion reads and writes to the same location as eeprom->invert already does. * The configuration values invert_*, as read by ftdi_eeprom, are working ootb with FT230X chips. No configuration values were available for rs232_inversion. * Replace a duplicated code block, that prints inverted bits with print_inverted_bits(). I tested this commit with FT231X which identifies itself as VID 0x0403 and PID 0x6015. --- src/ftdi.c | 61 +++++++++++++++++------------------------------------------- src/ftdi.h | 3 ++- src/ftdi_i.h | 5 ----- 3 files changed, 19 insertions(+), 50 deletions(-) diff --git a/src/ftdi.c b/src/ftdi.c index ad9e20e..da7073d 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -3065,7 +3065,7 @@ int ftdi_eeprom_build(struct ftdi_context *ftdi) { output[0x1a + j] = eeprom->cbus_function[j]; } - output[0x0b] = eeprom->rs232_inversion; + output[0x0b] = eeprom->invert; break; } @@ -3391,7 +3391,7 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose) eeprom->group1_schmitt = (buf[0x0c] >> 4) & IS_SCHMITT; eeprom->group1_slew = (buf[0x0c] >> 4) & SLOW_SLEW; - eeprom->rs232_inversion = buf[0xb]; + eeprom->invert = buf[0xb]; } if (verbose) @@ -3515,33 +3515,8 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose) if (eeprom->cbus_function[i]<= CBUSH_AWAKE) fprintf(stdout,"CBUS%d Function: %s\n", i, cbush_mux[eeprom->cbus_function[i]]); } - if(eeprom->rs232_inversion ) { - struct bitnames { - int mask; - char *name; - }; - - struct bitnames invbitlist[] = { - {INVERT_TXD, "TXD"}, - {INVERT_RXD, "RXD"}, - {INVERT_RTS, "RTS"}, - {INVERT_CTS, "CTS"}, - {INVERT_DTR, "DTR"}, - {INVERT_DSR, "DSR"}, - {INVERT_DCD, "DCD"}, - {INVERT_RI, "RI"}, - {0, NULL}, - }; - int n = 0; - printf("Inversion on "); - for (i=0; invbitlist[i].mask;i++) { - if(eeprom->rs232_inversion & invbitlist[i].mask) { - if (n++) printf (","); - printf (" %s", invbitlist[i].name); - } - } - printf (" Pin%s\n",(n==1)?"":"s"); - } + if (eeprom->invert) + print_inverted_bits(eeprom->invert); } if (ftdi->type == TYPE_R) @@ -3551,16 +3526,9 @@ int ftdi_eeprom_decode(struct ftdi_context *ftdi, int verbose) "IOMODE","BB_WR","BB_RD" }; char *cbus_BB[] = {"RXF","TXE","RD", "WR"}; - if (eeprom->invert) - { - char *r_bits[] = {"TXD","RXD","RTS", "CTS","DTR","DSR","DCD","RI"}; - fprintf(stdout,"Inverted bits:"); - for (i=0; i<8; i++) - if ((eeprom->invert & (1<invert); + for (i=0; i<5; i++) { if (eeprom->cbus_function[i]eeprom->size; break; - case RS232_INVERSION: - *value = ftdi->eeprom->rs232_inversion; - break; default: ftdi_error_return(-1, "Request for unknown EEPROM value"); } @@ -3957,9 +3922,6 @@ int ftdi_set_eeprom_value(struct ftdi_context *ftdi, enum ftdi_eeprom_value valu case CHIP_SIZE: ftdi_error_return(-2, "EEPROM Value can't be changed"); break; - case RS232_INVERSION: - ftdi->eeprom->rs232_inversion = value; - break; default : ftdi_error_return(-1, "Request to unknown EEPROM value"); @@ -4327,4 +4289,15 @@ char *ftdi_get_error_string (struct ftdi_context *ftdi) return ftdi->error_str; } +void print_inverted_bits(int invert) +{ + int i; + char *r_bits[] = {"TXD","RXD","RTS","CTS","DTR","DSR","DCD","RI"}; + fprintf(stdout,"Inverted bits:"); + for (i=0; i<8; i++) + if ((invert & (1<