sysmmu.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd.
  3. * http://www.samsung.com
  4. *
  5. * EXYNOS - System MMU support
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License version 2 as
  9. * published by the Free Software Foundation.
  10. */
  11. #ifndef _ARM_MACH_EXYNOS_SYSMMU_H_
  12. #define _ARM_MACH_EXYNOS_SYSMMU_H_
  13. struct sysmmu_platform_data {
  14. char *dbgname;
  15. /* comma(,) separated list of clock names for clock gating */
  16. char *clockname;
  17. };
  18. #define SYSMMU_DEVNAME_BASE "exynos-sysmmu"
  19. #define SYSMMU_CLOCK_NAME "sysmmu"
  20. #define SYSMMU_CLOCK_NAME2 "sysmmu_mc"
  21. #ifdef CONFIG_EXYNOS_DEV_SYSMMU
  22. #include <linux/device.h>
  23. struct platform_device;
  24. #define SYSMMU_PLATDEV(ipname) exynos_device_sysmmu_##ipname
  25. extern struct platform_device SYSMMU_PLATDEV(mfc_l);
  26. extern struct platform_device SYSMMU_PLATDEV(mfc_r);
  27. extern struct platform_device SYSMMU_PLATDEV(tv);
  28. extern struct platform_device SYSMMU_PLATDEV(jpeg);
  29. extern struct platform_device SYSMMU_PLATDEV(rot);
  30. extern struct platform_device SYSMMU_PLATDEV(fimc0);
  31. extern struct platform_device SYSMMU_PLATDEV(fimc1);
  32. extern struct platform_device SYSMMU_PLATDEV(fimc2);
  33. extern struct platform_device SYSMMU_PLATDEV(fimc3);
  34. extern struct platform_device SYSMMU_PLATDEV(gsc0);
  35. extern struct platform_device SYSMMU_PLATDEV(gsc1);
  36. extern struct platform_device SYSMMU_PLATDEV(gsc2);
  37. extern struct platform_device SYSMMU_PLATDEV(gsc3);
  38. extern struct platform_device SYSMMU_PLATDEV(isp);
  39. extern struct platform_device SYSMMU_PLATDEV(fimd0);
  40. extern struct platform_device SYSMMU_PLATDEV(fimd1);
  41. extern struct platform_device SYSMMU_PLATDEV(camif0);
  42. extern struct platform_device SYSMMU_PLATDEV(camif1);
  43. extern struct platform_device SYSMMU_PLATDEV(2d);
  44. #ifdef CONFIG_IOMMU_API
  45. static inline void platform_set_sysmmu(
  46. struct device *sysmmu, struct device *dev)
  47. {
  48. dev->archdata.iommu = sysmmu;
  49. }
  50. #endif
  51. #else /* !CONFIG_EXYNOS_DEV_SYSMMU */
  52. #define platform_set_sysmmu(sysmmu, dev) do { } while (0)
  53. #endif
  54. #define SYSMMU_CLOCK_DEVNAME(ipname, id) (SYSMMU_DEVNAME_BASE "." #id)
  55. #endif /* _ARM_MACH_EXYNOS_SYSMMU_H_ */