[PATCH 2/3] drm/panel: Add DT bindings for Ilitek ILI9322
Linus Walleij
linus.walleij at linaro.org
Wed Sep 20 11:56:38 UTC 2017
On Sat, Sep 2, 2017 at 11:17 PM, Linus Walleij <linus.walleij at linaro.org> wrote:
> On Thu, Aug 17, 2017 at 10:44 PM, Rob Herring <robh at kernel.org> wrote:
>> On Sun, Aug 13, 2017 at 01:44:47PM +0200, Linus Walleij wrote:
>
>>> This adds device tree bindings for the Ilitek ILI9322
>>> 320x240 TFT panel driver.
>>>
>>> Cc: devicetree at vger.kernel.org
>>> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> (...)
>>> +Optional properties:
>>> + - width-mm: physical panel width [mm]
>>> + - height-mm: physical panel height [mm]
>>> + - vcc-supply: core voltage supply, see regulator/regulator.txt
>>> + - iovcc-supply: voltage supply for the interface input/output signals,
>>> + see regulator/regulator.txt
>>> + - vci-supply: voltage supply for analog parts, see regulator/regulator.txt
>>> + - reset-gpios: a GPIO spec for the reset pin, see gpio/gpio.txt
>>> + - ilitek,vreg1out-microvolt: the output in microvolts for the VREGOUT1
>>> + regulator used to drive the physical display. Valid ranges are 3600 thru
>>> + 6000 in 100 microvolt increments. If not specified, hardware defaults will
>>> + be used (4.5V).
>>> + - ilitek,vcom-amplitude-percent: the percentage of VREGOUT1 used for the
>>> + peak-to-peak amplitude of the communcation signals to the physical display.
>>> + Valid ranges are 70 thru 132 percent in increments if two percent. Odd
>>> + percentages will be truncated. If not specified, hardware defaults will be
>>> + used (114%).
>>> + - ilitek,vcom-high-percent: the percentage of VREGOUT1 used for the peak
>>> + voltage on the communications link. Valid ranges are 37 thru 100 percent.
>>> + If not specified, hardware defaults will be used (91%).
>>> + - ilitek,gamma-correction-neg: a set of 8 nybbles describing negative
>>> + gamma correction for voltages V1 thru V8. Valid range 0..15
>>> + - ilitek,gamma-correction-pos: a set of 8 nybbles describing positive
>>> + gamma correction for voltages V1 thru V8. Valid range 0..15
>>> + These adjust what grayscale voltage will be output for input data V1 = 0,
>>> + V2 = 16, V3 = 48, V4 = 96, V5 = 160, V6 = 208, V7 = 240 and V8 = 255.
>>> + The curve is shaped like this:
>>> +
>>> + ^
>>> + | V8
>>> + | V7
>>> + | V6
>>> + | V5
>>> + | V4
>>> + | V3
>>> + | V2
>>> + | V1
>>> + +----------------------------------------------------------->
>>> + 0 16 48 96 160 208 240 255
>>> +
>>> + The negative and postive gamma values adjust the V1 thru V8 up/down
>>> + according to the datasheet specifications. This is a property of the
>>> + physical display connected to the display controller and may vary.
>>> + If defined, both arrays must be supplied in full. If the properties
>>> + are not supplied, hardware defaults will be used.
>>
>> Normally, we the physical panel is described which would imply all these
>> settings. Are there lots of panels with this controller that would
>> justify all these settings?
>
> The datasheet for the ili9322 just says it "drives panels" essentially.
> Googling around gives at hand that it is used pretty frequently in
> Shenzhen China for adapting different off-the-shelf panels to
> different inputs.
>
> I can't really answer how many of these products that run one or
> another OS using device tree to describe the configuration. It feels more
> like I'm paving the road for others to travel.
>
> Probably other Ilitek panel adapters will need something similar.
>
>>> + - ilitek,entry-mode: the panel can be connected to various input streams
>>> + and four of them can be selected by electronic straps on the display.
>>> + However it is possible to select another mode or override the
>>> + electronic default with this property. Valid values:
>>> + 0: 8 bit serial RGB through
>>> + 1: 8 bit serial RGB aligned
>>> + 2: 8 bit serial RGB dummy 320x240
>>> + 3: 8 bit serial RGB dummy 360x240
>>> + 4: disabled
>>> + 5: 24 bit parallel RGB through
>>> + 6: 24 bit parallel RGB aligned
>>> + 7: 24 bit YUV 640Y 320CbCr
>>> + 8: 24 bit YUV 720Y 360CbCr
>>> + 9: disabled
>>> + 10: 8 bit ITU-R BT.656 720Y 360CbCr
>>> + 11: 8 bit ITU-R BT.656 640Y 320CbCr
>>
>> To some extent, we have some standard bindings to describe this.
>
> I don't find any. Maybe I'm looking in the wrong places :(
>
> These are closest associated with the DRM "media bus formats"
> in Linux include/uapi/linux/media-bus-format.h
> such as:
>
> #define MEDIA_BUS_FMT_RGB444_1X12 0x1016
> #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
> #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
> #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003
> #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004
> #define MEDIA_BUS_FMT_RGB565_1X16 0x1017
> #define MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005
> #define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006
> #define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
> #define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
> #define MEDIA_BUS_FMT_RGB666_1X18 0x1009
> #define MEDIA_BUS_FMT_RBG888_1X24 0x100e
> #define MEDIA_BUS_FMT_RGB666_1X24_CPADHI 0x1015
> #define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG 0x1010
> (...)
>
> We can surely regard this bus format list as standard and
> copy and extend it in DT (it does not have ITU-R formats for
> the moment) but I don't know if that is wise.
>
> Also the input modes of ili9322 is coupled with resolution so
> it would need two more cells or so for resolution so I feel
> it would over-complicate things for these 12 enumerators.
Can we proceed with these patches?
Any opinion from DT or panel maintainers?
Yours,
Linus Walleij
More information about the dri-devel
mailing list