forked from luck/tmp_suning_uos_patched
pci-v4.9-fixes-3
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJYJg7LAAoJEFmIoMA60/r8J3UP/04+KrtlbNWV4UzIadry4NJ4 w05NUZZQnCc4PfN63Yab9IS6UjDiuK0spe3tzjPub/1uKrjEVZzOTnKZLaJe5hKA /eRavTTeBwYfI1/Otw1pMLzbEOe/OMjvMuf96KRla/dlnVG6QTppD81jwW+lYZ51 I7gRqD+cL6f2X4tw3ORWi0EsqvOvbhSiNBklkQkEXH9epDXFnqiKgpom+Wqhl3TP G7ZPX4PAk8eScEfwkAOCP9QSdCFaKlRMMLNXCScKsxRGKkkXUrGQxj17GWYjInAx tAbjUwImrAHuVYQMggawXlmRI4+gdbpOYVV7yl2yuHecYFqr2o+9KX7A7hUJatYJ 37TeWUHZKONiQ31+fYFIUM814H6Yzl76m7ZrexYQ0Dq3roDLZSP9/RtFxO1/ADlJ VKlGZ7clvklKPU2GfVCL6GR2mvIxBv8AOZi1YuK0haMXuPJmgkxnoBvM7W4krWhR Ynffu5HI7+BWi1syp/tay1fYhWy08TmKTnSZFiIxOQgC3MCjB4uEHa31RB3BxnpV tJiPYxikjO6hXwTWJJRULsP9P2fMObX/+fphb5FamHbx0kRr+wSqlmjCJJA2g338 1cK6TLAJ2Zl6aF2l7FWtr6YYvLBfPAj5PVxpySSS+yYt4Pq41weKKH0XUn7u+OXG xLcZcDEUdjqoZnjkEG8X =5c2j -----END PGP SIGNATURE----- Merge tag 'pci-v4.9-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci Pull PCI fixes from Bjorn Helgaas: - Update MAINTAINERS for Intel VMD driver filename - Update Rockchip rk3399 host bridge driver DTS and resets - Fix ROM shadow problem that made some video device initialization fail * tag 'pci-v4.9-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: PCI: VMD: Update filename to reflect move arm64: dts: rockchip: add three new resets for rk3399 PCIe controller PCI: rockchip: Add three new resets as required properties PCI: Don't attempt to claim shadow copies of ROM
This commit is contained in:
commit
8233008f5d
|
@ -26,13 +26,16 @@ Required properties:
|
|||
- "sys"
|
||||
- "legacy"
|
||||
- "client"
|
||||
- resets: Must contain five entries for each entry in reset-names.
|
||||
- resets: Must contain seven entries for each entry in reset-names.
|
||||
See ../reset/reset.txt for details.
|
||||
- reset-names: Must include the following names
|
||||
- "core"
|
||||
- "mgmt"
|
||||
- "mgmt-sticky"
|
||||
- "pipe"
|
||||
- "pm"
|
||||
- "aclk"
|
||||
- "pclk"
|
||||
- pinctrl-names : The pin control state names
|
||||
- pinctrl-0: The "default" pinctrl state
|
||||
- #interrupt-cells: specifies the number of cells needed to encode an
|
||||
|
@ -86,8 +89,10 @@ pcie0: pcie@f8000000 {
|
|||
reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>;
|
||||
reg-names = "axi-base", "apb-base";
|
||||
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
|
||||
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>;
|
||||
reset-names = "core", "mgmt", "mgmt-sticky", "pipe";
|
||||
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> ,
|
||||
<&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>;
|
||||
reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
|
||||
"pm", "pclk", "aclk";
|
||||
phys = <&pcie_phy>;
|
||||
phy-names = "pcie-phy";
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -9335,7 +9335,7 @@ PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
|
|||
M: Keith Busch <keith.busch@intel.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Supported
|
||||
F: arch/x86/pci/vmd.c
|
||||
F: drivers/pci/host/vmd.c
|
||||
|
||||
PCIE DRIVER FOR ST SPEAR13XX
|
||||
M: Pratyush Anand <pratyush.anand@gmail.com>
|
||||
|
|
|
@ -300,8 +300,11 @@ pcie0: pcie@f8000000 {
|
|||
ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x600000
|
||||
0x81000000 0x0 0xfa600000 0x0 0xfa600000 0x0 0x100000>;
|
||||
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
|
||||
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>;
|
||||
reset-names = "core", "mgmt", "mgmt-sticky", "pipe";
|
||||
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>,
|
||||
<&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>,
|
||||
<&cru SRST_A_PCIE>;
|
||||
reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
|
||||
"pm", "pclk", "aclk";
|
||||
status = "disabled";
|
||||
|
||||
pcie0_intc: interrupt-controller {
|
||||
|
|
|
@ -190,6 +190,9 @@ struct rockchip_pcie {
|
|||
struct reset_control *mgmt_rst;
|
||||
struct reset_control *mgmt_sticky_rst;
|
||||
struct reset_control *pipe_rst;
|
||||
struct reset_control *pm_rst;
|
||||
struct reset_control *aclk_rst;
|
||||
struct reset_control *pclk_rst;
|
||||
struct clk *aclk_pcie;
|
||||
struct clk *aclk_perf_pcie;
|
||||
struct clk *hclk_pcie;
|
||||
|
@ -408,6 +411,44 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip)
|
|||
|
||||
gpiod_set_value(rockchip->ep_gpio, 0);
|
||||
|
||||
err = reset_control_assert(rockchip->aclk_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "assert aclk_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = reset_control_assert(rockchip->pclk_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "assert pclk_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = reset_control_assert(rockchip->pm_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "assert pm_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
udelay(10);
|
||||
|
||||
err = reset_control_deassert(rockchip->pm_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "deassert pm_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = reset_control_deassert(rockchip->aclk_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "deassert mgmt_sticky_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = reset_control_deassert(rockchip->pclk_rst);
|
||||
if (err) {
|
||||
dev_err(dev, "deassert mgmt_sticky_rst err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = phy_init(rockchip->phy);
|
||||
if (err < 0) {
|
||||
dev_err(dev, "fail to init phy, err %d\n", err);
|
||||
|
@ -781,6 +822,27 @@ static int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
|
|||
return PTR_ERR(rockchip->pipe_rst);
|
||||
}
|
||||
|
||||
rockchip->pm_rst = devm_reset_control_get(dev, "pm");
|
||||
if (IS_ERR(rockchip->pm_rst)) {
|
||||
if (PTR_ERR(rockchip->pm_rst) != -EPROBE_DEFER)
|
||||
dev_err(dev, "missing pm reset property in node\n");
|
||||
return PTR_ERR(rockchip->pm_rst);
|
||||
}
|
||||
|
||||
rockchip->pclk_rst = devm_reset_control_get(dev, "pclk");
|
||||
if (IS_ERR(rockchip->pclk_rst)) {
|
||||
if (PTR_ERR(rockchip->pclk_rst) != -EPROBE_DEFER)
|
||||
dev_err(dev, "missing pclk reset property in node\n");
|
||||
return PTR_ERR(rockchip->pclk_rst);
|
||||
}
|
||||
|
||||
rockchip->aclk_rst = devm_reset_control_get(dev, "aclk");
|
||||
if (IS_ERR(rockchip->aclk_rst)) {
|
||||
if (PTR_ERR(rockchip->aclk_rst) != -EPROBE_DEFER)
|
||||
dev_err(dev, "missing aclk reset property in node\n");
|
||||
return PTR_ERR(rockchip->aclk_rst);
|
||||
}
|
||||
|
||||
rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH);
|
||||
if (IS_ERR(rockchip->ep_gpio)) {
|
||||
dev_err(dev, "missing ep-gpios property in node\n");
|
||||
|
|
|
@ -121,6 +121,14 @@ int pci_claim_resource(struct pci_dev *dev, int resource)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have a shadow copy in RAM, the PCI device doesn't respond
|
||||
* to the shadow range, so we don't need to claim it, and upstream
|
||||
* bridges don't need to route the range to the device.
|
||||
*/
|
||||
if (res->flags & IORESOURCE_ROM_SHADOW)
|
||||
return 0;
|
||||
|
||||
root = pci_find_parent_resource(dev, res);
|
||||
if (!root) {
|
||||
dev_info(&dev->dev, "can't claim BAR %d %pR: no compatible bridge window\n",
|
||||
|
|
Loading…
Reference in New Issue
Block a user