From 3119537ff1cf8b9a6f945806dbb75d3bc71935e2 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Fri, 7 May 2004 10:57:15 +0000 Subject: [PATCH] libftdi: (tomj) new variable: bitbang_mode to support FT2232C's SPI bitbang mode --- ftdi/ftdi.c | 7 +++++-- ftdi/ftdi.h | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ftdi/ftdi.c b/ftdi/ftdi.c index 9ef20cd..18c4d1d 100644 --- a/ftdi/ftdi.c +++ b/ftdi/ftdi.c @@ -39,8 +39,9 @@ int ftdi_init(struct ftdi_context *ftdi) { ftdi->index = 0; ftdi->in_ep = 0x02; ftdi->out_ep = 0x81; + ftdi->bitbang_mode = 1; /* 1: Normal bitbang mode, 2: SPI bitbang mode */ + ftdi->error_str = NULL; - ftdi->reading = 0; // all fine. Now allocate the readbuffer return ftdi_read_data_set_chunksize(ftdi, 4096); @@ -373,7 +374,9 @@ int ftdi_enable_bitbang(struct ftdi_context *ftdi, unsigned char bitmask) { unsigned short usb_val; usb_val = bitmask; // low byte: bitmask - usb_val |= (1 << 8); // high byte: enable flag + /* FT2232C: Set bitbang_mode to 2 to enable SPI */ + usb_val |= (ftdi->bitbang_mode << 8); + if (usb_control_msg(ftdi->usb_dev, 0x40, 0x0B, usb_val, ftdi->index, NULL, 0, ftdi->usb_write_timeout) != 0) { ftdi->error_str = "Unable to enter bitbang mode. Perhaps not a BM type chip?"; return -1; diff --git a/ftdi/ftdi.h b/ftdi/ftdi.h index 6fa8a60..d33f38e 100644 --- a/ftdi/ftdi.h +++ b/ftdi/ftdi.h @@ -40,8 +40,9 @@ struct ftdi_context { // Endpoints int in_ep; int out_ep; // 1 or 2 - - int reading; // 0 or 1 - for performance increase in SPI mode + + /* 1: (default) Normal bitbang mode, 2: FT2232C SPI bitbang mode */ + unsigned char bitbang_mode; // misc char *error_str; -- 1.7.1