static int init_gamma_table(struct lcd_info *lcd , const u8 *mtp_data) { int i, j, ret = 0; lcd->gamma_table = kzalloc(GAMMA_MAX * sizeof(u8 *), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->gamma_table)) { pr_err("failed to allocate gamma table\n"); ret = -ENOMEM; goto err_alloc_gamma_table; } for (i = 0; i < GAMMA_MAX; i++) { lcd->gamma_table[i] = kzalloc(GAMMA_PARAM_SIZE * sizeof(u8), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->gamma_table[i])) { pr_err("failed to allocate gamma\n"); ret = -ENOMEM; goto err_alloc_gamma; } lcd->gamma_table[i][0] = 0xCA; } for (i = 0; i < GAMMA_MAX; i++) { if (candela_table[i] <= 180) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_21, mtp_data); else if (candela_table[i] == 190) calc_gamma_table_215_190_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_212, mtp_data); else calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_212, mtp_data); } #ifdef SMART_DIMMING_DEBUG for (i = 0; i < GAMMA_MAX; i++) { for (j = 0; j < 34; j++) printk("%d,", lcd->gamma_table[i][j]); printk("\n"); } #endif return 0; err_alloc_gamma: while (i > 0) { kfree(lcd->gamma_table[i-1]); i--; } kfree(lcd->gamma_table); err_alloc_gamma_table: return ret; }
static int init_gamma_table(struct lcd_info *lcd , const u8 *mtp_data) { int i, ret = 0; lcd->gamma_table = kzalloc(GAMMA_MAX * sizeof(u8 *), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->gamma_table)) { pr_err("failed to allocate gamma table\n"); ret = -ENOMEM; goto err_alloc_gamma_table; } for (i = 0; i < GAMMA_MAX; i++) { lcd->gamma_table[i] = kzalloc(GAMMA_PARAM_SIZE * sizeof(u8), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->gamma_table[i])) { pr_err("failed to allocate gamma\n"); ret = -ENOMEM; goto err_alloc_gamma; } lcd->gamma_table[i][0] = 0xCA; } for (i = 0; i < GAMMA_MAX; i++) { if (candela_table[i] == 20) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_21, mtp_data); else if (candela_table[i] == 30) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_213, mtp_data); else if (candela_table[i] == 40) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_215, mtp_data); else if (candela_table[i] == 50) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_218, mtp_data); else if (candela_table[i] == 60) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_22, mtp_data); else if (candela_table[i] == 70) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_222, mtp_data); else if (candela_table[i] == 80) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_223, mtp_data); else if (candela_table[i] == 90) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_224, mtp_data); else if (candela_table[i] == 100) calc_gamma_table_20_100_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_225, mtp_data); else if (candela_table[i] == 102) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_224, mtp_data); else if (candela_table[i] == 104) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_223, mtp_data); else if (candela_table[i] == 106) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_222, mtp_data); else if (candela_table[i] == 108) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_221, mtp_data); else if (candela_table[i] == 182) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_221, mtp_data); else if (candela_table[i] == 184) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_222, mtp_data); else if (candela_table[i] == 186) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_223, mtp_data); else if (candela_table[i] == 188) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_224, mtp_data); else if (candela_table[i] == 190) calc_gamma_table_190_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_225, mtp_data); else if ((candela_table[i] > 190) && (candela_table[i] < MAX_GAMMA-1)) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_225 , mtp_data); else if (candela_table[i] == MAX_GAMMA-1) calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_22, mtp_data); else calc_gamma_table_ea8061(&lcd->smart, aid_candela_table[i], &lcd->gamma_table[i][1], G_22, mtp_data); } #ifdef SMART_DIMMING_DEBUG for (i = 0; i < GAMMA_MAX; i++) { for (j = 0; j < GAMMA_PARAM_SIZE; j++) printk("%d,", lcd->gamma_table[i][j]); printk("\n"); } #endif return 0; err_alloc_gamma: while (i > 0) { kfree(lcd->gamma_table[i-1]); i--; } kfree(lcd->gamma_table); err_alloc_gamma_table: return ret; }