patch-src_linux_sysfs_c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. --- libpciaccess-0.13.2.orig/src/linux_sysfs.c 2013-07-21 00:54:34.000000000 +0200
  2. +++ libpciaccess-0.13.2/src/linux_sysfs.c 2014-03-24 13:26:10.484152334 +0100
  3. @@ -759,6 +759,7 @@ pci_device_linux_sysfs_open_device_io(st
  4. ret->base = base;
  5. ret->size = size;
  6. + ret->is_legacy = 0;
  7. return ret;
  8. }
  9. @@ -796,6 +797,7 @@ pci_device_linux_sysfs_open_legacy_io(st
  10. ret->base = base;
  11. ret->size = size;
  12. + ret->is_legacy = 1;
  13. return ret;
  14. }
  15. @@ -813,10 +815,14 @@ pci_device_linux_sysfs_read32(struct pci
  16. {
  17. uint32_t ret;
  18. - if (handle->fd > -1)
  19. - pread(handle->fd, &ret, 4, port + handle->base);
  20. - else
  21. + if (handle->fd > -1) {
  22. + if (handle->is_legacy)
  23. + pread(handle->fd, &ret, 4, port + handle->base);
  24. + else
  25. + pread(handle->fd, &ret, 4, port);
  26. + } else {
  27. ret = inl(port + handle->base);
  28. + }
  29. return ret;
  30. }
  31. @@ -826,10 +832,14 @@ pci_device_linux_sysfs_read16(struct pci
  32. {
  33. uint16_t ret;
  34. - if (handle->fd > -1)
  35. - pread(handle->fd, &ret, 2, port + handle->base);
  36. - else
  37. + if (handle->fd > -1) {
  38. + if (handle->is_legacy)
  39. + pread(handle->fd, &ret, 2, port + handle->base);
  40. + else
  41. + pread(handle->fd, &ret, 2, port);
  42. + } else {
  43. ret = inw(port + handle->base);
  44. + }
  45. return ret;
  46. }
  47. @@ -839,10 +849,14 @@ pci_device_linux_sysfs_read8(struct pci_
  48. {
  49. uint8_t ret;
  50. - if (handle->fd > -1)
  51. - pread(handle->fd, &ret, 1, port + handle->base);
  52. - else
  53. + if (handle->fd > -1) {
  54. + if (handle->is_legacy)
  55. + pread(handle->fd, &ret, 1, port + handle->base);
  56. + else
  57. + pread(handle->fd, &ret, 1, port);
  58. + } else {
  59. ret = inb(port + handle->base);
  60. + }
  61. return ret;
  62. }
  63. @@ -851,30 +865,42 @@ static void
  64. pci_device_linux_sysfs_write32(struct pci_io_handle *handle, uint32_t port,
  65. uint32_t data)
  66. {
  67. - if (handle->fd > -1)
  68. - pwrite(handle->fd, &data, 4, port + handle->base);
  69. - else
  70. + if (handle->fd > -1) {
  71. + if (handle->is_legacy)
  72. + pwrite(handle->fd, &data, 4, port + handle->base);
  73. + else
  74. + pwrite(handle->fd, &data, 4, port);
  75. + } else {
  76. outl(data, port + handle->base);
  77. + }
  78. }
  79. static void
  80. pci_device_linux_sysfs_write16(struct pci_io_handle *handle, uint32_t port,
  81. uint16_t data)
  82. {
  83. - if (handle->fd > -1)
  84. - pwrite(handle->fd, &data, 2, port + handle->base);
  85. - else
  86. + if (handle->fd > -1) {
  87. + if (handle->is_legacy)
  88. + pwrite(handle->fd, &data, 2, port + handle->base);
  89. + else
  90. + pwrite(handle->fd, &data, 2, port);
  91. + } else {
  92. outw(data, port + handle->base);
  93. + }
  94. }
  95. static void
  96. pci_device_linux_sysfs_write8(struct pci_io_handle *handle, uint32_t port,
  97. uint8_t data)
  98. {
  99. - if (handle->fd > -1)
  100. - pwrite(handle->fd, &data, 1, port + handle->base);
  101. - else
  102. + if (handle->fd > -1) {
  103. + if (handle->is_legacy)
  104. + pwrite(handle->fd, &data, 1, port + handle->base);
  105. + else
  106. + pwrite(handle->fd, &data, 1, port);
  107. + } else {
  108. outb(data, port + handle->base);
  109. + }
  110. }
  111. static int