On Wed, 17 Apr 2024, Parker Newman wrote: > From: Parker Newman <pnewman@xxxxxxxxxxxxxxx> > > Add an optional "board_init()" function pointer to struct exar8250_board > which is called once during probe prior to setting up the ports. It will > be used in subsequent patches of this series. > > Signed-off-by: Parker Newman <pnewman@xxxxxxxxxxxxxxx> > --- > Changes in v3: > - Renamed board_setup to board_init. > - Changed pci_err to dev_err_probe > - Added note above about checkpatch fixes > > Changes in v4: > - Removed checkpatch fixes, they will be in their own patch at the end > - Added pcidev to board_init() args to avoid needing to add to priv > > drivers/tty/serial/8250/8250_exar.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c > index 72385c7d2eda..f14f73d250bb 100644 > --- a/drivers/tty/serial/8250/8250_exar.c > +++ b/drivers/tty/serial/8250/8250_exar.c > @@ -177,12 +177,14 @@ struct exar8250_platform { > * struct exar8250_board - board information > * @num_ports: number of serial ports > * @reg_shift: describes UART register mapping in PCI memory > - * @setup: quirk run at ->probe() stage > + * @board_init: quirk run once at ->probe() stage before setting up ports > + * @setup: quirk run at ->probe() stage for each port > * @exit: quirk run at ->remove() stage > */ > struct exar8250_board { > unsigned int num_ports; > unsigned int reg_shift; > + int (*board_init)(struct exar8250 *priv, struct pci_dev *pcidev); > int (*setup)(struct exar8250 *, struct pci_dev *, > struct uart_8250_port *, int); > void (*exit)(struct pci_dev *pcidev); > @@ -773,6 +775,15 @@ exar_pci_probe(struct pci_dev *pcidev, const struct pci_device_id *ent) > if (rc) > return rc; > > + if (board->board_init) { > + rc = board->board_init(priv, pcidev); > + if (rc) { > + dev_err_probe(&pcidev->dev, rc, > + "failed to init serial board\n"); > + return rc; > + } > + } > + Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx> -- i.