devices-common.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. /*
  2. * Copyright (C) ST-Ericsson SA 2010
  3. *
  4. * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
  5. * License terms: GNU General Public License (GPL), version 2.
  6. */
  7. #ifndef __DEVICES_COMMON_H
  8. #define __DEVICES_COMMON_H
  9. #include <linux/platform_device.h>
  10. #include <linux/dma-mapping.h>
  11. #include <linux/sys_soc.h>
  12. #include <linux/amba/bus.h>
  13. #include <plat/i2c.h>
  14. #include <mach/crypto-ux500.h>
  15. struct spi_master_cntlr;
  16. static inline struct amba_device *
  17. dbx500_add_msp_spi(struct device *parent, const char *name,
  18. resource_size_t base, int irq,
  19. struct spi_master_cntlr *pdata)
  20. {
  21. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  22. pdata, 0);
  23. }
  24. static inline struct amba_device *
  25. dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
  26. int irq, struct spi_master_cntlr *pdata,
  27. u32 periphid)
  28. {
  29. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  30. pdata, periphid);
  31. }
  32. struct mmci_platform_data;
  33. static inline struct amba_device *
  34. dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
  35. int irq, struct mmci_platform_data *pdata, u32 periphid)
  36. {
  37. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  38. pdata, periphid);
  39. }
  40. struct amba_pl011_data;
  41. static inline struct amba_device *
  42. dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
  43. int irq, struct amba_pl011_data *pdata)
  44. {
  45. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
  46. }
  47. struct nmk_i2c_controller;
  48. static inline struct platform_device *
  49. dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
  50. struct nmk_i2c_controller *data)
  51. {
  52. struct resource res[] = {
  53. DEFINE_RES_MEM(base, SZ_4K),
  54. DEFINE_RES_IRQ(irq),
  55. };
  56. struct platform_device_info pdevinfo = {
  57. .parent = parent,
  58. .name = "nmk-i2c",
  59. .id = id,
  60. .res = res,
  61. .num_res = ARRAY_SIZE(res),
  62. .data = data,
  63. .size_data = sizeof(*data),
  64. .dma_mask = DMA_BIT_MASK(32),
  65. };
  66. return platform_device_register_full(&pdevinfo);
  67. }
  68. static inline struct amba_device *
  69. dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
  70. {
  71. return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq,
  72. 0, NULL, 0);
  73. }
  74. struct cryp_platform_data;
  75. static inline struct platform_device *
  76. dbx500_add_cryp1(struct device *parent, int id, resource_size_t base, int irq,
  77. struct cryp_platform_data *pdata)
  78. {
  79. struct resource res[] = {
  80. DEFINE_RES_MEM(base, SZ_4K),
  81. DEFINE_RES_IRQ(irq),
  82. };
  83. struct platform_device_info pdevinfo = {
  84. .parent = parent,
  85. .name = "cryp1",
  86. .id = id,
  87. .res = res,
  88. .num_res = ARRAY_SIZE(res),
  89. .data = pdata,
  90. .size_data = sizeof(*pdata),
  91. .dma_mask = DMA_BIT_MASK(32),
  92. };
  93. return platform_device_register_full(&pdevinfo);
  94. }
  95. struct hash_platform_data;
  96. static inline struct platform_device *
  97. dbx500_add_hash1(struct device *parent, int id, resource_size_t base,
  98. struct hash_platform_data *pdata)
  99. {
  100. struct resource res[] = {
  101. DEFINE_RES_MEM(base, SZ_4K),
  102. };
  103. struct platform_device_info pdevinfo = {
  104. .parent = parent,
  105. .name = "hash1",
  106. .id = id,
  107. .res = res,
  108. .num_res = ARRAY_SIZE(res),
  109. .data = pdata,
  110. .size_data = sizeof(*pdata),
  111. .dma_mask = DMA_BIT_MASK(32),
  112. };
  113. return platform_device_register_full(&pdevinfo);
  114. }
  115. struct nmk_gpio_platform_data;
  116. void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
  117. int irq, struct nmk_gpio_platform_data *pdata);
  118. static inline void
  119. dbx500_add_pinctrl(struct device *parent, const char *name)
  120. {
  121. struct platform_device_info pdevinfo = {
  122. .parent = parent,
  123. .name = name,
  124. .id = -1,
  125. };
  126. platform_device_register_full(&pdevinfo);
  127. }
  128. #endif