spear_sdhci.c 723 B

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * (C) Copyright 2012
  3. * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <malloc.h>
  9. #include <sdhci.h>
  10. int spear_sdhci_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks)
  11. {
  12. struct sdhci_host *host = NULL;
  13. host = (struct sdhci_host *)malloc(sizeof(struct sdhci_host));
  14. if (!host) {
  15. printf("sdhci host malloc fail!\n");
  16. return 1;
  17. }
  18. host->name = "sdhci";
  19. host->ioaddr = (void *)regbase;
  20. host->quirks = quirks;
  21. if (quirks & SDHCI_QUIRK_REG32_RW)
  22. host->version = sdhci_readl(host, SDHCI_HOST_VERSION - 2) >> 16;
  23. else
  24. host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
  25. add_sdhci(host, max_clk, min_clk);
  26. return 0;
  27. }