staging/fbtft: Backward Device Tree compatibility in a drm version
Noralf Trønnes
noralf at tronnes.org
Wed Jan 4 17:14:57 UTC 2017
Hi,
I'm working on a drivers/gpu/drm version of drivers/staging/fbtft which
are drivers for tiny, usually SPI connected, displays. Now I'm wondering
if I can be backwards compatible and support Device Trees written for the
fbtft drivers. The main obstacle as I understand it, is the init property
which are values to be written to the controller registers to support a
different panel with the same controller. It even has encoded values for
delays... My understanding is that this is not accepted.
It's in fact a display panel description in the form of register values
and delays.
Here is what a binding doc would look like for one of the fbtft drivers:
* Samsung S6D02A1 Framebuffer Driver
Required properties:
- compatible: Should be "samsung,s6d02a1".
The node for this driver must be a child node of a SPI controller, hence
all mandatory properties described in ../spi/spi-bus.txt must be specified.
Optional properties:
- dc-gpios: D/C pin used with the 4-wire 8-bit data serial interface mode
- reset-gpios: Reset pin
- led-gpios: Backlight control
- width: Panel width in pixels
- height: Panel height in pixels
- rotate: Panel rotation in degrees counter clockwise (0,90,180,270)
- bgr: Panel is wired as BGR565 instead of RGB565
- buswidth: Bit width of the bus, in the case of SPI: 8 (4-wire) or 9
(3-wire) bits.
- txbuflen: Size of transfer buffer. Used for little-big endian
conversion.
- debug: Control debug output to the kernel log
- init: Panel initialization sequence overriding the driver default.
Values OR'ed with:
0x1000000 - Write the following values to this register.
0x2000000 - Delay in milliseconds
Example:
mz61581: mz61581 at 0{
compatible = "samsung,s6d02a1";
reg = <0>;
spi-max-frequency = <128000000>;
spi-cpol;
spi-cpha;
width = <320>;
height = <480>;
rotate = <270>;
bgr;
buswidth = <8>;
txbuflen = <32768>;
reset-gpios = <&gpio 15 0>;
dc-gpios = <&gpio 25 0>;
led-gpios = <&gpio 18 0>;
init = <0x10000b0 00
0x1000011
0x20000ff
0x10000b3 0x02 0x00 0x00 0x00
0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
0x10000c1 0x08 0x16 0x08 0x08
0x10000c4 0x11 0x07 0x03 0x03
0x10000c6 0x00
0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21
0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
0x1000035 0x00
0x1000036 0xa0
0x100003a 0x55
0x1000044 0x00 0x01
0x10000d0 0x07 0x07 0x1d 0x03
0x10000d1 0x03 0x30 0x10
0x10000d2 0x03 0x14 0x04
0x1000029
0x100002c>;
/* This is a workaround to make sure the init sequence slows down
and doesn't fail */
debug = <3>;
};
Noralf.
More information about the dri-devel
mailing list