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
}