diff options
| -rw-r--r-- | drivers/platform/chrome/Makefile | 5 | ||||
| -rw-r--r-- | drivers/platform/chrome/cros_ec_proto.c | 4 | ||||
| -rw-r--r-- | drivers/platform/chrome/cros_ec_trace.c | 124 | ||||
| -rw-r--r-- | drivers/platform/chrome/cros_ec_trace.h | 51 |
4 files changed, 183 insertions, 1 deletions
diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile index 2cdee395c9f1..1b2f1dcfcd5c 100644 --- a/drivers/platform/chrome/Makefile +++ b/drivers/platform/chrome/Makefile | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | # SPDX-License-Identifier: GPL-2.0 | 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | 2 | ||
| 3 | # tell define_trace.h where to find the cros ec trace header | ||
| 4 | CFLAGS_cros_ec_trace.o:= -I$(src) | ||
| 5 | |||
| 3 | obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o | 6 | obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o |
| 4 | obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o | 7 | obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o |
| 5 | obj-$(CONFIG_CHROMEOS_TBMC) += chromeos_tbmc.o | 8 | obj-$(CONFIG_CHROMEOS_TBMC) += chromeos_tbmc.o |
| @@ -9,7 +12,7 @@ obj-$(CONFIG_CROS_EC_SPI) += cros_ec_spi.o | |||
| 9 | cros_ec_lpcs-objs := cros_ec_lpc.o cros_ec_lpc_reg.o | 12 | cros_ec_lpcs-objs := cros_ec_lpc.o cros_ec_lpc_reg.o |
| 10 | cros_ec_lpcs-$(CONFIG_CROS_EC_LPC_MEC) += cros_ec_lpc_mec.o | 13 | cros_ec_lpcs-$(CONFIG_CROS_EC_LPC_MEC) += cros_ec_lpc_mec.o |
| 11 | obj-$(CONFIG_CROS_EC_LPC) += cros_ec_lpcs.o | 14 | obj-$(CONFIG_CROS_EC_LPC) += cros_ec_lpcs.o |
| 12 | obj-$(CONFIG_CROS_EC_PROTO) += cros_ec_proto.o | 15 | obj-$(CONFIG_CROS_EC_PROTO) += cros_ec_proto.o cros_ec_trace.o |
| 13 | obj-$(CONFIG_CROS_KBD_LED_BACKLIGHT) += cros_kbd_led_backlight.o | 16 | obj-$(CONFIG_CROS_KBD_LED_BACKLIGHT) += cros_kbd_led_backlight.o |
| 14 | obj-$(CONFIG_CROS_EC_LIGHTBAR) += cros_ec_lightbar.o | 17 | obj-$(CONFIG_CROS_EC_LIGHTBAR) += cros_ec_lightbar.o |
| 15 | obj-$(CONFIG_CROS_EC_VBC) += cros_ec_vbc.o | 18 | obj-$(CONFIG_CROS_EC_VBC) += cros_ec_vbc.o |
diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c index 3bb954997ebc..171475862ede 100644 --- a/drivers/platform/chrome/cros_ec_proto.c +++ b/drivers/platform/chrome/cros_ec_proto.c | |||
| @@ -10,6 +10,8 @@ | |||
| 10 | #include <linux/slab.h> | 10 | #include <linux/slab.h> |
| 11 | #include <asm/unaligned.h> | 11 | #include <asm/unaligned.h> |
| 12 | 12 | ||
| 13 | #include "cros_ec_trace.h" | ||
| 14 | |||
| 13 | #define EC_COMMAND_RETRIES 50 | 15 | #define EC_COMMAND_RETRIES 50 |
| 14 | 16 | ||
| 15 | static int prepare_packet(struct cros_ec_device *ec_dev, | 17 | static int prepare_packet(struct cros_ec_device *ec_dev, |
| @@ -51,6 +53,8 @@ static int send_command(struct cros_ec_device *ec_dev, | |||
| 51 | int ret; | 53 | int ret; |
| 52 | int (*xfer_fxn)(struct cros_ec_device *ec, struct cros_ec_command *msg); | 54 | int (*xfer_fxn)(struct cros_ec_device *ec, struct cros_ec_command *msg); |
| 53 | 55 | ||
| 56 | trace_cros_ec_cmd(msg); | ||
| 57 | |||
| 54 | if (ec_dev->proto_version > 2) | 58 | if (ec_dev->proto_version > 2) |
| 55 | xfer_fxn = ec_dev->pkt_xfer; | 59 | xfer_fxn = ec_dev->pkt_xfer; |
| 56 | else | 60 | else |
diff --git a/drivers/platform/chrome/cros_ec_trace.c b/drivers/platform/chrome/cros_ec_trace.c new file mode 100644 index 000000000000..0a76412095a9 --- /dev/null +++ b/drivers/platform/chrome/cros_ec_trace.c | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | // SPDX-License-Identifier: GPL-2.0 | ||
| 2 | // Trace events for the ChromeOS Embedded Controller | ||
| 3 | // | ||
| 4 | // Copyright 2019 Google LLC. | ||
| 5 | |||
| 6 | #define TRACE_SYMBOL(a) {a, #a} | ||
| 7 | |||
| 8 | // Generate the list using the following script: | ||
| 9 | // sed -n 's/^#define \(EC_CMD_[[:alnum:]_]*\)\s.*/\tTRACE_SYMBOL(\1), \\/p' include/linux/mfd/cros_ec_commands.h | ||
| 10 | #define EC_CMDS \ | ||
| 11 | TRACE_SYMBOL(EC_CMD_PROTO_VERSION), \ | ||
| 12 | TRACE_SYMBOL(EC_CMD_HELLO), \ | ||
| 13 | TRACE_SYMBOL(EC_CMD_GET_VERSION), \ | ||
| 14 | TRACE_SYMBOL(EC_CMD_READ_TEST), \ | ||
| 15 | TRACE_SYMBOL(EC_CMD_GET_BUILD_INFO), \ | ||
| 16 | TRACE_SYMBOL(EC_CMD_GET_CHIP_INFO), \ | ||
| 17 | TRACE_SYMBOL(EC_CMD_GET_BOARD_VERSION), \ | ||
| 18 | TRACE_SYMBOL(EC_CMD_READ_MEMMAP), \ | ||
| 19 | TRACE_SYMBOL(EC_CMD_GET_CMD_VERSIONS), \ | ||
| 20 | TRACE_SYMBOL(EC_CMD_GET_COMMS_STATUS), \ | ||
| 21 | TRACE_SYMBOL(EC_CMD_TEST_PROTOCOL), \ | ||
| 22 | TRACE_SYMBOL(EC_CMD_GET_PROTOCOL_INFO), \ | ||
| 23 | TRACE_SYMBOL(EC_CMD_GSV_PAUSE_IN_S5), \ | ||
| 24 | TRACE_SYMBOL(EC_CMD_GET_FEATURES), \ | ||
| 25 | TRACE_SYMBOL(EC_CMD_FLASH_INFO), \ | ||
| 26 | TRACE_SYMBOL(EC_CMD_FLASH_READ), \ | ||
| 27 | TRACE_SYMBOL(EC_CMD_FLASH_WRITE), \ | ||
| 28 | TRACE_SYMBOL(EC_CMD_FLASH_ERASE), \ | ||
| 29 | TRACE_SYMBOL(EC_CMD_FLASH_PROTECT), \ | ||
| 30 | TRACE_SYMBOL(EC_CMD_FLASH_REGION_INFO), \ | ||
| 31 | TRACE_SYMBOL(EC_CMD_VBNV_CONTEXT), \ | ||
| 32 | TRACE_SYMBOL(EC_CMD_PWM_GET_FAN_TARGET_RPM), \ | ||
| 33 | TRACE_SYMBOL(EC_CMD_PWM_SET_FAN_TARGET_RPM), \ | ||
| 34 | TRACE_SYMBOL(EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT), \ | ||
| 35 | TRACE_SYMBOL(EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT), \ | ||
| 36 | TRACE_SYMBOL(EC_CMD_PWM_SET_FAN_DUTY), \ | ||
| 37 | TRACE_SYMBOL(EC_CMD_PWM_SET_DUTY), \ | ||
| 38 | TRACE_SYMBOL(EC_CMD_PWM_GET_DUTY), \ | ||
| 39 | TRACE_SYMBOL(EC_CMD_LIGHTBAR_CMD), \ | ||
| 40 | TRACE_SYMBOL(EC_CMD_LED_CONTROL), \ | ||
| 41 | TRACE_SYMBOL(EC_CMD_VBOOT_HASH), \ | ||
| 42 | TRACE_SYMBOL(EC_CMD_MOTION_SENSE_CMD), \ | ||
| 43 | TRACE_SYMBOL(EC_CMD_USB_CHARGE_SET_MODE), \ | ||
| 44 | TRACE_SYMBOL(EC_CMD_PSTORE_INFO), \ | ||
| 45 | TRACE_SYMBOL(EC_CMD_PSTORE_READ), \ | ||
| 46 | TRACE_SYMBOL(EC_CMD_PSTORE_WRITE), \ | ||
| 47 | TRACE_SYMBOL(EC_CMD_RTC_GET_VALUE), \ | ||
| 48 | TRACE_SYMBOL(EC_CMD_RTC_GET_ALARM), \ | ||
| 49 | TRACE_SYMBOL(EC_CMD_RTC_SET_VALUE), \ | ||
| 50 | TRACE_SYMBOL(EC_CMD_RTC_SET_ALARM), \ | ||
| 51 | TRACE_SYMBOL(EC_CMD_PORT80_LAST_BOOT), \ | ||
| 52 | TRACE_SYMBOL(EC_CMD_PORT80_READ), \ | ||
| 53 | TRACE_SYMBOL(EC_CMD_THERMAL_SET_THRESHOLD), \ | ||
| 54 | TRACE_SYMBOL(EC_CMD_THERMAL_GET_THRESHOLD), \ | ||
| 55 | TRACE_SYMBOL(EC_CMD_THERMAL_AUTO_FAN_CTRL), \ | ||
| 56 | TRACE_SYMBOL(EC_CMD_TMP006_GET_CALIBRATION), \ | ||
| 57 | TRACE_SYMBOL(EC_CMD_TMP006_SET_CALIBRATION), \ | ||
| 58 | TRACE_SYMBOL(EC_CMD_TMP006_GET_RAW), \ | ||
| 59 | TRACE_SYMBOL(EC_CMD_MKBP_STATE), \ | ||
| 60 | TRACE_SYMBOL(EC_CMD_MKBP_INFO), \ | ||
| 61 | TRACE_SYMBOL(EC_CMD_MKBP_SIMULATE_KEY), \ | ||
| 62 | TRACE_SYMBOL(EC_CMD_MKBP_SET_CONFIG), \ | ||
| 63 | TRACE_SYMBOL(EC_CMD_MKBP_GET_CONFIG), \ | ||
| 64 | TRACE_SYMBOL(EC_CMD_KEYSCAN_SEQ_CTRL), \ | ||
| 65 | TRACE_SYMBOL(EC_CMD_GET_NEXT_EVENT), \ | ||
| 66 | TRACE_SYMBOL(EC_CMD_TEMP_SENSOR_GET_INFO), \ | ||
| 67 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_GET_B), \ | ||
| 68 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_GET_SMI_MASK), \ | ||
| 69 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_GET_SCI_MASK), \ | ||
| 70 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_GET_WAKE_MASK), \ | ||
| 71 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_SET_SMI_MASK), \ | ||
| 72 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_SET_SCI_MASK), \ | ||
| 73 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_CLEAR), \ | ||
| 74 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_SET_WAKE_MASK), \ | ||
| 75 | TRACE_SYMBOL(EC_CMD_HOST_EVENT_CLEAR_B), \ | ||
| 76 | TRACE_SYMBOL(EC_CMD_SWITCH_ENABLE_BKLIGHT), \ | ||
| 77 | TRACE_SYMBOL(EC_CMD_SWITCH_ENABLE_WIRELESS), \ | ||
| 78 | TRACE_SYMBOL(EC_CMD_GPIO_SET), \ | ||
| 79 | TRACE_SYMBOL(EC_CMD_GPIO_GET), \ | ||
| 80 | TRACE_SYMBOL(EC_CMD_I2C_READ), \ | ||
| 81 | TRACE_SYMBOL(EC_CMD_I2C_WRITE), \ | ||
| 82 | TRACE_SYMBOL(EC_CMD_CHARGE_CONTROL), \ | ||
| 83 | TRACE_SYMBOL(EC_CMD_CONSOLE_SNAPSHOT), \ | ||
| 84 | TRACE_SYMBOL(EC_CMD_CONSOLE_READ), \ | ||
| 85 | TRACE_SYMBOL(EC_CMD_BATTERY_CUT_OFF), \ | ||
| 86 | TRACE_SYMBOL(EC_CMD_USB_MUX), \ | ||
| 87 | TRACE_SYMBOL(EC_CMD_LDO_SET), \ | ||
| 88 | TRACE_SYMBOL(EC_CMD_LDO_GET), \ | ||
| 89 | TRACE_SYMBOL(EC_CMD_POWER_INFO), \ | ||
| 90 | TRACE_SYMBOL(EC_CMD_I2C_PASSTHRU), \ | ||
| 91 | TRACE_SYMBOL(EC_CMD_HANG_DETECT), \ | ||
| 92 | TRACE_SYMBOL(EC_CMD_CHARGE_STATE), \ | ||
| 93 | TRACE_SYMBOL(EC_CMD_CHARGE_CURRENT_LIMIT), \ | ||
| 94 | TRACE_SYMBOL(EC_CMD_EXTERNAL_POWER_LIMIT), \ | ||
| 95 | TRACE_SYMBOL(EC_CMD_HOST_SLEEP_EVENT), \ | ||
| 96 | TRACE_SYMBOL(EC_CMD_SB_READ_WORD), \ | ||
| 97 | TRACE_SYMBOL(EC_CMD_SB_WRITE_WORD), \ | ||
| 98 | TRACE_SYMBOL(EC_CMD_SB_READ_BLOCK), \ | ||
| 99 | TRACE_SYMBOL(EC_CMD_SB_WRITE_BLOCK), \ | ||
| 100 | TRACE_SYMBOL(EC_CMD_BATTERY_VENDOR_PARAM), \ | ||
| 101 | TRACE_SYMBOL(EC_CMD_CODEC_I2S), \ | ||
| 102 | TRACE_SYMBOL(EC_CMD_REBOOT_EC), \ | ||
| 103 | TRACE_SYMBOL(EC_CMD_GET_PANIC_INFO), \ | ||
| 104 | TRACE_SYMBOL(EC_CMD_ACPI_READ), \ | ||
| 105 | TRACE_SYMBOL(EC_CMD_ACPI_WRITE), \ | ||
| 106 | TRACE_SYMBOL(EC_CMD_ACPI_QUERY_EVENT), \ | ||
| 107 | TRACE_SYMBOL(EC_CMD_CEC_WRITE_MSG), \ | ||
| 108 | TRACE_SYMBOL(EC_CMD_CEC_SET), \ | ||
| 109 | TRACE_SYMBOL(EC_CMD_CEC_GET), \ | ||
| 110 | TRACE_SYMBOL(EC_CMD_REBOOT), \ | ||
| 111 | TRACE_SYMBOL(EC_CMD_RESEND_RESPONSE), \ | ||
| 112 | TRACE_SYMBOL(EC_CMD_VERSION0), \ | ||
| 113 | TRACE_SYMBOL(EC_CMD_PD_EXCHANGE_STATUS), \ | ||
| 114 | TRACE_SYMBOL(EC_CMD_USB_PD_CONTROL), \ | ||
| 115 | TRACE_SYMBOL(EC_CMD_USB_PD_PORTS), \ | ||
| 116 | TRACE_SYMBOL(EC_CMD_USB_PD_POWER_INFO), \ | ||
| 117 | TRACE_SYMBOL(EC_CMD_CHARGE_PORT_COUNT), \ | ||
| 118 | TRACE_SYMBOL(EC_CMD_USB_PD_DISCOVERY), \ | ||
| 119 | TRACE_SYMBOL(EC_CMD_PD_CHARGE_PORT_OVERRIDE), \ | ||
| 120 | TRACE_SYMBOL(EC_CMD_PD_GET_LOG_ENTRY), \ | ||
| 121 | TRACE_SYMBOL(EC_CMD_USB_PD_MUX_INFO) | ||
| 122 | |||
| 123 | #define CREATE_TRACE_POINTS | ||
| 124 | #include "cros_ec_trace.h" | ||
diff --git a/drivers/platform/chrome/cros_ec_trace.h b/drivers/platform/chrome/cros_ec_trace.h new file mode 100644 index 000000000000..7ae3b89c78b9 --- /dev/null +++ b/drivers/platform/chrome/cros_ec_trace.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
| 2 | /* | ||
| 3 | * Trace events for the ChromeOS Embedded Controller | ||
| 4 | * | ||
| 5 | * Copyright 2019 Google LLC. | ||
| 6 | */ | ||
| 7 | |||
| 8 | #undef TRACE_SYSTEM | ||
| 9 | #define TRACE_SYSTEM cros_ec | ||
| 10 | |||
| 11 | #if !defined(_CROS_EC_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) | ||
| 12 | #define _CROS_EC_TRACE_H_ | ||
| 13 | |||
| 14 | #include <linux/types.h> | ||
| 15 | #include <linux/mfd/cros_ec.h> | ||
| 16 | |||
| 17 | #include <linux/tracepoint.h> | ||
| 18 | |||
| 19 | DECLARE_EVENT_CLASS(cros_ec_cmd_class, | ||
| 20 | TP_PROTO(struct cros_ec_command *cmd), | ||
| 21 | TP_ARGS(cmd), | ||
| 22 | TP_STRUCT__entry( | ||
| 23 | __field(uint32_t, version) | ||
| 24 | __field(uint32_t, command) | ||
| 25 | ), | ||
| 26 | TP_fast_assign( | ||
| 27 | __entry->version = cmd->version; | ||
| 28 | __entry->command = cmd->command; | ||
| 29 | ), | ||
| 30 | TP_printk("version: %u, command: %s", __entry->version, | ||
| 31 | __print_symbolic(__entry->command, EC_CMDS)) | ||
| 32 | ); | ||
| 33 | |||
| 34 | |||
| 35 | DEFINE_EVENT(cros_ec_cmd_class, cros_ec_cmd, | ||
| 36 | TP_PROTO(struct cros_ec_command *cmd), | ||
| 37 | TP_ARGS(cmd) | ||
| 38 | ); | ||
| 39 | |||
| 40 | |||
| 41 | #endif /* _CROS_EC_TRACE_H_ */ | ||
| 42 | |||
| 43 | /* this part must be outside header guard */ | ||
| 44 | |||
| 45 | #undef TRACE_INCLUDE_PATH | ||
| 46 | #define TRACE_INCLUDE_PATH . | ||
| 47 | |||
| 48 | #undef TRACE_INCLUDE_FILE | ||
| 49 | #define TRACE_INCLUDE_FILE cros_ec_trace | ||
| 50 | |||
| 51 | #include <trace/define_trace.h> | ||
