Lines Matching refs:reset
728 static bool _is_valid_reset(struct omap_reset_data *reset, unsigned long id) in _is_valid_reset() argument
730 if (reset->mask & BIT(id)) in _is_valid_reset()
736 static int omap_reset_get_st_bit(struct omap_reset_data *reset, in omap_reset_get_st_bit() argument
739 const struct omap_rst_map *map = reset->prm->data->rstmap; in omap_reset_get_st_bit()
754 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_status() local
756 int st_bit = omap_reset_get_st_bit(reset, id); in omap_reset_status()
757 bool has_rstst = reset->prm->data->rstst || in omap_reset_status()
758 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST); in omap_reset_status()
765 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_status()
773 v = readl_relaxed(reset->prm->base + reset->prm->data->rstst); in omap_reset_status()
783 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_assert() local
788 spin_lock_irqsave(&reset->lock, flags); in omap_reset_assert()
789 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_assert()
791 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl); in omap_reset_assert()
792 spin_unlock_irqrestore(&reset->lock, flags); in omap_reset_assert()
800 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_reset_deassert() local
805 struct ti_prm_platform_data *pdata = dev_get_platdata(reset->dev); in omap_reset_deassert()
812 has_rstst = reset->prm->data->rstst || in omap_reset_deassert()
813 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST); in omap_reset_deassert()
816 st_bit = omap_reset_get_st_bit(reset, id); in omap_reset_deassert()
820 writel_relaxed(v, reset->prm->base + reset->prm->data->rstst); in omap_reset_deassert()
823 if (reset->clkdm) in omap_reset_deassert()
824 pdata->clkdm_deny_idle(reset->clkdm); in omap_reset_deassert()
827 spin_lock_irqsave(&reset->lock, flags); in omap_reset_deassert()
828 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_reset_deassert()
830 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl); in omap_reset_deassert()
831 spin_unlock_irqrestore(&reset->lock, flags); in omap_reset_deassert()
834 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base + in omap_reset_deassert()
835 reset->prm->data->rstctrl, in omap_reset_deassert()
840 reset->prm->data->name, id); in omap_reset_deassert()
844 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base + in omap_reset_deassert()
845 reset->prm->data->rstst, in omap_reset_deassert()
850 reset->prm->data->name, id); in omap_reset_deassert()
853 if (reset->clkdm) in omap_reset_deassert()
854 pdata->clkdm_allow_idle(reset->clkdm); in omap_reset_deassert()
868 struct omap_reset_data *reset = to_omap_reset_data(rcdev); in omap_prm_reset_xlate() local
870 if (!_is_valid_reset(reset, reset_spec->args[0])) in omap_prm_reset_xlate()
879 struct omap_reset_data *reset; in omap_prm_reset_init() local
902 reset = devm_kzalloc(&pdev->dev, sizeof(*reset), GFP_KERNEL); in omap_prm_reset_init()
903 if (!reset) in omap_prm_reset_init()
906 reset->rcdev.owner = THIS_MODULE; in omap_prm_reset_init()
907 reset->rcdev.ops = &omap_reset_ops; in omap_prm_reset_init()
908 reset->rcdev.of_node = pdev->dev.of_node; in omap_prm_reset_init()
909 reset->rcdev.nr_resets = OMAP_MAX_RESETS; in omap_prm_reset_init()
910 reset->rcdev.of_xlate = omap_prm_reset_xlate; in omap_prm_reset_init()
911 reset->rcdev.of_reset_n_cells = 1; in omap_prm_reset_init()
912 reset->dev = &pdev->dev; in omap_prm_reset_init()
913 spin_lock_init(&reset->lock); in omap_prm_reset_init()
915 reset->prm = prm; in omap_prm_reset_init()
921 reset->clkdm = pdata->clkdm_lookup(buf); in omap_prm_reset_init()
922 if (!reset->clkdm) in omap_prm_reset_init()
927 reset->mask |= BIT(map->rst); in omap_prm_reset_init()
933 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); in omap_prm_reset_init()
934 if ((v & reset->mask) != reset->mask) { in omap_prm_reset_init()
936 writel_relaxed(reset->mask, reset->prm->base + in omap_prm_reset_init()
937 reset->prm->data->rstctrl); in omap_prm_reset_init()
941 return devm_reset_controller_register(&pdev->dev, &reset->rcdev); in omap_prm_reset_init()