imx_rproc.h 931 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
  4. * Copyright 2021 NXP
  5. */
  6. #ifndef _IMX_RPROC_H
  7. #define _IMX_RPROC_H
  8. /* address translation table */
  9. struct imx_rproc_att {
  10. u32 da; /* device address (From Cortex M4 view)*/
  11. u32 sa; /* system bus address */
  12. u32 size; /* size of reg range */
  13. int flags;
  14. };
  15. /* Remote core start/stop method */
  16. enum imx_rproc_method {
  17. IMX_RPROC_NONE,
  18. /* Through syscon regmap */
  19. IMX_RPROC_MMIO,
  20. /* Through ARM SMCCC */
  21. IMX_RPROC_SMC,
  22. /* Through System Control Unit API */
  23. IMX_RPROC_SCU_API,
  24. };
  25. /* dcfg flags */
  26. #define IMX_RPROC_NEED_SYSTEM_OFF BIT(0)
  27. struct imx_rproc_dcfg {
  28. u32 src_reg;
  29. u32 src_mask;
  30. u32 src_start;
  31. u32 src_stop;
  32. u32 gpr_reg;
  33. u32 gpr_wait;
  34. const struct imx_rproc_att *att;
  35. size_t att_size;
  36. enum imx_rproc_method method;
  37. u32 flags;
  38. };
  39. #endif /* _IMX_RPROC_H */