imx_rproc.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. /* dcfg flags */
  16. #define IMX_RPROC_NEED_SYSTEM_OFF BIT(0)
  17. #define IMX_RPROC_NEED_CLKS BIT(1)
  18. struct imx_rproc_plat_ops {
  19. int (*start)(struct rproc *rproc);
  20. int (*stop)(struct rproc *rproc);
  21. int (*detach)(struct rproc *rproc);
  22. int (*detect_mode)(struct rproc *rproc);
  23. int (*prepare)(struct rproc *rproc);
  24. };
  25. struct imx_rproc_dcfg {
  26. u32 src_reg;
  27. u32 src_mask;
  28. u32 src_start;
  29. u32 src_stop;
  30. u32 gpr_reg;
  31. u32 gpr_wait;
  32. const struct imx_rproc_att *att;
  33. size_t att_size;
  34. u32 flags;
  35. const struct imx_rproc_plat_ops *ops;
  36. /* For System Manager(SM) based SoCs */
  37. u32 cpuid; /* ID of the remote core */
  38. u32 lmid; /* ID of the Logcial Machine */
  39. };
  40. #endif /* _IMX_RPROC_H */