static int ss222_off(struct modem_ctl *mc) { int cp_on = gpio_get_value(mc->gpio_cp_on); mif_err("+++\n"); if (mc->phone_state == STATE_OFFLINE || cp_on == 0) return 0; mc->phone_state = STATE_OFFLINE; gpio_set_value(mc->gpio_cp_reset, 0); make_gpio_floating(mc->gpio_cp_off, false); gpio_set_value(mc->gpio_cp_on, 0); mif_err("---\n"); return 0; }
static int ss222_off(struct modem_ctl *mc) { struct link_device *ld = get_current_link(mc->iod); int cp_on = gpio_get_value(mc->gpio_cp_on); mif_err("+++\n"); if (mc->phone_state == STATE_OFFLINE || cp_on == 0) return 0; mc->phone_state = STATE_OFFLINE; ld->mode = LINK_MODE_OFFLINE; gpio_set_value(mc->gpio_cp_reset, 0); make_gpio_floating(mc->gpio_cp_off, false); gpio_set_value(mc->gpio_cp_on, 0); mif_err("---\n"); return 0; }
static int ss222_on(struct modem_ctl *mc) { struct link_device *ld = get_current_link(mc->iod); int cp_on = gpio_get_value(mc->gpio_cp_on); int cp_off = gpio_get_value(mc->gpio_cp_off); int cp_reset = gpio_get_value(mc->gpio_cp_reset); int cp_active = gpio_get_value(mc->gpio_phone_active); int cp_status = gpio_get_value(mc->gpio_cp_status); mif_err("+++\n"); mif_err("cp_on:%d cp_reset:%d ps_hold:%d cp_active:%d cp_status:%d\n", cp_on, cp_reset, cp_off, cp_active, cp_status); gpio_set_value(mc->gpio_pda_active, 1); if (!wake_lock_active(&mc->mc_wake_lock)) wake_lock(&mc->mc_wake_lock); mc->phone_state = STATE_OFFLINE; ld->mode = LINK_MODE_OFFLINE; /* Make PS_HOLD_OFF floating (Hi-Z) for CP ON */ make_gpio_floating(mc->gpio_cp_off, true); gpio_set_value(mc->gpio_cp_on, 0); msleep(100); gpio_set_value(mc->gpio_cp_reset, 0); msleep(500); gpio_set_value(mc->gpio_cp_on, 1); msleep(100); gpio_set_value(mc->gpio_cp_reset, 1); #if 0 c2c_reload(); #endif msleep(300); mif_err("---\n"); return 0; }