static ssize_t modem_boot_set(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int state; dev_info(dev, "Power PHY set to %s\n", buf); if (sscanf(buf, "%d", &state) != 1) return -EINVAL; if (state == POWER_SET_ON) { modem_boot_change_state(state); oem_power_on_modem(); } else if (state == POWER_SET_OFF) { modem_boot_change_state(state); via_modem_state = MODEM_STATE_OFF; via_monitor_uevent_notify(MODEM_STATE_OFF); oem_power_off_modem(); } else if (state == POWER_SET_DEBUGON) { modem_boot_change_state(state); oem_power_on_modem(); } else if (state == POWER_SET_DEBUGOFF) { modem_boot_change_state(state); oem_power_off_modem(); } else { dev_err(dev, "Power PHY error state. %s\n", buf); } return count; }
static ssize_t modem_boot_set(struct device *pdev, struct device_attribute *attr, const char *buf, size_t count) { int state; hwlog_info("Power PHY set to %s\n", buf); if (kstrtoint(buf, 10, &state)) { hwlog_err("%s:%d kstrtoint %s fail\n", __func__, __LINE__, buf); return -EINVAL; } switch(state){ case POWER_SET_DEBUGOFF: modem_boot_change_state(state); oem_power_off_modem(); break; case POWER_SET_DEBUGON: modem_boot_change_state(state); oem_power_on_modem(); break; case POWER_SET_OFF: modem_boot_change_state(state); via_modem_state = MODEM_STATE_OFF; via_monitor_uevent_notify(MODEM_STATE_OFF); oem_power_off_modem(); break; case POWER_SET_ON: modem_boot_change_state(state); oem_power_on_modem(); break; case MODEM_CTRL_RESET: oem_reset_modem(); break; case MODEM_CTRL_DIE: oem_let_cbp_die(); break; case MODEM_CTRL_WAKE_LOCK: hwlog_info("hold on wakelock.\n"); wake_lock(&vmdata->wlock); break; case MODEM_CTRL_WAKE_LOCK_RELEASE: hwlog_info("release wakelock.\n"); wake_unlock(&vmdata->wlock); break; default: hwlog_info("default: do nothing!\n"); break; } return count; }
static ssize_t modem_boot_set(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int state; unsigned long flags; dev_info(dev, "Power PHY set to %s\n", buf); if (sscanf(buf, "%d", &state) != 1) return -EINVAL; modem_in_state_change = 1; if (state == POWER_SET_ON) { modem_boot_change_state(state); gpio_set_value(GPIO_DOWNLOAD_EN, 1);//set high is normal boot mode modem_boot_power_on(); } else if (state == POWER_SET_OFF) { modem_boot_change_state(state); modem_boot_power_off(); gpio_set_value(GPIO_DOWNLOAD_EN, 0); } else if (state == POWER_SET_DEBUGON) { modem_boot_change_state(state); modem_boot_power_on(); } else if (state == POWER_SET_DEBUGOFF) { modem_boot_change_state(state); modem_boot_power_off(); } else if (state == POWER_SET_RESET) { dev_info(dev, "set modem reset.\n"); spin_lock_irqsave(&modem_device->lock, flags); modem_device->modem_state = MODEM_STATE_RESET; spin_unlock_irqrestore(&modem_device->lock, flags); schedule_work(&modem_device->work); } else { dev_err(dev, "Power PHY error state. %s\n", buf); } modem_in_state_change = 0; return count; }