fsi_master_i2cr.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM fsi_master_i2cr
  4. #if !defined(_TRACE_FSI_MASTER_I2CR_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_FSI_MASTER_I2CR_H
  6. #include <linux/tracepoint.h>
  7. TRACE_EVENT(i2cr_i2c_error,
  8. TP_PROTO(const struct i2c_client *client, uint32_t command, int rc),
  9. TP_ARGS(client, command, rc),
  10. TP_STRUCT__entry(
  11. __field(int, bus)
  12. __field(int, rc)
  13. __array(unsigned char, command, sizeof(uint32_t))
  14. __field(unsigned short, addr)
  15. ),
  16. TP_fast_assign(
  17. __entry->bus = client->adapter->nr;
  18. __entry->rc = rc;
  19. memcpy(__entry->command, &command, sizeof(uint32_t));
  20. __entry->addr = client->addr;
  21. ),
  22. TP_printk("%d-%02x command:{ %*ph } rc:%d", __entry->bus, __entry->addr,
  23. (int)sizeof(uint32_t), __entry->command, __entry->rc)
  24. );
  25. TRACE_EVENT(i2cr_read,
  26. TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t *data),
  27. TP_ARGS(client, command, data),
  28. TP_STRUCT__entry(
  29. __field(int, bus)
  30. __array(unsigned char, data, sizeof(uint64_t))
  31. __array(unsigned char, command, sizeof(uint32_t))
  32. __field(unsigned short, addr)
  33. ),
  34. TP_fast_assign(
  35. __entry->bus = client->adapter->nr;
  36. memcpy(__entry->data, data, sizeof(uint64_t));
  37. memcpy(__entry->command, &command, sizeof(uint32_t));
  38. __entry->addr = client->addr;
  39. ),
  40. TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr,
  41. (int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data)
  42. );
  43. TRACE_EVENT(i2cr_status,
  44. TP_PROTO(const struct i2c_client *client, uint64_t status),
  45. TP_ARGS(client, status),
  46. TP_STRUCT__entry(
  47. __field(uint64_t, status)
  48. __field(int, bus)
  49. __field(unsigned short, addr)
  50. ),
  51. TP_fast_assign(
  52. __entry->status = status;
  53. __entry->bus = client->adapter->nr;
  54. __entry->addr = client->addr;
  55. ),
  56. TP_printk("%d-%02x %016llx", __entry->bus, __entry->addr, __entry->status)
  57. );
  58. TRACE_EVENT(i2cr_status_error,
  59. TP_PROTO(const struct i2c_client *client, uint64_t status, uint64_t error, uint64_t log),
  60. TP_ARGS(client, status, error, log),
  61. TP_STRUCT__entry(
  62. __field(uint64_t, error)
  63. __field(uint64_t, log)
  64. __field(uint64_t, status)
  65. __field(int, bus)
  66. __field(unsigned short, addr)
  67. ),
  68. TP_fast_assign(
  69. __entry->error = error;
  70. __entry->log = log;
  71. __entry->status = status;
  72. __entry->bus = client->adapter->nr;
  73. __entry->addr = client->addr;
  74. ),
  75. TP_printk("%d-%02x status:%016llx error:%016llx log:%016llx", __entry->bus, __entry->addr,
  76. __entry->status, __entry->error, __entry->log)
  77. );
  78. TRACE_EVENT(i2cr_write,
  79. TP_PROTO(const struct i2c_client *client, uint32_t command, uint64_t data),
  80. TP_ARGS(client, command, data),
  81. TP_STRUCT__entry(
  82. __field(int, bus)
  83. __array(unsigned char, data, sizeof(uint64_t))
  84. __array(unsigned char, command, sizeof(uint32_t))
  85. __field(unsigned short, addr)
  86. ),
  87. TP_fast_assign(
  88. __entry->bus = client->adapter->nr;
  89. memcpy(__entry->data, &data, sizeof(uint64_t));
  90. memcpy(__entry->command, &command, sizeof(uint32_t));
  91. __entry->addr = client->addr;
  92. ),
  93. TP_printk("%d-%02x command:{ %*ph } { %*ph }", __entry->bus, __entry->addr,
  94. (int)sizeof(uint32_t), __entry->command, (int)sizeof(uint64_t), __entry->data)
  95. );
  96. #endif
  97. #include <trace/define_trace.h>