Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6354d2e authored by HeungJun, Kim's avatar HeungJun, Kim Committed by Mauro Carvalho Chehab
Browse files

[media] m5mols: remove union in the m5mols_get_version(), and VERSION_SIZE



Remove union version in the m5mols_get_version(), and read version information
directly. Also remove VERSION_SIZE.

Signed-off-by: default avatarHeungJun, Kim <riverful.kim@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 57644f56
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -154,7 +154,6 @@ struct m5mols_version {
	u8	str[VERSION_STRING_SIZE];
	u8	af;
};
#define VERSION_SIZE sizeof(struct m5mols_version)

/**
 * struct m5mols_info - M-5MOLS driver data structure
+25 −25
Original line number Diff line number Diff line
@@ -386,37 +386,37 @@ int m5mols_mode(struct m5mols_info *info, u8 mode)
static int m5mols_get_version(struct v4l2_subdev *sd)
{
	struct m5mols_info *info = to_m5mols(sd);
	union {
		struct m5mols_version ver;
		u8 bytes[VERSION_SIZE];
	} version;
	u8 cmd = CAT0_VER_CUSTOMER;
	struct m5mols_version *ver = &info->ver;
	u8 *str = ver->str;
	int i;
	int ret;

	do {
		ret = m5mols_read_u8(sd, SYSTEM_CMD(cmd), &version.bytes[cmd]);
		if (ret)
			return ret;
	} while (cmd++ != CAT0_VER_AWB);

	do {
		ret = m5mols_read_u8(sd, SYSTEM_VER_STRING, &version.bytes[cmd]);
	ret = m5mols_read_u8(sd, SYSTEM_VER_CUSTOMER, &ver->customer);
	if (!ret)
		ret = m5mols_read_u8(sd, SYSTEM_VER_PROJECT, &ver->project);
	if (!ret)
		ret = m5mols_read_u16(sd, SYSTEM_VER_FIRMWARE, &ver->fw);
	if (!ret)
		ret = m5mols_read_u16(sd, SYSTEM_VER_HARDWARE, &ver->hw);
	if (!ret)
		ret = m5mols_read_u16(sd, SYSTEM_VER_PARAMETER, &ver->param);
	if (!ret)
		ret = m5mols_read_u16(sd, SYSTEM_VER_AWB, &ver->awb);
	if (!ret)
		ret = m5mols_read_u8(sd, AF_VERSION, &ver->af);
	if (ret)
		return ret;
		if (cmd >= VERSION_SIZE - 1)
			return -EINVAL;
	} while (version.bytes[cmd++]);

	ret = m5mols_read_u8(sd, AF_VERSION, &version.bytes[cmd]);
	for (i = 0; i < VERSION_STRING_SIZE; i++) {
		ret = m5mols_read_u8(sd, SYSTEM_VER_STRING, &str[i]);
		if (ret)
			return ret;
	}

	/* store version information swapped for being readable */
	info->ver	= version.ver;
	info->ver.fw	= be16_to_cpu(info->ver.fw);
	info->ver.hw	= be16_to_cpu(info->ver.hw);
	info->ver.param	= be16_to_cpu(info->ver.param);
	info->ver.awb	= be16_to_cpu(info->ver.awb);
	ver->fw = be16_to_cpu(ver->fw);
	ver->hw = be16_to_cpu(ver->hw);
	ver->param = be16_to_cpu(ver->param);
	ver->awb = be16_to_cpu(ver->awb);

	v4l2_info(sd, "Manufacturer\t[%s]\n",
			is_manufacturer(info, REG_SAMSUNG_ELECTRO) ?
+12 −1
Original line number Diff line number Diff line
@@ -56,13 +56,24 @@
 * more specific contents, see definition if file m5mols.h.
 */
#define CAT0_VER_CUSTOMER	0x00	/* customer version */
#define CAT0_VER_AWB		0x09	/* Auto WB version */
#define CAT0_VER_PROJECT	0x01	/* project version */
#define CAT0_VER_FIRMWARE	0x02	/* Firmware version */
#define CAT0_VER_HARDWARE	0x04	/* Hardware version */
#define CAT0_VER_PARAMETER	0x06	/* Parameter version */
#define CAT0_VER_AWB		0x08	/* Auto WB version */
#define CAT0_VER_STRING		0x0a	/* string including M-5MOLS */
#define CAT0_SYSMODE		0x0b	/* SYSTEM mode register */
#define CAT0_STATUS		0x0c	/* SYSTEM mode status register */
#define CAT0_INT_FACTOR		0x10	/* interrupt pending register */
#define CAT0_INT_ENABLE		0x11	/* interrupt enable register */

#define SYSTEM_VER_CUSTOMER	I2C_REG(CAT_SYSTEM, CAT0_VER_CUSTOMER, 1)
#define SYSTEM_VER_PROJECT	I2C_REG(CAT_SYSTEM, CAT0_VER_PROJECT, 1)
#define SYSTEM_VER_FIRMWARE	I2C_REG(CAT_SYSTEM, CAT0_VER_FIRMWARE, 2)
#define SYSTEM_VER_HARDWARE	I2C_REG(CAT_SYSTEM, CAT0_VER_HARDWARE, 2)
#define SYSTEM_VER_PARAMETER	I2C_REG(CAT_SYSTEM, CAT0_VER_PARAMETER, 2)
#define SYSTEM_VER_AWB		I2C_REG(CAT_SYSTEM, CAT0_VER_AWB, 2)

#define SYSTEM_SYSMODE		I2C_REG(CAT_SYSTEM, CAT0_SYSMODE, 1)
#define REG_SYSINIT		0x00	/* SYSTEM mode */
#define REG_PARAMETER		0x01	/* PARAMETER mode */