From ec3dde578a969ea4b0a8c3d45e02d73abab1b2d3 Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Fri, 8 Dec 2006 02:39:26 -0800 Subject: [PATCH] [PATCH] Char: istallion, dynamic tty device register tty device dynamically according to the count of board ports. Signed-off-by: Jiri Slaby Cc: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/char/istallion.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index a1755186f7b4..f1752c81993b 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -3846,6 +3846,10 @@ static int stli_findeisabrds(void) stli_brds[brdp->brdnr] = brdp; found++; + + for (i = 0; i < brdp->nrports; i++) + tty_register_device(stli_serial, + brdp->brdnr * STL_MAXPORTS + i, NULL); } return found; @@ -3872,6 +3876,7 @@ static int __devinit stli_pciprobe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct stlibrd *brdp; + unsigned int i; int brdnr, retval = -EIO; retval = pci_enable_device(pdev); @@ -3912,6 +3917,10 @@ static int __devinit stli_pciprobe(struct pci_dev *pdev, brdp->enable = NULL; brdp->disable = NULL; + for (i = 0; i < brdp->nrports; i++) + tty_register_device(stli_serial, brdp->brdnr * STL_MAXPORTS + i, + &pdev->dev); + return 0; err_null: stli_brds[brdp->brdnr] = NULL; @@ -3992,6 +4001,10 @@ static int stli_initbrds(void) } stli_brds[brdp->brdnr] = brdp; found++; + + for (i = 0; i < brdp->nrports; i++) + tty_register_device(stli_serial, + brdp->brdnr * STL_MAXPORTS + i, NULL); } retval = stli_findeisabrds(); @@ -4596,7 +4609,7 @@ static int __init istallion_module_init(void) stli_serial->type = TTY_DRIVER_TYPE_SERIAL; stli_serial->subtype = SERIAL_TYPE_NORMAL; stli_serial->init_termios = stli_deftermios; - stli_serial->flags = TTY_DRIVER_REAL_RAW; + stli_serial->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(stli_serial, &stli_ops); retval = tty_register_driver(stli_serial);