rpx_pcmcia.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /* -------------------------------------------------------------------- */
  2. /* RPX Boards from Embedded Planet */
  3. /* -------------------------------------------------------------------- */
  4. #include <common.h>
  5. #ifdef CONFIG_8xx
  6. #include <mpc8xx.h>
  7. #endif
  8. #include <pcmcia.h>
  9. #undef CONFIG_PCMCIA
  10. #if defined(CONFIG_CMD_PCMCIA)
  11. #define CONFIG_PCMCIA
  12. #endif
  13. #if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)
  14. #define CONFIG_PCMCIA
  15. #endif
  16. #if defined(CONFIG_PCMCIA) \
  17. && (defined(CONFIG_RPXCLASSIC) || defined(CONFIG_RPXLITE))
  18. #define PCMCIA_BOARD_MSG "RPX CLASSIC or RPX LITE"
  19. int pcmcia_voltage_set(int slot, int vcc, int vpp)
  20. {
  21. u_long reg = 0;
  22. switch(vcc) {
  23. case 0: break;
  24. case 33: reg |= BCSR1_PCVCTL4; break;
  25. case 50: reg |= BCSR1_PCVCTL5; break;
  26. default: return 1;
  27. }
  28. switch(vpp) {
  29. case 0: break;
  30. case 33:
  31. case 50:
  32. if(vcc == vpp)
  33. reg |= BCSR1_PCVCTL6;
  34. else
  35. return 1;
  36. break;
  37. case 120:
  38. reg |= BCSR1_PCVCTL7;
  39. default: return 1;
  40. }
  41. /* first, turn off all power */
  42. *((uint *)RPX_CSR_ADDR) &= ~(BCSR1_PCVCTL4 | BCSR1_PCVCTL5
  43. | BCSR1_PCVCTL6 | BCSR1_PCVCTL7);
  44. /* enable new powersettings */
  45. *((uint *)RPX_CSR_ADDR) |= reg;
  46. return 0;
  47. }
  48. int pcmcia_hardware_enable (int slot)
  49. {
  50. return 0; /* No hardware to enable */
  51. }
  52. #if defined(CONFIG_CMD_PCMCIA)
  53. static int pcmcia_hardware_disable(int slot)
  54. {
  55. return 0; /* No hardware to disable */
  56. }
  57. #endif
  58. #endif /* CONFIG_PCMCIA && (CONFIG_RPXCLASSIC || CONFIG_RPXLITE) */