devices-common.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. struct spi_master_cntlr;
  15. static inline struct amba_device *
  16. dbx500_add_msp_spi(struct device *parent, const char *name,
  17. resource_size_t base, int irq,
  18. struct spi_master_cntlr *pdata)
  19. {
  20. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  21. pdata, 0);
  22. }
  23. static inline struct amba_device *
  24. dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
  25. int irq, struct spi_master_cntlr *pdata,
  26. u32 periphid)
  27. {
  28. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  29. pdata, periphid);
  30. }
  31. struct mmci_platform_data;
  32. static inline struct amba_device *
  33. dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
  34. int irq, struct mmci_platform_data *pdata, u32 periphid)
  35. {
  36. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
  37. pdata, periphid);
  38. }
  39. struct amba_pl011_data;
  40. static inline struct amba_device *
  41. dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
  42. int irq, struct amba_pl011_data *pdata)
  43. {
  44. return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
  45. }
  46. struct nmk_i2c_controller;
  47. static inline struct platform_device *
  48. dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
  49. struct nmk_i2c_controller *data)
  50. {
  51. struct resource res[] = {
  52. DEFINE_RES_MEM(base, SZ_4K),
  53. DEFINE_RES_IRQ(irq),
  54. };
  55. struct platform_device_info pdevinfo = {
  56. .parent = parent,
  57. .name = "nmk-i2c",
  58. .id = id,
  59. .res = res,
  60. .num_res = ARRAY_SIZE(res),
  61. .data = data,
  62. .size_data = sizeof(*data),
  63. .dma_mask = DMA_BIT_MASK(32),
  64. };
  65. return platform_device_register_full(&pdevinfo);
  66. }
  67. static inline struct amba_device *
  68. dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
  69. {
  70. return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq,
  71. 0, NULL, 0);
  72. }
  73. struct nmk_gpio_platform_data;
  74. void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
  75. int irq, struct nmk_gpio_platform_data *pdata);
  76. static inline void
  77. dbx500_add_pinctrl(struct device *parent, const char *name)
  78. {
  79. struct platform_device_info pdevinfo = {
  80. .parent = parent,
  81. .name = name,
  82. .id = -1,
  83. };
  84. platform_device_register_full(&pdevinfo);
  85. }
  86. #endif