static int init_elvss_table(struct s6e8aa0a01_data *s6) { int i, ret = 0; s6->elvss_table = kzalloc(ELVSS_STATUS_MAX * sizeof(u8 *), GFP_KERNEL); if (IS_ERR_OR_NULL(s6->elvss_table)) { pr_err("failed to allocate elvss table\n"); ret = -ENOMEM; goto err_alloc_elvss_table; } for (i = 0; i < ELVSS_STATUS_MAX; i++) { s6->elvss_table[i] = kzalloc(ELVSS_PARAM_SIZE * sizeof(u8), GFP_KERNEL); if (IS_ERR_OR_NULL(s6->elvss_table[i])) { pr_err("failed to allocate elvss\n"); ret = -ENOMEM; goto err_alloc_elvss; } s6->elvss_table[i][0] = 0xB1; s6->elvss_table[i][1] = 0x04; s6->elvss_table[i][2] = get_elvss_value(s6, i); } return 0; err_alloc_elvss: while (i > 0) kfree(s6->elvss_table[--i]); kfree(s6->elvss_table); err_alloc_elvss_table: return ret; }
static int init_elvss_table(struct lcd_info *lcd) { int i, ret = 0; #ifdef SMART_DIMMING_DEBUG int j; #endif lcd->elvss_table = kzalloc(ELVSS_STATUS_MAX * sizeof(u8 *), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->elvss_table)) { pr_err("failed to allocate elvss table\n"); ret = -ENOMEM; goto err_alloc_elvss_table; } for (i = 0; i < ELVSS_STATUS_MAX; i++) { lcd->elvss_table[i] = kzalloc(ELVSS_PARAM_SIZE * sizeof(u8), GFP_KERNEL); if (IS_ERR_OR_NULL(lcd->elvss_table[i])) { pr_err("failed to allocate elvss\n"); ret = -ENOMEM; goto err_alloc_elvss; } lcd->elvss_table[i][0] = 0xB1; lcd->elvss_table[i][1] = 0x04; lcd->elvss_table[i][2] = get_elvss_value(lcd, i); } #ifdef SMART_DIMMING_DEBUG for (i = 0; i < ELVSS_STATUS_MAX; i++) { for (j = 0; j < ELVSS_PARAM_SIZE; j++) printk("0x%02x, ", lcd->elvss_table[i][j]); printk("\n"); } #endif return 0; err_alloc_elvss: while (i > 0) { kfree(lcd->elvss_table[i-1]); i--; } kfree(lcd->elvss_table); err_alloc_elvss_table: return ret; }