ecard.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * ecard.h
  4. *
  5. * Copyright 2007 Russell King
  6. */
  7. /* Definitions internal to ecard.c - for it's use only!!
  8. *
  9. * External expansion card header as read from the card
  10. */
  11. struct ex_ecid {
  12. unsigned char r_irq:1;
  13. unsigned char r_zero:1;
  14. unsigned char r_fiq:1;
  15. unsigned char r_id:4;
  16. unsigned char r_a:1;
  17. unsigned char r_cd:1;
  18. unsigned char r_is:1;
  19. unsigned char r_w:2;
  20. unsigned char r_r1:4;
  21. unsigned char r_r2:8;
  22. unsigned char r_prod[2];
  23. unsigned char r_manu[2];
  24. unsigned char r_country;
  25. unsigned char r_fiqmask;
  26. unsigned char r_fiqoff[3];
  27. unsigned char r_irqmask;
  28. unsigned char r_irqoff[3];
  29. };
  30. /*
  31. * Chunk directory entry as read from the card
  32. */
  33. struct ex_chunk_dir {
  34. unsigned char r_id;
  35. unsigned char r_len[3];
  36. unsigned long r_start;
  37. union {
  38. char string[256];
  39. char data[1];
  40. } d;
  41. #define c_id(x) ((x)->r_id)
  42. #define c_len(x) ((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16))
  43. #define c_start(x) ((x)->r_start)
  44. };
  45. typedef enum ecard_type { /* Cards address space */
  46. ECARD_IOC,
  47. ECARD_MEMC,
  48. ECARD_EASI
  49. } card_type_t;
  50. typedef enum { /* Speed for ECARD_IOC space */
  51. ECARD_SLOW = 0,
  52. ECARD_MEDIUM = 1,
  53. ECARD_FAST = 2,
  54. ECARD_SYNC = 3
  55. } card_speed_t;