BBB Video Drivers

As a stick in the ground, I wanted to provide a quick summary of video drivers for the BeagleBoneBlack.

There is the Xorg Kernel Mode Setting Driver : an extremely basic frame buffer driver and the fallback driver if no better Xorg driver is found. It has extremely limited functionality and does not support screen rotation.

There is the Xorg fbdev Driver: a still basic frame buffer driver, but it does support some configuration options including rotate.

There is the tilcdc Driver: Released by Ron Clark at the beginning of 2013. http://lwn.net/Articles/533731/ This driver, if installed, is configured via the Device Tree. For example, see the BB-BONE-LCD7-*.dts files. These files contain the pin connection info and the LCD display configuration information and will be used by the tilcdc driver to configure the display. Note: I do not know what configuration options are supported for userland configuration[ie setting rotation on bootup, or configuring rotation in the Xorg.conf file] This drivers sourcecode is located at drivers/gpu/tilcdc

There is the omap frame buffer driver: Located at drivers/video/omap This driver requires LCD panel configuration information which is available for some LCD panels in the same directory as the driver. Does this work for the BeagleBoneBlack?

There is the omap2 frame buffer driver: Located at drivers/video/omap2/omapfb. This driver requires LCD panel configuration, of which many are already written - see drivers/video/omap2/displays for them. Does this work for the BeagleBoneBlack?

There is the PVRSRVKVM Driver: Uses the built in SGX graphcis processor to accelerate graphics processing and offload processing from the CPU. This driver may not work under Linux Kernel version 3.8. According to the latest release notes, http://processors.wiki.ti.com/index.php/RN_4_10_00_01, version 4.10.00.01 works for the Linux 3.8 kernel. From the release notes:

Validation information

NOTE -

1. This release has been tested on AM parts only.

2. This release is build tested only for 387x(TI814x) & 389x(TI816x) & DM parts.

3. This release is build tested only against 3.8 kernel.

The BBB uses a 335x processor, not 387x or 389x - so it does not appear that it has been tested for the BBB, but it has been tested for the 3.8 kernel.

Also note that the above statement is contradicted later in the release notes by:

Kernel(Linux PSP) versions supported or used for validation

Please note that this release has been tested only on AM devices. No testing has been done on the DM parts. Only the following devices have been tested & details below -

  • AM335x - 3.2 kernel - http://arago-project.org/git/projects/linux-am33x.git- - AM335x Linux PSP 04.06.00.10

    • Branch – v3.2-staging, TAG - v3.2_AM335xPSP_04.06.00.10-rc1, commit id -c8cce6279f5c126cbf6b6054f1ea0148bfc19511
  • AM35xx/AM37xx - 2.6.37 kernel- - Linux PSP Release : 04.02.00.07.

    • Display drivers with DSS2 support ie, CONFIG_OMAP2_DSS=y

My assumption is that the earlier statement overrides the later statement.

To add to the confusion, many of these drivers are used in combination. For example, you might have both the Omap 2 Framebuffer Driver AND the SGX Driver installed. The SGX driver overrides some of the functions in the Omap driver(?). Xorg configuration would be for the Omap driver, not the SGX driver[?]

Please correct any of my misassumptions in the above.

As a stick in the ground, I wanted to provide a quick summary of video
drivers for the BeagleBoneBlack.

There is the Xorg Kernel Mode Setting Driver : an extremely basic frame
buffer driver and the fallback driver if no better Xorg driver is found. It
has extremely limited functionality and does not support screen rotation.

There is the Xorg fbdev Driver: a still basic frame buffer driver, but it
does support some configuration options including rotate.

There is the tilcdc Driver: Released by Ron Clark at the beginning of 2013.
TI LCDC DRM driver [LWN.net] This driver, if installed, is configured
via the Device Tree. For example, see the BB-BONE-LCD7-*.dts files. These
files contain the pin connection info and the LCD display configuration
information and will be used by the tilcdc driver to configure the display.
Note: I do not know what configuration options are supported for userland
configuration[ie setting rotation on bootup, or configuring rotation in the
Xorg.conf file] This drivers sourcecode is located at drivers/gpu/tilcdc

There is the omap frame buffer driver: Located at drivers/video/omap This
driver requires LCD panel configuration information which is available for
some LCD panels in the same directory as the driver. Does this work for the
BeagleBoneBlack?

No... different IP block... tilcdc != video/omap

There is the omap2 frame buffer driver: Located at
drivers/video/omap2/omapfb. This driver requires LCD panel configuration,
of which many are already written - see drivers/video/omap2/displays for
them. Does this work for the BeagleBoneBlack?

