Lines Matching refs:ili

350 static int ili9322_init(struct drm_panel *panel, struct ili9322 *ili)
357 ret = regmap_write(ili->regmap, ILI9322_GLOBAL_RESET,
360 dev_err(ili->dev, "can't issue GRESET (%d)\n", ret);
365 if (ili->vreg1out != U8_MAX) {
366 ret = regmap_write(ili->regmap, ILI9322_VREG1_VOLTAGE,
367 ili->vreg1out);
369 dev_err(ili->dev, "can't set up VREG1OUT (%d)\n", ret);
374 if (ili->vcom_amplitude != U8_MAX) {
375 ret = regmap_write(ili->regmap, ILI9322_VCOM_AMP,
376 ili->vcom_amplitude);
378 dev_err(ili->dev,
384 if (ili->vcom_high != U8_MAX) {
385 ret = regmap_write(ili->regmap, ILI9322_VCOM_HIGH,
386 ili->vcom_high);
388 dev_err(ili->dev, "can't set up VCOM high (%d)\n", ret);
394 for (i = 0; i < ARRAY_SIZE(ili->gamma); i++) {
395 ret = regmap_write(ili->regmap, ILI9322_GAMMA_1 + i,
396 ili->gamma[i]);
398 dev_err(ili->dev,
410 if (ili->conf->dclk_active_high)
412 if (ili->conf->de_active_high)
414 if (ili->conf->hsync_active_high)
416 if (ili->conf->vsync_active_high)
418 ret = regmap_write(ili->regmap, ILI9322_POL, reg);
420 dev_err(ili->dev, "can't write POL register (%d)\n", ret);
428 reg = ili->conf->syncmode;
430 ret = regmap_write(ili->regmap, ILI9322_IF_CTRL, reg);
432 dev_err(ili->dev, "can't write IF CTRL register (%d)\n", ret);
437 reg = (ili->input << 4);
439 if (!ili->conf->flip_horizontal)
441 if (!ili->conf->flip_vertical)
444 ret = regmap_write(ili->regmap, ILI9322_ENTRY, reg);
446 dev_err(ili->dev, "can't write ENTRY reg (%d)\n", ret);
449 dev_info(ili->dev, "display is in %s mode, syncmode %02x\n",
450 ili9322_inputs[ili->input],
451 ili->conf->syncmode);
453 dev_info(ili->dev, "initialized display\n");
461 static int ili9322_power_on(struct ili9322 *ili)
466 gpiod_set_value(ili->reset_gpio, 1);
468 ret = regulator_bulk_enable(ARRAY_SIZE(ili->supplies), ili->supplies);
470 dev_err(ili->dev, "unable to enable regulators\n");
476 gpiod_set_value(ili->reset_gpio, 0);
483 static int ili9322_power_off(struct ili9322 *ili)
485 return regulator_bulk_disable(ARRAY_SIZE(ili->supplies), ili->supplies);
490 struct ili9322 *ili = panel_to_ili9322(panel);
493 ret = regmap_write(ili->regmap, ILI9322_POW_CTRL,
496 dev_err(ili->dev, "unable to go to standby mode\n");
505 struct ili9322 *ili = panel_to_ili9322(panel);
507 return ili9322_power_off(ili);
512 struct ili9322 *ili = panel_to_ili9322(panel);
515 ret = ili9322_power_on(ili);
519 ret = ili9322_init(panel, ili);
528 struct ili9322 *ili = panel_to_ili9322(panel);
531 ret = regmap_write(ili->regmap, ILI9322_POW_CTRL,
534 dev_err(ili->dev, "unable to enable panel\n");
640 struct ili9322 *ili = panel_to_ili9322(panel);
646 info->width_mm = ili->conf->width_mm;
647 info->height_mm = ili->conf->height_mm;
648 if (ili->conf->dclk_active_high)
653 if (ili->conf->de_active_high)
658 switch (ili->input) {
697 if (ili->conf->hsync_active_high)
701 if (ili->conf->vsync_active_high)
706 mode->width_mm = ili->conf->width_mm;
707 mode->height_mm = ili->conf->height_mm;
724 struct ili9322 *ili;
731 ili = devm_kzalloc(dev, sizeof(struct ili9322), GFP_KERNEL);
732 if (!ili)
735 spi_set_drvdata(spi, ili);
737 ili->dev = dev;
743 ili->conf = of_device_get_match_data(dev);
744 if (!ili->conf) {
749 val = ili->conf->vreg1out_mv;
752 ili->vreg1out = U8_MAX;
769 ili->vreg1out = val;
772 val = ili->conf->vcom_high_percent;
775 ili->vcom_high = U8_MAX;
787 ili->vcom_high = val;
790 val = ili->conf->vcom_amplitude_percent;
793 ili->vcom_high = U8_MAX;
806 ili->vcom_amplitude = val;
809 for (i = 0; i < ARRAY_SIZE(ili->gamma); i++) {
810 val = ili->conf->gamma_corr_neg[i];
816 val = ili->conf->gamma_corr_pos[i];
822 ili->gamma[i] = gamma;
826 ili->supplies[0].supply = "vcc"; /* 2.7-3.6 V */
827 ili->supplies[1].supply = "iovcc"; /* 1.65-3.6V */
828 ili->supplies[2].supply = "vci"; /* 2.7-3.6V */
829 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ili->supplies),
830 ili->supplies);
833 ret = regulator_set_voltage(ili->supplies[0].consumer,
837 ret = regulator_set_voltage(ili->supplies[1].consumer,
841 ret = regulator_set_voltage(ili->supplies[2].consumer,
846 ili->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
847 if (IS_ERR(ili->reset_gpio)) {
849 return PTR_ERR(ili->reset_gpio);
859 ili->regmap = devm_regmap_init(dev, &ili9322_regmap_bus, dev,
861 if (IS_ERR(ili->regmap)) {
863 return PTR_ERR(ili->regmap);
866 ret = regmap_read(ili->regmap, ILI9322_CHIP_ID, &val);
878 if (ili->conf->input == ILI9322_INPUT_UNKNOWN) {
879 ret = regmap_read(ili->regmap, ILI9322_ENTRY, &val);
885 ili->input = (val >> 4) & 0x0f;
886 if (ili->input >= ILI9322_INPUT_UNKNOWN)
887 ili->input = ILI9322_INPUT_UNKNOWN;
889 ili->input = ili->conf->input;
892 drm_panel_init(&ili->panel, dev, &ili9322_drm_funcs,
895 drm_panel_add(&ili->panel);
902 struct ili9322 *ili = spi_get_drvdata(spi);
904 ili9322_power_off(ili);
905 drm_panel_remove(&ili->panel);