diff options
| -rw-r--r-- | arch/arm/mach-omap2/omap_device.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index ebd83690ba48..f7ff3b9dad87 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c | |||
| @@ -191,12 +191,22 @@ static int _omap_device_notifier_call(struct notifier_block *nb, | |||
| 191 | { | 191 | { |
| 192 | struct platform_device *pdev = to_platform_device(dev); | 192 | struct platform_device *pdev = to_platform_device(dev); |
| 193 | struct omap_device *od; | 193 | struct omap_device *od; |
| 194 | int err; | ||
| 194 | 195 | ||
| 195 | switch (event) { | 196 | switch (event) { |
| 196 | case BUS_NOTIFY_DEL_DEVICE: | 197 | case BUS_NOTIFY_DEL_DEVICE: |
| 197 | if (pdev->archdata.od) | 198 | if (pdev->archdata.od) |
| 198 | omap_device_delete(pdev->archdata.od); | 199 | omap_device_delete(pdev->archdata.od); |
| 199 | break; | 200 | break; |
| 201 | case BUS_NOTIFY_UNBOUND_DRIVER: | ||
| 202 | od = to_omap_device(pdev); | ||
| 203 | if (od && (od->_state == OMAP_DEVICE_STATE_ENABLED)) { | ||
| 204 | dev_info(dev, "enabled after unload, idling\n"); | ||
| 205 | err = omap_device_idle(pdev); | ||
| 206 | if (err) | ||
| 207 | dev_err(dev, "failed to idle\n"); | ||
| 208 | } | ||
| 209 | break; | ||
| 200 | case BUS_NOTIFY_ADD_DEVICE: | 210 | case BUS_NOTIFY_ADD_DEVICE: |
| 201 | if (pdev->dev.of_node) | 211 | if (pdev->dev.of_node) |
| 202 | omap_device_build_from_dt(pdev); | 212 | omap_device_build_from_dt(pdev); |
