tegra-car-reset.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (c) 2016, NVIDIA CORPORATION.
  4. */
  5. #include <common.h>
  6. #include <dm.h>
  7. #include <reset-uclass.h>
  8. #include <asm/arch/clock.h>
  9. #include <asm/arch-tegra/clk_rst.h>
  10. static int tegra_car_reset_request(struct reset_ctl *reset_ctl)
  11. {
  12. debug("%s(reset_ctl=%p) (dev=%p, id=%lu)\n", __func__, reset_ctl,
  13. reset_ctl->dev, reset_ctl->id);
  14. /* PERIPH_ID_COUNT varies per SoC */
  15. if (reset_ctl->id >= PERIPH_ID_COUNT)
  16. return -EINVAL;
  17. return 0;
  18. }
  19. static int tegra_car_reset_free(struct reset_ctl *reset_ctl)
  20. {
  21. debug("%s(reset_ctl=%p) (dev=%p, id=%lu)\n", __func__, reset_ctl,
  22. reset_ctl->dev, reset_ctl->id);
  23. return 0;
  24. }
  25. static int tegra_car_reset_assert(struct reset_ctl *reset_ctl)
  26. {
  27. debug("%s(reset_ctl=%p) (dev=%p, id=%lu)\n", __func__, reset_ctl,
  28. reset_ctl->dev, reset_ctl->id);
  29. reset_set_enable(reset_ctl->id, 1);
  30. return 0;
  31. }
  32. static int tegra_car_reset_deassert(struct reset_ctl *reset_ctl)
  33. {
  34. debug("%s(reset_ctl=%p) (dev=%p, id=%lu)\n", __func__, reset_ctl,
  35. reset_ctl->dev, reset_ctl->id);
  36. reset_set_enable(reset_ctl->id, 0);
  37. return 0;
  38. }
  39. struct reset_ops tegra_car_reset_ops = {
  40. .request = tegra_car_reset_request,
  41. .rfree = tegra_car_reset_free,
  42. .rst_assert = tegra_car_reset_assert,
  43. .rst_deassert = tegra_car_reset_deassert,
  44. };
  45. static int tegra_car_reset_probe(struct udevice *dev)
  46. {
  47. debug("%s(dev=%p)\n", __func__, dev);
  48. return 0;
  49. }
  50. U_BOOT_DRIVER(tegra_car_reset) = {
  51. .name = "tegra_car_reset",
  52. .id = UCLASS_RESET,
  53. .probe = tegra_car_reset_probe,
  54. .ops = &tegra_car_reset_ops,
  55. };