Example #1
0
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;
}
Example #3
0
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;
}