orb.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Orb related data structures.
  4. *
  5. * Copyright IBM Corp. 2007, 2011
  6. *
  7. * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
  8. * Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
  9. * Sebastian Ott <sebott@linux.vnet.ibm.com>
  10. */
  11. #ifndef S390_ORB_H
  12. #define S390_ORB_H
  13. #include <linux/types.h>
  14. #include <asm/dma-types.h>
  15. /*
  16. * Command-mode operation request block
  17. */
  18. struct cmd_orb {
  19. u32 intparm; /* interruption parameter */
  20. u32 key:4; /* flags, like key, suspend control, etc. */
  21. u32 spnd:1; /* suspend control */
  22. u32 res1:1; /* reserved */
  23. u32 mod:1; /* modification control */
  24. u32 sync:1; /* synchronize control */
  25. u32 fmt:1; /* format control */
  26. u32 pfch:1; /* prefetch control */
  27. u32 isic:1; /* initial-status-interruption control */
  28. u32 alcc:1; /* address-limit-checking control */
  29. u32 ssic:1; /* suppress-suspended-interr. control */
  30. u32 res2:1; /* reserved */
  31. u32 c64:1; /* IDAW/QDIO 64 bit control */
  32. u32 i2k:1; /* IDAW 2/4kB block size control */
  33. u32 lpm:8; /* logical path mask */
  34. u32 ils:1; /* incorrect length */
  35. u32 zero:6; /* reserved zeros */
  36. u32 orbx:1; /* ORB extension control */
  37. dma32_t cpa; /* channel program address */
  38. } __packed __aligned(4);
  39. /*
  40. * Transport-mode operation request block
  41. */
  42. struct tm_orb {
  43. u32 intparm;
  44. u32 key:4;
  45. u32:9;
  46. u32 b:1;
  47. u32:2;
  48. u32 lpm:8;
  49. u32:7;
  50. u32 x:1;
  51. dma32_t tcw;
  52. u32 prio:8;
  53. u32:8;
  54. u32 rsvpgm:8;
  55. u32:8;
  56. u32:32;
  57. u32:32;
  58. u32:32;
  59. u32:32;
  60. } __packed __aligned(4);
  61. /*
  62. * eadm operation request block
  63. */
  64. struct eadm_orb {
  65. u32 intparm;
  66. u32 key:4;
  67. u32:4;
  68. u32 compat1:1;
  69. u32 compat2:1;
  70. u32:21;
  71. u32 x:1;
  72. dma32_t aob;
  73. u32 css_prio:8;
  74. u32:8;
  75. u32 scm_prio:8;
  76. u32:8;
  77. u32:29;
  78. u32 fmt:3;
  79. u32:32;
  80. u32:32;
  81. u32:32;
  82. } __packed __aligned(4);
  83. union orb {
  84. struct cmd_orb cmd;
  85. struct tm_orb tm;
  86. struct eadm_orb eadm;
  87. } __packed __aligned(4);
  88. #endif /* S390_ORB_H */