欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

显示相关驱动 feature

程序员文章站 2022-03-09 13:41:07
...

1 双击唤醒

display panel driver 需要根据是否有enable 这个feature 决定上下电的流程。

如果该feature 有enable 则只需要关闭vdd即可

static int lcm_prepare(struct drm_panel *panel)
{
	struct lcm *ctx = panel_to_lcm(panel);
	int ret;

	pr_info("%s\n", __func__);
	if (ctx->prepared)
		return 0;

	if (is_tp_doubleclick_enable() == false) {
		lcm_panel_vddi_enable(ctx->dev);
		udelay(1000);

		/*VCAM_LDO_EN -------->  GPIO158*/
		ctx->cam_gpio = devm_gpiod_get_index(ctx->dev,
			"cam", 0, GPIOD_OUT_HIGH);
		if (IS_ERR(ctx->cam_gpio)) {
			dev_err(ctx->dev, "%s: cannot get dvdd gpio %ld\n",
				__func__, PTR_ERR(ctx->cam_gpio));
			return PTR_ERR(ctx->cam_gpio);
		}
		gpiod_set_value(ctx->cam_gpio, 1);
		devm_gpiod_put(ctx->dev, ctx->cam_gpio);

		/*DVDD -----> GPIO3*/
		ctx->dvdd_gpio = devm_gpiod_get_index(ctx->dev,
			"dvdd", 0, GPIOD_OUT_HIGH);
		if (IS_ERR(ctx->dvdd_gpio)) {
			dev_err(ctx->dev, "%s: cannot get dvdd gpio %ld\n",
				__func__, PTR_ERR(ctx->dvdd_gpio));
			return PTR_ERR(ctx->dvdd_gpio);
		}
		gpiod_set_value(ctx->dvdd_gpio, 1);
		devm_gpiod_put(ctx->dev, ctx->dvdd_gpio);

		udelay(1000);

		/*LED EN Power on*/
		ctx->leden_gpio = devm_gpiod_get_index(ctx->dev,
			"leden", 0, GPIOD_OUT_HIGH);
		if (IS_ERR(ctx->leden_gpio)) {
			dev_err(ctx->dev, "%s: cannot get leden_gpio gpio %ld\n",
				__func__, PTR_ERR(ctx->leden_gpio));
			return PTR_ERR(ctx->leden_gpio);
		}
		gpiod_set_value(ctx->leden_gpio, 1);
		devm_gpiod_put(ctx->dev, ctx->leden_gpio);
	} else {
		/*DVDD -----> GPIO3*/
		ctx->dvdd_gpio = devm_gpiod_get_index(ctx->dev,
			"dvdd", 0, GPIOD_OUT_HIGH);
		if (IS_ERR(ctx->dvdd_gpio)) {
			dev_err(ctx->dev, "%s: cannot get dvdd gpio %ld\n",
				__func__, PTR_ERR(ctx->dvdd_gpio));
			return PTR_ERR(ctx->dvdd_gpio);
		}
		gpiod_set_value(ctx->dvdd_gpio, 1);
		devm_gpiod_put(ctx->dev, ctx->dvdd_gpio);
	}

	ktz8863a_bl_bias_conf();
	ktz8863a_bias_enable(1, 1);
	udelay(10*1000);

	lcm_panel_init(ctx);
	ktz8863a_brightness_set(1023);

2 sensor的窄缝方案

注意:有些项目无需进行背光补偿值校准,因为窄缝光感的硬件结构设计,屏幕不会漏光到窄缝光感,有些则需要

需要的就是需要led driver porting poll 机制

具体见linux_poll() 4.1节

窄缝方案的原理可以看另一篇博客