> > --- > > drivers/tty/serial/xilinx_uartps.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/tty/serial/xilinx_uartps.c > > b/drivers/tty/serial/xilinx_uartps.c > > index 9dcc4d855ddd..ece7f6caa994 100644 > > --- a/drivers/tty/serial/xilinx_uartps.c > > +++ b/drivers/tty/serial/xilinx_uartps.c > > @@ -1565,6 +1565,8 @@ static int cdns_uart_probe(struct platform_device > > *pdev) > > > > cdns_uart_data->pclk = devm_clk_get(&pdev->dev, "pclk"); > > if (PTR_ERR(cdns_uart_data->pclk) == -EPROBE_DEFER) { > > + /* If we end up defering then set uartps_major back to 0 */ > > + uartps_major = 0; > > rc = PTR_ERR(cdns_uart_data->pclk); > > goto err_out_unregister_driver; > > } > > > > I expect that this can be problematic for all failures in probe. > What about this? Makes sense, this worked for me. Although, I think the patch is malformed by the email line lengths.
-Paul > Just setting up global major number if first instance > pass. > Also cleanup should be likely done in remove function too. > > > diff --git a/drivers/tty/serial/xilinx_uartps.c > b/drivers/tty/serial/xilinx_uartps.c > index f145946f659b..c1550b45d59b 100644 > --- a/drivers/tty/serial/xilinx_uartps.c > +++ b/drivers/tty/serial/xilinx_uartps.c > @@ -1550,7 +1550,6 @@ static int cdns_uart_probe(struct platform_device > *pdev) > goto err_out_id; > } > > - uartps_major = cdns_uart_uart_driver->tty_driver->major; > cdns_uart_data->cdns_uart_driver = cdns_uart_uart_driver; > > /* > @@ -1680,6 +1679,7 @@ static int cdns_uart_probe(struct platform_device > *pdev) > console_port = NULL; > #endif > > + uartps_major = cdns_uart_uart_driver->tty_driver->major; > cdns_uart_data->cts_override = > of_property_read_bool(pdev->dev.of_node, > > "cts-override"); > return 0; > > Thanks, > Michal