mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-15 06:57:08 +00:00
kernel: bump 5.10 to 5.10.92
Patches automatically rebased. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
This commit is contained in:
parent
7229981994
commit
61e58f7cec
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .91
|
||||
LINUX_KERNEL_HASH-5.10.91 = 62cefb84c1c63a048520ff74eca4b16ce375956c351c8227bf9e4869cd8595d1
|
||||
LINUX_VERSION-5.10 = .92
|
||||
LINUX_KERNEL_HASH-5.10.92 = d5750380a51d3f1d7ab1dd64451752e321c987e0b0099bcd452187d9a76ebb52
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/core/hcd.c
|
||||
+++ b/drivers/usb/core/hcd.c
|
||||
@@ -1945,6 +1945,16 @@ reset:
|
||||
@@ -1952,6 +1952,16 @@ reset:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ it on BCM4708 family.
|
||||
|
||||
--- a/drivers/usb/host/xhci-plat.c
|
||||
+++ b/drivers/usb/host/xhci-plat.c
|
||||
@@ -87,6 +87,8 @@ static int xhci_priv_resume_quirk(struct
|
||||
@@ -77,6 +77,8 @@ static int xhci_priv_resume_quirk(struct
|
||||
static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
|
||||
{
|
||||
struct xhci_plat_priv *priv = xhci_to_priv(xhci);
|
||||
@ -28,7 +28,7 @@ it on BCM4708 family.
|
||||
|
||||
/*
|
||||
* As of now platform drivers don't provide MSI support so we ensure
|
||||
@@ -94,6 +96,9 @@ static void xhci_plat_quirks(struct devi
|
||||
@@ -84,6 +86,9 @@ static void xhci_plat_quirks(struct devi
|
||||
* dev struct in order to setup MSI
|
||||
*/
|
||||
xhci->quirks |= XHCI_PLAT | priv->quirks;
|
||||
|
@ -27,11 +27,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/pci-bridge-emul.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c
|
||||
index db97cddfc85e..a4af1a533d71 100644
|
||||
--- a/drivers/pci/pci-bridge-emul.c
|
||||
+++ b/drivers/pci/pci-bridge-emul.c
|
||||
@@ -265,7 +265,11 @@ int pci_bridge_emul_init(struct pci_bridge_emul *bridge,
|
||||
@@ -265,7 +265,11 @@ int pci_bridge_emul_init(struct pci_brid
|
||||
{
|
||||
BUILD_BUG_ON(sizeof(bridge->conf) != PCI_BRIDGE_CONF_END);
|
||||
|
||||
@ -44,6 +42,3 @@ index db97cddfc85e..a4af1a533d71 100644
|
||||
bridge->conf.header_type = PCI_HEADER_TYPE_BRIDGE;
|
||||
bridge->conf.cache_line_size = 0x10;
|
||||
bridge->conf.status = cpu_to_le16(PCI_STATUS_CAP_LIST);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -19,11 +19,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/pci-bridge-emul.c | 43 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 43 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c
|
||||
index a4af1a533d71..0d1177e52a43 100644
|
||||
--- a/drivers/pci/pci-bridge-emul.c
|
||||
+++ b/drivers/pci/pci-bridge-emul.c
|
||||
@@ -251,6 +251,49 @@ struct pci_bridge_reg_behavior pcie_cap_regs_behavior[PCI_CAP_PCIE_SIZEOF / 4] =
|
||||
@@ -251,6 +251,49 @@ struct pci_bridge_reg_behavior pcie_cap_
|
||||
.ro = GENMASK(15, 0) | PCI_EXP_RTSTA_PENDING,
|
||||
.w1c = PCI_EXP_RTSTA_PME,
|
||||
},
|
||||
@ -73,6 +71,3 @@ index a4af1a533d71..0d1177e52a43 100644
|
||||
};
|
||||
|
||||
/*
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -19,11 +19,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 15 +++++++++++----
|
||||
1 file changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index c5300d49807a..25af189a1052 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -884,8 +884,13 @@ advk_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge,
|
||||
@@ -882,8 +882,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru
|
||||
case PCI_CAP_LIST_ID:
|
||||
case PCI_EXP_DEVCAP:
|
||||
case PCI_EXP_DEVCTL:
|
||||
@ -37,7 +35,7 @@ index c5300d49807a..25af189a1052 100644
|
||||
default:
|
||||
return PCI_BRIDGE_EMUL_NOT_HANDLED;
|
||||
}
|
||||
@@ -899,10 +904,6 @@ advk_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge,
|
||||
@@ -897,10 +902,6 @@ advk_pci_bridge_emul_pcie_conf_write(str
|
||||
struct advk_pcie *pcie = bridge->data;
|
||||
|
||||
switch (reg) {
|
||||
@ -48,7 +46,7 @@ index c5300d49807a..25af189a1052 100644
|
||||
case PCI_EXP_LNKCTL:
|
||||
advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg);
|
||||
if (new & PCI_EXP_LNKCTL_RL)
|
||||
@@ -924,6 +925,12 @@ advk_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge,
|
||||
@@ -922,6 +923,12 @@ advk_pci_bridge_emul_pcie_conf_write(str
|
||||
advk_writel(pcie, new, PCIE_ISR0_REG);
|
||||
break;
|
||||
|
||||
@ -61,6 +59,3 @@ index c5300d49807a..25af189a1052 100644
|
||||
default:
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -21,11 +21,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 25af189a1052..71ce9f02d596 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -116,6 +116,7 @@
|
||||
@@ -114,6 +114,7 @@
|
||||
#define PCIE_MSI_ADDR_HIGH_REG (CONTROL_BASE_ADDR + 0x54)
|
||||
#define PCIE_MSI_STATUS_REG (CONTROL_BASE_ADDR + 0x58)
|
||||
#define PCIE_MSI_MASK_REG (CONTROL_BASE_ADDR + 0x5C)
|
||||
@ -33,7 +31,7 @@ index 25af189a1052..71ce9f02d596 100644
|
||||
#define PCIE_MSI_PAYLOAD_REG (CONTROL_BASE_ADDR + 0x9C)
|
||||
#define PCIE_MSI_DATA_MASK GENMASK(15, 0)
|
||||
|
||||
@@ -571,6 +572,7 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -577,6 +578,7 @@ static void advk_pcie_setup_hw(struct ad
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG);
|
||||
|
||||
/* Clear all interrupts */
|
||||
@ -41,7 +39,7 @@ index 25af189a1052..71ce9f02d596 100644
|
||||
advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_REG);
|
||||
advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG);
|
||||
advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
|
||||
@@ -583,7 +585,7 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -589,7 +591,7 @@ static void advk_pcie_setup_hw(struct ad
|
||||
advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG);
|
||||
|
||||
/* Unmask all MSIs */
|
||||
@ -50,7 +48,7 @@ index 25af189a1052..71ce9f02d596 100644
|
||||
|
||||
/* Enable summary interrupt for GIC SPI source */
|
||||
reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK);
|
||||
@@ -1399,7 +1401,7 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
@@ -1397,7 +1399,7 @@ static void advk_pcie_handle_msi(struct
|
||||
|
||||
msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG);
|
||||
msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG);
|
||||
@ -59,6 +57,3 @@ index 25af189a1052..71ce9f02d596 100644
|
||||
|
||||
for (msi_idx = 0; msi_idx < MSI_IRQ_NUM; msi_idx++) {
|
||||
if (!(BIT(msi_idx) & msi_status))
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 71ce9f02d596..6348584c33be 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1697,11 +1697,13 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1696,11 +1696,13 @@ static int advk_pcie_remove(struct platf
|
||||
struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie);
|
||||
int i;
|
||||
|
||||
@ -34,6 +32,3 @@ index 71ce9f02d596..6348584c33be 100644
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -17,11 +17,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 6348584c33be..12eae05f3d10 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1695,6 +1695,7 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1694,6 +1694,7 @@ static int advk_pcie_remove(struct platf
|
||||
{
|
||||
struct advk_pcie *pcie = platform_get_drvdata(pdev);
|
||||
struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie);
|
||||
@ -29,7 +27,7 @@ index 6348584c33be..12eae05f3d10 100644
|
||||
int i;
|
||||
|
||||
/* Remove PCI bus with all devices */
|
||||
@@ -1703,6 +1704,11 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1702,6 +1703,11 @@ static int advk_pcie_remove(struct platf
|
||||
pci_remove_root_bus(bridge->bus);
|
||||
pci_unlock_rescan_remove();
|
||||
|
||||
@ -41,6 +39,3 @@ index 6348584c33be..12eae05f3d10 100644
|
||||
/* Remove IRQ domains */
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 12eae05f3d10..08b34accfe2f 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1709,6 +1709,27 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1708,6 +1708,27 @@ static int advk_pcie_remove(struct platf
|
||||
val &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
|
||||
advk_writel(pcie, val, PCIE_CORE_CMD_STATUS_REG);
|
||||
|
||||
@ -48,6 +46,3 @@ index 12eae05f3d10..08b34accfe2f 100644
|
||||
/* Remove IRQ domains */
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -19,11 +19,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 08b34accfe2f..b3d89cb449b6 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1734,6 +1734,9 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1733,6 +1733,9 @@ static int advk_pcie_remove(struct platf
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
|
||||
@ -33,6 +31,3 @@ index 08b34accfe2f..b3d89cb449b6 100644
|
||||
/* Disable outbound address windows mapping */
|
||||
for (i = 0; i < OB_WIN_COUNT; i++)
|
||||
advk_pcie_disable_ob_win(pcie, i);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -18,11 +18,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index b3d89cb449b6..271ebecee965 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1737,6 +1737,10 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1736,6 +1736,10 @@ static int advk_pcie_remove(struct platf
|
||||
/* Free config space for emulated root bridge */
|
||||
pci_bridge_emul_cleanup(&pcie->bridge);
|
||||
|
||||
@ -33,6 +31,3 @@ index b3d89cb449b6..271ebecee965 100644
|
||||
/* Disable outbound address windows mapping */
|
||||
for (i = 0; i < OB_WIN_COUNT; i++)
|
||||
advk_pcie_disable_ob_win(pcie, i);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -18,11 +18,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 271ebecee965..e5c88f1c177b 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1741,6 +1741,11 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1740,6 +1740,11 @@ static int advk_pcie_remove(struct platf
|
||||
if (pcie->reset_gpio)
|
||||
gpiod_set_value_cansleep(pcie->reset_gpio, 1);
|
||||
|
||||
@ -34,6 +32,3 @@ index 271ebecee965..e5c88f1c177b 100644
|
||||
/* Disable outbound address windows mapping */
|
||||
for (i = 0; i < OB_WIN_COUNT; i++)
|
||||
advk_pcie_disable_ob_win(pcie, i);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e5c88f1c177b..2a82c4652c28 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1750,6 +1750,9 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1749,6 +1749,9 @@ static int advk_pcie_remove(struct platf
|
||||
for (i = 0; i < OB_WIN_COUNT; i++)
|
||||
advk_pcie_disable_ob_win(pcie, i);
|
||||
|
||||
@ -30,6 +28,3 @@ index e5c88f1c177b..2a82c4652c28 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -19,8 +19,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
drivers/phy/marvell/phy-mvebu-a3700-comphy.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
index 810f25a47632..cc534a5c4b3b 100644
|
||||
--- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
+++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
@@ -29,7 +29,7 @@
|
||||
@ -41,7 +39,7 @@ index 810f25a47632..cc534a5c4b3b 100644
|
||||
#define COMPHY_FW_SPEED_5G 3
|
||||
#define COMPHY_FW_SPEED_5_15625G 4 /* XFI 5G */
|
||||
#define COMPHY_FW_SPEED_6G 5
|
||||
@@ -84,14 +84,14 @@ static const struct mvebu_a3700_comphy_conf mvebu_a3700_comphy_modes[] = {
|
||||
@@ -84,14 +84,14 @@ static const struct mvebu_a3700_comphy_c
|
||||
MVEBU_A3700_COMPHY_CONF_ETH(0, PHY_INTERFACE_MODE_SGMII, 1,
|
||||
COMPHY_FW_MODE_SGMII),
|
||||
MVEBU_A3700_COMPHY_CONF_ETH(0, PHY_INTERFACE_MODE_2500BASEX, 1,
|
||||
@ -58,7 +56,7 @@ index 810f25a47632..cc534a5c4b3b 100644
|
||||
/* lane 2 */
|
||||
MVEBU_A3700_COMPHY_CONF_GEN(2, PHY_MODE_SATA, 0,
|
||||
COMPHY_FW_MODE_SATA),
|
||||
@@ -205,7 +205,7 @@ static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
@@ -205,7 +205,7 @@ static int mvebu_a3700_comphy_power_on(s
|
||||
COMPHY_FW_SPEED_1_25G);
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_2500BASEX:
|
||||
@ -67,6 +65,3 @@ index 810f25a47632..cc534a5c4b3b 100644
|
||||
lane->id);
|
||||
fw_param = COMPHY_FW_NET(fw_mode, lane->port,
|
||||
COMPHY_FW_SPEED_3_125G);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -17,8 +17,6 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
drivers/phy/marvell/phy-mvebu-a3700-comphy.c | 6 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
index cc534a5c4b3b..6781488cfc58 100644
|
||||
--- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
+++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
@@ -33,18 +33,12 @@
|
||||
@ -40,6 +38,3 @@ index cc534a5c4b3b..6781488cfc58 100644
|
||||
#define COMPHY_FW_SPEED_MAX 0x3F
|
||||
|
||||
#define COMPHY_FW_MODE(mode) ((mode) << 12)
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -214,11 +214,9 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
include/linux/mtd/mtd.h | 2 ++
|
||||
4 files changed, 60 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
|
||||
index 665fd9020b76..fe7626b5020e 100644
|
||||
--- a/drivers/mtd/mtdpart.c
|
||||
+++ b/drivers/mtd/mtdpart.c
|
||||
@@ -38,10 +38,11 @@ static struct mtd_info *allocate_partition(struct mtd_info *parent,
|
||||
@@ -40,10 +40,11 @@ static struct mtd_info *allocate_partiti
|
||||
struct mtd_info *master = mtd_get_master(parent);
|
||||
int wr_alignment = (parent->flags & MTD_NO_ERASE) ?
|
||||
master->writesize : master->erasesize;
|
||||
@ -231,7 +229,7 @@ index 665fd9020b76..fe7626b5020e 100644
|
||||
char *name;
|
||||
u64 tmp;
|
||||
|
||||
@@ -143,6 +144,7 @@ static struct mtd_info *allocate_partition(struct mtd_info *parent,
|
||||
@@ -145,6 +146,7 @@ static struct mtd_info *allocate_partiti
|
||||
int i, max = parent->numeraseregions;
|
||||
u64 end = child->part.offset + child->part.size;
|
||||
struct mtd_erase_region_info *regions = parent->eraseregions;
|
||||
@ -239,7 +237,7 @@ index 665fd9020b76..fe7626b5020e 100644
|
||||
|
||||
/* Find the first erase regions which is part of this
|
||||
* partition. */
|
||||
@@ -153,15 +155,24 @@ static struct mtd_info *allocate_partition(struct mtd_info *parent,
|
||||
@@ -155,15 +157,24 @@ static struct mtd_info *allocate_partiti
|
||||
if (i > 0)
|
||||
i--;
|
||||
|
||||
@ -265,7 +263,7 @@ index 665fd9020b76..fe7626b5020e 100644
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -169,26 +180,43 @@ static struct mtd_info *allocate_partition(struct mtd_info *parent,
|
||||
@@ -171,26 +182,43 @@ static struct mtd_info *allocate_partiti
|
||||
* exposes several regions with different erasesize. Adjust
|
||||
* wr_alignment accordingly.
|
||||
*/
|
||||
@ -319,8 +317,6 @@ index 665fd9020b76..fe7626b5020e 100644
|
||||
}
|
||||
|
||||
child->size = child->part.size;
|
||||
diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
|
||||
index 24cd25de2b8b..09df9f1a8127 100644
|
||||
--- a/drivers/mtd/spi-nor/Kconfig
|
||||
+++ b/drivers/mtd/spi-nor/Kconfig
|
||||
@@ -10,6 +10,16 @@ menuconfig MTD_SPI_NOR
|
||||
@ -340,11 +336,9 @@ index 24cd25de2b8b..09df9f1a8127 100644
|
||||
config MTD_SPI_NOR_USE_4K_SECTORS
|
||||
bool "Use small 4096 B erase sectors"
|
||||
default y
|
||||
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
|
||||
index bd2c7717eb10..43d9b54e7edd 100644
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -1262,6 +1262,8 @@ static u8 spi_nor_convert_3to4_erase(u8 opcode)
|
||||
@@ -1075,6 +1075,8 @@ static u8 spi_nor_convert_3to4_erase(u8
|
||||
|
||||
static bool spi_nor_has_uniform_erase(const struct spi_nor *nor)
|
||||
{
|
||||
@ -353,7 +347,7 @@ index bd2c7717eb10..43d9b54e7edd 100644
|
||||
return !!nor->params->erase_map.uniform_erase_type;
|
||||
}
|
||||
|
||||
@@ -2381,6 +2383,7 @@ static int spi_nor_select_erase(struct spi_nor *nor)
|
||||
@@ -2560,6 +2562,7 @@ static int spi_nor_select_erase(struct s
|
||||
{
|
||||
struct spi_nor_erase_map *map = &nor->params->erase_map;
|
||||
const struct spi_nor_erase_type *erase = NULL;
|
||||
@ -361,7 +355,7 @@ index bd2c7717eb10..43d9b54e7edd 100644
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
u32 wanted_size = nor->info->sector_size;
|
||||
int i;
|
||||
@@ -2413,8 +2416,9 @@ static int spi_nor_select_erase(struct spi_nor *nor)
|
||||
@@ -2592,8 +2595,9 @@ static int spi_nor_select_erase(struct s
|
||||
*/
|
||||
for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
|
||||
if (map->erase_type[i].size) {
|
||||
@ -373,7 +367,7 @@ index bd2c7717eb10..43d9b54e7edd 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2422,6 +2426,8 @@ static int spi_nor_select_erase(struct spi_nor *nor)
|
||||
@@ -2601,6 +2605,8 @@ static int spi_nor_select_erase(struct s
|
||||
return -EINVAL;
|
||||
|
||||
mtd->erasesize = erase->size;
|
||||
@ -382,11 +376,9 @@ index bd2c7717eb10..43d9b54e7edd 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
|
||||
index a89955f3cbc8..33eafa27da50 100644
|
||||
--- a/include/linux/mtd/mtd.h
|
||||
+++ b/include/linux/mtd/mtd.h
|
||||
@@ -243,6 +243,8 @@ struct mtd_info {
|
||||
@@ -242,6 +242,8 @@ struct mtd_info {
|
||||
* information below if they desire
|
||||
*/
|
||||
uint32_t erasesize;
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/Kconfig
|
||||
+++ b/drivers/mtd/spi-nor/Kconfig
|
||||
@@ -24,6 +24,17 @@ config MTD_SPI_NOR_USE_4K_SECTORS
|
||||
@@ -34,6 +34,17 @@ config MTD_SPI_NOR_USE_4K_SECTORS
|
||||
Please note that some tools/drivers/filesystems may not work with
|
||||
4096 B erase size (e.g. UBIFS requires 15 KiB as a minimum).
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
endif # MTD_SPI_NOR
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -2786,6 +2786,21 @@ static void spi_nor_info_init_params(str
|
||||
@@ -2792,6 +2792,21 @@ static void spi_nor_info_init_params(str
|
||||
*/
|
||||
erase_mask = 0;
|
||||
i = 0;
|
||||
@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (info->flags & SECT_4K_PMC) {
|
||||
erase_mask |= BIT(i);
|
||||
spi_nor_set_erase_type(&map->erase_type[i], 4096u,
|
||||
@@ -2797,6 +2812,7 @@ static void spi_nor_info_init_params(str
|
||||
@@ -2803,6 +2818,7 @@ static void spi_nor_info_init_params(str
|
||||
SPINOR_OP_BE_4K);
|
||||
i++;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+};
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -2026,6 +2026,7 @@ static const struct spi_nor_manufacturer
|
||||
@@ -2028,6 +2028,7 @@ static const struct spi_nor_manufacturer
|
||||
&spi_nor_winbond,
|
||||
&spi_nor_xilinx,
|
||||
&spi_nor_xmc,
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -1447,6 +1447,23 @@ destroy_erase_cmd_list:
|
||||
@@ -1449,6 +1449,23 @@ destroy_erase_cmd_list:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
/*
|
||||
* Erase an address range on the nor chip. The address range may extend
|
||||
* one or more erase sectors. Return an error is there is a problem erasing.
|
||||
@@ -1474,6 +1491,10 @@ static int spi_nor_erase(struct mtd_info
|
||||
@@ -1476,6 +1493,10 @@ static int spi_nor_erase(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -54,7 +54,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
/* whole-chip erase? */
|
||||
if (len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) {
|
||||
unsigned long timeout;
|
||||
@@ -1533,6 +1554,7 @@ static int spi_nor_erase(struct mtd_info
|
||||
@@ -1535,6 +1556,7 @@ static int spi_nor_erase(struct mtd_info
|
||||
ret = spi_nor_write_disable(nor);
|
||||
|
||||
erase_err:
|
||||
@ -62,7 +62,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
|
||||
return ret;
|
||||
@@ -1872,7 +1894,9 @@ static int spi_nor_lock(struct mtd_info
|
||||
@@ -1874,7 +1896,9 @@ static int spi_nor_lock(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -72,7 +72,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
return ret;
|
||||
@@ -1887,7 +1911,9 @@ static int spi_nor_unlock(struct mtd_inf
|
||||
@@ -1889,7 +1913,9 @@ static int spi_nor_unlock(struct mtd_inf
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
return ret;
|
||||
@@ -1902,7 +1928,9 @@ static int spi_nor_is_locked(struct mtd_
|
||||
@@ -1904,7 +1930,9 @@ static int spi_nor_is_locked(struct mtd_
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
return ret;
|
||||
@@ -2095,6 +2123,10 @@ static int spi_nor_read(struct mtd_info
|
||||
@@ -2097,6 +2125,10 @@ static int spi_nor_read(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -103,7 +103,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
while (len) {
|
||||
loff_t addr = from;
|
||||
|
||||
@@ -2118,6 +2150,7 @@ static int spi_nor_read(struct mtd_info
|
||||
@@ -2120,6 +2152,7 @@ static int spi_nor_read(struct mtd_info
|
||||
ret = 0;
|
||||
|
||||
read_err:
|
||||
@ -111,7 +111,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
return ret;
|
||||
}
|
||||
@@ -2140,6 +2173,10 @@ static int spi_nor_write(struct mtd_info
|
||||
@@ -2142,6 +2175,10 @@ static int spi_nor_write(struct mtd_info
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -122,7 +122,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
for (i = 0; i < len; ) {
|
||||
ssize_t written;
|
||||
loff_t addr = to + i;
|
||||
@@ -2182,6 +2219,7 @@ static int spi_nor_write(struct mtd_info
|
||||
@@ -2184,6 +2221,7 @@ static int spi_nor_write(struct mtd_info
|
||||
}
|
||||
|
||||
write_err:
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
||||
spi_nor_unlock_and_unprep(nor);
|
||||
return ret;
|
||||
}
|
||||
@@ -2977,9 +3015,13 @@ static int spi_nor_init(struct spi_nor *
|
||||
@@ -2983,9 +3021,13 @@ static int spi_nor_init(struct spi_nor *
|
||||
* reboots (e.g., crashes). Warn the user (or hopefully, system
|
||||
* designer) that this is bad.
|
||||
*/
|
||||
|
@ -64,7 +64,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
mutex_lock(&mtd_table_mutex);
|
||||
--- a/include/linux/mtd/mtd.h
|
||||
+++ b/include/linux/mtd/mtd.h
|
||||
@@ -696,6 +696,8 @@ extern struct mtd_info *get_mtd_device(s
|
||||
@@ -698,6 +698,8 @@ extern struct mtd_info *get_mtd_device(s
|
||||
extern int __get_mtd_device(struct mtd_info *mtd);
|
||||
extern void __put_mtd_device(struct mtd_info *mtd);
|
||||
extern struct mtd_info *get_mtd_device_nm(const char *name);
|
||||
|
@ -16,8 +16,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 6 +-----
|
||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 226bce2f98f6..a573fc1aa4dd 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -37,10 +37,6 @@
|
||||
@ -31,7 +29,7 @@ index 226bce2f98f6..a573fc1aa4dd 100644
|
||||
/* PIO registers base address and register offsets */
|
||||
#define PIO_BASE_ADDR 0x4000
|
||||
#define PIO_CTRL (PIO_BASE_ADDR + 0x0)
|
||||
@@ -967,7 +963,7 @@ static int advk_sw_pci_bridge_init(struct advk_pcie *pcie)
|
||||
@@ -967,7 +963,7 @@ static int advk_sw_pci_bridge_init(struc
|
||||
bridge->conf.pref_mem_limit = cpu_to_le16(PCI_PREF_RANGE_TYPE_64);
|
||||
|
||||
/* Support interrupt A for MSI feature */
|
||||
@ -40,6 +38,3 @@ index 226bce2f98f6..a573fc1aa4dd 100644
|
||||
|
||||
/* Indicates supports for Completion Retry Status */
|
||||
bridge->pcie_conf.rootcap = cpu_to_le16(PCI_EXP_RTCAP_CRSVIS);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -25,11 +25,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 13 ++++++-------
|
||||
1 file changed, 6 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index a573fc1aa4dd..1c6980a78975 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1391,7 +1391,7 @@ static void advk_pcie_remove_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1391,7 +1391,7 @@ static void advk_pcie_remove_irq_domain(
|
||||
static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 msi_val, msi_mask, msi_status, msi_idx;
|
||||
@ -38,7 +36,7 @@ index a573fc1aa4dd..1c6980a78975 100644
|
||||
|
||||
msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG);
|
||||
msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG);
|
||||
@@ -1401,13 +1401,12 @@ static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
@@ -1401,13 +1401,12 @@ static void advk_pcie_handle_msi(struct
|
||||
if (!(BIT(msi_idx) & msi_status))
|
||||
continue;
|
||||
|
||||
@ -57,6 +55,3 @@ index a573fc1aa4dd..1c6980a78975 100644
|
||||
}
|
||||
|
||||
advk_writel(pcie, PCIE_ISR0_MSI_INT_PENDING,
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -30,11 +30,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 16 ++++++----------
|
||||
1 file changed, 6 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 1c6980a78975..e68773527171 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1187,7 +1187,7 @@ static void advk_msi_irq_compose_msi_msg(struct irq_data *data,
|
||||
@@ -1187,7 +1187,7 @@ static void advk_msi_irq_compose_msi_msg
|
||||
|
||||
msg->address_lo = lower_32_bits(msi_msg);
|
||||
msg->address_hi = upper_32_bits(msi_msg);
|
||||
@ -43,7 +41,7 @@ index 1c6980a78975..e68773527171 100644
|
||||
}
|
||||
|
||||
static int advk_msi_set_affinity(struct irq_data *irq_data,
|
||||
@@ -1204,15 +1204,11 @@ static int advk_msi_irq_domain_alloc(struct irq_domain *domain,
|
||||
@@ -1204,15 +1204,11 @@ static int advk_msi_irq_domain_alloc(str
|
||||
int hwirq, i;
|
||||
|
||||
mutex_lock(&pcie->msi_used_lock);
|
||||
@ -63,7 +61,7 @@ index 1c6980a78975..e68773527171 100644
|
||||
|
||||
for (i = 0; i < nr_irqs; i++)
|
||||
irq_domain_set_info(domain, virq + i, hwirq + i,
|
||||
@@ -1230,7 +1226,7 @@ static void advk_msi_irq_domain_free(struct irq_domain *domain,
|
||||
@@ -1230,7 +1226,7 @@ static void advk_msi_irq_domain_free(str
|
||||
struct advk_pcie *pcie = domain->host_data;
|
||||
|
||||
mutex_lock(&pcie->msi_used_lock);
|
||||
@ -72,6 +70,3 @@ index 1c6980a78975..e68773527171 100644
|
||||
mutex_unlock(&pcie->msi_used_lock);
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -21,8 +21,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 48 +++++++++++++++------------
|
||||
1 file changed, 26 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e68773527171..01dfe70d9c2c 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -275,6 +275,7 @@ struct advk_pcie {
|
||||
@ -33,7 +31,7 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
struct irq_domain *irq_domain;
|
||||
struct irq_chip irq_chip;
|
||||
raw_spinlock_t irq_lock;
|
||||
@@ -1440,21 +1441,26 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1440,21 +1441,26 @@ static void advk_pcie_handle_int(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,7 +68,7 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
}
|
||||
|
||||
static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie)
|
||||
@@ -1521,7 +1527,7 @@ static int advk_pcie_probe(struct platform_device *pdev)
|
||||
@@ -1521,7 +1527,7 @@ static int advk_pcie_probe(struct platfo
|
||||
struct advk_pcie *pcie;
|
||||
struct pci_host_bridge *bridge;
|
||||
struct resource_entry *entry;
|
||||
@ -79,7 +77,7 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
|
||||
bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct advk_pcie));
|
||||
if (!bridge)
|
||||
@@ -1609,17 +1615,9 @@ static int advk_pcie_probe(struct platform_device *pdev)
|
||||
@@ -1609,17 +1615,9 @@ static int advk_pcie_probe(struct platfo
|
||||
if (IS_ERR(pcie->base))
|
||||
return PTR_ERR(pcie->base);
|
||||
|
||||
@ -100,7 +98,7 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
|
||||
pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node,
|
||||
"reset-gpios", 0,
|
||||
@@ -1668,11 +1666,14 @@ static int advk_pcie_probe(struct platform_device *pdev)
|
||||
@@ -1668,11 +1666,14 @@ static int advk_pcie_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -115,7 +113,7 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
return ret;
|
||||
@@ -1720,6 +1721,9 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1720,6 +1721,9 @@ static int advk_pcie_remove(struct platf
|
||||
advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG);
|
||||
advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
|
||||
|
||||
@ -125,6 +123,3 @@ index e68773527171..01dfe70d9c2c 100644
|
||||
/* Remove IRQ domains */
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 01dfe70d9c2c..4be05b52d835 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1437,7 +1437,9 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1437,7 +1437,9 @@ static void advk_pcie_handle_int(struct
|
||||
PCIE_ISR1_REG);
|
||||
|
||||
virq = irq_find_mapping(pcie->irq_domain, i);
|
||||
@ -31,6 +29,3 @@ index 01dfe70d9c2c..4be05b52d835 100644
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -23,8 +23,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 26 ++++++++++++--------------
|
||||
1 file changed, 12 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 4be05b52d835..c7bd6b123857 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -281,8 +281,6 @@ struct advk_pcie {
|
||||
@ -36,7 +34,7 @@ index 4be05b52d835..c7bd6b123857 100644
|
||||
struct msi_domain_info msi_domain_info;
|
||||
DECLARE_BITMAP(msi_used, MSI_IRQ_NUM);
|
||||
struct mutex msi_used_lock;
|
||||
@@ -1197,6 +1195,12 @@ static int advk_msi_set_affinity(struct irq_data *irq_data,
|
||||
@@ -1197,6 +1195,12 @@ static int advk_msi_set_affinity(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -49,7 +47,7 @@ index 4be05b52d835..c7bd6b123857 100644
|
||||
static int advk_msi_irq_domain_alloc(struct irq_domain *domain,
|
||||
unsigned int virq,
|
||||
unsigned int nr_irqs, void *args)
|
||||
@@ -1213,7 +1217,7 @@ static int advk_msi_irq_domain_alloc(struct irq_domain *domain,
|
||||
@@ -1213,7 +1217,7 @@ static int advk_msi_irq_domain_alloc(str
|
||||
|
||||
for (i = 0; i < nr_irqs; i++)
|
||||
irq_domain_set_info(domain, virq + i, hwirq + i,
|
||||
@ -58,7 +56,7 @@ index 4be05b52d835..c7bd6b123857 100644
|
||||
domain->host_data, handle_simple_irq,
|
||||
NULL, NULL);
|
||||
|
||||
@@ -1283,29 +1287,23 @@ static const struct irq_domain_ops advk_pcie_irq_domain_ops = {
|
||||
@@ -1283,29 +1287,23 @@ static const struct irq_domain_ops advk_
|
||||
.xlate = irq_domain_xlate_onecell,
|
||||
};
|
||||
|
||||
@ -93,6 +91,3 @@ index 4be05b52d835..c7bd6b123857 100644
|
||||
|
||||
msi_msg_phys = virt_to_phys(&pcie->msi_msg);
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -15,8 +15,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index c7bd6b123857..b5e5c922ad0d 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -281,7 +281,6 @@ struct advk_pcie {
|
||||
@ -27,7 +25,7 @@ index c7bd6b123857..b5e5c922ad0d 100644
|
||||
DECLARE_BITMAP(msi_used, MSI_IRQ_NUM);
|
||||
struct mutex msi_used_lock;
|
||||
u16 msi_msg;
|
||||
@@ -1291,20 +1290,20 @@ static struct irq_chip advk_msi_irq_chip = {
|
||||
@@ -1291,20 +1290,20 @@ static struct irq_chip advk_msi_irq_chip
|
||||
.name = "advk-MSI",
|
||||
};
|
||||
|
||||
@ -54,7 +52,7 @@ index c7bd6b123857..b5e5c922ad0d 100644
|
||||
msi_msg_phys = virt_to_phys(&pcie->msi_msg);
|
||||
|
||||
advk_writel(pcie, lower_32_bits(msi_msg_phys),
|
||||
@@ -1320,7 +1319,8 @@ static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1320,7 +1319,8 @@ static int advk_pcie_init_msi_irq_domain
|
||||
|
||||
pcie->msi_domain =
|
||||
pci_msi_create_irq_domain(of_node_to_fwnode(node),
|
||||
@ -64,6 +62,3 @@ index c7bd6b123857..b5e5c922ad0d 100644
|
||||
if (!pcie->msi_domain) {
|
||||
irq_domain_remove(pcie->msi_inner_domain);
|
||||
return -ENOMEM;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -19,11 +19,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index b5e5c922ad0d..e641ad566488 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1299,7 +1299,6 @@ static struct msi_domain_info advk_msi_domain_info = {
|
||||
@@ -1299,7 +1299,6 @@ static struct msi_domain_info advk_msi_d
|
||||
static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie)
|
||||
{
|
||||
struct device *dev = &pcie->pdev->dev;
|
||||
@ -31,7 +29,7 @@ index b5e5c922ad0d..e641ad566488 100644
|
||||
phys_addr_t msi_msg_phys;
|
||||
|
||||
mutex_init(&pcie->msi_used_lock);
|
||||
@@ -1318,7 +1317,7 @@ static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1318,7 +1317,7 @@ static int advk_pcie_init_msi_irq_domain
|
||||
return -ENOMEM;
|
||||
|
||||
pcie->msi_domain =
|
||||
@ -40,6 +38,3 @@ index b5e5c922ad0d..e641ad566488 100644
|
||||
&advk_msi_domain_info,
|
||||
pcie->msi_inner_domain);
|
||||
if (!pcie->msi_domain) {
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -18,11 +18,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e641ad566488..5c887772fa97 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -578,15 +578,17 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -578,15 +578,17 @@ static void advk_pcie_setup_hw(struct ad
|
||||
advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
|
||||
|
||||
/* Disable All ISR0/1 Sources */
|
||||
@ -44,6 +42,3 @@ index e641ad566488..5c887772fa97 100644
|
||||
/* Enable summary interrupt for GIC SPI source */
|
||||
reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK);
|
||||
advk_writel(pcie, reg, HOST_CTRL_INT_MASK_REG);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -18,8 +18,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 54 ++++++++++++++++++++++++---
|
||||
1 file changed, 49 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 5c887772fa97..43db884c81a1 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -281,6 +281,7 @@ struct advk_pcie {
|
||||
@ -30,7 +28,7 @@ index 5c887772fa97..43db884c81a1 100644
|
||||
DECLARE_BITMAP(msi_used, MSI_IRQ_NUM);
|
||||
struct mutex msi_used_lock;
|
||||
u16 msi_msg;
|
||||
@@ -577,12 +578,10 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -577,12 +578,10 @@ static void advk_pcie_setup_hw(struct ad
|
||||
advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG);
|
||||
advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
|
||||
|
||||
@ -45,7 +43,7 @@ index 5c887772fa97..43db884c81a1 100644
|
||||
|
||||
/* Unmask summary MSI interrupt */
|
||||
reg = advk_readl(pcie, PCIE_ISR0_MASK_REG);
|
||||
@@ -1196,10 +1195,52 @@ static int advk_msi_set_affinity(struct irq_data *irq_data,
|
||||
@@ -1196,10 +1195,52 @@ static int advk_msi_set_affinity(struct
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -98,7 +96,7 @@ index 5c887772fa97..43db884c81a1 100644
|
||||
};
|
||||
|
||||
static int advk_msi_irq_domain_alloc(struct irq_domain *domain,
|
||||
@@ -1289,7 +1330,9 @@ static const struct irq_domain_ops advk_pcie_irq_domain_ops = {
|
||||
@@ -1289,7 +1330,9 @@ static const struct irq_domain_ops advk_
|
||||
};
|
||||
|
||||
static struct irq_chip advk_msi_irq_chip = {
|
||||
@ -109,7 +107,7 @@ index 5c887772fa97..43db884c81a1 100644
|
||||
};
|
||||
|
||||
static struct msi_domain_info advk_msi_domain_info = {
|
||||
@@ -1303,6 +1346,7 @@ static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1303,6 +1346,7 @@ static int advk_pcie_init_msi_irq_domain
|
||||
struct device *dev = &pcie->pdev->dev;
|
||||
phys_addr_t msi_msg_phys;
|
||||
|
||||
@ -117,6 +115,3 @@ index 5c887772fa97..43db884c81a1 100644
|
||||
mutex_init(&pcie->msi_used_lock);
|
||||
|
||||
msi_msg_phys = virt_to_phys(&pcie->msi_msg);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -26,8 +26,6 @@ Cc: stable@vger.kernel.org # f21a8b1b6837 ("PCI: aardvark: Move to MSI handling
|
||||
drivers/pci/controller/pci-aardvark.c | 21 +++++++++------------
|
||||
1 file changed, 9 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 43db884c81a1..76a65c592b5c 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -284,7 +284,6 @@ struct advk_pcie {
|
||||
@ -38,7 +36,7 @@ index 43db884c81a1..76a65c592b5c 100644
|
||||
int link_gen;
|
||||
struct pci_bridge_emul bridge;
|
||||
struct gpio_desc *reset_gpio;
|
||||
@@ -479,6 +478,7 @@ static void advk_pcie_disable_ob_win(struct advk_pcie *pcie, u8 win_num)
|
||||
@@ -479,6 +478,7 @@ static void advk_pcie_disable_ob_win(str
|
||||
|
||||
static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
{
|
||||
@ -46,7 +44,7 @@ index 43db884c81a1..76a65c592b5c 100644
|
||||
u32 reg;
|
||||
int i;
|
||||
|
||||
@@ -567,6 +567,11 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -567,6 +567,11 @@ static void advk_pcie_setup_hw(struct ad
|
||||
reg |= LANE_COUNT_1;
|
||||
advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);
|
||||
|
||||
@ -58,7 +56,7 @@ index 43db884c81a1..76a65c592b5c 100644
|
||||
/* Enable MSI */
|
||||
reg = advk_readl(pcie, PCIE_CORE_CTRL2_REG);
|
||||
reg |= PCIE_CORE_CTRL2_MSI_ENABLE;
|
||||
@@ -1182,10 +1187,10 @@ static void advk_msi_irq_compose_msi_msg(struct irq_data *data,
|
||||
@@ -1182,10 +1187,10 @@ static void advk_msi_irq_compose_msi_msg
|
||||
struct msi_msg *msg)
|
||||
{
|
||||
struct advk_pcie *pcie = irq_data_get_irq_chip_data(data);
|
||||
@ -72,7 +70,7 @@ index 43db884c81a1..76a65c592b5c 100644
|
||||
msg->data = data->hwirq;
|
||||
}
|
||||
|
||||
@@ -1344,18 +1349,10 @@ static struct msi_domain_info advk_msi_domain_info = {
|
||||
@@ -1344,18 +1349,10 @@ static struct msi_domain_info advk_msi_d
|
||||
static int advk_pcie_init_msi_irq_domain(struct advk_pcie *pcie)
|
||||
{
|
||||
struct device *dev = &pcie->pdev->dev;
|
||||
@ -91,6 +89,3 @@ index 43db884c81a1..76a65c592b5c 100644
|
||||
pcie->msi_inner_domain =
|
||||
irq_domain_add_linear(NULL, MSI_IRQ_NUM,
|
||||
&advk_msi_domain_ops, pcie);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -25,11 +25,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 76a65c592b5c..e6cfee3b41a2 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1342,7 +1342,7 @@ static struct irq_chip advk_msi_irq_chip = {
|
||||
@@ -1342,7 +1342,7 @@ static struct irq_chip advk_msi_irq_chip
|
||||
|
||||
static struct msi_domain_info advk_msi_domain_info = {
|
||||
.flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
|
||||
@ -38,6 +36,3 @@ index 76a65c592b5c..e6cfee3b41a2 100644
|
||||
.chip = &advk_msi_irq_chip,
|
||||
};
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -28,8 +28,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 36 ++++++++++++++++++++++++++-
|
||||
1 file changed, 35 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e6cfee3b41a2..7956b103d3c7 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -97,6 +97,10 @@
|
||||
@ -43,7 +41,7 @@ index e6cfee3b41a2..7956b103d3c7 100644
|
||||
#define PCIE_ISR0_INTX_ASSERT(val) BIT(16 + (val))
|
||||
#define PCIE_ISR0_INTX_DEASSERT(val) BIT(20 + (val))
|
||||
#define PCIE_ISR0_ALL_MASK GENMASK(31, 0)
|
||||
@@ -785,11 +789,15 @@ advk_pci_bridge_emul_base_conf_read(struct pci_bridge_emul *bridge,
|
||||
@@ -785,11 +789,15 @@ advk_pci_bridge_emul_base_conf_read(stru
|
||||
case PCI_INTERRUPT_LINE: {
|
||||
/*
|
||||
* From the whole 32bit register we support reading from HW only
|
||||
@ -60,7 +58,7 @@ index e6cfee3b41a2..7956b103d3c7 100644
|
||||
if (advk_readl(pcie, PCIE_CORE_CTRL1_REG) & HOT_RESET_GEN)
|
||||
val |= PCI_BRIDGE_CTL_BUS_RESET << 16;
|
||||
else
|
||||
@@ -815,6 +823,19 @@ advk_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge,
|
||||
@@ -815,6 +823,19 @@ advk_pci_bridge_emul_base_conf_write(str
|
||||
break;
|
||||
|
||||
case PCI_INTERRUPT_LINE:
|
||||
@ -80,7 +78,7 @@ index e6cfee3b41a2..7956b103d3c7 100644
|
||||
if (mask & (PCI_BRIDGE_CTL_BUS_RESET << 16)) {
|
||||
u32 val = advk_readl(pcie, PCIE_CORE_CTRL1_REG);
|
||||
if (new & (PCI_BRIDGE_CTL_BUS_RESET << 16))
|
||||
@@ -1464,6 +1485,19 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1464,6 +1485,19 @@ static void advk_pcie_handle_int(struct
|
||||
isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
|
||||
|
||||
@ -100,6 +98,3 @@ index e6cfee3b41a2..7956b103d3c7 100644
|
||||
/* Process MSI interrupts */
|
||||
if (isr0_status & PCIE_ISR0_MSI_INT_PENDING)
|
||||
advk_pcie_handle_msi(pcie);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -29,11 +29,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 7956b103d3c7..44d9c8c4d258 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -874,7 +874,9 @@ advk_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge,
|
||||
@@ -874,7 +874,9 @@ advk_pci_bridge_emul_pcie_conf_read(stru
|
||||
case PCI_EXP_RTSTA: {
|
||||
u32 isr0 = advk_readl(pcie, PCIE_ISR0_REG);
|
||||
u32 msglog = advk_readl(pcie, PCIE_MSG_LOG_REG);
|
||||
@ -44,6 +42,3 @@ index 7956b103d3c7..44d9c8c4d258 100644
|
||||
return PCI_BRIDGE_EMUL_HANDLED;
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -17,11 +17,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 20 +++++++++++---------
|
||||
1 file changed, 11 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 44d9c8c4d258..efd7e53b5e06 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -933,19 +933,21 @@ advk_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge,
|
||||
@@ -933,19 +933,21 @@ advk_pci_bridge_emul_pcie_conf_write(str
|
||||
advk_pcie_wait_for_retrain(pcie);
|
||||
break;
|
||||
|
||||
@ -52,6 +50,3 @@ index 44d9c8c4d258..efd7e53b5e06 100644
|
||||
break;
|
||||
|
||||
case PCI_EXP_DEVCTL:
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -23,11 +23,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index efd7e53b5e06..e2b66b0e8fb3 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1489,6 +1489,19 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1489,6 +1489,19 @@ static void advk_pcie_handle_int(struct
|
||||
isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
|
||||
|
||||
@ -47,6 +45,3 @@ index efd7e53b5e06..e2b66b0e8fb3 100644
|
||||
/* Process ERR interrupt */
|
||||
if (isr0_status & PCIE_ISR0_ERR_MASK) {
|
||||
advk_writel(pcie, PCIE_ISR0_ERR_MASK, PCIE_ISR0_REG);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -38,11 +38,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 94 +++++++++++++++------------
|
||||
1 file changed, 52 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e2b66b0e8fb3..85a632537b70 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -597,6 +597,11 @@ static void advk_pcie_setup_hw(struct advk_pcie *pcie)
|
||||
@@ -597,6 +597,11 @@ static void advk_pcie_setup_hw(struct ad
|
||||
reg &= ~PCIE_ISR0_MSI_INT_PENDING;
|
||||
advk_writel(pcie, reg, PCIE_ISR0_MASK_REG);
|
||||
|
||||
@ -54,7 +52,7 @@ index e2b66b0e8fb3..85a632537b70 100644
|
||||
/* Enable summary interrupt for GIC SPI source */
|
||||
reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK);
|
||||
advk_writel(pcie, reg, HOST_CTRL_INT_MASK_REG);
|
||||
@@ -863,22 +868,11 @@ advk_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge,
|
||||
@@ -863,22 +868,11 @@ advk_pci_bridge_emul_pcie_conf_read(stru
|
||||
*value = PCI_EXP_SLTSTA_PDS << 16;
|
||||
return PCI_BRIDGE_EMUL_HANDLED;
|
||||
|
||||
@ -82,7 +80,7 @@ index e2b66b0e8fb3..85a632537b70 100644
|
||||
|
||||
case PCI_EXP_LNKCAP: {
|
||||
u32 val = advk_readl(pcie, PCIE_CORE_PCIEXP_CAP + reg);
|
||||
@@ -933,22 +927,19 @@ advk_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge,
|
||||
@@ -933,22 +927,19 @@ advk_pci_bridge_emul_pcie_conf_write(str
|
||||
advk_pcie_wait_for_retrain(pcie);
|
||||
break;
|
||||
|
||||
@ -116,7 +114,7 @@ index e2b66b0e8fb3..85a632537b70 100644
|
||||
|
||||
case PCI_EXP_DEVCTL:
|
||||
case PCI_EXP_DEVCTL2:
|
||||
@@ -1450,6 +1441,34 @@ static void advk_pcie_remove_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1450,6 +1441,34 @@ static void advk_pcie_remove_irq_domain(
|
||||
irq_domain_remove(pcie->irq_domain);
|
||||
}
|
||||
|
||||
@ -151,7 +149,7 @@ index e2b66b0e8fb3..85a632537b70 100644
|
||||
static void advk_pcie_handle_msi(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 msi_val, msi_mask, msi_status, msi_idx;
|
||||
@@ -1489,18 +1508,9 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1489,18 +1508,9 @@ static void advk_pcie_handle_int(struct
|
||||
isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
|
||||
isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
|
||||
|
||||
@ -173,6 +171,3 @@ index e2b66b0e8fb3..85a632537b70 100644
|
||||
|
||||
/* Process ERR interrupt */
|
||||
if (isr0_status & PCIE_ISR0_ERR_MASK) {
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -31,8 +31,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 69 ++++++++++++++++++++++++++-
|
||||
1 file changed, 67 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 85a632537b70..b6e723c5725c 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -280,6 +280,7 @@ struct advk_pcie {
|
||||
@ -43,7 +41,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
struct irq_domain *irq_domain;
|
||||
struct irq_chip irq_chip;
|
||||
raw_spinlock_t irq_lock;
|
||||
@@ -1441,6 +1442,44 @@ static void advk_pcie_remove_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1441,6 +1442,44 @@ static void advk_pcie_remove_irq_domain(
|
||||
irq_domain_remove(pcie->irq_domain);
|
||||
}
|
||||
|
||||
@ -88,7 +86,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
static void advk_pcie_handle_pme(struct advk_pcie *pcie)
|
||||
{
|
||||
u32 requester = advk_readl(pcie, PCIE_MSG_LOG_REG) >> 16;
|
||||
@@ -1463,7 +1502,7 @@ static void advk_pcie_handle_pme(struct advk_pcie *pcie)
|
||||
@@ -1463,7 +1502,7 @@ static void advk_pcie_handle_pme(struct
|
||||
if (!(le16_to_cpu(pcie->bridge.pcie_conf.rootctl) & PCI_EXP_RTCTL_PMEIE))
|
||||
return;
|
||||
|
||||
@ -97,7 +95,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
if (generic_handle_irq(virq) == -EINVAL)
|
||||
dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n");
|
||||
}
|
||||
@@ -1520,7 +1559,7 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie)
|
||||
@@ -1520,7 +1559,7 @@ static void advk_pcie_handle_int(struct
|
||||
* Aardvark HW returns zero for PCI_ERR_ROOT_AER_IRQ, so use
|
||||
* PCIe interrupt 0
|
||||
*/
|
||||
@ -106,7 +104,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
if (generic_handle_irq(virq) == -EINVAL)
|
||||
dev_err_ratelimited(&pcie->pdev->dev, "unhandled ERR IRQ\n");
|
||||
}
|
||||
@@ -1566,6 +1605,21 @@ static void advk_pcie_irq_handler(struct irq_desc *desc)
|
||||
@@ -1566,6 +1605,21 @@ static void advk_pcie_irq_handler(struct
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
@ -128,7 +126,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie)
|
||||
{
|
||||
phy_power_off(pcie->phy);
|
||||
@@ -1769,14 +1823,24 @@ static int advk_pcie_probe(struct platform_device *pdev)
|
||||
@@ -1769,14 +1823,24 @@ static int advk_pcie_probe(struct platfo
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -153,7 +151,7 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
return ret;
|
||||
@@ -1828,6 +1892,7 @@ static int advk_pcie_remove(struct platform_device *pdev)
|
||||
@@ -1828,6 +1892,7 @@ static int advk_pcie_remove(struct platf
|
||||
irq_set_chained_handler_and_data(pcie->irq, NULL, NULL);
|
||||
|
||||
/* Remove IRQ domains */
|
||||
@ -161,6 +159,3 @@ index 85a632537b70..b6e723c5725c 100644
|
||||
advk_pcie_remove_msi_irq_domain(pcie);
|
||||
advk_pcie_remove_irq_domain(pcie);
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -17,11 +17,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index b6e723c5725c..99469e3dc945 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1420,7 +1420,6 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1420,7 +1420,6 @@ static int advk_pcie_init_irq_domain(str
|
||||
}
|
||||
|
||||
irq_chip->irq_mask = advk_pcie_irq_mask;
|
||||
@ -29,6 +27,3 @@ index b6e723c5725c..99469e3dc945 100644
|
||||
irq_chip->irq_unmask = advk_pcie_irq_unmask;
|
||||
|
||||
pcie->irq_domain =
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -15,11 +15,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 99469e3dc945..e090276ef902 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1337,7 +1337,6 @@ static int advk_pcie_irq_map(struct irq_domain *h,
|
||||
@@ -1337,7 +1337,6 @@ static int advk_pcie_irq_map(struct irq_
|
||||
{
|
||||
struct advk_pcie *pcie = h->host_data;
|
||||
|
||||
@ -27,6 +25,3 @@ index 99469e3dc945..e090276ef902 100644
|
||||
irq_set_status_flags(virq, IRQ_LEVEL);
|
||||
irq_set_chip_and_handler(virq, &pcie->irq_chip,
|
||||
handle_level_irq);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -15,11 +15,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index e090276ef902..aa5629b8b5c9 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1618,7 +1618,7 @@ static int advk_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||
@@ -1618,7 +1618,7 @@ static int advk_pcie_map_irq(const struc
|
||||
return of_irq_parse_and_map_pci(dev, slot, pin);
|
||||
}
|
||||
|
||||
@ -28,6 +26,3 @@ index e090276ef902..aa5629b8b5c9 100644
|
||||
{
|
||||
phy_power_off(pcie->phy);
|
||||
phy_exit(pcie->phy);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -16,11 +16,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index aa5629b8b5c9..3c0b6b931061 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1003,8 +1003,12 @@ static bool advk_pcie_valid_device(struct advk_pcie *pcie, struct pci_bus *bus,
|
||||
@@ -1003,8 +1003,12 @@ static bool advk_pcie_valid_device(struc
|
||||
return false;
|
||||
|
||||
/*
|
||||
@ -35,6 +33,3 @@ index aa5629b8b5c9..3c0b6b931061 100644
|
||||
*/
|
||||
if (!pci_is_root_bus(bus) && !advk_pcie_link_up(pcie))
|
||||
return false;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -31,8 +31,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/pci/controller/pci-aardvark.c | 25 +++++++------------------
|
||||
1 file changed, 7 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 3c0b6b931061..319dd830e36e 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -282,7 +282,6 @@ struct advk_pcie {
|
||||
@ -43,7 +41,7 @@ index 3c0b6b931061..319dd830e36e 100644
|
||||
raw_spinlock_t irq_lock;
|
||||
struct irq_domain *msi_domain;
|
||||
struct irq_domain *msi_inner_domain;
|
||||
@@ -1336,14 +1335,19 @@ static void advk_pcie_irq_unmask(struct irq_data *d)
|
||||
@@ -1336,14 +1335,19 @@ static void advk_pcie_irq_unmask(struct
|
||||
raw_spin_unlock_irqrestore(&pcie->irq_lock, flags);
|
||||
}
|
||||
|
||||
@ -65,7 +63,7 @@ index 3c0b6b931061..319dd830e36e 100644
|
||||
irq_set_chip_data(virq, pcie);
|
||||
|
||||
return 0;
|
||||
@@ -1402,7 +1406,6 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1402,7 +1406,6 @@ static int advk_pcie_init_irq_domain(str
|
||||
struct device *dev = &pcie->pdev->dev;
|
||||
struct device_node *node = dev->of_node;
|
||||
struct device_node *pcie_intc_node;
|
||||
@ -73,7 +71,7 @@ index 3c0b6b931061..319dd830e36e 100644
|
||||
int ret = 0;
|
||||
|
||||
raw_spin_lock_init(&pcie->irq_lock);
|
||||
@@ -1413,28 +1416,14 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)
|
||||
@@ -1413,28 +1416,14 @@ static int advk_pcie_init_irq_domain(str
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -102,6 +100,3 @@ index 3c0b6b931061..319dd830e36e 100644
|
||||
of_node_put(pcie_intc_node);
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -29,8 +29,6 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
drivers/phy/marvell/phy-mvebu-a3700-comphy.c | 62 +++++++++-----------
|
||||
1 file changed, 29 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
index 6781488cfc58..dbb2d4308851 100644
|
||||
--- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
+++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
@@ -20,7 +20,6 @@
|
||||
@ -115,7 +113,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
};
|
||||
|
||||
static int mvebu_a3700_comphy_smc(unsigned long function, unsigned long lane,
|
||||
@@ -120,7 +114,7 @@ static int mvebu_a3700_comphy_smc(unsigned long function, unsigned long lane,
|
||||
@@ -120,7 +114,7 @@ static int mvebu_a3700_comphy_smc(unsign
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +122,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
enum phy_mode mode,
|
||||
int submode)
|
||||
{
|
||||
@@ -132,7 +126,6 @@ static int mvebu_a3700_comphy_get_fw_mode(int lane, int port,
|
||||
@@ -132,7 +126,6 @@ static int mvebu_a3700_comphy_get_fw_mod
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
if (mvebu_a3700_comphy_modes[i].lane == lane &&
|
||||
@ -132,7 +130,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
mvebu_a3700_comphy_modes[i].mode == mode &&
|
||||
mvebu_a3700_comphy_modes[i].submode == submode)
|
||||
break;
|
||||
@@ -153,7 +146,7 @@ static int mvebu_a3700_comphy_set_mode(struct phy *phy, enum phy_mode mode,
|
||||
@@ -153,7 +146,7 @@ static int mvebu_a3700_comphy_set_mode(s
|
||||
if (submode == PHY_INTERFACE_MODE_1000BASEX)
|
||||
submode = PHY_INTERFACE_MODE_SGMII;
|
||||
|
||||
@ -141,7 +139,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
submode);
|
||||
if (fw_mode < 0) {
|
||||
dev_err(lane->dev, "invalid COMPHY mode\n");
|
||||
@@ -172,9 +165,10 @@ static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
@@ -172,9 +165,10 @@ static int mvebu_a3700_comphy_power_on(s
|
||||
struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);
|
||||
u32 fw_param;
|
||||
int fw_mode;
|
||||
@ -153,7 +151,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
lane->mode, lane->submode);
|
||||
if (fw_mode < 0) {
|
||||
dev_err(lane->dev, "invalid COMPHY mode\n");
|
||||
@@ -191,17 +185,18 @@ static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
@@ -191,17 +185,18 @@ static int mvebu_a3700_comphy_power_on(s
|
||||
fw_param = COMPHY_FW_MODE(fw_mode);
|
||||
break;
|
||||
case PHY_MODE_ETHERNET:
|
||||
@ -174,7 +172,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
COMPHY_FW_SPEED_3_125G);
|
||||
break;
|
||||
default:
|
||||
@@ -212,8 +207,7 @@ static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
@@ -212,8 +207,7 @@ static int mvebu_a3700_comphy_power_on(s
|
||||
break;
|
||||
case PHY_MODE_PCIE:
|
||||
dev_dbg(lane->dev, "set lane %d to PCIe mode\n", lane->id);
|
||||
@ -184,7 +182,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
phy->attrs.bus_width);
|
||||
break;
|
||||
default:
|
||||
@@ -247,17 +241,20 @@ static struct phy *mvebu_a3700_comphy_xlate(struct device *dev,
|
||||
@@ -247,17 +241,20 @@ static struct phy *mvebu_a3700_comphy_xl
|
||||
struct of_phandle_args *args)
|
||||
{
|
||||
struct mvebu_a3700_comphy_lane *lane;
|
||||
@ -209,7 +207,7 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
|
||||
return phy;
|
||||
}
|
||||
@@ -302,7 +299,6 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev)
|
||||
@@ -302,7 +299,6 @@ static int mvebu_a3700_comphy_probe(stru
|
||||
lane->mode = PHY_MODE_INVALID;
|
||||
lane->submode = PHY_INTERFACE_MODE_NA;
|
||||
lane->id = lane_id;
|
||||
@ -217,6 +215,3 @@ index 6781488cfc58..dbb2d4308851 100644
|
||||
phy_set_drvdata(phy, lane);
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -57,8 +57,6 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
drivers/phy/marvell/phy-mvebu-a3700-comphy.c | 1351 ++++++++++++++++--
|
||||
1 file changed, 1234 insertions(+), 117 deletions(-)
|
||||
|
||||
diff --git a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
index dbb2d4308851..cbda47c33b98 100644
|
||||
--- a/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
+++ b/drivers/phy/marvell/phy-mvebu-a3700-comphy.c
|
||||
@@ -5,12 +5,16 @@
|
||||
@ -87,32 +85,6 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+#include <linux/spinlock.h>
|
||||
|
||||
-#define MVEBU_A3700_COMPHY_LANES 3
|
||||
-
|
||||
-/* COMPHY Fast SMC function identifiers */
|
||||
-#define COMPHY_SIP_POWER_ON 0x82000001
|
||||
-#define COMPHY_SIP_POWER_OFF 0x82000002
|
||||
-#define COMPHY_SIP_PLL_LOCK 0x82000003
|
||||
-
|
||||
-#define COMPHY_FW_MODE_SATA 0x1
|
||||
-#define COMPHY_FW_MODE_SGMII 0x2
|
||||
-#define COMPHY_FW_MODE_2500BASEX 0x3
|
||||
-#define COMPHY_FW_MODE_USB3H 0x4
|
||||
-#define COMPHY_FW_MODE_USB3D 0x5
|
||||
-#define COMPHY_FW_MODE_PCIE 0x6
|
||||
-#define COMPHY_FW_MODE_USB3 0xa
|
||||
-
|
||||
-#define COMPHY_FW_SPEED_1_25G 0 /* SGMII 1G */
|
||||
-#define COMPHY_FW_SPEED_2_5G 1
|
||||
-#define COMPHY_FW_SPEED_3_125G 2 /* 2500BASE-X */
|
||||
-#define COMPHY_FW_SPEED_5G 3
|
||||
-#define COMPHY_FW_SPEED_MAX 0x3F
|
||||
-
|
||||
-#define COMPHY_FW_MODE(mode) ((mode) << 12)
|
||||
-#define COMPHY_FW_NET(mode, idx, speed) (COMPHY_FW_MODE(mode) | \
|
||||
- ((idx) << 8) | \
|
||||
- ((speed) << 2))
|
||||
-#define COMPHY_FW_PCIE(mode, speed, width) (COMPHY_FW_NET(mode, 0, speed) | \
|
||||
- ((width) << 18))
|
||||
+#define PLL_SET_DELAY_US 600
|
||||
+#define COMPHY_PLL_SLEEP 1000
|
||||
+#define COMPHY_PLL_TIMEOUT 150000
|
||||
@ -267,7 +239,32 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+ */
|
||||
+#define COMPHY_RESERVED_REG 0x0E
|
||||
+#define PHYCTRL_FRM_PIN_BIT BIT(13)
|
||||
+
|
||||
|
||||
-/* COMPHY Fast SMC function identifiers */
|
||||
-#define COMPHY_SIP_POWER_ON 0x82000001
|
||||
-#define COMPHY_SIP_POWER_OFF 0x82000002
|
||||
-#define COMPHY_SIP_PLL_LOCK 0x82000003
|
||||
-
|
||||
-#define COMPHY_FW_MODE_SATA 0x1
|
||||
-#define COMPHY_FW_MODE_SGMII 0x2
|
||||
-#define COMPHY_FW_MODE_2500BASEX 0x3
|
||||
-#define COMPHY_FW_MODE_USB3H 0x4
|
||||
-#define COMPHY_FW_MODE_USB3D 0x5
|
||||
-#define COMPHY_FW_MODE_PCIE 0x6
|
||||
-#define COMPHY_FW_MODE_USB3 0xa
|
||||
-
|
||||
-#define COMPHY_FW_SPEED_1_25G 0 /* SGMII 1G */
|
||||
-#define COMPHY_FW_SPEED_2_5G 1
|
||||
-#define COMPHY_FW_SPEED_3_125G 2 /* 2500BASE-X */
|
||||
-#define COMPHY_FW_SPEED_5G 3
|
||||
-#define COMPHY_FW_SPEED_MAX 0x3F
|
||||
-
|
||||
-#define COMPHY_FW_MODE(mode) ((mode) << 12)
|
||||
-#define COMPHY_FW_NET(mode, idx, speed) (COMPHY_FW_MODE(mode) | \
|
||||
- ((idx) << 8) | \
|
||||
- ((speed) << 2))
|
||||
-#define COMPHY_FW_PCIE(mode, speed, width) (COMPHY_FW_NET(mode, 0, speed) | \
|
||||
- ((width) << 18))
|
||||
+/* South Bridge PHY Configuration Registers */
|
||||
+#define COMPHY_PHY_REG(lane, reg) (((1 - (lane)) * 0x28) + ((reg) & 0x3f))
|
||||
+
|
||||
@ -385,10 +382,8 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+ bool invert_tx;
|
||||
+ bool invert_rx;
|
||||
+ bool needs_reset;
|
||||
};
|
||||
|
||||
-static int mvebu_a3700_comphy_smc(unsigned long function, unsigned long lane,
|
||||
- unsigned long mode)
|
||||
+};
|
||||
+
|
||||
+struct gbe_phy_init_data_fix {
|
||||
+ u16 addr;
|
||||
+ u16 value;
|
||||
@ -405,8 +400,10 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+ { 0x0C3, 0x8000 }, { 0x0E2, 0x5550 }, { 0x0E3, 0x12A4 },
|
||||
+ { 0x0E4, 0x7D00 }, { 0x0E6, 0x0C83 }, { 0x101, 0xFCC0 },
|
||||
+ { 0x104, 0x0C10 }
|
||||
+};
|
||||
+
|
||||
};
|
||||
|
||||
-static int mvebu_a3700_comphy_smc(unsigned long function, unsigned long lane,
|
||||
- unsigned long mode)
|
||||
+/* 40M1G25 mode init data */
|
||||
+static u16 gbe_phy_init[512] = {
|
||||
+ /* 0 1 2 3 4 5 6 7 */
|
||||
@ -479,25 +476,16 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+};
|
||||
+
|
||||
+static inline void comphy_reg_set(void __iomem *addr, u32 data, u32 mask)
|
||||
+{
|
||||
+ u32 val;
|
||||
+
|
||||
+ val = readl(addr);
|
||||
+ val = (val & ~mask) | (data & mask);
|
||||
+ writel(val, addr);
|
||||
+}
|
||||
+
|
||||
+static inline void comphy_reg_set16(void __iomem *addr, u16 data, u16 mask)
|
||||
{
|
||||
- struct arm_smccc_res res;
|
||||
- s32 ret;
|
||||
+ u16 val;
|
||||
+ u32 val;
|
||||
|
||||
- arm_smccc_smc(function, lane, mode, 0, 0, 0, 0, 0, &res);
|
||||
- ret = res.a0;
|
||||
+ val = readw(addr);
|
||||
+ val = readl(addr);
|
||||
+ val = (val & ~mask) | (data & mask);
|
||||
+ writew(val, addr);
|
||||
+ writel(val, addr);
|
||||
+}
|
||||
|
||||
- switch (ret) {
|
||||
@ -505,6 +493,15 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
- return 0;
|
||||
- case SMCCC_RET_NOT_SUPPORTED:
|
||||
- return -EOPNOTSUPP;
|
||||
+static inline void comphy_reg_set16(void __iomem *addr, u16 data, u16 mask)
|
||||
+{
|
||||
+ u16 val;
|
||||
+
|
||||
+ val = readw(addr);
|
||||
+ val = (val & ~mask) | (data & mask);
|
||||
+ writew(val, addr);
|
||||
+}
|
||||
+
|
||||
+/* Used for accessing lane 2 registers (SATA/USB3 PHY) */
|
||||
+static void comphy_set_indirect(struct mvebu_a3700_comphy_priv *priv,
|
||||
+ u32 offset, u16 data, u16 mask)
|
||||
@ -951,8 +948,9 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
}
|
||||
|
||||
-static int mvebu_a3700_comphy_get_fw_mode(int lane,
|
||||
+static int
|
||||
+mvebu_a3700_comphy_usb3_power_on(struct mvebu_a3700_comphy_lane *lane)
|
||||
+{
|
||||
@ -1281,14 +1279,13 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
-static int mvebu_a3700_comphy_get_fw_mode(int lane,
|
||||
+}
|
||||
+
|
||||
+static bool mvebu_a3700_comphy_check_mode(int lane,
|
||||
enum phy_mode mode,
|
||||
int submode)
|
||||
{
|
||||
@@ -122,7 +1170,7 @@ static int mvebu_a3700_comphy_get_fw_mode(int lane,
|
||||
@@ -122,7 +1170,7 @@ static int mvebu_a3700_comphy_get_fw_mod
|
||||
|
||||
/* Unused PHY mux value is 0x0 */
|
||||
if (mode == PHY_MODE_INVALID)
|
||||
@ -1297,7 +1294,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
if (mvebu_a3700_comphy_modes[i].lane == lane &&
|
||||
@@ -132,27 +1180,30 @@ static int mvebu_a3700_comphy_get_fw_mode(int lane,
|
||||
@@ -132,27 +1180,30 @@ static int mvebu_a3700_comphy_get_fw_mod
|
||||
}
|
||||
|
||||
if (i == n)
|
||||
@ -1338,7 +1335,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
/* Just remember the mode, ->power_on() will do the real setup */
|
||||
lane->mode = mode;
|
||||
lane->submode = submode;
|
||||
@@ -163,76 +1214,68 @@ static int mvebu_a3700_comphy_set_mode(struct phy *phy, enum phy_mode mode,
|
||||
@@ -163,76 +1214,68 @@ static int mvebu_a3700_comphy_set_mode(s
|
||||
static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
{
|
||||
struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);
|
||||
@ -1450,7 +1447,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
.set_mode = mvebu_a3700_comphy_set_mode,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
@@ -256,13 +1299,75 @@ static struct phy *mvebu_a3700_comphy_xlate(struct device *dev,
|
||||
@@ -256,13 +1299,75 @@ static struct phy *mvebu_a3700_comphy_xl
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
@ -1526,7 +1523,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
|
||||
for_each_available_child_of_node(pdev->dev.of_node, child) {
|
||||
struct mvebu_a3700_comphy_lane *lane;
|
||||
@@ -277,7 +1382,7 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev)
|
||||
@@ -277,7 +1382,7 @@ static int mvebu_a3700_comphy_probe(stru
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1535,7 +1532,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
dev_err(&pdev->dev, "invalid 'reg' property\n");
|
||||
continue;
|
||||
}
|
||||
@@ -295,11 +1400,21 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev)
|
||||
@@ -295,11 +1400,21 @@ static int mvebu_a3700_comphy_probe(stru
|
||||
return PTR_ERR(phy);
|
||||
}
|
||||
|
||||
@ -1557,7 +1554,7 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
}
|
||||
|
||||
provider = devm_of_phy_provider_register(&pdev->dev,
|
||||
@@ -323,5 +1438,7 @@ static struct platform_driver mvebu_a3700_comphy_driver = {
|
||||
@@ -323,5 +1438,7 @@ static struct platform_driver mvebu_a370
|
||||
module_platform_driver(mvebu_a3700_comphy_driver);
|
||||
|
||||
MODULE_AUTHOR("Miquèl Raynal <miquel.raynal@bootlin.com>");
|
||||
@ -1565,6 +1562,3 @@ index dbb2d4308851..cbda47c33b98 100644
|
||||
+MODULE_AUTHOR("Marek Behún <kabel@kernel.org>");
|
||||
MODULE_DESCRIPTION("Common PHY driver for A3700");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -18,11 +18,9 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
|
||||
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
index 2a2015a15362..a7262d2591dc 100644
|
||||
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
|
||||
@@ -265,6 +265,8 @@ comphy: phy@18300 {
|
||||
@@ -265,6 +265,8 @@
|
||||
"lane2_sata_usb3";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@ -31,6 +29,3 @@ index 2a2015a15362..a7262d2591dc 100644
|
||||
|
||||
comphy0: phy@0 {
|
||||
reg = <0>;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -26,8 +26,6 @@ Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
drivers/ata/libahci_platform.c | 2 +-
|
||||
3 files changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
|
||||
index d1f284f0c83d..3a3e67350e50 100644
|
||||
--- a/drivers/ata/ahci.h
|
||||
+++ b/drivers/ata/ahci.h
|
||||
@@ -240,8 +240,6 @@ enum {
|
||||
@ -39,11 +37,9 @@ index d1f284f0c83d..3a3e67350e50 100644
|
||||
AHCI_HFLAG_NO_SXS = (1 << 28), /* SXS not supported */
|
||||
|
||||
/* ap->flags bits */
|
||||
diff --git a/drivers/ata/ahci_mvebu.c b/drivers/ata/ahci_mvebu.c
|
||||
index 3ad46d26d9d5..d4bba3ace45d 100644
|
||||
--- a/drivers/ata/ahci_mvebu.c
|
||||
+++ b/drivers/ata/ahci_mvebu.c
|
||||
@@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data ahci_mvebu_armada_380_plat_data = {
|
||||
@@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data
|
||||
|
||||
static const struct ahci_mvebu_plat_data ahci_mvebu_armada_3700_plat_data = {
|
||||
.plat_config = ahci_mvebu_armada_3700_config,
|
||||
@ -52,11 +48,9 @@ index 3ad46d26d9d5..d4bba3ace45d 100644
|
||||
};
|
||||
|
||||
static const struct of_device_id ahci_mvebu_of_match[] = {
|
||||
diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c
|
||||
index 0910441321f7..250b82e30aa3 100644
|
||||
--- a/drivers/ata/libahci_platform.c
|
||||
+++ b/drivers/ata/libahci_platform.c
|
||||
@@ -59,7 +59,7 @@ int ahci_platform_enable_phys(struct ahci_host_priv *hpriv)
|
||||
@@ -59,7 +59,7 @@ int ahci_platform_enable_phys(struct ahc
|
||||
}
|
||||
|
||||
rc = phy_power_on(hpriv->phys[i]);
|
||||
@ -65,6 +59,3 @@ index 0910441321f7..250b82e30aa3 100644
|
||||
phy_exit(hpriv->phys[i]);
|
||||
goto disable_phys;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -29,8 +29,6 @@ Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
drivers/usb/host/xhci-plat.h | 1 -
|
||||
4 files changed, 1 insertion(+), 68 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
|
||||
index 8ca1a235d164..60651a50770f 100644
|
||||
--- a/drivers/usb/host/xhci-mvebu.c
|
||||
+++ b/drivers/usb/host/xhci-mvebu.c
|
||||
@@ -8,7 +8,6 @@
|
||||
@ -41,10 +39,11 @@ index 8ca1a235d164..60651a50770f 100644
|
||||
|
||||
#include <linux/usb.h>
|
||||
#include <linux/usb/hcd.h>
|
||||
@@ -75,47 +74,6 @@ int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
|
||||
@@ -74,47 +73,6 @@ int xhci_mvebu_mbus_init_quirk(struct us
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
-
|
||||
-int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd)
|
||||
-{
|
||||
- struct xhci_hcd *xhci = hcd_to_xhci(hcd);
|
||||
@ -85,15 +84,12 @@ index 8ca1a235d164..60651a50770f 100644
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
|
||||
int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
|
||||
{
|
||||
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
|
||||
diff --git a/drivers/usb/host/xhci-mvebu.h b/drivers/usb/host/xhci-mvebu.h
|
||||
index 01bf3fcb3eca..3be021793cc8 100644
|
||||
--- a/drivers/usb/host/xhci-mvebu.h
|
||||
+++ b/drivers/usb/host/xhci-mvebu.h
|
||||
@@ -12,7 +12,6 @@ struct usb_hcd;
|
||||
@@ -12,18 +12,12 @@ struct usb_hcd;
|
||||
|
||||
#if IS_ENABLED(CONFIG_USB_XHCI_MVEBU)
|
||||
int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd);
|
||||
@ -101,23 +97,20 @@ index 01bf3fcb3eca..3be021793cc8 100644
|
||||
int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd);
|
||||
#else
|
||||
static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
|
||||
@@ -20,11 +19,6 @@ static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
-
|
||||
-static inline int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
|
||||
static inline int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
|
||||
{
|
||||
return 0;
|
||||
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
|
||||
index c1edcc9b13ce..4d34f6005381 100644
|
||||
--- a/drivers/usb/host/xhci-plat.c
|
||||
+++ b/drivers/usb/host/xhci-plat.c
|
||||
@@ -44,16 +44,6 @@ static void xhci_priv_plat_start(struct usb_hcd *hcd)
|
||||
@@ -44,16 +44,6 @@ static void xhci_priv_plat_start(struct
|
||||
priv->plat_start(hcd);
|
||||
}
|
||||
|
||||
@ -134,7 +127,7 @@ index c1edcc9b13ce..4d34f6005381 100644
|
||||
static int xhci_priv_init_quirk(struct usb_hcd *hcd)
|
||||
{
|
||||
struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
|
||||
@@ -121,7 +111,6 @@ static const struct xhci_plat_priv xhci_plat_marvell_armada = {
|
||||
@@ -121,7 +111,6 @@ static const struct xhci_plat_priv xhci_
|
||||
};
|
||||
|
||||
static const struct xhci_plat_priv xhci_plat_marvell_armada3700 = {
|
||||
@ -142,7 +135,7 @@ index c1edcc9b13ce..4d34f6005381 100644
|
||||
.init_quirk = xhci_mvebu_a3700_init_quirk,
|
||||
};
|
||||
|
||||
@@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
|
||||
@@ -341,14 +330,7 @@ static int xhci_plat_probe(struct platfo
|
||||
|
||||
hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
|
||||
xhci->shared_hcd->tpl_support = hcd->tpl_support;
|
||||
@ -158,8 +151,6 @@ index c1edcc9b13ce..4d34f6005381 100644
|
||||
hcd->skip_phy_initialization = 1;
|
||||
|
||||
if (priv && (priv->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK))
|
||||
diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h
|
||||
index 561d0b7bce09..1fb149d1fbce 100644
|
||||
--- a/drivers/usb/host/xhci-plat.h
|
||||
+++ b/drivers/usb/host/xhci-plat.h
|
||||
@@ -13,7 +13,6 @@
|
||||
@ -170,6 +161,3 @@ index 561d0b7bce09..1fb149d1fbce 100644
|
||||
void (*plat_start)(struct usb_hcd *);
|
||||
int (*init_quirk)(struct usb_hcd *);
|
||||
int (*suspend_quirk)(struct usb_hcd *);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -21,11 +21,9 @@ Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
drivers/pci/controller/pci-aardvark.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
|
||||
index 319dd830e36e..4e64142b9ec4 100644
|
||||
--- a/drivers/pci/controller/pci-aardvark.c
|
||||
+++ b/drivers/pci/controller/pci-aardvark.c
|
||||
@@ -1635,9 +1635,7 @@ static int advk_pcie_enable_phy(struct advk_pcie *pcie)
|
||||
@@ -1635,9 +1635,7 @@ static int advk_pcie_enable_phy(struct a
|
||||
}
|
||||
|
||||
ret = phy_power_on(pcie->phy);
|
||||
@ -36,6 +34,3 @@ index 319dd830e36e..4e64142b9ec4 100644
|
||||
phy_exit(pcie->phy);
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -3183,6 +3183,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3189,6 +3189,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
struct device *dev = nor->dev;
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -3237,7 +3238,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3243,7 +3244,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
+};
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -2038,6 +2038,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
|
||||
@@ -2040,6 +2040,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
|
||||
|
||||
static const struct spi_nor_manufacturer *manufacturers[] = {
|
||||
&spi_nor_atmel,
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||
@@ -3009,6 +3009,18 @@ static const struct usb_device_id uvc_id
|
||||
@@ -3004,6 +3004,18 @@ static const struct usb_device_id uvc_id
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||
|
Loading…
x
Reference in New Issue
Block a user