static void smd_qhd_amoled_cmd_get_mtp_set4(struct mdfld_dsi_config *dsi_config,
					u8 *elvss, u8 *white_pt_adj)
{
	static bool is_cached;
	static u8 cached_elvss = 0x08; /* init to default value per spec */
	static u8 cached_white_pt_adj = 0xff;
	struct mdfld_dsi_pkg_sender *sender =
		mdfld_dsi_get_pkg_sender(dsi_config);
	int r = 0;
	u8 reg_data[2];
	u8 ver;

	if (!is_cached) {
		r = mdfld_dsi_read_mcs_hs(sender, 0xd4, reg_data, 2);
		if (r != 2) {
			DRM_ERROR("Failed to read MTP_SET4, r = %d\n", r);
		} else {
			cached_elvss = reg_data[0] & 0x3f;
			if (mdfld_mot_cmn_get_panel_cntrl_ver(sender, &ver))
				DRM_ERROR("Failed to get panel controller "
					"version\n");
			else {
				if (ver >= 1)
					cached_white_pt_adj =
						(reg_data[1] & 0xf0) >> 4;

				printk(KERN_ALERT"Read MTP_SET4, elvss = 0x%02x,"
					"white_pt = 0x%02x\n",
					cached_elvss, cached_white_pt_adj);
				is_cached = true;
			}
		}
	}
static void smd_qhd_amoled_cmd_get_mtp_offset(
	struct mdfld_dsi_config *dsi_config,
	uint8_t raw_mtp[RAW_MTP_SIZE])
{
	struct mdfld_dsi_pkg_sender *sender =
		mdfld_dsi_get_pkg_sender(dsi_config);
	int r;
	u8 raw_data[RAW_MTP_SIZE];

	r = mdfld_dsi_read_mcs_hs(sender, 0xd3, raw_data, RAW_MTP_SIZE);
	if (r != RAW_MTP_SIZE) {
		DRM_ERROR("Failed to read MTP offset, r = %d\n", r);
		memset(raw_mtp, 0, RAW_MTP_SIZE);
	} else {
		memcpy(raw_mtp, raw_data, RAW_MTP_SIZE);
	}
}
Пример #3
0
int mdfld_mot_cmn_get_panel_cntrl_ver(struct mdfld_dsi_pkg_sender *sender,
				u8 *ver)
{
	static u8 cached_ver = 0xff;
	int err;
	u8 read_data;

	if (cached_ver == 0xff) {
		err = mdfld_dsi_read_mcs_hs(sender, 0xdb, &read_data, 1);
		if (err != 1) {
			DRM_ERROR("Failed to read panel controller version, "
				"err = %d\n", err);
			return (err < 0) ? err : -EFAULT;
		}
		cached_ver = read_data;
	}
	*ver = cached_ver;
	PSB_DEBUG_ENTRY("Panel controller version = 0x%02x\n", cached_ver);
	return 0;
}
int mdfld_mot_cmn_get_panel_manufacture(struct mdfld_dsi_pkg_sender *sender,
					u8 *ver)
{
	static u8 cached_ver = 0xff;
	int err;
	u32 read_data;

	if (cached_ver == 0xff) {
		err = mdfld_dsi_read_mcs_hs(sender, 0xda, &read_data, 1);
		if (err != 1) {
			DRM_ERROR("Failed to read panel manufacture, "
				"err = %d\n", err);
			return (err < 0) ? err : -EFAULT;
		}
		cached_ver = read_data & 0xff;
	}
	*ver = cached_ver;
	PSB_DEBUG_ENTRY("Panel manufacture id = 0x%02x\n", cached_ver);
	return 0;
}