|
@@ -393,17 +393,21 @@ static void gmux_notify_handler(acpi_handle device, u32 value, void *context)
|
|
|
complete(&gmux_data->powerchange_done);
|
|
|
}
|
|
|
|
|
|
-static int gmux_suspend(struct pnp_dev *pnp, pm_message_t state)
|
|
|
+static int gmux_suspend(struct device *dev)
|
|
|
{
|
|
|
+ struct pnp_dev *pnp = to_pnp_dev(dev);
|
|
|
struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp);
|
|
|
+
|
|
|
gmux_data->resume_client_id = gmux_active_client(gmux_data);
|
|
|
gmux_disable_interrupts(gmux_data);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int gmux_resume(struct pnp_dev *pnp)
|
|
|
+static int gmux_resume(struct device *dev)
|
|
|
{
|
|
|
+ struct pnp_dev *pnp = to_pnp_dev(dev);
|
|
|
struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp);
|
|
|
+
|
|
|
gmux_enable_interrupts(gmux_data);
|
|
|
gmux_switchto(gmux_data->resume_client_id);
|
|
|
if (gmux_data->power_state == VGA_SWITCHEROO_OFF)
|
|
@@ -605,13 +609,19 @@ static const struct pnp_device_id gmux_device_ids[] = {
|
|
|
{"", 0}
|
|
|
};
|
|
|
|
|
|
+static const struct dev_pm_ops gmux_dev_pm_ops = {
|
|
|
+ .suspend = gmux_suspend,
|
|
|
+ .resume = gmux_resume,
|
|
|
+};
|
|
|
+
|
|
|
static struct pnp_driver gmux_pnp_driver = {
|
|
|
.name = "apple-gmux",
|
|
|
.probe = gmux_probe,
|
|
|
.remove = gmux_remove,
|
|
|
.id_table = gmux_device_ids,
|
|
|
- .suspend = gmux_suspend,
|
|
|
- .resume = gmux_resume
|
|
|
+ .driver = {
|
|
|
+ .pm = &gmux_dev_pm_ops,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static int __init apple_gmux_init(void)
|