static unsigned get_hw_cabc_mode(struct acx565akm_device *md)
{
	u8 cabc_ctrl;

	acx565akm_read(md, MIPID_CMD_READ_CABC, &cabc_ctrl, 1);
	return cabc_ctrl & 3;
}
static unsigned get_hw_cabc_mode(struct panel_drv_data *ddata)
{
	u8 cabc_ctrl;

	acx565akm_read(ddata, MIPID_CMD_READ_CABC, &cabc_ctrl, 1);
	return cabc_ctrl & 3;
}
static int acx565akm_get_actual_brightness(struct acx565akm_device *md)
{
	u8 bv;

	acx565akm_read(md, MIPID_CMD_READ_DISP_BRIGHTNESS, &bv, 1);

	return bv;
}
static int acx565akm_get_actual_brightness(struct panel_drv_data *ddata)
{
	u8 bv;

	acx565akm_read(ddata, MIPID_CMD_READ_DISP_BRIGHTNESS, &bv, 1);

	return bv;
}
static void set_cabc_mode(struct acx565akm_device *md, unsigned mode)
{
	u16 cabc_ctrl;

	md->cabc_mode = mode;
	if (!md->enabled)
		return;
	cabc_ctrl = 0;
	acx565akm_read(md, MIPID_CMD_READ_CABC, (u8 *)&cabc_ctrl, 1);
	cabc_ctrl &= ~3;
	cabc_ctrl |= (1 << 8) | (mode & 3);
	acx565akm_write(md, MIPID_CMD_WRITE_CABC, (u8 *)&cabc_ctrl, 2);
}
static int panel_enabled(struct acx565akm_device *md)
{
	u32 disp_status;
	int enabled;

	acx565akm_read(md, MIPID_CMD_READ_DISP_STATUS, (u8 *)&disp_status, 4);
	disp_status = __be32_to_cpu(disp_status);
	enabled = (disp_status & (1 << 17)) && (disp_status & (1 << 10));
	dev_dbg(&md->spi->dev,
		"LCD panel %senabled by bootloader (status 0x%04x)\n",
		enabled ? "" : "not ", disp_status);
	return enabled;
}
static void set_cabc_mode(struct panel_drv_data *ddata, unsigned mode)
{
	u16 cabc_ctrl;

	ddata->cabc_mode = mode;
	if (!ddata->enabled)
		return;
	cabc_ctrl = 0;
	acx565akm_read(ddata, MIPID_CMD_READ_CABC, (u8 *)&cabc_ctrl, 1);
	cabc_ctrl &= ~3;
	cabc_ctrl |= (1 << 8) | (mode & 3);
	acx565akm_write(ddata, MIPID_CMD_WRITE_CABC, (u8 *)&cabc_ctrl, 2);
}
Example #8
0
static int panel_enabled(struct panel_drv_data *ddata)
{
	__be32 v;
	u32 disp_status;
	int enabled;

	acx565akm_read(ddata, MIPID_CMD_READ_DISP_STATUS, (u8 *)&v, 4);
	disp_status = __be32_to_cpu(v);
	enabled = (disp_status & (1 << 17)) && (disp_status & (1 << 10));
	dev_dbg(&ddata->spi->dev,
		"LCD panel %senabled by bootloader (status 0x%04x)\n",
		enabled ? "" : "not ", disp_status);
	return enabled;
}
static void enable_backlight_ctrl(struct acx565akm_device *md, int enable)
{
	u16 ctrl;

	acx565akm_read(md, MIPID_CMD_READ_CTRL_DISP, (u8 *)&ctrl, 1);
	if (enable) {
		ctrl |= CTRL_DISP_BRIGHTNESS_CTRL_ON |
			CTRL_DISP_BACKLIGHT_ON;
	} else {
		ctrl &= ~(CTRL_DISP_BRIGHTNESS_CTRL_ON |
			  CTRL_DISP_BACKLIGHT_ON);
	}

	ctrl |= 1 << 8;
	acx565akm_write(md, MIPID_CMD_WRITE_CTRL_DISP, (u8 *)&ctrl, 2);
}
static int panel_detect(struct acx565akm_device *md)
{
	acx565akm_read(md, MIPID_CMD_READ_DISP_ID, md->display_id, 3);	//SPI read from LCD_SPI(4:0)
	dev_dbg(&md->spi->dev, "MIPI display ID: %02x%02x%02x\n",
		md->display_id[0], md->display_id[1], md->display_id[2]);
/*
	switch (md->display_id[0]) {
	case 0x10:
		md->model = MIPID_VER_ACX565AKM;
		md->panel.name = "acx565akm";
		md->has_bc = 1;
		md->has_cabc = 1;
		break;
	case 0x29:
		md->model = MIPID_VER_L4F00311;
		md->panel.name = "l4f00311";
		break;
	case 0x45:
		md->model = MIPID_VER_LPH8923;
		md->panel.name = "lph8923";
		break;
	case 0x83:
		md->model = MIPID_VER_LS041Y3;
		md->panel.name = "ls041y3";
		break;
	default:
		md->panel.name = "unknown";	//TianMa display will come here if no code change
		dev_err(&md->spi->dev, "invalid display ID\n");
		return -ENODEV;
	}
*/
		//if return here, the display didn't show content;
		//a lot of efforts were done to find this, by Tom Xue
		md->model = MIPID_VER_ACX565AKM;
		md->panel.name = "acx565akm";
		md->has_bc = 1;
		md->has_cabc = 1;



	md->revision = md->display_id[1];

	pr_info("omapfb: %s rev %02x LCD detected\n",	//can be seen via dmesg
			md->panel.name, md->revision);

	return 0;
}
static int panel_detect(struct panel_drv_data *ddata)
{
	acx565akm_read(ddata, MIPID_CMD_READ_DISP_ID, ddata->display_id, 3);
	dev_dbg(&ddata->spi->dev, "MIPI display ID: %02x%02x%02x\n",
		ddata->display_id[0],
		ddata->display_id[1],
		ddata->display_id[2]);

	switch (ddata->display_id[0]) {
	case 0x10:
		ddata->model = MIPID_VER_ACX565AKM;
		ddata->name = "acx565akm";
		ddata->has_bc = 1;
		ddata->has_cabc = 1;
		break;
	case 0x29:
		ddata->model = MIPID_VER_L4F00311;
		ddata->name = "l4f00311";
		break;
	case 0x45:
		ddata->model = MIPID_VER_LPH8923;
		ddata->name = "lph8923";
		break;
	case 0x83:
		ddata->model = MIPID_VER_LS041Y3;
		ddata->name = "ls041y3";
		break;
	default:
		ddata->name = "unknown";
		dev_err(&ddata->spi->dev, "invalid display ID\n");
		return -ENODEV;
	}

	ddata->revision = ddata->display_id[1];

	dev_info(&ddata->spi->dev, "omapfb: %s rev %02x LCD detected\n",
			ddata->name, ddata->revision);

	return 0;
}