void dump_i2c_transfer(void *context, u8 page, u8 offset, u16 count, u8 *values, bool write) { int buf_size = 64; u16 idx; int buf_offset; char *buf; if (count > 1) { buf_size += count * 3; /* 3 characters per byte displayed */ buf_size += ((count / 16) + 1) * 8; /* plus per display row overhead */ } buf = kmalloc(buf_size, GFP_KERNEL); if (!buf) return; if (count == 1) { scnprintf(buf, buf_size, " I2C_%s %02X:%02X %s %02X\n", write ? "W" : "R", page, offset, write ? "<-" : "==", values[0]); } else { idx = 0; buf_offset = scnprintf(buf, buf_size, "I2C_%sB %02X:%02X - %d bytes:", write ? "W" : "R", page, offset, count); for (idx = 0; idx < count; idx++) { if (0 == (idx & 0x0F)) buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "\n%04X: ", idx); buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "%02X ", values[idx]); } buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "\n"); } print_formatted_debug_msg(DBG_MSG_LEVEL_INFO, NULL, NULL, -1, buf); kfree(buf); }
static void dump_transfer(void *context, enum tx_interface_types if_type, u8 page, u8 offset, u16 count, u8 *values, bool write) { #ifdef UNIT_TEST /* nothing to do. */ #else int buf_size = 64; u16 idx; int buf_offset; char *buf; char *if_type_msg; switch (if_type) { case TX_INTERFACE_TYPE_I2C: if_type_msg = "I2C"; break; case TX_INTERFACE_TYPE_SPI: if_type_msg = "SPI"; break; default: return; }; if (count > 1) { /* 3 chars per byte displayed */ buf_size += count * 3; /* plus per display row overhead */ buf_size += ((count / 16) + 1) * 8; } buf = kmalloc(buf_size, GFP_KERNEL); if (!buf) return; if (count == 1) { scnprintf(buf, buf_size, " %s %02X.%02X %s %02X\n", if_type_msg, page, offset, write ? "W" : "R", values[0]); } else { idx = 0; buf_offset = scnprintf(buf, buf_size, "%s %02X.%02X %s(%d)", if_type_msg, page, offset, write ? "W" : "R", count); for (idx = 0; idx < count; idx++) { if (0 == (idx & 0x0F)) buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "\n%04X: ", idx); buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "%02X ", values[idx]); } buf_offset += scnprintf(&buf[buf_offset], buf_size - buf_offset, "\n"); } print_formatted_debug_msg(0, NULL, NULL, -1, buf); kfree(buf); #endif }