init_waitqueue_head(<9611uxc->wq);
INIT_WORK(<9611uxc->work, lt9611uxc_hpd_work);
- ret = devm_request_threaded_irq(dev, client->irq, NULL,
- lt9611uxc_irq_thread_handler,
- IRQF_ONESHOT, "lt9611uxc", lt9611uxc);
+ ret = request_threaded_irq(client->irq, NULL,
+ lt9611uxc_irq_thread_handler,
+ IRQF_ONESHOT, "lt9611uxc", lt9611uxc);
if (ret) {
dev_err(dev, "failed to request irq\n");
goto err_disable_regulators;
return lt9611uxc_audio_init(dev, lt9611uxc);
err_remove_bridge:
+ free_irq(client->irq, lt9611uxc);
+ cancel_work_sync(<9611uxc->work);
drm_bridge_remove(<9611uxc->bridge);
err_disable_regulators:
{
struct lt9611uxc *lt9611uxc = i2c_get_clientdata(client);
- disable_irq(client->irq);
+ free_irq(client->irq, lt9611uxc);
cancel_work_sync(<9611uxc->work);
lt9611uxc_audio_exit(lt9611uxc);
drm_bridge_remove(<9611uxc->bridge);