Lines Matching refs:reset

723 static bool _is_valid_reset(struct omap_reset_data *reset, unsigned long id)  in _is_valid_reset()  argument
725 if (reset->mask & BIT(id)) in _is_valid_reset()
731 static int omap_reset_get_st_bit(struct omap_reset_data *reset, in omap_reset_get_st_bit() argument
734 const struct omap_rst_map *map = reset->prm->data->rstmap; in omap_reset_get_st_bit()
749 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_status() local
751 int st_bit = omap_reset_get_st_bit(reset, id); in omap_reset_status()
752 bool has_rstst = reset->prm->data->rstst || in omap_reset_status()
753 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST); in omap_reset_status()
760 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_status()
768 v = readl_relaxed(reset->prm->base + reset->prm->data->rstst); in omap_reset_status()
778 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_assert() local
783 spin_lock_irqsave(&reset->lock, flags); in omap_reset_assert()
784 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_assert()
786 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl); in omap_reset_assert()
787 spin_unlock_irqrestore(&reset->lock, flags); in omap_reset_assert()
795 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_deassert() local
800 struct ti_prm_platform_data *pdata = dev_get_platdata(reset->dev); in omap_reset_deassert()
807 has_rstst = reset->prm->data->rstst || in omap_reset_deassert()
808 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST); in omap_reset_deassert()
811 st_bit = omap_reset_get_st_bit(reset, id); in omap_reset_deassert()
815 writel_relaxed(v, reset->prm->base + reset->prm->data->rstst); in omap_reset_deassert()
818 if (reset->clkdm) in omap_reset_deassert()
819 pdata->clkdm_deny_idle(reset->clkdm); in omap_reset_deassert()
822 spin_lock_irqsave(&reset->lock, flags); in omap_reset_deassert()
823 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_deassert()
825 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl); in omap_reset_deassert()
826 spin_unlock_irqrestore(&reset->lock, flags); in omap_reset_deassert()
829 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base + in omap_reset_deassert()
830 reset->prm->data->rstctrl, in omap_reset_deassert()
835 reset->prm->data->name, id); in omap_reset_deassert()
839 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base + in omap_reset_deassert()
840 reset->prm->data->rstst, in omap_reset_deassert()
845 reset->prm->data->name, id); in omap_reset_deassert()
848 if (reset->clkdm) in omap_reset_deassert()
849 pdata->clkdm_allow_idle(reset->clkdm); in omap_reset_deassert()
863 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_prm_reset_xlate() local
865 if (!_is_valid_reset(reset, reset_spec->args[0])) in omap_prm_reset_xlate()
874 struct omap_reset_data *reset; in omap_prm_reset_init() local
897 reset = devm_kzalloc(&pdev->dev, sizeof(*reset), GFP_KERNEL); in omap_prm_reset_init()
898 if (!reset) in omap_prm_reset_init()
901 reset->rcdev.owner = THIS_MODULE; in omap_prm_reset_init()
902 reset->rcdev.ops = &omap_reset_ops; in omap_prm_reset_init()
903 reset->rcdev.of_node = pdev->dev.of_node; in omap_prm_reset_init()
904 reset->rcdev.nr_resets = OMAP_MAX_RESETS; in omap_prm_reset_init()
905 reset->rcdev.of_xlate = omap_prm_reset_xlate; in omap_prm_reset_init()
906 reset->rcdev.of_reset_n_cells = 1; in omap_prm_reset_init()
907 reset->dev = &pdev->dev; in omap_prm_reset_init()
908 spin_lock_init(&reset->lock); in omap_prm_reset_init()
910 reset->prm = prm; in omap_prm_reset_init()
916 reset->clkdm = pdata->clkdm_lookup(buf); in omap_prm_reset_init()
917 if (!reset->clkdm) in omap_prm_reset_init()
922 reset->mask |= BIT(map->rst); in omap_prm_reset_init()
928 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_prm_reset_init()
929 if ((v & reset->mask) != reset->mask) { in omap_prm_reset_init()
931 writel_relaxed(reset->mask, reset->prm->base + in omap_prm_reset_init()
932 reset->prm->data->rstctrl); in omap_prm_reset_init()
936 return devm_reset_controller_register(&pdev->dev, &reset->rcdev); in omap_prm_reset_init()