Lines Matching refs:ddata

105 static void acx565akm_transfer(struct panel_drv_data *ddata, int cmd,  in acx565akm_transfer()  argument
112 BUG_ON(ddata->spi == NULL); in acx565akm_transfer()
150 r = spi_sync(ddata->spi, &m); in acx565akm_transfer()
152 dev_dbg(&ddata->spi->dev, "spi_sync %d\n", r); in acx565akm_transfer()
155 static inline void acx565akm_cmd(struct panel_drv_data *ddata, int cmd) in acx565akm_cmd() argument
157 acx565akm_transfer(ddata, cmd, NULL, 0, NULL, 0); in acx565akm_cmd()
160 static inline void acx565akm_write(struct panel_drv_data *ddata, in acx565akm_write() argument
163 acx565akm_transfer(ddata, reg, buf, len, NULL, 0); in acx565akm_write()
166 static inline void acx565akm_read(struct panel_drv_data *ddata, in acx565akm_read() argument
169 acx565akm_transfer(ddata, reg, NULL, 0, buf, len); in acx565akm_read()
172 static void hw_guard_start(struct panel_drv_data *ddata, int guard_msec) in hw_guard_start() argument
174 ddata->hw_guard_wait = msecs_to_jiffies(guard_msec); in hw_guard_start()
175 ddata->hw_guard_end = jiffies + ddata->hw_guard_wait; in hw_guard_start()
178 static void hw_guard_wait(struct panel_drv_data *ddata) in hw_guard_wait() argument
180 unsigned long wait = ddata->hw_guard_end - jiffies; in hw_guard_wait()
182 if ((long)wait > 0 && wait <= ddata->hw_guard_wait) { in hw_guard_wait()
188 static void set_sleep_mode(struct panel_drv_data *ddata, int on) in set_sleep_mode() argument
200 hw_guard_wait(ddata); in set_sleep_mode()
201 acx565akm_cmd(ddata, cmd); in set_sleep_mode()
202 hw_guard_start(ddata, 120); in set_sleep_mode()
205 static void set_display_state(struct panel_drv_data *ddata, int enabled) in set_display_state() argument
209 acx565akm_cmd(ddata, cmd); in set_display_state()
212 static int panel_enabled(struct panel_drv_data *ddata) in panel_enabled() argument
217 acx565akm_read(ddata, MIPID_CMD_READ_DISP_STATUS, in panel_enabled()
221 dev_dbg(&ddata->spi->dev, in panel_enabled()
227 static int panel_detect(struct panel_drv_data *ddata) in panel_detect() argument
229 acx565akm_read(ddata, MIPID_CMD_READ_DISP_ID, ddata->display_id, 3); in panel_detect()
230 dev_dbg(&ddata->spi->dev, "MIPI display ID: %02x%02x%02x\n", in panel_detect()
231 ddata->display_id[0], in panel_detect()
232 ddata->display_id[1], in panel_detect()
233 ddata->display_id[2]); in panel_detect()
235 switch (ddata->display_id[0]) { in panel_detect()
237 ddata->model = MIPID_VER_ACX565AKM; in panel_detect()
238 ddata->name = "acx565akm"; in panel_detect()
239 ddata->has_bc = 1; in panel_detect()
240 ddata->has_cabc = 1; in panel_detect()
243 ddata->model = MIPID_VER_L4F00311; in panel_detect()
244 ddata->name = "l4f00311"; in panel_detect()
247 ddata->model = MIPID_VER_LPH8923; in panel_detect()
248 ddata->name = "lph8923"; in panel_detect()
251 ddata->model = MIPID_VER_LS041Y3; in panel_detect()
252 ddata->name = "ls041y3"; in panel_detect()
255 ddata->name = "unknown"; in panel_detect()
256 dev_err(&ddata->spi->dev, "invalid display ID\n"); in panel_detect()
260 ddata->revision = ddata->display_id[1]; in panel_detect()
262 dev_info(&ddata->spi->dev, "omapfb: %s rev %02x LCD detected\n", in panel_detect()
263 ddata->name, ddata->revision); in panel_detect()
270 static void enable_backlight_ctrl(struct panel_drv_data *ddata, int enable) in enable_backlight_ctrl() argument
274 acx565akm_read(ddata, MIPID_CMD_READ_CTRL_DISP, (u8 *)&ctrl, 1); in enable_backlight_ctrl()
284 acx565akm_write(ddata, MIPID_CMD_WRITE_CTRL_DISP, (u8 *)&ctrl, 2); in enable_backlight_ctrl()
287 static void set_cabc_mode(struct panel_drv_data *ddata, unsigned mode) in set_cabc_mode() argument
291 ddata->cabc_mode = mode; in set_cabc_mode()
292 if (!ddata->enabled) in set_cabc_mode()
295 acx565akm_read(ddata, MIPID_CMD_READ_CABC, (u8 *)&cabc_ctrl, 1); in set_cabc_mode()
298 acx565akm_write(ddata, MIPID_CMD_WRITE_CABC, (u8 *)&cabc_ctrl, 2); in set_cabc_mode()
301 static unsigned get_cabc_mode(struct panel_drv_data *ddata) in get_cabc_mode() argument
303 return ddata->cabc_mode; in get_cabc_mode()
306 static unsigned get_hw_cabc_mode(struct panel_drv_data *ddata) in get_hw_cabc_mode() argument
310 acx565akm_read(ddata, MIPID_CMD_READ_CABC, &cabc_ctrl, 1); in get_hw_cabc_mode()
314 static void acx565akm_set_brightness(struct panel_drv_data *ddata, int level) in acx565akm_set_brightness() argument
319 acx565akm_write(ddata, MIPID_CMD_WRITE_DISP_BRIGHTNESS, (u8 *)&bv, 2); in acx565akm_set_brightness()
322 enable_backlight_ctrl(ddata, 1); in acx565akm_set_brightness()
324 enable_backlight_ctrl(ddata, 0); in acx565akm_set_brightness()
327 static int acx565akm_get_actual_brightness(struct panel_drv_data *ddata) in acx565akm_get_actual_brightness() argument
331 acx565akm_read(ddata, MIPID_CMD_READ_DISP_BRIGHTNESS, &bv, 1); in acx565akm_get_actual_brightness()
339 struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev); in acx565akm_bl_update_status() local
342 dev_dbg(&ddata->spi->dev, "%s\n", __func__); in acx565akm_bl_update_status()
350 if (ddata->has_bc) in acx565akm_bl_update_status()
351 acx565akm_set_brightness(ddata, level); in acx565akm_bl_update_status()
360 struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev); in acx565akm_bl_get_intensity() local
364 if (!ddata->has_bc) in acx565akm_bl_get_intensity()
369 if (ddata->has_bc) in acx565akm_bl_get_intensity()
370 return acx565akm_get_actual_brightness(ddata); in acx565akm_bl_get_intensity()
380 struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev); in acx565akm_bl_update_status_locked() local
383 mutex_lock(&ddata->mutex); in acx565akm_bl_update_status_locked()
385 mutex_unlock(&ddata->mutex); in acx565akm_bl_update_status_locked()
392 struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev); in acx565akm_bl_get_intensity_locked() local
395 mutex_lock(&ddata->mutex); in acx565akm_bl_get_intensity_locked()
397 mutex_unlock(&ddata->mutex); in acx565akm_bl_get_intensity_locked()
420 struct panel_drv_data *ddata = dev_get_drvdata(dev); in show_cabc_mode() local
425 if (!ddata->has_cabc) in show_cabc_mode()
428 mode = get_cabc_mode(ddata); in show_cabc_mode()
441 struct panel_drv_data *ddata = dev_get_drvdata(dev); in store_cabc_mode() local
460 if (!ddata->has_cabc && i != 0) in store_cabc_mode()
463 mutex_lock(&ddata->mutex); in store_cabc_mode()
464 set_cabc_mode(ddata, i); in store_cabc_mode()
465 mutex_unlock(&ddata->mutex); in store_cabc_mode()
474 struct panel_drv_data *ddata = dev_get_drvdata(dev); in show_cabc_available_modes() local
478 if (!ddata->has_cabc) in show_cabc_available_modes()
507 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_connect() local
508 struct omap_dss_device *in = ddata->in; in acx565akm_connect()
518 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_disconnect() local
519 struct omap_dss_device *in = ddata->in; in acx565akm_disconnect()
529 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_panel_power_on() local
530 struct omap_dss_device *in = ddata->in; in acx565akm_panel_power_on()
533 dev_dbg(&ddata->spi->dev, "%s\n", __func__); in acx565akm_panel_power_on()
535 in->ops.sdi->set_timings(in, &ddata->videomode); in acx565akm_panel_power_on()
537 if (ddata->datapairs > 0) in acx565akm_panel_power_on()
538 in->ops.sdi->set_datapairs(in, ddata->datapairs); in acx565akm_panel_power_on()
549 if (gpio_is_valid(ddata->reset_gpio)) in acx565akm_panel_power_on()
550 gpio_set_value(ddata->reset_gpio, 1); in acx565akm_panel_power_on()
552 if (ddata->enabled) { in acx565akm_panel_power_on()
553 dev_dbg(&ddata->spi->dev, "panel already enabled\n"); in acx565akm_panel_power_on()
567 set_sleep_mode(ddata, 0); in acx565akm_panel_power_on()
568 ddata->enabled = 1; in acx565akm_panel_power_on()
572 set_display_state(ddata, 1); in acx565akm_panel_power_on()
573 set_cabc_mode(ddata, ddata->cabc_mode); in acx565akm_panel_power_on()
575 return acx565akm_bl_update_status(ddata->bl_dev); in acx565akm_panel_power_on()
580 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_panel_power_off() local
581 struct omap_dss_device *in = ddata->in; in acx565akm_panel_power_off()
585 if (!ddata->enabled) in acx565akm_panel_power_off()
588 set_display_state(ddata, 0); in acx565akm_panel_power_off()
589 set_sleep_mode(ddata, 1); in acx565akm_panel_power_off()
590 ddata->enabled = 0; in acx565akm_panel_power_off()
599 if (gpio_is_valid(ddata->reset_gpio)) in acx565akm_panel_power_off()
600 gpio_set_value(ddata->reset_gpio, 0); in acx565akm_panel_power_off()
610 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_enable() local
621 mutex_lock(&ddata->mutex); in acx565akm_enable()
623 mutex_unlock(&ddata->mutex); in acx565akm_enable()
634 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_disable() local
641 mutex_lock(&ddata->mutex); in acx565akm_disable()
643 mutex_unlock(&ddata->mutex); in acx565akm_disable()
651 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_set_timings() local
652 struct omap_dss_device *in = ddata->in; in acx565akm_set_timings()
654 ddata->videomode = *timings; in acx565akm_set_timings()
663 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_get_timings() local
665 *timings = ddata->videomode; in acx565akm_get_timings()
671 struct panel_drv_data *ddata = to_panel_data(dssdev); in acx565akm_check_timings() local
672 struct omap_dss_device *in = ddata->in; in acx565akm_check_timings()
694 struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); in acx565akm_probe_pdata() local
699 ddata->reset_gpio = pdata->reset_gpio; in acx565akm_probe_pdata()
707 ddata->in = in; in acx565akm_probe_pdata()
709 ddata->datapairs = pdata->datapairs; in acx565akm_probe_pdata()
711 dssdev = &ddata->dssdev; in acx565akm_probe_pdata()
719 struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); in acx565akm_probe_of() local
722 ddata->reset_gpio = of_get_named_gpio(np, "reset-gpios", 0); in acx565akm_probe_of()
724 ddata->in = omapdss_of_find_source_for_first_ep(np); in acx565akm_probe_of()
725 if (IS_ERR(ddata->in)) { in acx565akm_probe_of()
727 return PTR_ERR(ddata->in); in acx565akm_probe_of()
735 struct panel_drv_data *ddata; in acx565akm_probe() local
746 ddata = devm_kzalloc(&spi->dev, sizeof(*ddata), GFP_KERNEL); in acx565akm_probe()
747 if (ddata == NULL) in acx565akm_probe()
750 dev_set_drvdata(&spi->dev, ddata); in acx565akm_probe()
752 ddata->spi = spi; in acx565akm_probe()
754 mutex_init(&ddata->mutex); in acx565akm_probe()
769 if (gpio_is_valid(ddata->reset_gpio)) { in acx565akm_probe()
770 r = devm_gpio_request_one(&spi->dev, ddata->reset_gpio, in acx565akm_probe()
776 if (gpio_is_valid(ddata->reset_gpio)) in acx565akm_probe()
777 gpio_set_value(ddata->reset_gpio, 1); in acx565akm_probe()
785 ddata->enabled = panel_enabled(ddata); in acx565akm_probe()
787 r = panel_detect(ddata); in acx565akm_probe()
789 if (!ddata->enabled && gpio_is_valid(ddata->reset_gpio)) in acx565akm_probe()
790 gpio_set_value(ddata->reset_gpio, 0); in acx565akm_probe()
802 bldev = backlight_device_register("acx565akm", &ddata->spi->dev, in acx565akm_probe()
803 ddata, &acx565akm_bl_ops, &props); in acx565akm_probe()
808 ddata->bl_dev = bldev; in acx565akm_probe()
809 if (ddata->has_cabc) { in acx565akm_probe()
816 ddata->cabc_mode = get_hw_cabc_mode(ddata); in acx565akm_probe()
821 if (ddata->has_bc) in acx565akm_probe()
822 brightness = acx565akm_get_actual_brightness(ddata); in acx565akm_probe()
832 ddata->videomode = acx565akm_panel_timings; in acx565akm_probe()
834 dssdev = &ddata->dssdev; in acx565akm_probe()
839 dssdev->panel.timings = ddata->videomode; in acx565akm_probe()
856 omap_dss_put_device(ddata->in); in acx565akm_probe()
862 struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev); in acx565akm_remove() local
863 struct omap_dss_device *dssdev = &ddata->dssdev; in acx565akm_remove()
864 struct omap_dss_device *in = ddata->in; in acx565akm_remove()
866 dev_dbg(&ddata->spi->dev, "%s\n", __func__); in acx565akm_remove()
868 sysfs_remove_group(&ddata->bl_dev->dev.kobj, &bldev_attr_group); in acx565akm_remove()
869 backlight_device_unregister(ddata->bl_dev); in acx565akm_remove()