On Tue, Mar 29, 2022 at 05:24:25PM +0200, Miquel Raynal wrote: > DW UART controllers can be synthesized without the CPR register. > In this case, allow to the platform information to provide a CPR value. > + const struct dw8250_platform_data *pdata = device_get_match_data(p->dev); Hmm... So, we will have two functions that do the same. Perhaps you may store somewhere the pdata pointer (or contents) once and call these functions at the time that the pdata is known to be set. That's how usual pattern looks like. Calling device_get_match_data() several times is unusual and potentially might be error prone. ... > reg = dw8250_readl_ext(p, DW_UART_CPR); > + if (!reg) { > + if (pdata) > + reg = pdata->cpr; If you store the content this becomes something like: reg = data->pdata.cpr; But, please experiment a bit with it and choose the best option. > + dev_dbg(p->dev, "CPR is not available, using %x instead\n", reg); > + } > + No need of this blank line. > if (!reg) > return; -- With Best Regards, Andy Shevchenko