board-u5500-sdi.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright (C) ST-Ericsson SA 2010
  3. *
  4. * Author: Hanumath Prasad <ulf.hansson@stericsson.com>
  5. * License terms: GNU General Public License (GPL) version 2
  6. */
  7. #include <linux/amba/mmci.h>
  8. #include <linux/mmc/host.h>
  9. #include <linux/gpio.h>
  10. #include <plat/pincfg.h>
  11. #include <mach/db5500-regs.h>
  12. #include <plat/ste_dma40.h>
  13. #include "pins-db5500.h"
  14. #include "devices-db5500.h"
  15. #include "ste-dma40-db5500.h"
  16. static pin_cfg_t u5500_sdi_pins[] = {
  17. /* SDI0 (POP eMMC) */
  18. GPIO5_MC0_DAT0 | PIN_DIR_INPUT | PIN_PULL_UP,
  19. GPIO6_MC0_DAT1 | PIN_DIR_INPUT | PIN_PULL_UP,
  20. GPIO7_MC0_DAT2 | PIN_DIR_INPUT | PIN_PULL_UP,
  21. GPIO8_MC0_DAT3 | PIN_DIR_INPUT | PIN_PULL_UP,
  22. GPIO9_MC0_DAT4 | PIN_DIR_INPUT | PIN_PULL_UP,
  23. GPIO10_MC0_DAT5 | PIN_DIR_INPUT | PIN_PULL_UP,
  24. GPIO11_MC0_DAT6 | PIN_DIR_INPUT | PIN_PULL_UP,
  25. GPIO12_MC0_DAT7 | PIN_DIR_INPUT | PIN_PULL_UP,
  26. GPIO13_MC0_CMD | PIN_DIR_INPUT | PIN_PULL_UP,
  27. GPIO14_MC0_CLK | PIN_DIR_OUTPUT | PIN_VAL_LOW,
  28. };
  29. #ifdef CONFIG_STE_DMA40
  30. struct stedma40_chan_cfg u5500_sdi0_dma_cfg_rx = {
  31. .mode = STEDMA40_MODE_LOGICAL,
  32. .dir = STEDMA40_PERIPH_TO_MEM,
  33. .src_dev_type = DB5500_DMA_DEV24_SDMMC0_RX,
  34. .dst_dev_type = STEDMA40_DEV_DST_MEMORY,
  35. .src_info.data_width = STEDMA40_WORD_WIDTH,
  36. .dst_info.data_width = STEDMA40_WORD_WIDTH,
  37. };
  38. static struct stedma40_chan_cfg u5500_sdi0_dma_cfg_tx = {
  39. .mode = STEDMA40_MODE_LOGICAL,
  40. .dir = STEDMA40_MEM_TO_PERIPH,
  41. .src_dev_type = STEDMA40_DEV_SRC_MEMORY,
  42. .dst_dev_type = DB5500_DMA_DEV24_SDMMC0_TX,
  43. .src_info.data_width = STEDMA40_WORD_WIDTH,
  44. .dst_info.data_width = STEDMA40_WORD_WIDTH,
  45. };
  46. #endif
  47. static struct mmci_platform_data u5500_sdi0_data = {
  48. .ocr_mask = MMC_VDD_165_195,
  49. .f_max = 50000000,
  50. .capabilities = MMC_CAP_4_BIT_DATA |
  51. MMC_CAP_8_BIT_DATA |
  52. MMC_CAP_MMC_HIGHSPEED,
  53. .gpio_cd = -1,
  54. .gpio_wp = -1,
  55. #ifdef CONFIG_STE_DMA40
  56. .dma_filter = stedma40_filter,
  57. .dma_rx_param = &u5500_sdi0_dma_cfg_rx,
  58. .dma_tx_param = &u5500_sdi0_dma_cfg_tx,
  59. #endif
  60. };
  61. void __init u5500_sdi_init(void)
  62. {
  63. nmk_config_pins(u5500_sdi_pins, ARRAY_SIZE(u5500_sdi_pins));
  64. db5500_add_sdi0(&u5500_sdi0_data);
  65. }