| .. | .. |
|---|
| 155 | 155 | int level2 = 0; |
|---|
| 156 | 156 | struct rk_headset_pdata *pdata = headset_info->pdata; |
|---|
| 157 | 157 | static unsigned int old_status = 0; |
|---|
| 158 | + int ret; |
|---|
| 158 | 159 | |
|---|
| 159 | 160 | printk("---headsetobserve_work---\n"); |
|---|
| 160 | 161 | mutex_lock(&headset_info->mutex_lock[HEADSET]); |
|---|
| .. | .. |
|---|
| 182 | 183 | headset_info->headset_status ? "in" : "out"); |
|---|
| 183 | 184 | if (headset_info->headset_status == HEADSET_IN) { |
|---|
| 184 | 185 | headset_info->cur_headset_status = BIT_HEADSET_NO_MIC; |
|---|
| 186 | + ret = gpio_direction_output(pdata->spk_ctl_gpio,0); |
|---|
| 187 | + if (ret < 0) { |
|---|
| 188 | + printk("spk_ctl_gpio set direction fail\n"); |
|---|
| 189 | + } |
|---|
| 185 | 190 | if (pdata->headset_insert_type == HEADSET_IN_HIGH) |
|---|
| 186 | 191 | irq_set_irq_type(headset_info->irq[HEADSET], |
|---|
| 187 | 192 | IRQF_TRIGGER_FALLING); |
|---|
| .. | .. |
|---|
| 196 | 201 | goto out; |
|---|
| 197 | 202 | } |
|---|
| 198 | 203 | } else if (headset_info->headset_status == HEADSET_OUT) { |
|---|
| 204 | + ret = gpio_direction_output(pdata->spk_ctl_gpio,1); |
|---|
| 205 | + if (ret < 0) { |
|---|
| 206 | + printk("spk_ctl_gpio set direction fail\n"); |
|---|
| 207 | + } |
|---|
| 199 | 208 | headset_info->hook_status = HOOK_UP; |
|---|
| 200 | 209 | if (headset_info->isHook_irq == enable) { |
|---|
| 201 | 210 | DBG("disable headset_hook irq\n"); |
|---|