reset-simple.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Simple Reset Controller ops
  3. *
  4. * Based on Allwinner SoCs Reset Controller driver
  5. *
  6. * Copyright 2013 Maxime Ripard
  7. *
  8. * Maxime Ripard <maxime.ripard@free-electrons.com>
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; either version 2 of the License, or
  13. * (at your option) any later version.
  14. */
  15. #ifndef __RESET_SIMPLE_H__
  16. #define __RESET_SIMPLE_H__
  17. #include <linux/io.h>
  18. #include <linux/reset-controller.h>
  19. #include <linux/spinlock.h>
  20. /**
  21. * struct reset_simple_data - driver data for simple reset controllers
  22. * @lock: spinlock to protect registers during read-modify-write cycles
  23. * @membase: memory mapped I/O register range
  24. * @rcdev: reset controller device base structure
  25. * @active_low: if true, bits are cleared to assert the reset. Otherwise, bits
  26. * are set to assert the reset. Note that this says nothing about
  27. * the voltage level of the actual reset line.
  28. * @status_active_low: if true, bits read back as cleared while the reset is
  29. * asserted. Otherwise, bits read back as set while the
  30. * reset is asserted.
  31. */
  32. struct reset_simple_data {
  33. spinlock_t lock;
  34. void __iomem *membase;
  35. struct reset_controller_dev rcdev;
  36. bool active_low;
  37. bool status_active_low;
  38. };
  39. extern const struct reset_control_ops reset_simple_ops;
  40. #endif /* __RESET_SIMPLE_H__ */