devices-common.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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 <linux/platform_data/i2c-nomadik.h>
  14. #include <linux/platform_data/crypto-ux500.h>
  15. struct spi_master_cntlr;
  16. static inline struct amba_device *
  17. dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
  18. int irq, struct spi_master_cntlr *pdata,
  19. u32 periphid)
  20. {
  21. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  22. pdata, periphid);
  23. }
  24. struct mmci_platform_data;
  25. static inline struct amba_device *
  26. dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
  27. int irq, struct mmci_platform_data *pdata, u32 periphid)
  28. {
  29. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  30. pdata, periphid);
  31. }
  32. struct amba_pl011_data;
  33. static inline struct amba_device *
  34. dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
  35. int irq, struct amba_pl011_data *pdata)
  36. {
  37. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
  38. }
  39. struct nmk_i2c_controller;
  40. static inline struct amba_device *
  41. dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
  42. struct nmk_i2c_controller *data)
  43. {
  44. /* Conjure a name similar to what the platform device used to have */
  45. char name[16];
  46. snprintf(name, sizeof(name), "nmk-i2c.%d", id);
  47. return amba_apb_device_add(parent, name, base, SZ_4K, irq, 0, data, 0);
  48. }
  49. static inline struct amba_device *
  50. dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
  51. {
  52. return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq,
  53. 0, NULL, 0);
  54. }
  55. struct cryp_platform_data;
  56. static inline struct platform_device *
  57. dbx500_add_cryp1(struct device *parent, int id, resource_size_t base, int irq,
  58. struct cryp_platform_data *pdata)
  59. {
  60. struct resource res[] = {
  61. DEFINE_RES_MEM(base, SZ_4K),
  62. DEFINE_RES_IRQ(irq),
  63. };
  64. struct platform_device_info pdevinfo = {
  65. .parent = parent,
  66. .name = "cryp1",
  67. .id = id,
  68. .res = res,
  69. .num_res = ARRAY_SIZE(res),
  70. .data = pdata,
  71. .size_data = sizeof(*pdata),
  72. .dma_mask = DMA_BIT_MASK(32),
  73. };
  74. return platform_device_register_full(&pdevinfo);
  75. }
  76. struct hash_platform_data;
  77. static inline struct platform_device *
  78. dbx500_add_hash1(struct device *parent, int id, resource_size_t base,
  79. struct hash_platform_data *pdata)
  80. {
  81. struct resource res[] = {
  82. DEFINE_RES_MEM(base, SZ_4K),
  83. };
  84. struct platform_device_info pdevinfo = {
  85. .parent = parent,
  86. .name = "hash1",
  87. .id = id,
  88. .res = res,
  89. .num_res = ARRAY_SIZE(res),
  90. .data = pdata,
  91. .size_data = sizeof(*pdata),
  92. .dma_mask = DMA_BIT_MASK(32),
  93. };
  94. return platform_device_register_full(&pdevinfo);
  95. }
  96. struct nmk_gpio_platform_data;
  97. void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
  98. int irq, struct nmk_gpio_platform_data *pdata);
  99. static inline void
  100. dbx500_add_pinctrl(struct device *parent, const char *name,
  101. resource_size_t base)
  102. {
  103. struct resource res[] = {
  104. DEFINE_RES_MEM(base, SZ_8K),
  105. };
  106. struct platform_device_info pdevinfo = {
  107. .parent = parent,
  108. .name = name,
  109. .id = -1,
  110. .res = res,
  111. .num_res = ARRAY_SIZE(res),
  112. };
  113. platform_device_register_full(&pdevinfo);
  114. }
  115. #endif