No... different IP block... tilcdc != omapfb

There is the PVRSRVKVM Driver: Uses the built in SGX graphcis processor to
accelerate graphics processing and offload processing from the CPU. This
driver may not work under Linux Kernel version 3.8. According to the
latest release notes, http://processors.wiki.ti.com/index.php/RN_4_10_00_01,
version 4.10.00.01 works for the Linux 3.8 kernel. From the release notes:

Validation information

NOTE -

1. This release has been tested on AM parts only.

2. This release is build tested only for 387x(TI814x) & 389x(TI816x) & DM
parts.

3. This release is build tested only against 3.8 kernel.

The BBB uses a 335x processor, not 387x or 389x - so it does not appear that
it has been tested for the BBB, but it has been tested for the 3.8 kernel.

Also note that the above statement is contradicted later in the release
notes by:

Kernel(Linux PSP) versions supported or used for validation

Please note that this release has been tested only on AM devices. No testing
has been done on the DM parts. Only the following devices have been tested &
details below -

AM335x - 3.2 kernel - http://arago-project.org/git/projects/linux-am33x.git

AM335x Linux PSP 04.06.00.10
Branch – v3.2-staging, TAG - v3.2_AM335xPSP_04.06.00.10-rc1, commit id
-c8cce6279f5c126cbf6b6054f1ea0148bfc19511

AM35xx/AM37xx - 2.6.37 kernel

Linux PSP Release : 04.02.00.07.
Display drivers with DSS2 support ie, CONFIG_OMAP2_DSS=y

My assumption is that the earlier statement overrides the later statement.

To add to the confusion, many of these drivers are used in combination.
For example, you might have both the Omap 2 Framebuffer Driver AND the SGX
Driver installed. The SGX driver overrides some of the functions in the
Omap driver(?). Xorg configuration would be for the Omap driver, not the
SGX driver[?]

Please correct any of my misassumptions in the above.

The am335x parts do not have the IP block to use the omap/omapfb
driver. They have an extended/ehanced version of the DaVanci DA8XX..

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/video/da8xx-fb.h

Regards,

There is the tilcdc Driver: Released by Ron Clark at the beginning of 2013.
http://lwn.net/Articles/533731/ This driver, if installed, is configured
via the Device Tree. For example, see the BB-BONE-LCD7-*.dts files. These
files contain the pin connection info and the LCD display configuration
information and will be used by the tilcdc driver to configure the display.
Note: I do not know what configuration options are supported for userland
configuration[ie setting rotation on bootup, or configuring rotation in the
Xorg.conf file] This drivers sourcecode is located at drivers/gpu/tilcdc

Extra note: There is Device Tree Documentation for tilcd, see
https://github.com/torvalds/linux/tree/master/Documentation/devicetree/bindings/drm/tilcdc

There is the omap frame buffer driver: Located at drivers/video/omap This

No… different IP block… tilcdc != video/omap

There is the omap2 frame buffer driver: Located at

No… different IP block… tilcdc != omapfb

Great! Thanks for the correction. So it seems like the most basic choice is between the fallback driver, fbdev, and tilcdc.

I’m guessing that I am incorrect there and that tilcdc is a more low level driver which is loaded regardless, and fbdev just provides some higher level Xorg config options.

>
> There is the tilcdc Driver: Released by Ron Clark at the beginning of
> 2013.
> TI LCDC DRM driver [LWN.net] This driver, if installed, is
> configured
> via the Device Tree. For example, see the BB-BONE-LCD7-*.dts files.
> These
> files contain the pin connection info and the LCD display configuration
> information and will be used by the tilcdc driver to configure the
> display.
> Note: I do not know what configuration options are supported for
> userland
> configuration[ie setting rotation on bootup, or configuring rotation in
> the
> Xorg.conf file] This drivers sourcecode is located at
> drivers/gpu/tilcdc

Extra note: There is Device Tree Documentation for tilcd, see
https://github.com/torvalds/linux/tree/master/Documentation/devicetree/bindings/drm/tilcdc

>
> There is the omap frame buffer driver: Located at drivers/video/omap
> This

No... different IP block... tilcdc != video/omap

> There is the omap2 frame buffer driver: Located at

No... different IP block... tilcdc != omapfb

Great! Thanks for the correction. So it seems like the most basic choice
is between the fallback driver, fbdev, and tilcdc.

and the "modesetting" ddx... which is a generic ddx driver for most
kms drivers...

I'm guessing that I am incorrect there and that tilcdc is a more low level
driver which is loaded regardless, and fbdev just provides some higher level
Xorg config options.

Regards,