Commit 0348386d authored by Kumaravel Thiagarajan's avatar Kumaravel Thiagarajan Committed by Greg Kroah-Hartman
Browse files

serial: 8250_pci: Add serial8250_pci_setup_port definition in 8250_pcilib.c

parent 04a189c7
Loading
Loading
Loading
Loading
+3 −22
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <asm/io.h>

#include "8250.h"
#include "8250_pcilib.h"

/*
 * init function returns:
@@ -89,28 +90,7 @@ static int
setup_port(struct serial_private *priv, struct uart_8250_port *port,
	   u8 bar, unsigned int offset, int regshift)
{
	struct pci_dev *dev = priv->dev;

	if (bar >= PCI_STD_NUM_BARS)
		return -EINVAL;

	if (pci_resource_flags(dev, bar) & IORESOURCE_MEM) {
		if (!pcim_iomap(dev, bar, 0) && !pcim_iomap_table(dev))
			return -ENOMEM;

		port->port.iotype = UPIO_MEM;
		port->port.iobase = 0;
		port->port.mapbase = pci_resource_start(dev, bar) + offset;
		port->port.membase = pcim_iomap_table(dev)[bar] + offset;
		port->port.regshift = regshift;
	} else {
		port->port.iotype = UPIO_PORT;
		port->port.iobase = pci_resource_start(dev, bar) + offset;
		port->port.mapbase = 0;
		port->port.membase = NULL;
		port->port.regshift = 0;
	}
	return 0;
	return serial8250_pci_setup_port(priv->dev, port, bar, offset, regshift);
}

/*
@@ -5757,3 +5737,4 @@ module_pci_driver(serial_pci_driver);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Generic 8250/16x50 PCI serial probe module");
MODULE_DEVICE_TABLE(pci, serial_pci_tbl);
MODULE_IMPORT_NS(SERIAL_8250_PCI);
+40 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/*
 * 8250 PCI library.
 *
 * Copyright (C) 2001 Russell King, All Rights Reserved.
 */
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/pci.h>
#include <linux/types.h>

#include "8250.h"
#include "8250_pcilib.h"

int serial8250_pci_setup_port(struct pci_dev *dev, struct uart_8250_port *port,
		   u8 bar, unsigned int offset, int regshift)
{
	if (bar >= PCI_STD_NUM_BARS)
		return -EINVAL;

	if (pci_resource_flags(dev, bar) & IORESOURCE_MEM) {
		if (!pcim_iomap(dev, bar, 0) && !pcim_iomap_table(dev))
			return -ENOMEM;

		port->port.iotype = UPIO_MEM;
		port->port.iobase = 0;
		port->port.mapbase = pci_resource_start(dev, bar) + offset;
		port->port.membase = pcim_iomap_table(dev)[bar] + offset;
		port->port.regshift = regshift;
	} else {
		port->port.iotype = UPIO_PORT;
		port->port.iobase = pci_resource_start(dev, bar) + offset;
		port->port.mapbase = 0;
		port->port.membase = NULL;
		port->port.regshift = 0;
	}
	return 0;
}
EXPORT_SYMBOL_NS_GPL(serial8250_pci_setup_port, SERIAL_8250_PCI);
MODULE_LICENSE("GPL");
+15 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * 8250 PCI library header file.
 *
 * Copyright (C) 2001 Russell King, All Rights Reserved.
 */

#include <linux/types.h>

struct pci_dev;

struct uart_8250_port;

int serial8250_pci_setup_port(struct pci_dev *dev, struct uart_8250_port *port, u8 bar,
		   unsigned int offset, int regshift);
+4 −0
Original line number Diff line number Diff line
@@ -129,9 +129,13 @@ config SERIAL_8250_DMA
	  This builds DMA support that can be used with 8250/16650
	  compatible UART controllers that support DMA signaling.

config SERIAL_8250_PCILIB
	bool

config SERIAL_8250_PCI
	tristate "8250/16550 PCI device support"
	depends on SERIAL_8250 && PCI
	select SERIAL_8250_PCILIB
	default SERIAL_8250
	help
	  This builds standard PCI serial support. You may be able to
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ obj-$(CONFIG_SERIAL_8250) += 8250.o 8250_base.o
8250_base-$(CONFIG_SERIAL_8250_DMA)	+= 8250_dma.o
8250_base-$(CONFIG_SERIAL_8250_DWLIB)	+= 8250_dwlib.o
8250_base-$(CONFIG_SERIAL_8250_FINTEK)	+= 8250_fintek.o
8250_base-$(CONFIG_SERIAL_8250_PCILIB)	+= 8250_pcilib.o
obj-$(CONFIG_SERIAL_8250_PARISC)	+= 8250_parisc.o
obj-$(CONFIG_SERIAL_8250_PCI)		+= 8250_pci.o
obj-$(CONFIG_SERIAL_8250_EXAR)		+= 8250_exar.o