Thread (6 messages) 6 messages, 4 authors, 2021-01-29

Re: [PATCH v12] staging: fbtft: add tearing signal detect

From: Andy Shevchenko <hidden>
Date: 2021-01-28 14:46:29
Also in: dri-devel, lkml

On Thu, Jan 28, 2021 at 4:33 PM Andy Shevchenko
[off-list ref] wrote:
On Thu, Jan 28, 2021 at 2:58 PM Carlis [off-list ref] wrote:
...
Taking all together you probably need to create a helper and use it
inside init_display(), like

static int init_tearing_effect_line(struct fbtft_par *par)
{
  struct device *dev = par->info->device;
  struct gpio_desc *te;
  int irq, rc;

  te = gpiod_get_optional(dev, "te", GPIOD_IN);
  if (IS_ERR(te))
           return dev_err_probe(dev, PTR_ERR(te), "Failed to request
te GPIO\n");
Sorry, here I missed the following:

  /* Absence of TE IRQ is not critical */
  if (!te)
    return 0;
  irq = gpiod_to_irq(te); // this value you have to save in the
driver's (per device) data structure.

  /* GPIO is locked as an IRQ, we may drop the reference */
  gpiod_put(te);
...and here:

  if (irq < 0)
    return irq;
  init_completion(&spi_panel_te); // should be in the (per device)
data structure
  rc = devm_request_irq(dev, irq,  spi_panel_te_handler,
IRQF_TRIGGER_RISING, "TE_GPIO", par);
  if (rc)
                return dev_err_probe(dev, rc, "TE IRQ request failed.\n");
  disable_irq_nosync(irq);
  return irq;
}
-- 
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help