Lines Matching defs:nt

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