Merge remote-tracking branch 'lsk/v3.10/topic/hrtimer' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / drivers / mfd / tc6393xb.c
index 15e1463e5e1334258a101b6b584d10fd4f3495a1..17fe83e81ea40744a8c1b7d2dadfbfaf4d44c092 100644 (file)
@@ -263,6 +263,17 @@ static int tc6393xb_ohci_disable(struct platform_device *dev)
        return 0;
 }
 
+static int tc6393xb_ohci_suspend(struct platform_device *dev)
+{
+       struct tc6393xb_platform_data *tcpd = dev_get_platdata(dev->dev.parent);
+
+       /* We can't properly store/restore OHCI state, so fail here */
+       if (tcpd->resume_restore)
+               return -EBUSY;
+
+       return tc6393xb_ohci_disable(dev);
+}
+
 static int tc6393xb_fb_enable(struct platform_device *dev)
 {
        struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent);
@@ -403,7 +414,7 @@ static struct mfd_cell tc6393xb_cells[] = {
                .num_resources = ARRAY_SIZE(tc6393xb_ohci_resources),
                .resources = tc6393xb_ohci_resources,
                .enable = tc6393xb_ohci_enable,
-               .suspend = tc6393xb_ohci_disable,
+               .suspend = tc6393xb_ohci_suspend,
                .resume = tc6393xb_ohci_enable,
                .disable = tc6393xb_ohci_disable,
        },