--- 7f488fa3f8a647ee399d1d46116ae76b529aac3c +++ bcbb68f0a8c477421af5d4c09c7bdfde59abb274 @@ -36,7 +36,6 @@ #include #include #include -#include /* FSA9480 I2C registers */ #define FSA9485_REG_DEVID 0x01 @@ -154,10 +153,7 @@ struct fsa9485_usbsw { struct input_dev *input; int previous_key; - int dock_ready; - struct delayed_work init_work; - struct delayed_work audio_work; struct mutex mutex; int adc; int deskdock; @@ -213,38 +209,6 @@ static void EnableFSA9480Interrupts(void } -#if defined(CONFIG_MACH_AEGIS2) -void fsa9485_checkandhookaudiodockfornoise(int value) -{ - struct i2c_client *client = local_usbsw->client; - int ret = 0; - - if (isDeskdockconnected) { - ret = i2c_smbus_write_byte_data(client, - FSA9485_REG_MANSW1, value); - - if (ret < 0) - dev_err(&client->dev, "%s: err %d\n", - __func__, ret); - - ret = i2c_smbus_read_byte_data(client, - FSA9485_REG_CTRL); - - if (ret < 0) - dev_err(&client->dev, "%s: err %d\n", - __func__, ret); - - ret = i2c_smbus_write_byte_data(client, - FSA9485_REG_CTRL, - ret & ~CON_MANUAL_SW & ~CON_RAW_DATA); - if (ret < 0) - dev_err(&client->dev, - "%s: err %d\n", __func__, ret); - } else - pr_info("Dock is not connect\n"); -} -#endif - void FSA9485_CheckAndHookAudioDock(int value) { struct i2c_client *client = local_usbsw->client; @@ -668,14 +632,12 @@ static int fsa9485_detect_dev(struct fsa if (usbsw->dock_attached) pdata->dock_cb(FSA9485_DETACHED_DOCK); - if (local_usbsw->dock_ready == 1) - if (adc == 0x10) - val2 = DEV_SMARTDOCK; - else if (adc == 0x12) - val2 = DEV_AUDIO_DOCK; + if (adc == 0x10) + val2 = DEV_SMARTDOCK; + else if (adc == 0x12) + val2 = DEV_AUDIO_DOCK; - dev_info(&client->dev, "dev1: 0x%x, dev2: 0x%x adc : 0x%x\n", - val1, val2, adc); + dev_info(&client->dev, "dev1: 0x%x, dev2: 0x%x adc : 0x%x\n", val1, val2, adc); /* Attached */ if (val1 || val2) { @@ -683,14 +645,8 @@ static int fsa9485_detect_dev(struct fsa if (val1 & DEV_USB || val2 & DEV_T2_USB_MASK) { dev_info(&client->dev, "usb connect\n"); - if (pdata->usb_cb) { - if (force_fast_charge != 0) { - pdata->charger_cb(FSA9485_ATTACHED); - } else { - pdata->usb_cb(FSA9485_ATTACHED); - } - } - + if (pdata->usb_cb) + pdata->usb_cb(FSA9485_ATTACHED); if (usbsw->mansw) { ret = i2c_smbus_write_byte_data(client, FSA9485_REG_MANSW1, usbsw->mansw); @@ -856,7 +812,7 @@ static int fsa9485_detect_dev(struct fsa dev_err(&client->dev, "%s: err %d\n", __func__, ret); - if (pdata->audio_dock_cb) + if (pdata->smartdock_cb) pdata->audio_dock_cb(FSA9485_ATTACHED); } /* Detached */ @@ -965,7 +921,7 @@ static int fsa9485_detect_dev(struct fsa dev_err(&client->dev, "%s: err %d\n", __func__, ret); - if (pdata->audio_dock_cb) + if (pdata->smartdock_cb) pdata->audio_dock_cb(FSA9485_DETACHED); usbsw->adc = 0; } @@ -1159,6 +1115,7 @@ static irqreturn_t fsa9485_irq_thread(in } return IRQ_HANDLED; } + return IRQ_HANDLED; } @@ -1203,20 +1160,6 @@ static void fsa9485_init_detect(struct w "failed to enable irq init %s\n", __func__); } -static void fsa9485_delayed_audio(struct work_struct *work) -{ - struct fsa9485_usbsw *usbsw = container_of(work, - struct fsa9485_usbsw, audio_work.work); - - dev_info(&usbsw->client->dev, "%s\n", __func__); - - local_usbsw->dock_ready = 1; - - mutex_lock(&usbsw->mutex); - fsa9485_detect_dev(usbsw); - mutex_unlock(&usbsw->mutex); -} - static int __devinit fsa9485_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -1328,13 +1271,10 @@ static int __devinit fsa9485_probe(struc if (usbsw->pdata->set_init_flag) usbsw->pdata->set_init_flag(); - - local_usbsw->dock_ready = 0; /* initial cable detection */ INIT_DELAYED_WORK(&usbsw->init_work, fsa9485_init_detect); schedule_delayed_work(&usbsw->init_work, msecs_to_jiffies(2700)); - INIT_DELAYED_WORK(&usbsw->audio_work, fsa9485_delayed_audio); - schedule_delayed_work(&usbsw->audio_work, msecs_to_jiffies(20000)); + return 0; err_create_file_reset_switch: @@ -1359,7 +1299,6 @@ static int __devexit fsa9485_remove(stru struct fsa9485_usbsw *usbsw = i2c_get_clientdata(client); cancel_delayed_work(&usbsw->init_work); - cancel_delayed_work(&usbsw->audio_work); if (client->irq) { disable_irq_wake(client->irq); free_irq(client->irq, usbsw);