board-mop500-sdi.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (C) ST-Ericsson SA 2010
  3. *
  4. * Author: Hanumath Prasad <hanumath.prasad@stericsson.com>
  5. * License terms: GNU General Public License (GPL) version 2
  6. */
  7. #include <linux/kernel.h>
  8. #include <linux/gpio.h>
  9. #include <linux/amba/bus.h>
  10. #include <linux/amba/mmci.h>
  11. #include <linux/mmc/host.h>
  12. #include <linux/platform_device.h>
  13. #include <plat/pincfg.h>
  14. #include <mach/devices.h>
  15. #include <mach/hardware.h>
  16. #include "pins-db8500.h"
  17. #include "board-mop500.h"
  18. static pin_cfg_t mop500_sdi_pins[] = {
  19. /* SDI4 (on-board eMMC) */
  20. GPIO197_MC4_DAT3,
  21. GPIO198_MC4_DAT2,
  22. GPIO199_MC4_DAT1,
  23. GPIO200_MC4_DAT0,
  24. GPIO201_MC4_CMD,
  25. GPIO202_MC4_FBCLK,
  26. GPIO203_MC4_CLK,
  27. GPIO204_MC4_DAT7,
  28. GPIO205_MC4_DAT6,
  29. GPIO206_MC4_DAT5,
  30. GPIO207_MC4_DAT4,
  31. };
  32. static pin_cfg_t mop500_sdi2_pins[] = {
  33. /* SDI2 (POP eMMC) */
  34. GPIO128_MC2_CLK,
  35. GPIO129_MC2_CMD,
  36. GPIO130_MC2_FBCLK,
  37. GPIO131_MC2_DAT0,
  38. GPIO132_MC2_DAT1,
  39. GPIO133_MC2_DAT2,
  40. GPIO134_MC2_DAT3,
  41. GPIO135_MC2_DAT4,
  42. GPIO136_MC2_DAT5,
  43. GPIO137_MC2_DAT6,
  44. GPIO138_MC2_DAT7,
  45. };
  46. /*
  47. * SDI 2 (POP eMMC, not on DB8500ed)
  48. */
  49. static struct mmci_platform_data mop500_sdi2_data = {
  50. .ocr_mask = MMC_VDD_165_195,
  51. .f_max = 100000000,
  52. .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
  53. .gpio_cd = -1,
  54. .gpio_wp = -1,
  55. };
  56. /*
  57. * SDI 4 (on-board eMMC)
  58. */
  59. static struct mmci_platform_data mop500_sdi4_data = {
  60. .ocr_mask = MMC_VDD_29_30,
  61. .f_max = 100000000,
  62. .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA |
  63. MMC_CAP_MMC_HIGHSPEED,
  64. .gpio_cd = -1,
  65. .gpio_wp = -1,
  66. };
  67. void mop500_sdi_init(void)
  68. {
  69. nmk_config_pins(mop500_sdi_pins, ARRAY_SIZE(mop500_sdi_pins));
  70. u8500_sdi2_device.dev.platform_data = &mop500_sdi2_data;
  71. u8500_sdi4_device.dev.platform_data = &mop500_sdi4_data;
  72. if (!cpu_is_u8500ed()) {
  73. nmk_config_pins(mop500_sdi2_pins, ARRAY_SIZE(mop500_sdi2_pins));
  74. amba_device_register(&u8500_sdi2_device, &iomem_resource);
  75. }
  76. /* On-board eMMC */
  77. amba_device_register(&u8500_sdi4_device, &iomem_resource);
  78. }