Lines Matching refs:ili
349 static int ili9322_init(struct drm_panel *panel, struct ili9322 *ili)
356 ret = regmap_write(ili->regmap, ILI9322_GLOBAL_RESET,
359 dev_err(ili->dev, "can't issue GRESET (%d)\n", ret);
364 if (ili->vreg1out != U8_MAX) {
365 ret = regmap_write(ili->regmap, ILI9322_VREG1_VOLTAGE,
366 ili->vreg1out);
368 dev_err(ili->dev, "can't set up VREG1OUT (%d)\n", ret);
373 if (ili->vcom_amplitude != U8_MAX) {
374 ret = regmap_write(ili->regmap, ILI9322_VCOM_AMP,
375 ili->vcom_amplitude);
377 dev_err(ili->dev,
383 if (ili->vcom_high != U8_MAX) {
384 ret = regmap_write(ili->regmap, ILI9322_VCOM_HIGH,
385 ili->vcom_high);
387 dev_err(ili->dev, "can't set up VCOM high (%d)\n", ret);
393 for (i = 0; i < ARRAY_SIZE(ili->gamma); i++) {
394 ret = regmap_write(ili->regmap, ILI9322_GAMMA_1 + i,
395 ili->gamma[i]);
397 dev_err(ili->dev,
409 if (ili->conf->dclk_active_high)
411 if (ili->conf->de_active_high)
413 if (ili->conf->hsync_active_high)
415 if (ili->conf->vsync_active_high)
417 ret = regmap_write(ili->regmap, ILI9322_POL, reg);
419 dev_err(ili->dev, "can't write POL register (%d)\n", ret);
427 reg = ili->conf->syncmode;
429 ret = regmap_write(ili->regmap, ILI9322_IF_CTRL, reg);
431 dev_err(ili->dev, "can't write IF CTRL register (%d)\n", ret);
436 reg = (ili->input << 4);
438 if (!ili->conf->flip_horizontal)
440 if (!ili->conf->flip_vertical)
443 ret = regmap_write(ili->regmap, ILI9322_ENTRY, reg);
445 dev_err(ili->dev, "can't write ENTRY reg (%d)\n", ret);
448 dev_info(ili->dev, "display is in %s mode, syncmode %02x\n",
449 ili9322_inputs[ili->input],
450 ili->conf->syncmode);
452 dev_info(ili->dev, "initialized display\n");
460 static int ili9322_power_on(struct ili9322 *ili)
465 gpiod_set_value(ili->reset_gpio, 1);
467 ret = regulator_bulk_enable(ARRAY_SIZE(ili->supplies), ili->supplies);
469 dev_err(ili->dev, "unable to enable regulators\n");
475 gpiod_set_value(ili->reset_gpio, 0);
482 static int ili9322_power_off(struct ili9322 *ili)
484 return regulator_bulk_disable(ARRAY_SIZE(ili->supplies), ili->supplies);
489 struct ili9322 *ili = panel_to_ili9322(panel);
492 ret = regmap_write(ili->regmap, ILI9322_POW_CTRL,
495 dev_err(ili->dev, "unable to go to standby mode\n");
504 struct ili9322 *ili = panel_to_ili9322(panel);
506 return ili9322_power_off(ili);
511 struct ili9322 *ili = panel_to_ili9322(panel);
514 ret = ili9322_power_on(ili);
518 ret = ili9322_init(panel, ili);
527 struct ili9322 *ili = panel_to_ili9322(panel);
530 ret = regmap_write(ili->regmap, ILI9322_POW_CTRL,
533 dev_err(ili->dev, "unable to enable panel\n");
639 struct ili9322 *ili = panel_to_ili9322(panel);
645 info->width_mm = ili->conf->width_mm;
646 info->height_mm = ili->conf->height_mm;
647 if (ili->conf->dclk_active_high)
652 if (ili->conf->de_active_high)
657 switch (ili->input) {
696 if (ili->conf->hsync_active_high)
700 if (ili->conf->vsync_active_high)
705 mode->width_mm = ili->conf->width_mm;
706 mode->height_mm = ili->conf->height_mm;
723 struct ili9322 *ili;
730 ili = devm_kzalloc(dev, sizeof(struct ili9322), GFP_KERNEL);
731 if (!ili)
734 spi_set_drvdata(spi, ili);
736 ili->dev = dev;
742 ili->conf = of_device_get_match_data(dev);
743 if (!ili->conf) {
748 val = ili->conf->vreg1out_mv;
751 ili->vreg1out = U8_MAX;
768 ili->vreg1out = val;
771 val = ili->conf->vcom_high_percent;
774 ili->vcom_high = U8_MAX;
786 ili->vcom_high = val;
789 val = ili->conf->vcom_amplitude_percent;
792 ili->vcom_high = U8_MAX;
805 ili->vcom_amplitude = val;
808 for (i = 0; i < ARRAY_SIZE(ili->gamma); i++) {
809 val = ili->conf->gamma_corr_neg[i];
815 val = ili->conf->gamma_corr_pos[i];
821 ili->gamma[i] = gamma;
825 ili->supplies[0].supply = "vcc"; /* 2.7-3.6 V */
826 ili->supplies[1].supply = "iovcc"; /* 1.65-3.6V */
827 ili->supplies[2].supply = "vci"; /* 2.7-3.6V */
828 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ili->supplies),
829 ili->supplies);
832 ret = regulator_set_voltage(ili->supplies[0].consumer,
836 ret = regulator_set_voltage(ili->supplies[1].consumer,
840 ret = regulator_set_voltage(ili->supplies[2].consumer,
845 ili->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
846 if (IS_ERR(ili->reset_gpio)) {
848 return PTR_ERR(ili->reset_gpio);
858 ili->regmap = devm_regmap_init(dev, &ili9322_regmap_bus, dev,
860 if (IS_ERR(ili->regmap)) {
862 return PTR_ERR(ili->regmap);
865 ret = regmap_read(ili->regmap, ILI9322_CHIP_ID, &val);
877 if (ili->conf->input == ILI9322_INPUT_UNKNOWN) {
878 ret = regmap_read(ili->regmap, ILI9322_ENTRY, &val);
884 ili->input = (val >> 4) & 0x0f;
885 if (ili->input >= ILI9322_INPUT_UNKNOWN)
886 ili->input = ILI9322_INPUT_UNKNOWN;
888 ili->input = ili->conf->input;
891 drm_panel_init(&ili->panel, dev, &ili9322_drm_funcs,
894 drm_panel_add(&ili->panel);
901 struct ili9322 *ili = spi_get_drvdata(spi);
903 ili9322_power_off(ili);
904 drm_panel_remove(&ili->panel);