|
@@ -15,6 +15,7 @@
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
#include <linux/init.h>
|
|
#include <linux/init.h>
|
|
#include <linux/usb.h>
|
|
#include <linux/usb.h>
|
|
|
|
+#include <linux/delay.h>
|
|
|
|
|
|
#define MAX_INTEL_HEX_RECORD_LENGTH 16
|
|
#define MAX_INTEL_HEX_RECORD_LENGTH 16
|
|
typedef struct _INTEL_HEX_RECORD
|
|
typedef struct _INTEL_HEX_RECORD
|
|
@@ -114,6 +115,7 @@ static int emi26_load_firmware (struct usb_device *dev)
|
|
|
|
|
|
/* De-assert reset (let the CPU run) */
|
|
/* De-assert reset (let the CPU run) */
|
|
err = emi26_set_reset(dev,0);
|
|
err = emi26_set_reset(dev,0);
|
|
|
|
+ msleep(250); /* let device settle */
|
|
|
|
|
|
/* 2. We upload the FPGA firmware into the EMI
|
|
/* 2. We upload the FPGA firmware into the EMI
|
|
* Note: collect up to 1023 (yes!) bytes and send them with
|
|
* Note: collect up to 1023 (yes!) bytes and send them with
|
|
@@ -150,6 +152,7 @@ static int emi26_load_firmware (struct usb_device *dev)
|
|
goto wraperr;
|
|
goto wraperr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ msleep(250); /* let device settle */
|
|
|
|
|
|
/* De-assert reset (let the CPU run) */
|
|
/* De-assert reset (let the CPU run) */
|
|
err = emi26_set_reset(dev,0);
|
|
err = emi26_set_reset(dev,0);
|
|
@@ -192,6 +195,7 @@ static int emi26_load_firmware (struct usb_device *dev)
|
|
err("%s - error loading firmware: error = %d", __FUNCTION__, err);
|
|
err("%s - error loading firmware: error = %d", __FUNCTION__, err);
|
|
goto wraperr;
|
|
goto wraperr;
|
|
}
|
|
}
|
|
|
|
+ msleep(250); /* let device settle */
|
|
|
|
|
|
/* return 1 to fail the driver inialization
|
|
/* return 1 to fail the driver inialization
|
|
* and give real driver change to load */
|
|
* and give real driver change to load */
|