mux.c 1011 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <config.h>
  2. #include <common.h>
  3. #include <asm/hardware.h>
  4. #include <asm/io.h>
  5. #include <dataflash.h>
  6. int AT91F_GetMuxStatus(void)
  7. {
  8. /* Set in PIO mode */
  9. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER);
  10. /* Configure in output */
  11. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER);
  12. if(readl(AT91C_BASE_PIOB->PIO_ODSR) & CONFIG_SYS_DATAFLASH_MMC_PIO)
  13. return 1;
  14. return 0;
  15. }
  16. void AT91F_SelectMMC(void)
  17. {
  18. /* Set in PIO mode */
  19. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER);
  20. /* Configure in output */
  21. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER);
  22. /* Set Output */
  23. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_SODR);
  24. }
  25. void AT91F_SelectSPI(void)
  26. {
  27. /* Set in PIO mode */
  28. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER);
  29. /* Configure in output */
  30. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER);
  31. /* Clear Output */
  32. writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_CODR);
  33. }