mirror of https://gitee.com/openkylin/linux.git
drm/tegra: dpaux: Disable interrupt when detached
When the DPAUX isn't attached to an SOR the interrupts are not useful. This also prevents a race that could potentially cause a crash on driver removal. Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
3227166c3b
commit
9e532b3ad9
|
@ -352,6 +352,8 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
|
|||
return err;
|
||||
}
|
||||
|
||||
disable_irq(dpaux->irq);
|
||||
|
||||
dpaux->aux.transfer = tegra_dpaux_transfer;
|
||||
dpaux->aux.dev = &pdev->dev;
|
||||
|
||||
|
@ -468,8 +470,10 @@ int tegra_dpaux_attach(struct tegra_dpaux *dpaux, struct tegra_output *output)
|
|||
enum drm_connector_status status;
|
||||
|
||||
status = tegra_dpaux_detect(dpaux);
|
||||
if (status == connector_status_connected)
|
||||
if (status == connector_status_connected) {
|
||||
enable_irq(dpaux->irq);
|
||||
return 0;
|
||||
}
|
||||
|
||||
usleep_range(1000, 2000);
|
||||
}
|
||||
|
@ -482,6 +486,8 @@ int tegra_dpaux_detach(struct tegra_dpaux *dpaux)
|
|||
unsigned long timeout;
|
||||
int err;
|
||||
|
||||
disable_irq(dpaux->irq);
|
||||
|
||||
err = regulator_disable(dpaux->vdd);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue