hc
2024-03-22 619f0f87159c5dbd2755b1b0a0eb35784be84e7a
kernel/drivers/headset_observe/rk_headset.c
....@@ -153,6 +153,7 @@
153153 {
154154 int level = 0;
155155 int level2 = 0;
156
+ int ret;
156157 struct rk_headset_pdata *pdata = headset_info->pdata;
157158 static unsigned int old_status = 0;
158159
....@@ -177,11 +178,15 @@
177178 pr_warn("old_status == headset_info->headset_status\n");
178179 goto out;
179180 }
180
- DBG("(headset in is %s)headset status is %s\n",
181
+ DBG("(troy test headset in is %s)headset status is %s\n",
181182 pdata->headset_insert_type ? "high level" : "low level",
182183 headset_info->headset_status ? "in" : "out");
183184 if (headset_info->headset_status == HEADSET_IN) {
184185 headset_info->cur_headset_status = BIT_HEADSET_NO_MIC;
186
+ ret = gpio_direction_output(pdata->spk_ctl_gpio,1);
187
+ if (ret < 0) {
188
+ printk("spk_ctl_gpio set direction fail\n");
189
+ }
185190 if (pdata->headset_insert_type == HEADSET_IN_HIGH)
186191 irq_set_irq_type(headset_info->irq[HEADSET],
187192 IRQF_TRIGGER_FALLING);
....@@ -196,6 +201,10 @@
196201 goto out;
197202 }
198203 } else if (headset_info->headset_status == HEADSET_OUT) {
204
+ ret = gpio_direction_output(pdata->spk_ctl_gpio,0);
205
+ if (ret < 0) {
206
+ printk("spk_ctl_gpio set direction fail\n");
207
+ }
199208 headset_info->hook_status = HOOK_UP;
200209 if (headset_info->isHook_irq == enable) {
201210 DBG("disable headset_hook irq\n");