| .. | .. |
|---|
| 153 | 153 | { |
|---|
| 154 | 154 | int level = 0; |
|---|
| 155 | 155 | int level2 = 0; |
|---|
| 156 | + int ret; |
|---|
| 156 | 157 | struct rk_headset_pdata *pdata = headset_info->pdata; |
|---|
| 157 | 158 | static unsigned int old_status = 0; |
|---|
| 158 | 159 | |
|---|
| .. | .. |
|---|
| 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 | + } |
|---|
| 190 | + |
|---|
| 185 | 191 | if (pdata->headset_insert_type == HEADSET_IN_HIGH) |
|---|
| 186 | 192 | irq_set_irq_type(headset_info->irq[HEADSET], |
|---|
| 187 | 193 | IRQF_TRIGGER_FALLING); |
|---|
| .. | .. |
|---|
| 196 | 202 | goto out; |
|---|
| 197 | 203 | } |
|---|
| 198 | 204 | } else if (headset_info->headset_status == HEADSET_OUT) { |
|---|
| 205 | + ret = gpio_direction_output(pdata->spk_ctl_gpio,1); |
|---|
| 206 | + if (ret < 0) { |
|---|
| 207 | + printk("spk_ctl_gpio set direction fail\n"); |
|---|
| 208 | + } |
|---|
| 199 | 209 | headset_info->hook_status = HOOK_UP; |
|---|
| 200 | 210 | if (headset_info->isHook_irq == enable) { |
|---|
| 201 | 211 | DBG("disable headset_hook irq\n"); |
|---|