It would be great if NuttX would offer calibration of touch screens out of
the box.

I am not sure where it should go, but I think it could be a wrapper that is
used by many drivers.

I think we have a similar situation with flash filesystems. There are
multiple layers that stack on each other.

For example here there is `ftl_initialize` (flash translation layer) and
then `smart_initialize` (filesystem)
https://github.com/apache/nuttx/blob/master/boards/arm/stm32/stm32f103-minimum/src/stm32_w25.c#L266

Regarding the calibration itself, you probably know how to implement it,
but otherwise you might find this useful
https://gitlab.com/nxtlabs/shared-libs/touch-calib-lib/-/wikis/home
(explanation and implementation)

Coming back to your question, how do other people do it? For me it was just
user-space code, part of the application.

Am Di., 23. Mai 2023 um 20:12 Uhr schrieb Tim Hardisty <t...@hardisty.co.uk>:

> Hi,
>
> This is perhaps more a POSIX/general programming question than NuttX but
> you are all, so often, so very helpful :)
>
> A touchscreen peripheral (SAMA5D2 as it happens) delivers X and Y
> coordinates scaled 0-4095.
>
> LVGL wants them scaled to the actual size of the display (800x480 in my
> case).
>
> I'm not 100% sure that the chip’s TSD driver is the place to scale it?
>
> The TSD driver creates a generic /dev/input0 character driver, which is
> what LVGL (set via Kconfig) opens. Scaling within the LVGL code isn’t right
> either, I don’t think?
>
> I can only think of either:
>
> 1) creating a new character driver that does a translation – registered as
> /dev/input1 (or whatever) that LVGL uses, and this driver reads input0 when
> required and returns translated values.
>
> 2) Enhance the chip's TSD driver after all, using a Kconfig setting to
> enable X/Y scaling to the display's size (set in board-specific files
> already).
>
> Both seem a little messy though so perhaps I’m missing something obvious?
> Can't be the first to need to do this?
>
> Thanks,
>
> TimH
>
>

Reply via email to