1
0
mirror of https://github.com/preble/libpinproc synced 2026-02-24 18:25:23 +01:00

Changes for p3-roc

This commit is contained in:
Gerry Stellenberg
2013-06-25 18:54:54 -05:00
parent 98d6e84d65
commit a9f35706da
8 changed files with 285 additions and 39 deletions

View File

@@ -37,4 +37,6 @@
void PRLog(PRLogLevel level, const char *format, ...);
void PRSetLastErrorText(const char *format, ...);
#define NULL 0
#endif /* PINPROC_PRCOMMON_H */

View File

@@ -374,7 +374,7 @@ PRResult PRDevice::DriverLoadMachineTypeDefaults(PRMachineType machineType, uint
const bool mappedSternDriverGroupPolarity[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
const int lastWPCCoilDriverGroup = 9;
const int lastSternCoilDriverGroup = 7;
const int mappedWPCDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 400, 400, 400, 400, 400, 400, 400, 0, 0, 0, 0, 0, 0, 0, 0};
const int mappedWPCDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, 0, 0, 0};
const int mappedSternDriverGroupSlowTime[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400};
const int mappedWPCDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0};
const int mappedSternDriverGroupActivateIndex[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
@@ -1087,7 +1087,7 @@ PRResult PRDevice::VerifyChipID()
buffer[i] = requestedDataQueue.front();
requestedDataQueue.pop(); // Ignore address word. TODO: Verify the address.
}
if (buffer[1] != P_ROC_CHIP_ID)
if (buffer[1] != P_ROC_CHIP_ID && buffer[1] != P3_ROC_CHIP_ID)
{
DEBUG(PRLog(kPRLogError, "Error in VerifyID(): Dumping buffer\n"));
for (i = 0; i < bufferWords; i++)

View File

@@ -511,6 +511,7 @@ PRResult PRHardwareOpen()
// We first enumerate all of the devices:
int numDevices = ftdi_usb_find_all(&ftdic, &devlist, FTDI_VENDOR_ID, FTDI_FT245RL_PRODUCT_ID);
if (numDevices <=0) numDevices = ftdi_usb_find_all(&ftdic, &devlist, FTDI_VENDOR_ID, FTDI_FT240X_PRODUCT_ID);
if (numDevices < 0) {
PRSetLastErrorText("ftdi_usb_find_all failed: %d: %s", numDevices, ftdi_get_error_string(&ftdic));
ftdi_deinit(&ftdic);
@@ -537,7 +538,7 @@ PRResult PRHardwareOpen()
// Don't need the device list anymore
ftdi_list_free (&devlist);
if ((rc = (int32_t)ftdi_usb_open(&ftdic, FTDI_VENDOR_ID, FTDI_FT245RL_PRODUCT_ID)) < 0)
if (((rc = (int32_t)ftdi_usb_open(&ftdic, FTDI_VENDOR_ID, FTDI_FT245RL_PRODUCT_ID)) < 0) && ((rc = (int32_t)ftdi_usb_open(&ftdic, FTDI_VENDOR_ID, FTDI_FT240X_PRODUCT_ID)) < 0))
{
PRSetLastErrorText("Unable to open ftdi device: %d: %s", rc, ftdi_get_error_string(&ftdic));
return kPRFailure;
@@ -545,7 +546,8 @@ PRResult PRHardwareOpen()
else
{
rc = kPRSuccess;
if (ftdic.type == TYPE_R) {
//if (ftdic.type == TYPE_R) {
if (1) {
uint32_t chipid;
ftdi_read_chipid(&ftdic,&chipid);
DEBUG(PRLog(kPRLogInfo, "FTDI chip_id = 0x%x\n", chipid));
@@ -572,10 +574,12 @@ void PRHardwareClose()
}
int PRHardwareRead(uint8_t *buffer, int maxBytes)
{
//return 0;
return ftdi_read_data(&ftdic, buffer, maxBytes);
}
int PRHardwareWrite(uint8_t *buffer, int bytes)
{
//return 0;
return ftdi_write_data(&ftdic, buffer, bytes);
}

View File

@@ -41,12 +41,14 @@
const int32_t FTDI_VENDOR_ID = 0x0403;
const int32_t FTDI_FT245RL_PRODUCT_ID = 0x6001;
const int32_t FTDI_FT240X_PRODUCT_ID = 0x6015;
//const int32_t FTDI_BUFFER_SIZE = 2048;
const int32_t FTDI_BUFFER_SIZE = 8192;
const uint32_t P_ROC_INIT_PATTERN_A = 0x801F1122;
const uint32_t P_ROC_INIT_PATTERN_B = 0x345678AB;
const uint32_t P_ROC_CHIP_ID = 0xfeedbeef;
const uint32_t P3_ROC_CHIP_ID = 0xf33db33f;
const uint32_t P_ROC_VER_REV_FIXED_SWITCH_STATE_READS = 0x10013; // 1.19
@@ -86,6 +88,16 @@ const uint32_t P_ROC_BUS_STATE_CHANGE_PROC_SELECT = 4;
const uint32_t P_ROC_BUS_DMD_SELECT = 5;
const uint32_t P_ROC_BUS_UNASSOCIATED_SELECT = 15;
const uint32_t P3_ROC_MANAGER_SELECT = 0;
const uint32_t P3_ROC_BUS_SPI_SELECT = 1;
const uint32_t P3_ROC_BUS_SWITCH_CTRL_SELECT = 2;
const uint32_t P3_ROC_BUS_DRIVER_CTRL_SELECT = 3;
const uint32_t P3_ROC_BUS_STATE_CHANGE_PROC_SELECT = 4;
const uint32_t P3_ROC_BUS_AUX_CTRL_SELECT = 5;
const uint32_t P3_ROC_BUS_ACCELEROMETER_SELECT = 6;
const uint32_t P3_ROC_BUS_I2C_SELECT = 7;
const uint32_t P3_ROC_BUS_UNASSOCIATED_SELECT = 15;
const uint32_t P_ROC_REG_CHIP_ID_ADDR = 0;
const uint32_t P_ROC_REG_VERSION_ADDR = 1;
const uint32_t P_ROC_REG_WATCHDOG_ADDR = 2;
@@ -97,6 +109,21 @@ const uint32_t P_ROC_MANAGER_WATCHDOG_RESET_TIME_SHIFT = 0;
const uint32_t P_ROC_MANAGER_REUSE_DMD_DATA_FOR_AUX_SHIFT = 10;
const uint32_t P_ROC_MANAGER_INVERT_DIPSWITCH_1_SHIFT = 9;
const uint32_t P3_ROC_SPI_OPCODE_SHIFT = 24;
const uint32_t P3_ROC_SPI_OPCODE_WR_ENABLE = 0;
const uint32_t P3_ROC_SPI_OPCODE_WR_DISABLE = 1;
const uint32_t P3_ROC_SPI_OPCODE_RD_ID = 2;
const uint32_t P3_ROC_SPI_OPCODE_RD_STATUS = 3;
const uint32_t P3_ROC_SPI_OPCODE_WR_STATUS = 4;
const uint32_t P3_ROC_SPI_OPCODE_RD_DATA = 5;
const uint32_t P3_ROC_SPI_OPCODE_FRD_DATA = 6;
const uint32_t P3_ROC_SPI_OPCODE_PP = 7;
const uint32_t P3_ROC_SPI_OPCODE_SECTOR_ERASE = 8;
const uint32_t P3_ROC_SPI_OPCODE_BULK_ERASE = 9;
const uint32_t P3_ROC_SPI_OPCODE_DEEP_POWERDN = 10;
const uint32_t P3_ROC_SPI_OPCODE_RELEASE = 11;
const uint32_t P_ROC_JTAG_SHIFT_EXIT_SHIFT = 16;
const uint32_t P_ROC_JTAG_SHIFT_NUM_BITS_SHIFT = 0;

View File

@@ -44,6 +44,7 @@
typedef void (*PRLogCallback)(PRLogLevel level, const char *text);
PRLogCallback logCallback = NULL;
//PRLogLevel logLevel = kPRLogError;
PRLogLevel logLevel = kPRLogError;
void PRLog(PRLogLevel level, const char *format, ...)