pcmcia.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include <common.h>
  2. #include <mpc8xx.h>
  3. #include <pcmcia.h>
  4. #undef CONFIG_PCMCIA
  5. #if defined(CONFIG_CMD_PCMCIA)
  6. #define CONFIG_PCMCIA
  7. #endif
  8. #if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
  9. #define CONFIG_PCMCIA
  10. #endif
  11. #ifdef CONFIG_PCMCIA
  12. #ifdef CONFIG_ADS
  13. #define PCMCIA_BOARD_MSG "ADS"
  14. #else
  15. #define PCMCIA_BOARD_MSG "FADS"
  16. #endif
  17. int pcmcia_voltage_set(int slot, int vcc, int vpp)
  18. {
  19. u_long reg = 0;
  20. switch(vpp) {
  21. case 0: reg = 0; break;
  22. case 50: reg = 1; break;
  23. case 120: reg = 2; break;
  24. default: return 1;
  25. }
  26. switch(vcc) {
  27. case 0: reg = 0; break;
  28. #ifdef CONFIG_ADS
  29. case 50: reg = BCSR1_PCCVCCON; break;
  30. #endif
  31. #ifdef CONFIG_FADS
  32. case 33: reg = BCSR1_PCCVCC0 | BCSR1_PCCVCC1; break;
  33. case 50: reg = BCSR1_PCCVCC1; break;
  34. #endif
  35. default: return 1;
  36. }
  37. /* first, turn off all power */
  38. #ifdef CONFIG_ADS
  39. *((uint *)BCSR1) |= BCSR1_PCCVCCON;
  40. #endif
  41. #ifdef CONFIG_FADS
  42. *((uint *)BCSR1) &= ~(BCSR1_PCCVCC0 | BCSR1_PCCVCC1);
  43. #endif
  44. *((uint *)BCSR1) &= ~BCSR1_PCCVPP_MASK;
  45. /* enable new powersettings */
  46. #ifdef CONFIG_ADS
  47. *((uint *)BCSR1) &= ~reg;
  48. #endif
  49. #ifdef CONFIG_FADS
  50. *((uint *)BCSR1) |= reg;
  51. #endif
  52. *((uint *)BCSR1) |= reg << 20;
  53. return 0;
  54. }
  55. int pcmcia_hardware_enable(int slot)
  56. {
  57. *((uint *)BCSR1) &= ~BCSR1_PCCEN;
  58. return 0;
  59. }
  60. #if defined(CONFIG_CMD_PCMCIA)
  61. int pcmcia_hardware_disable(int slot)
  62. {
  63. *((uint *)BCSR1) &= ~BCSR1_PCCEN;
  64. return 0;
  65. }
  66. #endif
  67. #endif /* CONFIG_PCMCIA */