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); } }
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; }