libftdi Archives

Subject: Re: EEPROM max_power build/decode inconsistency

From: Daniel Kirkham <dk2@xxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Tue, 1 May 2012 23:59:27 +1000
On 29/04/2012, at 4:14 AM, Uwe Bonnes wrote:
>>>>>> "Daniel" == Daniel Kirkham <dk2@xxxxxxxxxxxxx> writes:
> 
>    Daniel> Hi all, I just noticed an inconsistency in the handling of the
>    Daniel> max_power EEPROM value while writing a short program to
>    Daniel> reprogram my FT2232.
> 
>    Daniel> In ftdi_eeprom_build (line 2580 of ftdi.c):
> 
>    Daniel>    output[0x09] = eeprom->max_power>>1;
> 
>    Daniel> Whereas: in ftdi_eeprom_decode (line 3051 of ftdi.c):
> 
>    eeprom-> max_power = buf[0x09];
> 
>    Daniel> and further down in ftdi_eeprom_decode (line 3267):
> 
>    Daniel>             fprintf(stdout, "Bus Powered: %3d mA%s",
>    Daniel> eeprom->max_power * 2,
> 
>    Daniel> and ftdi_get_eeprom_value (line 3448)
> 
>    Daniel>             *value = ftdi->eeprom->max_power;
> 
>    Daniel> and ftdi_set_eeprom_value (line 3635)
> 
>    ftdi-> eeprom->max_power = value;
> 
>    Daniel> So, with the exception of line 2580, the value being passed
>    Daniel> around is the power requirement expressed as half the number of
>    Daniel> milliamperes (mA) required by the device, and that line 3267
>    Daniel> correctly translates this for presentation purposes. This is
>    Daniel> consistent with the way power units are specified within the USB
>    Daniel> protocols (ie. each unit is 2mA).
> 
>    Daniel> On this basis, the bit-shift division in line 2580 should be
>    Daniel> removed: 2580: output[0x09] = eeprom->max_power;
> 
>    Daniel> Alternatively, if the API defines that max_power should be
>    Daniel> expressed directly in mA, then lines 3051 and 3267 need to be
>    Daniel> adjusted to: 3051: eeprom->max_power = buf[0x09] * 2; 3267:
>    Daniel> fprintf(stdout, "Bus Powered: %3d mA%s", eeprom->max_power,
> 
>    Daniel> Given these changes may break some usage, perhaps this needs to
>    Daniel> be discussed before patching the library one way or the other.
> 
> Thanks for catching this error. Getting it consistant probably doesn't
> break much but mixes more. I propose having eeprom->max_power in mA.
> 
> Will you prepare a patch?

I'm in the midst of a very busy week, so will look at preparing a patch over 
the coming weekend.

Daniel
> 
> Bye
> -- 
> Uwe Bonnes                bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> 
> Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
> --------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
> 
> --
> 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