mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
serial: exar: add optional board_init function
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@connecttech.com> Link: https://lore.kernel.org/r/0e72a3154114c733283ff273bc1e31456ee101f4.1713382717.git.pnewman@connecttech.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
477f6ee694
commit
393b520a99
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < nr_ports && i < maxnr; i++) {
|
||||
rc = board->setup(priv, pcidev, &uart, i);
|
||||
if (rc) {
|
||||
|
Loading…
Reference in New Issue
Block a user