On 2017-05-09 00:50, Dong Aisheng wrote: > This is used to dynamically check the SoC specific lpuart properies. > Currently only the checking of 32 bit register width is added which > functions the same as before. More will be added later for supporting > new chips. > > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: Jiri Slaby <jslaby@xxxxxxxx> > Cc: Fugang Duan <fugang.duan@xxxxxxx> > Cc: Stefan Agner <stefan@xxxxxxxx> > Cc: Mingkai Hu <Mingkai.Hu@xxxxxxx> > Cc: Yangbo Lu <yangbo.lu@xxxxxxx> > Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx> > --- > drivers/tty/serial/fsl_lpuart.c | 25 ++++++++++++++++++------- > 1 file changed, 18 insertions(+), 7 deletions(-) > > diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c > index 15df1ba7..cd4e905 100644 > --- a/drivers/tty/serial/fsl_lpuart.c > +++ b/drivers/tty/serial/fsl_lpuart.c > @@ -258,13 +258,21 @@ struct lpuart_port { > wait_queue_head_t dma_wait; > }; > > +struct lpuart_soc_data { > + bool is_32; > +}; > + > +static struct lpuart_soc_data vf_data = { > + .is_32 = false, > +}; > + > +static struct lpuart_soc_data ls_data = { > + .is_32 = true, > +}; This could be const I guess? -- Stefan > + > static const struct of_device_id lpuart_dt_ids[] = { > - { > - .compatible = "fsl,vf610-lpuart", > - }, > - { > - .compatible = "fsl,ls1021a-lpuart", > - }, > + { .compatible = "fsl,vf610-lpuart", .data = &vf_data, }, > + { .compatible = "fsl,ls1021a-lpuart", .data = &ls_data, }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, lpuart_dt_ids); > @@ -1971,6 +1979,9 @@ static struct uart_driver lpuart_reg = { > > static int lpuart_probe(struct platform_device *pdev) > { > + const struct of_device_id *of_id = of_match_device(lpuart_dt_ids, > + &pdev->dev); > + const struct lpuart_soc_data *sdata = of_id->data; > struct device_node *np = pdev->dev.of_node; > struct lpuart_port *sport; > struct resource *res; > @@ -1988,7 +1999,7 @@ static int lpuart_probe(struct platform_device *pdev) > return ret; > } > sport->port.line = ret; > - sport->lpuart32 = of_device_is_compatible(np, "fsl,ls1021a-lpuart"); > + sport->lpuart32 = sdata->is_32; > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > sport->port.membase = devm_ioremap_resource(&pdev->dev, res); -- 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