diff --git a/[refs] b/[refs] index a7a97d0a6a37..789f67e90644 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5e14ab8b5ecca8997406180e23761525f49a09a3 +refs/heads/master: 5b8e8ee6c65a34d8aafaeb8e2eaa97e496c2567c diff --git a/trunk/drivers/ps3/vuart.c b/trunk/drivers/ps3/vuart.c index a72da8f651f8..ef8fd4c30875 100644 --- a/trunk/drivers/ps3/vuart.c +++ b/trunk/drivers/ps3/vuart.c @@ -867,6 +867,22 @@ static int ps3_vuart_remove(struct device *_dev) return 0; } +static void ps3_vuart_shutdown(struct device *_dev) +{ + struct ps3_vuart_port_device *dev = to_ps3_vuart_port_device(_dev); + struct ps3_vuart_port_driver *drv = + to_ps3_vuart_port_driver(_dev->driver); + + dev_dbg(&dev->core, "%s:%d: %s\n", __func__, __LINE__, + dev->core.bus_id); + + if (drv->shutdown) + drv->shutdown(dev); + else + dev_dbg(&dev->core, "%s:%d: %s no shutdown method\n", __func__, + __LINE__, dev->core.bus_id); +} + /** * ps3_vuart - The vuart instance. * @@ -878,6 +894,7 @@ struct bus_type ps3_vuart = { .match = ps3_vuart_match, .probe = ps3_vuart_probe, .remove = ps3_vuart_remove, + .shutdown = ps3_vuart_shutdown, }; int __init ps3_vuart_init(void) diff --git a/trunk/drivers/ps3/vuart.h b/trunk/drivers/ps3/vuart.h index 11c421cf7a03..2cbf728a3a0b 100644 --- a/trunk/drivers/ps3/vuart.h +++ b/trunk/drivers/ps3/vuart.h @@ -30,6 +30,7 @@ struct ps3_vuart_port_driver { struct device_driver core; int (*probe)(struct ps3_vuart_port_device *); int (*remove)(struct ps3_vuart_port_device *); + void (*shutdown)(struct ps3_vuart_port_device *); int (*tx_event)(struct ps3_vuart_port_device *dev); int (*rx_event)(struct ps3_vuart_port_device *dev); int (*disconnect_event)(struct ps3_vuart_port_device *dev);