cfide.c 1006 B

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * Altera CF drvier
  3. *
  4. * (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 as
  8. * published by the Free Software Foundation.
  9. */
  10. #include <common.h>
  11. #include <asm/io.h>
  12. #if defined(CONFIG_IDE_RESET) && defined(CONFIG_SYS_CF_CTL_BASE)
  13. /* ide_set_reset for Altera CF interface */
  14. #define ALTERA_CF_CTL_STATUS 0
  15. #define ALTERA_CF_IDE_CTL 4
  16. #define ALTERA_CF_CTL_STATUS_PRESENT_MSK (0x1)
  17. #define ALTERA_CF_CTL_STATUS_POWER_MSK (0x2)
  18. #define ALTERA_CF_CTL_STATUS_RESET_MSK (0x4)
  19. #define ALTERA_CF_CTL_STATUS_IRQ_EN_MSK (0x8)
  20. #define ALTERA_CF_IDE_CTL_IRQ_EN_MSK (0x1)
  21. void ide_set_reset(int idereset)
  22. {
  23. int i;
  24. writel(idereset ? ALTERA_CF_CTL_STATUS_RESET_MSK :
  25. ALTERA_CF_CTL_STATUS_POWER_MSK,
  26. CONFIG_SYS_CF_CTL_BASE + ALTERA_CF_CTL_STATUS);
  27. /* wait 500 ms for power to stabilize */
  28. for (i = 0; i < 500; i++)
  29. udelay(1000);
  30. }
  31. #endif