clint.h 875 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * SPDX-License-Identifier: BSD-2-Clause
  3. *
  4. * Copyright (c) 2019 Western Digital Corporation or its affiliates.
  5. *
  6. * Authors:
  7. * Anup Patel <anup.patel@wdc.com>
  8. */
  9. #ifndef __SYS_CLINT_H__
  10. #define __SYS_CLINT_H__
  11. #include <sbi/sbi_types.h>
  12. struct clint_data {
  13. /* Public details */
  14. unsigned long addr;
  15. u32 first_hartid;
  16. u32 hart_count;
  17. bool has_64bit_mmio;
  18. /* Private details (initialized and used by CLINT library)*/
  19. u32 *ipi;
  20. struct clint_data *time_delta_reference;
  21. unsigned long time_delta_computed;
  22. u64 time_delta;
  23. u64 *time_val;
  24. u64 *time_cmp;
  25. u64 (*time_rd)(volatile u64 *addr);
  26. void (*time_wr)(u64 value, volatile u64 *addr);
  27. };
  28. int clint_warm_ipi_init(void);
  29. int clint_cold_ipi_init(struct clint_data *clint);
  30. int clint_warm_timer_init(void);
  31. int clint_cold_timer_init(struct clint_data *clint,
  32. struct clint_data *reference);
  33. #endif