File tree Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -177,12 +177,14 @@ struct exar8250_platform {
177
177
* struct exar8250_board - board information
178
178
* @num_ports: number of serial ports
179
179
* @reg_shift: describes UART register mapping in PCI memory
180
- * @setup: quirk run at ->probe() stage
180
+ * @board_init: quirk run once at ->probe() stage before setting up ports
181
+ * @setup: quirk run at ->probe() stage for each port
181
182
* @exit: quirk run at ->remove() stage
182
183
*/
183
184
struct exar8250_board {
184
185
unsigned int num_ports ;
185
186
unsigned int reg_shift ;
187
+ int (* board_init )(struct exar8250 * priv , struct pci_dev * pcidev );
186
188
int (* setup )(struct exar8250 * , struct pci_dev * ,
187
189
struct uart_8250_port * , int );
188
190
void (* exit )(struct pci_dev * pcidev );
@@ -773,6 +775,15 @@ exar_pci_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
773
775
if (rc )
774
776
return rc ;
775
777
778
+ if (board -> board_init ) {
779
+ rc = board -> board_init (priv , pcidev );
780
+ if (rc ) {
781
+ dev_err_probe (& pcidev -> dev , rc ,
782
+ "failed to init serial board\n" );
783
+ return rc ;
784
+ }
785
+ }
786
+
776
787
for (i = 0 ; i < nr_ports && i < maxnr ; i ++ ) {
777
788
rc = board -> setup (priv , pcidev , & uart , i );
778
789
if (rc ) {
You can’t perform that action at this time.
0 commit comments