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); }
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; }