mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
080b47def5
Microsemi's "Switchtec" line of PCI switch devices is already well supported by the kernel with standard PCI switch drivers. However, the Switchtec device advertises a special management endpoint with a separate PCI function address and class code. This endpoint enables some additional functionality which includes: * Packet and Byte Counters * Switch Firmware Upgrades * Event and Error logs * Querying port link status * Custom user firmware commands Add a switchtec kernel module which provides PCI driver that exposes a char device. The char device provides userspace access to this interface through read, write and (optionally) poll calls. A userspace tool and library which utilizes this interface is available at [1]. This tool takes inspiration (and borrows some code) from nvme-cli [2]. The tool is largely complete at this time but additional features may be added in the future. [1] https://github.com/sbates130272/switchtec-user [2] https://github.com/linux-nvme/nvme-cli [Dan Carpenter <dan.carpenter@oracle.com>: don't invert error codes] [Christophe JAILLET <christophe.jaillet@wanadoo.fr>: fix switchtec_dev_open() error handling] Tested-by: Krishna Dhulipala <krishnad@fb.com> Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Stephen Bates <stephen.bates@microsemi.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Wei Zhang <wzhang@fb.com> Reviewed-by: Jens Axboe <axboe@fb.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
72 lines
1.7 KiB
Makefile
72 lines
1.7 KiB
Makefile
#
|
|
# Makefile for the PCI bus specific drivers.
|
|
#
|
|
|
|
obj-y += access.o bus.o probe.o host-bridge.o remove.o pci.o \
|
|
pci-driver.o search.o pci-sysfs.o rom.o setup-res.o \
|
|
irq.o vpd.o setup-bus.o vc.o
|
|
obj-$(CONFIG_PROC_FS) += proc.o
|
|
obj-$(CONFIG_SYSFS) += slot.o
|
|
|
|
obj-$(CONFIG_PCI_QUIRKS) += quirks.o
|
|
|
|
# Build PCI Express stuff if needed
|
|
obj-$(CONFIG_PCIEPORTBUS) += pcie/
|
|
|
|
# Build the PCI Hotplug drivers if we were asked to
|
|
obj-$(CONFIG_HOTPLUG_PCI) += hotplug/
|
|
ifdef CONFIG_HOTPLUG_PCI
|
|
obj-y += hotplug-pci.o
|
|
endif
|
|
|
|
# Build the PCI MSI interrupt support
|
|
obj-$(CONFIG_PCI_MSI) += msi.o
|
|
|
|
# Build the Hypertransport interrupt support
|
|
obj-$(CONFIG_HT_IRQ) += htirq.o
|
|
|
|
obj-$(CONFIG_PCI_ATS) += ats.o
|
|
obj-$(CONFIG_PCI_IOV) += iov.o
|
|
|
|
#
|
|
# Some architectures use the generic PCI setup functions
|
|
#
|
|
obj-$(CONFIG_ALPHA) += setup-irq.o
|
|
obj-$(CONFIG_ARC) += setup-irq.o
|
|
obj-$(CONFIG_ARM) += setup-irq.o
|
|
obj-$(CONFIG_ARM64) += setup-irq.o
|
|
obj-$(CONFIG_UNICORE32) += setup-irq.o
|
|
obj-$(CONFIG_SUPERH) += setup-irq.o
|
|
obj-$(CONFIG_MIPS) += setup-irq.o
|
|
obj-$(CONFIG_TILE) += setup-irq.o
|
|
obj-$(CONFIG_SPARC_LEON) += setup-irq.o
|
|
obj-$(CONFIG_M68K) += setup-irq.o
|
|
|
|
#
|
|
# ACPI Related PCI FW Functions
|
|
# ACPI _DSM provided firmware instance and string name
|
|
#
|
|
obj-$(CONFIG_ACPI) += pci-acpi.o
|
|
|
|
# SMBIOS provided firmware instance and labels
|
|
obj-$(CONFIG_PCI_LABEL) += pci-label.o
|
|
|
|
# Intel MID platform PM support
|
|
obj-$(CONFIG_X86_INTEL_MID) += pci-mid.o
|
|
|
|
obj-$(CONFIG_PCI_SYSCALL) += syscall.o
|
|
|
|
obj-$(CONFIG_PCI_STUB) += pci-stub.o
|
|
|
|
obj-$(CONFIG_PCI_ECAM) += ecam.o
|
|
|
|
obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen-pcifront.o
|
|
|
|
obj-$(CONFIG_OF) += of.o
|
|
|
|
ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
|
|
|
|
# PCI host controller drivers
|
|
obj-y += host/
|
|
obj-y += switch/
|