libftdi Archives

Subject: Re: Patches applied

From: David Brownell <david-b@xxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Cc: Jim Paris <jim@xxxxxxxx>
Date: Tue, 10 Nov 2009 15:08:40 -0700
On Tuesday 10 November 2009, Jim Paris wrote:
> Thomas Jarosch wrote:
> > Hello,
> > 
> > I guess I've applied all outstanding patches to libftdi's git tree.
> > Please ping me if I might have missed one/yours.
> > 
> > Now we just need a fix for the
> > 
> > "FT2232H bug: wrong maxpacket at full speed" 
> > 
> > issue ;)
> 
> Probably something like the below patch.  Note, only lightly tested
> (it returns 64 on my full-speed device here), and maybe it's something
> that should instead be stored in ftdi_context every time the interface
> changes.
> 
> -jim
> 
> 
> diff --git a/src/ftdi.c b/src/ftdi.c
> index d7f4bb0..26d08a4 100644
> --- a/src/ftdi.c
> +++ b/src/ftdi.c
> @@ -1268,11 +1268,7 @@ int ftdi_read_data(struct ftdi_context *ftdi, unsigned 
> char *buf, int size)
>      int offset = 0, ret = 1, i, num_of_chunks, chunk_remains;
>      int packet_size;
>  
> -    // New hi-speed devices from FTDI use a packet size of 512 bytes
> -    if (ftdi->type == TYPE_2232H || ftdi->type == TYPE_4232H)
> -        packet_size = 512;
> -    else
> -        packet_size = 64;
> +    packet_size = 
> usb_device(ftdi->usb_dev)->config[0].interface[ftdi->interface].altsetting[0].endpoint[0].wMaxPacketSize;

Like that, yes.  I'd check for null pointers and array boundaries though,
and apply the right mask to wMaxPacketSize ... just in case.

(Do non-Linux systems actually populate dev->config?  I'd hope so...)


>  
>      // everything we want is still in the readbuffer?
>      if (size <= ftdi->readbuffer_remaining)
> 
> --
> libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
> To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   
> 
> 



--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread