ns_access.c 702 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright 2014 Freescale Semiconductor
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <asm/io.h>
  8. #include <fsl_csu.h>
  9. #include <asm/arch/ns_access.h>
  10. static void enable_devices_ns_access(struct csu_ns_dev *ns_dev, uint32_t num)
  11. {
  12. u32 *base = (u32 *)CONFIG_SYS_FSL_CSU_ADDR;
  13. u32 *reg;
  14. uint32_t val;
  15. int i;
  16. for (i = 0; i < num; i++) {
  17. reg = base + ns_dev[i].ind / 2;
  18. val = in_be32(reg);
  19. if (ns_dev[i].ind % 2 == 0) {
  20. val &= 0x0000ffff;
  21. val |= ns_dev[i].val << 16;
  22. } else {
  23. val &= 0xffff0000;
  24. val |= ns_dev[i].val;
  25. }
  26. out_be32(reg, val);
  27. }
  28. }
  29. void enable_layerscape_ns_access(void)
  30. {
  31. enable_devices_ns_access(ns_dev, ARRAY_SIZE(ns_dev));
  32. }