output[0x00] |= DRIVER_VCPH;
else
output[0x00] &= ~DRIVER_VCPH;
+ if (eeprom->powersave)
+ output[0x01] |= POWER_SAVE_DISABLE_H;
+ else
+ output[0x01] &= ~POWER_SAVE_DISABLE_H;
+ if (eeprom->clock_polarity)
+ output[0x01] |= FT1284_CLK_IDLE_STATE;
+ else
+ output[0x01] &= ~FT1284_CLK_IDLE_STATE;
+ if (eeprom->data_order)
+ output[0x01] |= FT1284_DATA_LSB;
+ else
+ output[0x01] &= ~FT1284_DATA_LSB;
+ if (eeprom->flow_control)
+ output[0x01] |= FT1284_FLOW_CONTROL;
+ else
+ output[0x01] &= ~FT1284_FLOW_CONTROL;
+ if (eeprom->group0_drive > DRIVE_16MA)
+ output[0x0c] |= DRIVE_16MA;
+ else
+ output[0x0c] |= eeprom->group0_drive;
+ if (eeprom->group0_schmitt == IS_SCHMITT)
+ output[0x0c] |= IS_SCHMITT;
+ if (eeprom->group0_slew == SLOW_SLEW)
+ output[0x0c] |= SLOW_SLEW;
+
+ if (eeprom->group1_drive > DRIVE_16MA)
+ output[0x0d] |= DRIVE_16MA;
+ else
+ output[0x0d] |= eeprom->group1_drive;
+ if (eeprom->group1_schmitt == IS_SCHMITT)
+ output[0x0d] |= IS_SCHMITT;
+ if (eeprom->group1_slew == SLOW_SLEW)
+ output[0x0d] |= SLOW_SLEW;
output[0x1e] = eeprom->chip;
fprintf(stderr,"FIXME: Build FT232H specific EEPROM settings\n");
{
eeprom->channel_a_type = buf[0x00] & 0xf;
eeprom->channel_a_driver = (buf[0x00] & DRIVER_VCPH)?DRIVER_VCP:0;
+ eeprom->clock_polarity = buf[0x01] & FT1284_CLK_IDLE_STATE;
+ eeprom->data_order = buf[0x01] & FT1284_DATA_LSB;
+ eeprom->flow_control = buf[0x01] & FT1284_FLOW_CONTROL;
+ eeprom->powersave = buf[0x01] & POWER_SAVE_DISABLE_H;
+ eeprom->group0_drive = buf[0x0c] & DRIVE_16MA;
+ eeprom->group0_schmitt = buf[0x0c] & IS_SCHMITT;
+ eeprom->group0_slew = buf[0x0c] & SLOW_SLEW;
+ eeprom->group1_drive = buf[0x0d] & DRIVE_16MA;
+ eeprom->group1_schmitt = buf[0x0d] & IS_SCHMITT;
+ eeprom->group1_slew = buf[0x0d] & SLOW_SLEW;
+
eeprom->chip = buf[0x1e];
/*FIXME: Decipher more values*/
}
fprintf(stdout, "Suspend on DBUS7\n");
if (eeprom->suspend_pull_downs)
fprintf(stdout, "Pull IO pins low during suspend\n");
+ if(eeprom->powersave)
+ {
+ if(ftdi->type >= TYPE_232H)
+ fprintf(stdout,"Enter low power state on ACBUS7\n");
+ }
if (eeprom->remote_wakeup)
fprintf(stdout, "Enable Remote Wake Up\n");
fprintf(stdout, "PNP: %d\n",(eeprom->is_not_pnp)?0:1);
channel_mode[eeprom->channel_a_type],
(eeprom->channel_a_driver)?" VCP":"",
(eeprom->high_current_a)?" High Current IO":"");
+ if (ftdi->type >= TYPE_232H)
+ {
+ fprintf(stdout,"FT1284 Mode Clock is idle %s, %s first, %sFlow Control\n",
+ (eeprom->clock_polarity)?"HIGH":"LOW",
+ (eeprom->data_order)?"LSB":"MSB",
+ (eeprom->flow_control)?"":"No ");
+ }
if ((ftdi->type >= TYPE_2232C) && (ftdi->type != TYPE_R) && (ftdi->type != TYPE_232H))
fprintf(stdout,"Channel B has Mode %s%s%s\n",
channel_mode[eeprom->channel_b_type],
(eeprom->group3_schmitt)?" Schmitt Input":"",
(eeprom->group3_slew)?" Slow Slew":"");
}
+ else if (ftdi->type == TYPE_232H)
+ {
+ fprintf(stdout,"ACBUS has %d mA drive%s%s\n",
+ (eeprom->group0_drive+1) *4,
+ (eeprom->group0_schmitt)?" Schmitt Input":"",
+ (eeprom->group0_slew)?" Slow Slew":"");
+ fprintf(stdout,"ADBUS has %d mA drive%s%s\n",
+ (eeprom->group1_drive+1) *4,
+ (eeprom->group1_schmitt)?" Schmitt Input":"",
+ (eeprom->group1_slew)?" Slow Slew":"");
+ }
+
if (ftdi->type == TYPE_R)
{
char *cbus_mux[] = {"TXDEN","PWREN","RXLED", "TXLED","TX+RXLED",
case GROUP3_SLEW:
*value = ftdi->eeprom->group3_slew;
break;
- case CHIP_TYPE:
+ case POWER_SAVE:
+ *value = ftdi->eeprom->powersave;
+ break;
+ case CLOCK_POLARITY:
+ *value = ftdi->eeprom->clock_polarity;
+ break;
+ case DATA_ORDER:
+ *value = ftdi->eeprom->data_order;
+ break;
+ case FLOW_CONTROL:
+ *value = ftdi->eeprom->flow_control;
+ break;
+ case CHIP_TYPE:
*value = ftdi->eeprom->chip;
break;
case CHIP_SIZE:
case CHIP_TYPE:
ftdi->eeprom->chip = value;
break;
+ case POWER_SAVE:
+ ftdi->eeprom->powersave = value;
+ break;
+ case CLOCK_POLARITY:
+ ftdi->eeprom->clock_polarity = value;
+ break;
+ case DATA_ORDER:
+ ftdi->eeprom->data_order = value;
+ break;
+ case FLOW_CONTROL:
+ ftdi->eeprom->flow_control = value;
+ break;
case CHIP_SIZE:
ftdi_error_return(-2, "EEPROM Value can't be changed");
default :