static int ktd259b_backlight_probe(struct platform_device *pdev) { struct platform_ktd259b_backlight_data *data = pdev->dev.platform_data; struct backlight_device *bl; struct ktd259b_bl_data *ktd259b; struct backlight_properties props; int ret; BLDBG("[BACKLIGHT] ktd259b_backlight_probe\n"); if (!data) { dev_err(&pdev->dev, "failed to find platform data\n"); return -EINVAL; } ktd259b = kzalloc(sizeof(*ktd259b), GFP_KERNEL); if (!ktd259b) { dev_err(&pdev->dev, "no memory for state\n"); ret = -ENOMEM; goto err_alloc; } ktd259b->ctrl_pin = data->ctrl_pin; memset(&props, 0, sizeof(struct backlight_properties)); props.max_brightness = data->max_brightness; props.type = BACKLIGHT_PLATFORM; bl = backlight_device_register(pdev->name, &pdev->dev, ktd259b, &ktd259b_backlight_ops, &props); if (IS_ERR(bl)) { dev_err(&pdev->dev, "failed to register backlight\n"); ret = PTR_ERR(bl); goto err_bl; } #ifdef CONFIG_HAS_EARLYSUSPEND ktd259b->pdev = pdev; ktd259b->early_suspend_desc.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN; ktd259b->early_suspend_desc.suspend = ktd259b_backlight_earlysuspend; ktd259b->early_suspend_desc.resume = ktd259b_backlight_earlyresume; register_early_suspend(&ktd259b->early_suspend_desc); #endif bl->props.max_brightness = data->max_brightness; bl->props.brightness = data->dft_brightness; platform_set_drvdata(pdev, bl); ktd259b_backlight_update_status(bl); return 0; err_bl: kfree(ktd259b); err_alloc: return ret; }
void backlight_update_CABC() { BLDBG("[BACKLIGHT] backlight_update_CABC\n"); ktd259b_backlight_update_status(&g_bl); }