From 5b8e8ee6c65a34d8aafaeb8e2eaa97e496c2567c Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Mon, 12 Feb 2007 00:55:15 -0800 Subject: [PATCH] [PATCH] ps3: add shutdown to virtual uart port driver framework PS3: Add a shutdown method to the PS3's virtual uart port driver framework Signed-off-by: Geert Uytterhoeven Signed-off-by: Geoff Levand Cc: James Simmons Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/ps3/vuart.c | 17 +++++++++++++++++ drivers/ps3/vuart.h | 1 + 2 files changed, 18 insertions(+) diff --git a/drivers/ps3/vuart.c b/drivers/ps3/vuart.c index a72da8f651f8..ef8fd4c30875 100644 --- a/drivers/ps3/vuart.c +++ b/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/drivers/ps3/vuart.h b/drivers/ps3/vuart.h index 11c421cf7a03..2cbf728a3a0b 100644 --- a/drivers/ps3/vuart.h +++ b/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);