Exemplo n.º 1
0
static int lge_hsd_remove(struct platform_device *pdev)
{
	struct hsd_info *hi = (struct hsd_info *)platform_get_drvdata(pdev);

	HSD_DBG("lge_hsd_remove\n");

	zw_irqs_info_unregister(hi->irq_key);
	zw_irqs_info_unregister(hi->irq_detect);

	if (switch_get_state(&hi->sdev))
		remove_headset(hi);

	input_unregister_device(hi->input);
	switch_dev_unregister(&hi->sdev);

	free_irq(hi->irq_key, 0);
	free_irq(hi->irq_detect, 0);
	gpio_free(hi->gpio_detect);
	gpio_free(hi->gpio_key);
	gpio_free(hi->gpio_mic_en);

	mutex_destroy(&hi->mutex_lock);

	kfree(hi);

	return 0;
}
Exemplo n.º 2
0
static int anx7808_i2c_remove(struct i2c_client *client)
{
	struct anx7808_data *anx7808 = i2c_get_clientdata(client);
	int i = 0;

#ifdef CONFIG_ZERO_WAIT
	zw_irqs_info_unregister(client->irq);
	zw_notifier_chain_unregister(&zw_slimport_nb);
#endif

	for (i = 0; i < ARRAY_SIZE(slimport_device_attrs); i++)
		device_remove_file(&client->dev, &slimport_device_attrs[i]);
	free_irq(client->irq, anx7808);
	anx7808_free_gpio(anx7808);
	destroy_workqueue(anx7808->workqueue);
	wake_lock_destroy(&anx7808->slimport_lock);
	kfree(anx7808);
	return 0;
}