From 712d2b0f38d568edd574c329d469d0a1ac66008f Mon Sep 17 00:00:00 2001 From: Roman Kagan Date: Fri, 24 Aug 2007 20:22:52 +0400 Subject: [PATCH] --- yaml --- r: 67872 b: refs/heads/master c: ce0d9325b19555f05b08cbb1ea4c2393eec188ec h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/serial/bus.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0ad2ab7d0941..1aa3a3623469 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fdf99c9ec10cb9cd44be3ac0bd007a49ac6dc751 +refs/heads/master: ce0d9325b19555f05b08cbb1ea4c2393eec188ec diff --git a/trunk/drivers/usb/serial/bus.c b/trunk/drivers/usb/serial/bus.c index a47a24f8820d..0b14aea8ebd5 100644 --- a/trunk/drivers/usb/serial/bus.c +++ b/trunk/drivers/usb/serial/bus.c @@ -36,6 +36,16 @@ static int usb_serial_device_match (struct device *dev, struct device_driver *dr return 0; } +static ssize_t show_port_number(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_serial_port *port = to_usb_serial_port(dev); + + return sprintf(buf, "%d\n", port->number - port->serial->minor); +} + +static DEVICE_ATTR(port_number, S_IRUGO, show_port_number, NULL); + static int usb_serial_device_probe (struct device *dev) { struct usb_serial_driver *driver; @@ -62,6 +72,10 @@ static int usb_serial_device_probe (struct device *dev) goto exit; } + retval = device_create_file(dev, &dev_attr_port_number); + if (retval) + goto exit; + minor = port->number; tty_register_device (usb_serial_tty_driver, minor, dev); dev_info(&port->serial->dev->dev, @@ -84,6 +98,8 @@ static int usb_serial_device_remove (struct device *dev) return -ENODEV; } + device_remove_file(&port->dev, &dev_attr_port_number); + driver = port->serial->type; if (driver->port_remove) { if (!try_module_get(driver->driver.owner)) {