diff options
author | Karel Kočí <cynerd@email.cz> | 2022-10-15 23:01:29 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2022-10-16 13:20:32 +0200 |
commit | 462a088c474832b19ff2730de1e6bea66d399c23 (patch) | |
tree | a512b3b451afde09a9cb06449bd7a3bdc5a8bdb4 /pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch | |
parent | d5514ca4aeddc711639f46024528becfff7c2a70 (diff) | |
download | nixturris-462a088c474832b19ff2730de1e6bea66d399c23.tar.gz nixturris-462a088c474832b19ff2730de1e6bea66d399c23.tar.bz2 nixturris-462a088c474832b19ff2730de1e6bea66d399c23.zip |
Add Turris kernel (includes patches from OpenWrt)
Diffstat (limited to 'pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch')
-rw-r--r-- | pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch b/pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch new file mode 100644 index 0000000..5d0dad6 --- /dev/null +++ b/pkgs/patches-linux-5.15/0016-PCI-pci-bridge-emul-Add-support-for-new-flag-PCI_BRI.patch @@ -0,0 +1,62 @@ +From 369e0346a0e54c96ef8776bd32d810c4e1cbbb1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org> +Date: Tue, 16 Nov 2021 16:53:33 +0100 +Subject: [PATCH 16/90] PCI: pci-bridge-emul: Add support for new flag + PCI_BRIDGE_EMUL_NO_IO_FORWARD +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Like PCI_BRIDGE_EMUL_NO_PREFMEM_FORWARD, this new flag specifies that +emulated PCI bridge does not support forwarding of IO requests in given +range between primary and secondary buses. This flag should be used as +argument for pci_bridge_emul_init() for hardware setup without IO support. + +Setting this flag cause that IO base and limit registers are read-only. + +Signed-off-by: Pali Rohár <pali@kernel.org> +--- + drivers/pci/pci-bridge-emul.c | 9 +++++++++ + drivers/pci/pci-bridge-emul.h | 6 ++++++ + 2 files changed, 15 insertions(+) + +diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c +index ceacba03e714..a16f9e30099e 100644 +--- a/drivers/pci/pci-bridge-emul.c ++++ b/drivers/pci/pci-bridge-emul.c +@@ -382,6 +382,15 @@ int pci_bridge_emul_init(struct pci_bridge_emul *bridge, + bridge->pci_regs_behavior[PCI_PREF_MEMORY_BASE / 4].rw = 0; + } + ++ if (flags & PCI_BRIDGE_EMUL_NO_IO_FORWARD) { ++ bridge->pci_regs_behavior[PCI_COMMAND / 4].ro |= PCI_COMMAND_IO; ++ bridge->pci_regs_behavior[PCI_COMMAND / 4].rw &= ~PCI_COMMAND_IO; ++ bridge->pci_regs_behavior[PCI_IO_BASE / 4].ro |= GENMASK(15, 0); ++ bridge->pci_regs_behavior[PCI_IO_BASE / 4].rw &= ~GENMASK(15, 0); ++ bridge->pci_regs_behavior[PCI_IO_BASE_UPPER16 / 4].ro = ~0; ++ bridge->pci_regs_behavior[PCI_IO_BASE_UPPER16 / 4].rw = 0; ++ } ++ + return 0; + } + EXPORT_SYMBOL_GPL(pci_bridge_emul_init); +diff --git a/drivers/pci/pci-bridge-emul.h b/drivers/pci/pci-bridge-emul.h +index 087b5fa01bcf..4953274cac18 100644 +--- a/drivers/pci/pci-bridge-emul.h ++++ b/drivers/pci/pci-bridge-emul.h +@@ -125,6 +125,12 @@ enum { + * requests between primary and secondary buses. + */ + PCI_BRIDGE_EMUL_NO_PREFMEM_FORWARD = BIT(0), ++ ++ /* ++ * PCI bridge does not support forwarding of IO requests between ++ * primary and secondary buses. ++ */ ++ PCI_BRIDGE_EMUL_NO_IO_FORWARD = BIT(1), + }; + + int pci_bridge_emul_init(struct pci_bridge_emul *bridge, +-- +2.34.1 + |