On 09/06/2012 08:39 PM, Tomas Hlavacek wrote: > On Thu, Sep 6, 2012 at 7:54 PM, Jiri Slaby <jslaby@xxxxxxx> wrote: >> On 09/06/2012 03:17 AM, Tomas Hlavacek wrote: >>> @@ -2362,8 +2392,8 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport) >>> * Register the port whether it's detected or not. This allows >>> * setserial to be used to alter this ports parameters. >>> */ >>> - tty_dev = tty_port_register_device(port, drv->tty_driver, uport->line, >>> - uport->dev); >>> + tty_dev = tty_register_device_attr(drv->tty_driver, uport->line, >>> + uport->dev, port, tty_dev_attr_groups); >> >> This makes me believe you have not tested the change at all? > > Thanks! I can't believe I missed that. (And I actually tested that, > but I have to admit that it was not enough apparently.) > > I will re-send the patch (after some additional testing and double-checking). Ok. A couple more questions... * why are you passing tty_port to the struct device's private data and not uart_port proper? Is this for some future use? * cannot be all those attribute structs const? * kdoc for tty_register_device_attr says that when TTY_DRIVER_DYNAMIC_DEV is not set, tty_register_device_attr *should* not be called. But it must not be called, otherwise it will fail and emit a warning as a bonus, right? * final remark. I would prefer declaration and code be delimited by a new line in uart_get_attr_uartclk: <===> + int ret; + + struct tty_port *port = dev_get_drvdata(dev); + struct uart_state *state = container_of(port, struct uart_state, port); + mutex_lock(&state->port.mutex); <===> Like: <===> struct tty_port *port = ...; struct uart_state *state = ...; int ret; mutex_lock(&state->port.mutex); <===> regards, -- js suse labs -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html