提交 58c6990c 编写于 作者: S Shawn Lin 提交者: Bjorn Helgaas

PCI: rockchip: Improve the deassert sequence of four reset pins

Per TRM, we need to deassert the four reset pins simultaneously.  Currently
the reset framework doesn't support that so we did it one by one.  It seems
no side effect found but it does impact the state machine of controller, so
sometimes the change speed bit is not set when sending training sequence
from recover state.  After the silicon RTL review from SoC guys, we don't
need to do the sequence recommended by TRM, and could just move the
deassert of mgmt_sticky_rst to the first place.
Signed-off-by: NShawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
上级 277743ef
...@@ -449,21 +449,25 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip) ...@@ -449,21 +449,25 @@ static int rockchip_pcie_init_port(struct rockchip_pcie *rockchip)
return err; return err;
} }
err = reset_control_deassert(rockchip->core_rst); /*
* Please don't reorder the deassert sequence of the following
* four reset pins.
*/
err = reset_control_deassert(rockchip->mgmt_sticky_rst);
if (err) { if (err) {
dev_err(dev, "deassert core_rst err %d\n", err); dev_err(dev, "deassert mgmt_sticky_rst err %d\n", err);
return err; return err;
} }
err = reset_control_deassert(rockchip->mgmt_rst); err = reset_control_deassert(rockchip->core_rst);
if (err) { if (err) {
dev_err(dev, "deassert mgmt_rst err %d\n", err); dev_err(dev, "deassert core_rst err %d\n", err);
return err; return err;
} }
err = reset_control_deassert(rockchip->mgmt_sticky_rst); err = reset_control_deassert(rockchip->mgmt_rst);
if (err) { if (err) {
dev_err(dev, "deassert mgmt_sticky_rst err %d\n", err); dev_err(dev, "deassert mgmt_rst err %d\n", err);
return err; return err;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册