Lines Matching refs:nt
92 static void nt35950_reset(struct nt35950 *nt) in nt35950_reset() argument
94 gpiod_set_value_cansleep(nt->reset_gpio, 1); in nt35950_reset()
96 gpiod_set_value_cansleep(nt->reset_gpio, 0); in nt35950_reset()
98 gpiod_set_value_cansleep(nt->reset_gpio, 1); in nt35950_reset()
109 static int nt35950_set_cmd2_page(struct nt35950 *nt, u8 page) in nt35950_set_cmd2_page() argument
115 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], mauc_cmd2_page, in nt35950_set_cmd2_page()
120 nt->last_page = page; in nt35950_set_cmd2_page()
131 static int nt35950_set_data_compression(struct nt35950 *nt, u8 comp_mode) in nt35950_set_data_compression() argument
136 u8 last_page = nt->last_page; in nt35950_set_data_compression()
141 ret = nt35950_set_cmd2_page(nt, 0); in nt35950_set_data_compression()
146 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_data_compression, in nt35950_set_data_compression()
151 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_vesa_dsc_on, in nt35950_set_data_compression()
157 ret = nt35950_set_cmd2_page(nt, 4); in nt35950_set_data_compression()
162 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_vesa_dsc_setting, in nt35950_set_data_compression()
168 return nt35950_set_cmd2_page(nt, last_page); in nt35950_set_data_compression()
178 static int nt35950_set_scaler(struct nt35950 *nt, u8 scale_up) in nt35950_set_scaler() argument
182 return mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_scaler, in nt35950_set_scaler()
193 static int nt35950_set_scale_mode(struct nt35950 *nt, u8 mode) in nt35950_set_scale_mode() argument
197 return mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_scaler, in nt35950_set_scale_mode()
215 static int nt35950_inject_black_image(struct nt35950 *nt) in nt35950_inject_black_image() argument
223 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_test, ARRAY_SIZE(cmd_test)); in nt35950_inject_black_image()
228 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd0_black_img, in nt35950_inject_black_image()
232 ret = mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd1_black_img, in nt35950_inject_black_image()
239 return mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_test, ARRAY_SIZE(cmd_test)); in nt35950_inject_black_image()
248 static int nt35950_set_dispout(struct nt35950 *nt) in nt35950_set_dispout() argument
251 const struct nt35950_panel_mode *mode_data = nt->desc->mode_data; in nt35950_set_dispout()
253 if (mode_data[nt->cur_mode].is_video_mode) in nt35950_set_dispout()
255 if (mode_data[nt->cur_mode].enable_sram) in nt35950_set_dispout()
258 return mipi_dsi_dcs_write_buffer(nt->dsi[0], cmd_dispout, in nt35950_set_dispout()
262 static int nt35950_get_current_mode(struct nt35950 *nt) in nt35950_get_current_mode() argument
264 struct drm_connector *connector = nt->connector; in nt35950_get_current_mode()
274 for (i = 0; i < nt->desc->num_modes; i++) { in nt35950_get_current_mode()
276 &nt->desc->mode_data[i].mode, in nt35950_get_current_mode()
284 static int nt35950_on(struct nt35950 *nt) in nt35950_on() argument
286 const struct nt35950_panel_mode *mode_data = nt->desc->mode_data; in nt35950_on()
287 struct mipi_dsi_device *dsi = nt->dsi[0]; in nt35950_on()
291 nt->cur_mode = nt35950_get_current_mode(nt); in nt35950_on()
292 nt->dsi[0]->mode_flags |= MIPI_DSI_MODE_LPM; in nt35950_on()
293 nt->dsi[1]->mode_flags |= MIPI_DSI_MODE_LPM; in nt35950_on()
295 ret = nt35950_set_cmd2_page(nt, 0); in nt35950_on()
299 ret = nt35950_set_data_compression(nt, mode_data[nt->cur_mode].compression); in nt35950_on()
303 ret = nt35950_set_scale_mode(nt, mode_data[nt->cur_mode].scaler_mode); in nt35950_on()
307 ret = nt35950_set_scaler(nt, mode_data[nt->cur_mode].scaler_on); in nt35950_on()
311 ret = nt35950_set_dispout(nt); in nt35950_on()
328 ret = nt35950_set_cmd2_page(nt, 1); in nt35950_on()
336 ret = nt35950_set_cmd2_page(nt, 7); in nt35950_on()
347 ret = nt35950_inject_black_image(nt); in nt35950_on()
361 nt->dsi[0]->mode_flags &= ~MIPI_DSI_MODE_LPM; in nt35950_on()
362 nt->dsi[1]->mode_flags &= ~MIPI_DSI_MODE_LPM; in nt35950_on()
367 static int nt35950_off(struct nt35950 *nt) in nt35950_off() argument
369 struct device *dev = &nt->dsi[0]->dev; in nt35950_off()
372 ret = mipi_dsi_dcs_set_display_off(nt->dsi[0]); in nt35950_off()
379 ret = mipi_dsi_dcs_enter_sleep_mode(nt->dsi[0]); in nt35950_off()
387 nt->dsi[0]->mode_flags |= MIPI_DSI_MODE_LPM; in nt35950_off()
388 nt->dsi[1]->mode_flags |= MIPI_DSI_MODE_LPM; in nt35950_off()
393 static int nt35950_sharp_init_vregs(struct nt35950 *nt, struct device *dev) in nt35950_sharp_init_vregs() argument
397 nt->vregs[0].supply = "vddio"; in nt35950_sharp_init_vregs()
398 nt->vregs[1].supply = "avdd"; in nt35950_sharp_init_vregs()
399 nt->vregs[2].supply = "avee"; in nt35950_sharp_init_vregs()
400 nt->vregs[3].supply = "dvdd"; in nt35950_sharp_init_vregs()
401 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(nt->vregs), in nt35950_sharp_init_vregs()
402 nt->vregs); in nt35950_sharp_init_vregs()
406 ret = regulator_is_supported_voltage(nt->vregs[0].consumer, in nt35950_sharp_init_vregs()
410 ret = regulator_is_supported_voltage(nt->vregs[1].consumer, in nt35950_sharp_init_vregs()
415 ret = regulator_is_supported_voltage(nt->vregs[2].consumer, in nt35950_sharp_init_vregs()
420 ret = regulator_is_supported_voltage(nt->vregs[3].consumer, in nt35950_sharp_init_vregs()
430 struct nt35950 *nt = to_nt35950(panel); in nt35950_prepare() local
431 struct device *dev = &nt->dsi[0]->dev; in nt35950_prepare()
434 if (nt->prepared) in nt35950_prepare()
437 ret = regulator_enable(nt->vregs[0].consumer); in nt35950_prepare()
442 ret = regulator_enable(nt->vregs[3].consumer); in nt35950_prepare()
447 ret = regulator_enable(nt->vregs[1].consumer); in nt35950_prepare()
451 ret = regulator_enable(nt->vregs[2].consumer); in nt35950_prepare()
456 nt35950_reset(nt); in nt35950_prepare()
458 ret = nt35950_on(nt); in nt35950_prepare()
463 nt->prepared = true; in nt35950_prepare()
467 regulator_bulk_disable(ARRAY_SIZE(nt->vregs), nt->vregs); in nt35950_prepare()
476 struct nt35950 *nt = to_nt35950(panel); in nt35950_unprepare() local
477 struct device *dev = &nt->dsi[0]->dev; in nt35950_unprepare()
480 if (!nt->prepared) in nt35950_unprepare()
483 ret = nt35950_off(nt); in nt35950_unprepare()
487 gpiod_set_value_cansleep(nt->reset_gpio, 0); in nt35950_unprepare()
488 regulator_bulk_disable(ARRAY_SIZE(nt->vregs), nt->vregs); in nt35950_unprepare()
490 nt->prepared = false; in nt35950_unprepare()
497 struct nt35950 *nt = to_nt35950(panel); in nt35950_get_modes() local
500 for (i = 0; i < nt->desc->num_modes; i++) { in nt35950_get_modes()
504 &nt->desc->mode_data[i].mode); in nt35950_get_modes()
511 if (nt->desc->num_modes == 1) in nt35950_get_modes()
518 connector->display_info.height_mm = nt->desc->mode_data[0].mode.height_mm; in nt35950_get_modes()
519 connector->display_info.width_mm = nt->desc->mode_data[0].mode.width_mm; in nt35950_get_modes()
520 nt->connector = connector; in nt35950_get_modes()
522 return nt->desc->num_modes; in nt35950_get_modes()
536 struct nt35950 *nt; in nt35950_probe() local
540 nt = devm_kzalloc(dev, sizeof(*nt), GFP_KERNEL); in nt35950_probe()
541 if (!nt) in nt35950_probe()
544 ret = nt35950_sharp_init_vregs(nt, dev); in nt35950_probe()
548 nt->desc = of_device_get_match_data(dev); in nt35950_probe()
549 if (!nt->desc) in nt35950_probe()
552 nt->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS); in nt35950_probe()
553 if (IS_ERR(nt->reset_gpio)) { in nt35950_probe()
554 return dev_err_probe(dev, PTR_ERR(nt->reset_gpio), in nt35950_probe()
559 if (nt->desc->is_dual_dsi) { in nt35950_probe()
560 info = &nt->desc->dsi_info; in nt35950_probe()
573 nt->dsi[1] = mipi_dsi_device_register_full(dsi_r_host, info); in nt35950_probe()
574 if (!nt->dsi[1]) { in nt35950_probe()
581 nt->dsi[0] = dsi; in nt35950_probe()
582 mipi_dsi_set_drvdata(dsi, nt); in nt35950_probe()
584 drm_panel_init(&nt->panel, dev, &nt35950_panel_funcs, in nt35950_probe()
587 ret = drm_panel_of_backlight(&nt->panel); in nt35950_probe()
591 drm_panel_add(&nt->panel); in nt35950_probe()
594 nt->dsi[i]->lanes = nt->desc->num_lanes; in nt35950_probe()
595 nt->dsi[i]->format = MIPI_DSI_FMT_RGB888; in nt35950_probe()
597 nt->dsi[i]->mode_flags = MIPI_DSI_CLOCK_NON_CONTINUOUS | in nt35950_probe()
600 if (nt->desc->mode_data[0].is_video_mode) in nt35950_probe()
601 nt->dsi[i]->mode_flags |= MIPI_DSI_MODE_VIDEO; in nt35950_probe()
603 ret = mipi_dsi_attach(nt->dsi[i]); in nt35950_probe()
611 gpiod_set_value_cansleep(nt->reset_gpio, 0); in nt35950_probe()
617 struct nt35950 *nt = mipi_dsi_get_drvdata(dsi); in nt35950_remove() local
620 ret = mipi_dsi_detach(nt->dsi[0]); in nt35950_remove()
625 if (nt->dsi[1]) { in nt35950_remove()
626 ret = mipi_dsi_detach(nt->dsi[1]); in nt35950_remove()
630 mipi_dsi_device_unregister(nt->dsi[1]); in nt35950_remove()
633 drm_panel_remove(&nt->panel); in nt35950_remove()