pcmcia.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #define PCMCIA_BOARD_MSG "FADS"
  13. int pcmcia_voltage_set(int slot, int vcc, int vpp)
  14. {
  15. u_long reg = 0;
  16. switch(vpp) {
  17. case 0: reg = 0; break;
  18. case 50: reg = 1; break;
  19. case 120: reg = 2; break;
  20. default: return 1;
  21. }
  22. switch(vcc) {
  23. case 0: reg = 0; break;
  24. #ifdef CONFIG_FADS
  25. case 33: reg = BCSR1_PCCVCC0 | BCSR1_PCCVCC1; break;
  26. case 50: reg = BCSR1_PCCVCC1; break;
  27. #endif
  28. default: return 1;
  29. }
  30. /* first, turn off all power */
  31. #ifdef CONFIG_FADS
  32. *((uint *)BCSR1) &= ~(BCSR1_PCCVCC0 | BCSR1_PCCVCC1);
  33. #endif
  34. *((uint *)BCSR1) &= ~BCSR1_PCCVPP_MASK;
  35. /* enable new powersettings */
  36. #ifdef CONFIG_FADS
  37. *((uint *)BCSR1) |= reg;
  38. #endif
  39. *((uint *)BCSR1) |= reg << 20;
  40. return 0;
  41. }
  42. int pcmcia_hardware_enable(int slot)
  43. {
  44. *((uint *)BCSR1) &= ~BCSR1_PCCEN;
  45. return 0;
  46. }
  47. #if defined(CONFIG_CMD_PCMCIA)
  48. int pcmcia_hardware_disable(int slot)
  49. {
  50. *((uint *)BCSR1) &= ~BCSR1_PCCEN;
  51. return 0;
  52. }
  53. #endif
  54. #endif /* CONFIG_PCMCIA */