static int dsim_panel_probe(struct dsim_device *dsim) { int ret = 0; struct panel_private *panel = &dsim->priv; #if defined(CONFIG_EXYNOS_DECON_MDNIE_LITE) u16 coordinate[2] = {0, }; #endif dsim->lcd = lcd_device_register("panel", dsim->dev, &dsim->priv, NULL); if (IS_ERR(dsim->lcd)) { dsim_err("%s : faield to register lcd device\n", __func__); ret = PTR_ERR(dsim->lcd); goto probe_err; } ret = dsim_backlight_probe(dsim); if (ret) { dsim_err("%s : failed to prbe backlight driver\n", __func__); goto probe_err; } panel->lcdConnected = PANEL_CONNECTED; panel->state = PANEL_STATE_RESUMED; panel->temperature = NORMAL_TEMPERATURE; panel->acl_enable = 0; panel->current_acl = 0; panel->auto_brightness = 0; panel->siop_enable = 0; panel->current_hbm = 0; panel->current_vint = 0; mutex_init(&panel->lock); #ifdef CONFIG_EXYNOS_DECON_LCD_MCD panel->mcd_on = 0; #endif if (panel->ops->probe) { ret = panel->ops->probe(dsim); if (ret) { dsim_err("%s : failed to probe panel\n", __func__); goto probe_err; } } #if defined(CONFIG_EXYNOS_DECON_LCD_SYSFS) lcd_init_sysfs(dsim); #endif #if defined(CONFIG_EXYNOS_DECON_MDNIE_LITE) coordinate[0] = (u16)panel->coordinate[0]; coordinate[1] = (u16)panel->coordinate[1]; mdnie_register(&dsim->lcd->dev, dsim, (mdnie_w)mdnie_lite_send_seq, (mdnie_r)mdnie_lite_read, coordinate, &tune_info); #endif probe_err: return ret; }
static int s6e3hf2_wqhd_probe(struct dsim_device *dsim) { int ret = 0; struct panel_private *priv = &dsim->priv; dsim_info("%s was called\n", __func__); dsim->lcd = lcd_device_register("panel", dsim->dev, &dsim->priv, NULL); if (IS_ERR(dsim->lcd)) { pr_err("failed to register lcd device\n"); ret = PTR_ERR(dsim->lcd); goto probe_err; } priv->bd = backlight_device_register("panel", dsim->dev, &dsim->priv, &s6e3hf2_wqhd_backlight_ops, NULL); if (IS_ERR(priv->bd)) { pr_err("failed to register backlight device\n"); ret = PTR_ERR(priv->bd); goto probe_err; } priv->bd->props.max_brightness = MAX_PLATFORM_BRIGHTNESS; priv->bd->props.brightness = DEFAULT_PLATFORM_BRIGHTNESS; /*Todo need to rearrange below value */ priv->lcdConnected = PANEL_CONNECTED; priv->state = PANEL_STATE_ACTIVE; priv->power = FB_BLANK_UNBLANK; priv->temperature = NORMAL_TEMPERATURE; priv->acl_enable= 0; priv->current_acl = 0; priv->auto_brightness = 0; priv->siop_enable = 0; priv->current_hbm = 0; mutex_init(&priv->lock); #if defined(CONFIG_EXYNOS_DECON_LCD_SYSFS) lcd_init_sysfs(dsim); #endif dsim_panel_probe(dsim); #if defined(CONFIG_EXYNOS_DECON_MDNIE_LITE) mdnie_register(&dsim->lcd->dev, dsim, (mdnie_w)s6e3hf2_send_seq, (mdnie_r)s6e3hf2_read); #endif probe_err: return ret; }
static int ana38401_probe(struct mipi_dsim_device *dsim) { int ret; struct lcd_info *lcd; u8 mtp_data[LDI_MTP_LEN] = {0,}; u8 hbm_data[LDI_MTP_LEN] = {0,}; lcd = kzalloc(sizeof(struct lcd_info), GFP_KERNEL); if (!lcd) { pr_err("failed to allocate for lcd\n"); ret = -ENOMEM; goto err_alloc; } lcd->ld = lcd_device_register("panel", dsim->dev, lcd, &ana38401_lcd_ops); if (IS_ERR(lcd->ld)) { pr_err("failed to register lcd device\n"); ret = PTR_ERR(lcd->ld); goto out_free_lcd; } dsim->lcd = lcd->ld; lcd->bd = backlight_device_register("panel", dsim->dev, lcd, &ana38401_backlight_ops, NULL); if (IS_ERR(lcd->bd)) { pr_err("failed to register backlight device\n"); ret = PTR_ERR(lcd->bd); goto out_free_backlight; } lcd->dev = dsim->dev; lcd->dsim = dsim; lcd->bd->props.max_brightness = MAX_BRIGHTNESS; lcd->bd->props.brightness = DEFAULT_BRIGHTNESS; lcd->brightness = lcd->current_brightness = DEFAULT_BRIGHTNESS; lcd->bl = DEFAULT_GAMMA_INDEX; lcd->current_bl = lcd->bl; lcd->acl_enable = 0; lcd->current_acl = 0; #ifdef CONFIG_S5P_LCD_INIT lcd->power = FB_BLANK_POWERDOWN; #else lcd->power = FB_BLANK_UNBLANK; #endif lcd->auto_brightness = 0; lcd->connected = 1; lcd->siop_enable = 0; lcd->temperature = TEMP_ABOVE_MINUS_00_DEGREE; ret = device_create_file(&lcd->ld->dev, &dev_attr_power_reduce); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_lcd_type); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_window_type); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->bd->dev, &dev_attr_brightness_table); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->bd->dev, &dev_attr_auto_brightness); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_siop_enable); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_temperature); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_color_coordinate); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_manufacture_date); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_dump_register); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_write_register); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); ret = device_create_file(&lcd->ld->dev, &dev_attr_panic_enable); if (ret < 0) dev_err(&lcd->ld->dev, "failed to add sysfs entries, %d\n", __LINE__); mutex_init(&lcd->lock); mutex_init(&lcd->bl_lock); ana38401_read_id(lcd, lcd->id); ana38401_read_mtp(lcd, mtp_data); ana38401_read_coordinate(lcd); ana38401_read_date(lcd); ana38401_read_hbm(lcd, hbm_data); dev_info(&lcd->ld->dev, "ID: %x, %x, %x\n", lcd->id[0], lcd->id[1], lcd->id[2]); init_dynamic_aid(lcd); ret = init_gamma_table(lcd, mtp_data, hbm_data); ret += init_aid_dimming_table(lcd); ret += init_elvss_table(lcd); ret += init_hbm_parameter(lcd); if (ret) dev_info(&lcd->ld->dev, "gamma table generation is failed\n"); show_lcd_table(lcd); lcd->ldi_enable = 1; #if defined(CONFIG_DECON_MDNIE_LITE) mdnie_register(&lcd->ld->dev, lcd, (mdnie_w)ana38401_write_set, (mdnie_r)ana38401_read, &tune_info); #endif /* 11-2. Change Gamma_Offset_Index */ ana38401_write(lcd, SEQ_CHANGE_GAMMA_OFFSET_INDEX_1, ARRAY_SIZE(SEQ_CHANGE_GAMMA_OFFSET_INDEX_1)); ana38401_write(lcd, SEQ_CHANGE_GAMMA_OFFSET_INDEX_2, ARRAY_SIZE(SEQ_CHANGE_GAMMA_OFFSET_INDEX_2)); update_brightness(lcd, 1); #if defined(CONFIG_ESD_FG) esd_fg_init(lcd); #endif dev_info(&lcd->ld->dev, "%s lcd panel driver has been probed.\n", __FILE__); return 0; out_free_backlight: lcd_device_unregister(lcd->ld); kfree(lcd); return ret; out_free_lcd: kfree(lcd); return ret; err_alloc: return ret; }