struct fb_info *info = hdmi->info;
                unsigned long parent_rate = 0, hdmi_rate;
 
-               /* A device has been plugged in */
-               pm_runtime_get_sync(hdmi->dev);
-
                ret = sh_hdmi_read_edid(hdmi, &hdmi_rate, &parent_rate);
-               if (ret < 0) {
-                       pm_runtime_put(hdmi->dev);
+               if (ret < 0)
                        goto out;
-               }
 
                hdmi->hp_state = HDMI_HOTPLUG_EDID_DONE;
 
                /* Reconfigure the clock */
                ret = sh_hdmi_clk_configure(hdmi, hdmi_rate, parent_rate);
-               if (ret < 0) {
-                       pm_runtime_put(hdmi->dev);
+               if (ret < 0)
                        goto out;
-               }
 
                msleep(10);
                sh_hdmi_configure(hdmi);
                fb_set_suspend(hdmi->info, 1);
 
                console_unlock();
-               pm_runtime_put(hdmi->dev);
        }
 
 out:
        INIT_DELAYED_WORK(&hdmi->edid_work, sh_hdmi_edid_work_fn);
 
        pm_runtime_enable(&pdev->dev);
-       pm_runtime_resume(&pdev->dev);
+       pm_runtime_get_sync(&pdev->dev);
 
        /* Product and revision IDs are 0 in sh-mobile version */
        dev_info(&pdev->dev, "Detected HDMI controller 0x%x:0x%x\n",
 ecodec:
        free_irq(irq, hdmi);
 ereqirq:
-       pm_runtime_suspend(&pdev->dev);
+       pm_runtime_put(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
        iounmap(hdmi->base);
 emap:
        free_irq(irq, hdmi);
        /* Wait for already scheduled work */
        cancel_delayed_work_sync(&hdmi->edid_work);
-       pm_runtime_suspend(&pdev->dev);
+       pm_runtime_put(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
        clk_disable(hdmi->hdmi_clk);
        clk_put(hdmi->hdmi_clk);