|
@@ -194,74 +194,6 @@ int xrx200_gphy_boot(struct device *dev, unsigned int id, dma_addr_t dev_addr)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/* reset a io domain for u micro seconds */
|
|
|
-void ltq_reset_once(unsigned int module, ulong u)
|
|
|
-{
|
|
|
- ltq_rcu_w32(ltq_rcu_r32(RCU_RST_REQ) | module, RCU_RST_REQ);
|
|
|
- udelay(u);
|
|
|
- ltq_rcu_w32(ltq_rcu_r32(RCU_RST_REQ) & ~module, RCU_RST_REQ);
|
|
|
-}
|
|
|
-
|
|
|
-static int ltq_assert_device(struct reset_controller_dev *rcdev,
|
|
|
- unsigned long id)
|
|
|
-{
|
|
|
- u32 val;
|
|
|
-
|
|
|
- if (id < 8)
|
|
|
- return -1;
|
|
|
-
|
|
|
- val = ltq_rcu_r32(RCU_RST_REQ);
|
|
|
- val |= BIT(id);
|
|
|
- ltq_rcu_w32(val, RCU_RST_REQ);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int ltq_deassert_device(struct reset_controller_dev *rcdev,
|
|
|
- unsigned long id)
|
|
|
-{
|
|
|
- u32 val;
|
|
|
-
|
|
|
- if (id < 8)
|
|
|
- return -1;
|
|
|
-
|
|
|
- val = ltq_rcu_r32(RCU_RST_REQ);
|
|
|
- val &= ~BIT(id);
|
|
|
- ltq_rcu_w32(val, RCU_RST_REQ);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int ltq_reset_device(struct reset_controller_dev *rcdev,
|
|
|
- unsigned long id)
|
|
|
-{
|
|
|
- ltq_assert_device(rcdev, id);
|
|
|
- return ltq_deassert_device(rcdev, id);
|
|
|
-}
|
|
|
-
|
|
|
-static const struct reset_control_ops reset_ops = {
|
|
|
- .reset = ltq_reset_device,
|
|
|
- .assert = ltq_assert_device,
|
|
|
- .deassert = ltq_deassert_device,
|
|
|
-};
|
|
|
-
|
|
|
-static struct reset_controller_dev reset_dev = {
|
|
|
- .ops = &reset_ops,
|
|
|
- .owner = THIS_MODULE,
|
|
|
- .nr_resets = 32,
|
|
|
- .of_reset_n_cells = 1,
|
|
|
-};
|
|
|
-
|
|
|
-void ltq_rst_init(void)
|
|
|
-{
|
|
|
- reset_dev.of_node = of_find_compatible_node(NULL, NULL,
|
|
|
- "lantiq,xway-reset");
|
|
|
- if (!reset_dev.of_node)
|
|
|
- pr_err("Failed to find reset controller node");
|
|
|
- else
|
|
|
- reset_controller_register(&reset_dev);
|
|
|
-}
|
|
|
-
|
|
|
static void ltq_machine_restart(char *command)
|
|
|
{
|
|
|
u32 val = ltq_rcu_r32(RCU_RST_REQ);
|