summaryrefslogtreecommitdiff
path: root/io-module/mtcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'io-module/mtcap.c')
-rw-r--r--io-module/mtcap.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/io-module/mtcap.c b/io-module/mtcap.c
index fd278c8..7409c2f 100644
--- a/io-module/mtcap.c
+++ b/io-module/mtcap.c
@@ -191,7 +191,7 @@ static int radio_off_mtcap(int radio_model)
// cannot be fixed definitely. Normally it will be above 15 seconds later from releasing
// ON/OFF# and DTE should monitor the status of PWRMON to see the actual power off.
hold_time = 2500;
- if (radio_model == RADIO_LNA3) {
+ if (radio_model == RADIO_LNA3 || radio_model == RADIO_LEU3) {
// To turn OFF the LE910 V2 the pad ON_OFF* must be tied low for at least 3 seconds and then released.
// ref: Telit_LE910_V2_Hardware_User_Guide_r7.pdf
@@ -199,6 +199,7 @@ static int radio_off_mtcap(int radio_model)
}
reset_gpio_pin(onoff_pin, hold_time, 0);
+ msleep(200); // Give time for pin to change state before inspection.
value = 0;
for (i = 0; i < 15; i++) {
@@ -246,11 +247,14 @@ static int radio_on_mtcap(int radio_model)
// for LEU1 (ref: Telit_LE910_Hardware_User_Guide_r6.pdf)
hold_time = 1500;
- if (radio_model == RADIO_LNA3) {
+ if (radio_model == RADIO_LNA3 || radio_model == RADIO_LEU3) {
// To turn on the LE910 V2 the pad ON_OFF* must be tied low for at least 5 seconds and then released.
// ref: Telit_LE910_V2_Hardware_User_Guide_r7.pdf
- hold_time = 5500;
+ // ref:Telit_LE910_V2_Hardware_User_Guide_r9.pdf
+ // pg 32: When USB is connected or after firmware updating,
+ // delay must be equal at least to 10 seconds.
+ hold_time = 10500;
}
// drive on/off pin high for at least 1 seconoff_pin
@@ -259,7 +263,7 @@ static int radio_on_mtcap(int radio_model)
// ON_OFF must be tied low and then released
reset_gpio_pin(onoff_pin, hold_time, 0);
-
+ msleep(200); // Make sure modem has had time to move the status pin
// check that power is high
value = gpio_get_value(pwrmon_pin->pin.gpio);
if(value == 0) {
@@ -293,14 +297,22 @@ static int radio_reset_mtcap(int radio_model)
//
// Turning on radio
//
- log_info("turning on cell radio");
+ log_info("turning on cell radio for reset");
// for LEU1 (ref: Telit_LE910_Hardware_User_Guide_r6.pdf)
hold_time = 1500;
- if (radio_model == RADIO_LNA3) {
+ if (radio_model == RADIO_LNA3 || radio_model == RADIO_LEU3) {
// To turn on the LE910 V2 the pad ON_OFF* must be tied low for at least 5 seconds and then released.
// ref: Telit_LE910_V2_Hardware_User_Guide_r7.pdf
- hold_time = 5500;
+ // ref:Telit_LE910_V2_Hardware_User_Guide_r9.pdf
+ // pg 32: When USB is connected or after firmware updating,
+ // delay must be equal at least to 10 seconds.
+ //
+ // Note that a hold time of 5.5 seconds on MTCAP
+ // with Verizon Firmware 20.00.12 will cause a
+ // radio-reset to power the LE910-NA1 off until
+ // a reload of the mts-io driver, or a reboot.
+ hold_time = 10500;
}
// drive on/off pin high for at least 1 sec
@@ -310,8 +322,10 @@ static int radio_reset_mtcap(int radio_model)
// drive on/off pin low for < 2 sec
// drive on/off pin high
+ log_info("turning off cell radio for reset");
reset_gpio_pin(onoff_pin, hold_time, 0);
-
+ log_info("Reset is complete. Wait for power monitor pin");
+ msleep(200); // Make sure modem has had time to move the status pin
return 0;
}