File Index
Files and directories
Sign in
FILE

8250_pcilib.c

File preview with syntax highlighting.

linux-6.19.14/drivers/tty/serial/8250/8250_pcilib.c C
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * 8250 PCI library.
 4 *
 5 * Copyright (C) 2001 Russell King, All Rights Reserved.
 6 */
 7#include <linux/errno.h>
 8#include <linux/ioport.h>
 9#include <linux/pci.h>
10#include <linux/types.h>
11
12#include "8250.h"
13#include "8250_pcilib.h"
14
15int serial_8250_warn_need_ioport(struct pci_dev *dev)
16{
17	dev_warn(&dev->dev,
18		 "Serial port not supported because of missing I/O resource\n");
19
20	return -ENXIO;
21}
22EXPORT_SYMBOL_NS_GPL(serial_8250_warn_need_ioport, "SERIAL_8250_PCI");
23
24int serial8250_pci_setup_port(struct pci_dev *dev, struct uart_8250_port *port,
25		   u8 bar, unsigned int offset, int regshift, void __iomem *iomem)
26{
27	if (bar >= PCI_STD_NUM_BARS)
28		return -EINVAL;
29
30	if (pci_resource_flags(dev, bar) & IORESOURCE_MEM) {
31		port->port.iotype = UPIO_MEM;
32		port->port.iobase = 0;
33		port->port.mapbase = pci_resource_start(dev, bar) + offset;
34		port->port.membase = iomem + offset;
35		port->port.regshift = regshift;
36	} else if (IS_ENABLED(CONFIG_HAS_IOPORT)) {
37		port->port.iotype = UPIO_PORT;
38		port->port.iobase = pci_resource_start(dev, bar) + offset;
39		port->port.mapbase = 0;
40		port->port.membase = NULL;
41		port->port.regshift = 0;
42	} else {
43		return serial_8250_warn_need_ioport(dev);
44	}
45	return 0;
46}
47EXPORT_SYMBOL_NS_GPL(serial8250_pci_setup_port, "SERIAL_8250_PCI");
48MODULE_DESCRIPTION("8250 PCI library");
49MODULE_LICENSE("GPL");
~/ Read-only file preview.