Lines Matching defs:reset

19 #include <linux/reset-controller.h>
724 static bool _is_valid_reset(struct omap_reset_data *reset, unsigned long id)
726 if (reset->mask & BIT(id))
732 static int omap_reset_get_st_bit(struct omap_reset_data *reset,
735 const struct omap_rst_map *map = reset->prm->data->rstmap;
750 struct omap_reset_data *reset = to_omap_reset_data(rcdev);
752 int st_bit = omap_reset_get_st_bit(reset, id);
753 bool has_rstst = reset->prm->data->rstst ||
754 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST);
760 /* Check if hw reset line is asserted */
761 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl);
766 * Check reset status, high value means reset sequence has been
767 * completed successfully so we can return 0 here (reset deasserted)
769 v = readl_relaxed(reset->prm->base + reset->prm->data->rstst);
779 struct omap_reset_data *reset = to_omap_reset_data(rcdev);
783 /* assert the reset control line */
784 spin_lock_irqsave(&reset->lock, flags);
785 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl);
787 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl);
788 spin_unlock_irqrestore(&reset->lock, flags);
796 struct omap_reset_data *reset = to_omap_reset_data(rcdev);
801 struct ti_prm_platform_data *pdata = dev_get_platdata(reset->dev);
804 /* Nothing to do if the reset is already deasserted */
808 has_rstst = reset->prm->data->rstst ||
809 (reset->prm->data->flags & OMAP_PRM_HAS_RSTST);
812 st_bit = omap_reset_get_st_bit(reset, id);
814 /* Clear the reset status by writing 1 to the status bit */
816 writel_relaxed(v, reset->prm->base + reset->prm->data->rstst);
819 if (reset->clkdm)
820 pdata->clkdm_deny_idle(reset->clkdm);
822 /* de-assert the reset control line */
823 spin_lock_irqsave(&reset->lock, flags);
824 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl);
826 writel_relaxed(v, reset->prm->base + reset->prm->data->rstctrl);
827 spin_unlock_irqrestore(&reset->lock, flags);
829 /* wait for the reset bit to clear */
830 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base +
831 reset->prm->data->rstctrl,
836 reset->prm->data->name, id);
840 ret = readl_relaxed_poll_timeout_atomic(reset->prm->base +
841 reset->prm->data->rstst,
846 reset->prm->data->name, id);
849 if (reset->clkdm)
850 pdata->clkdm_allow_idle(reset->clkdm);
864 struct omap_reset_data *reset = to_omap_reset_data(rcdev);
866 if (!_is_valid_reset(reset, reset_spec->args[0]))
875 struct omap_reset_data *reset;
883 * or OMAP_PRM_HAS_RSTCTRL flag is set, we have reset control register
898 reset = devm_kzalloc(&pdev->dev, sizeof(*reset), GFP_KERNEL);
899 if (!reset)
902 reset->rcdev.owner = THIS_MODULE;
903 reset->rcdev.ops = &omap_reset_ops;
904 reset->rcdev.of_node = pdev->dev.of_node;
905 reset->rcdev.nr_resets = OMAP_MAX_RESETS;
906 reset->rcdev.of_xlate = omap_prm_reset_xlate;
907 reset->rcdev.of_reset_n_cells = 1;
908 reset->dev = &pdev->dev;
909 spin_lock_init(&reset->lock);
911 reset->prm = prm;
917 reset->clkdm = pdata->clkdm_lookup(buf);
918 if (!reset->clkdm)
923 reset->mask |= BIT(map->rst);
927 /* Quirk handling to assert rst_map_012 bits on reset and avoid errors */
929 v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl);
930 if ((v & reset->mask) != reset->mask) {
932 writel_relaxed(reset->mask, reset->prm->base +
933 reset->prm->data->rstctrl);
937 return devm_reset_controller_register(&pdev->dev, &reset->rcdev);