etherwavelan.c 870 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* Bitsy pcmcia code for wavelan.c */
  2. #include "u.h"
  3. #include "../port/lib.h"
  4. #include "mem.h"
  5. #include "dat.h"
  6. #include "fns.h"
  7. #include "io.h"
  8. #include "../port/error.h"
  9. #include "../port/netif.h"
  10. #include "etherif.h"
  11. #include "../pc/wavelan.h"
  12. static int
  13. wavelanpcmciareset(Ether *ether)
  14. {
  15. Ctlr *ctlr;
  16. if((ctlr = malloc(sizeof(Ctlr))) == nil)
  17. return -1;
  18. ilock(ctlr);
  19. ctlr->ctlrno = ether->ctlrno;
  20. if (ether->ports == nil){
  21. ether->ports = malloc(sizeof(Devport));
  22. ether->ports[0].port = 0;
  23. ether->ports[0].size = 0;
  24. ether->nports= 1;
  25. }
  26. if (ether->ports[0].port==0)
  27. ether->ports[0].port=WDfltIOB;
  28. ctlr->iob = ether->ports[0].port;
  29. if(wavelanreset(ether, ctlr) < 0){
  30. iunlock(ctlr);
  31. free(ctlr);
  32. ether->ctlr = nil;
  33. return -1;
  34. }
  35. iunlock(ctlr);
  36. return 0;
  37. }
  38. void
  39. etherwavelanlink(void)
  40. {
  41. addethercard("wavelan", wavelanpcmciareset);
  42. }