diff for duplicates of <20140410201201.GA12661@obsidianresearch.com> diff --git a/a/1.txt b/N1/1.txt index 2aaf850..9ad09fc 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -81,3 +81,10 @@ Any change if you use other windows? return mvebu_mbus_setup_window(mbus, win, base, Jason +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: pex-reset.diff +Type: text/x-diff +Size: 1897 bytes +Desc: not available +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140410/e9227692/attachment.bin> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index 5af5b73..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,2 +0,0 @@ -Content-Type: text/x-diff; charset=us-ascii -Content-Disposition: attachment; filename="pex-reset.diff" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index 22f406f..0000000 --- a/a/2.txt +++ /dev/null @@ -1,67 +0,0 @@ -diff --git a/drivers/pci/host/pci-mvebu.c b/drivers/pci/host/pci-mvebu.c -index 0d638b7..7b7d19a 100644 ---- a/drivers/pci/host/pci-mvebu.c -+++ b/drivers/pci/host/pci-mvebu.c -@@ -21,6 +21,7 @@ - #include <linux/of_gpio.h> - #include <linux/of_pci.h> - #include <linux/of_platform.h> -+#include <linux/clk-provider.h> - - /* - * PCIe unit register offsets. -@@ -973,6 +974,7 @@ static int mvebu_pcie_probe(struct platform_device *pdev) - for_each_child_of_node(pdev->dev.of_node, child) { - struct mvebu_pcie_port *port = &pcie->ports[i]; - enum of_gpio_flags flags; -+ bool enabled; - - if (!of_device_is_available(child)) - continue; -@@ -1044,6 +1046,9 @@ static int mvebu_pcie_probe(struct platform_device *pdev) - continue; - } - -+ // Does this work on MVEBU? -+ enabled = __clk_is_enabled(port->clk); -+ - ret = clk_prepare_enable(port->clk); - if (ret) - continue; -@@ -1057,7 +1062,35 @@ static int mvebu_pcie_probe(struct platform_device *pdev) - continue; - } - -- mvebu_pcie_set_local_dev_nr(port, 1); -+ if (!enabled) { -+ u32 reg; -+ unsigned int tries; -+ -+ /* The clock is being turned on for the first time, do -+ * a PHY reset -+ */ -+ dev_info(&pdev->dev, -+ "PCIe%d.%d: performing link reset\n", -+ port->port, port->lane); -+ reg = mvebu_readl(port, PCIE_CTRL_OFF); -+ mvebu_writel(port, -+ reg & ~BIT(30), // Conf_TrainingDisable -+ PCIE_CTRL_OFF); -+ do { -+ udelay(100); // Guess? -+ } while (mvebu_pcie_link_up(port)); -+ mvebu_pcie_set_local_dev_nr(port, 1); -+ mvebu_writel(port, reg | ~BIT(30), PCIE_CTRL_OFF); -+ -+ for (tries = 0; -+ !mvebu_pcie_link_up(port) && tries != 100; tries++) -+ udelay(100); -+ } else { -+ /* We expect the bootloader has setup the port and -+ * waited for the link to go up -+ */ -+ mvebu_pcie_set_local_dev_nr(port, 1); -+ } - - port->dn = child; - spin_lock_init(&port->conf_lock); diff --git a/a/content_digest b/N1/content_digest index 7b68040..21b3fc2 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,23 +1,11 @@ "ref\020140410181953.50ccfcc3@skate\0" "ref\020140410165733.GB23104@obsidianresearch.com\0" "ref\020140410200153.46669e0c@skate\0" - "From\0Jason Gunthorpe <jgunthorpe@obsidianresearch.com>\0" - "Subject\0Re: Fixing PCIe issues on Armada XP\0" + "From\0jgunthorpe@obsidianresearch.com (Jason Gunthorpe)\0" + "Subject\0Fixing PCIe issues on Armada XP\0" "Date\0Thu, 10 Apr 2014 14:12:01 -0600\0" - "To\0Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\0" - "Cc\0Neil Greatorex <neil@fatboyfat.co.uk>" - Willy Tarreau <w@1wt.eu> - Matthew Minter <matthew_minter@xyratex.com> - Gerlando Falauto <gerlando.falauto@keymile.com> - linux-arm-kernel@lists.infradead.org - Jason Cooper <jason@lakedaemon.net> - " Gregory Cl\303\251ment <gregory.clement@free-electrons.com>" - Ezequiel Garcia <ezequiel.garcia@free-electrons.com> - Andrew Lunn <andrew@lunn.ch> - linux-pci@vger.kernel.org - Tawfik Bayouk <tawfik@marvell.com> - " Lior Amsalem <alior@marvell.com>\0" - "\01:1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" "On Thu, Apr 10, 2014 at 08:01:53PM +0200, Thomas Petazzoni wrote:\n" "> > Can you run Neil's patch and see if your system behaves the same?\n" @@ -101,76 +89,13 @@ " if (mvebu_mbus_window_is_free(mbus, win))\n" " return mvebu_mbus_setup_window(mbus, win, base,\n" "\n" - Jason - "\01:2\0" - "fn\0pex-reset.diff\0" - "b\0" - "diff --git a/drivers/pci/host/pci-mvebu.c b/drivers/pci/host/pci-mvebu.c\n" - "index 0d638b7..7b7d19a 100644\n" - "--- a/drivers/pci/host/pci-mvebu.c\n" - "+++ b/drivers/pci/host/pci-mvebu.c\n" - "@@ -21,6 +21,7 @@\n" - " #include <linux/of_gpio.h>\n" - " #include <linux/of_pci.h>\n" - " #include <linux/of_platform.h>\n" - "+#include <linux/clk-provider.h>\n" - " \n" - " /*\n" - " * PCIe unit register offsets.\n" - "@@ -973,6 +974,7 @@ static int mvebu_pcie_probe(struct platform_device *pdev)\n" - " \tfor_each_child_of_node(pdev->dev.of_node, child) {\n" - " \t\tstruct mvebu_pcie_port *port = &pcie->ports[i];\n" - " \t\tenum of_gpio_flags flags;\n" - "+\t\tbool enabled;\n" - " \n" - " \t\tif (!of_device_is_available(child))\n" - " \t\t\tcontinue;\n" - "@@ -1044,6 +1046,9 @@ static int mvebu_pcie_probe(struct platform_device *pdev)\n" - " \t\t\tcontinue;\n" - " \t\t}\n" - " \n" - "+\t\t// Does this work on MVEBU?\n" - "+\t\tenabled = __clk_is_enabled(port->clk);\n" - "+\n" - " \t\tret = clk_prepare_enable(port->clk);\n" - " \t\tif (ret)\n" - " \t\t\tcontinue;\n" - "@@ -1057,7 +1062,35 @@ static int mvebu_pcie_probe(struct platform_device *pdev)\n" - " \t\t\tcontinue;\n" - " \t\t}\n" - " \n" - "-\t\tmvebu_pcie_set_local_dev_nr(port, 1);\n" - "+\t\tif (!enabled) {\n" - "+\t\t\tu32 reg;\n" - "+\t\t\tunsigned int tries;\n" - "+\n" - "+\t\t\t/* The clock is being turned on for the first time, do\n" - "+\t\t\t * a PHY reset\n" - "+\t\t\t */\n" - "+\t\t\tdev_info(&pdev->dev,\n" - "+\t\t\t\t \"PCIe%d.%d: performing link reset\\n\",\n" - "+\t\t\t\t port->port, port->lane);\n" - "+\t\t\treg = mvebu_readl(port, PCIE_CTRL_OFF);\n" - "+\t\t\tmvebu_writel(port,\n" - "+\t\t\t\t reg & ~BIT(30), // Conf_TrainingDisable\n" - "+\t\t\t\t PCIE_CTRL_OFF);\n" - "+\t\t\tdo {\n" - "+\t\t\t\tudelay(100); // Guess?\n" - "+\t\t\t} while (mvebu_pcie_link_up(port));\n" - "+\t\t\tmvebu_pcie_set_local_dev_nr(port, 1);\n" - "+\t\t\tmvebu_writel(port, reg | ~BIT(30), PCIE_CTRL_OFF);\n" - "+\n" - "+\t\t\tfor (tries = 0;\n" - "+\t\t\t !mvebu_pcie_link_up(port) && tries != 100; tries++)\n" - "+\t\t\t\tudelay(100);\n" - "+\t\t} else {\n" - "+\t\t\t/* We expect the bootloader has setup the port and\n" - "+\t\t\t * waited for the link to go up\n" - "+\t\t\t */\n" - "+\t\t\tmvebu_pcie_set_local_dev_nr(port, 1);\n" - "+\t\t}\n" - " \n" - " \t\tport->dn = child;\n" - " \t\tspin_lock_init(&port->conf_lock);" + "Jason\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: pex-reset.diff\n" + "Type: text/x-diff\n" + "Size: 1897 bytes\n" + "Desc: not available\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140410/e9227692/attachment.bin> -d3ff67a333140f7d9218f6eaca765195fe64391106b934caa96611dd40a46002 +0a2153102447170d6a497fbdaff27eafd73951088c62ddd415d8b111b85e7c78
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.