Connecting LED backlight of big LCD panels to the AM3517 AM3505 SAUModule

AM3517 or AM3505 CPU and SAU-Module supports TFT LCD panels with resolutions up to 1280x1024 (1366x768, 1024x768, e.t.c.) with one LVDS data channel (o r with two LVDS channels, but not directly, with additional external h/w).

  • Data channel should be connected directly to the module's LVDS interface.
  • On-module backlight controller (part of TPS650732 PMIC) can't be used as a power supply for the backlight of these LCD's due to it's low power capability and only two SINK inputs.

As an example of backlight powering of big LCD panel we offer use of the Semtech SC441C controller, connected directly to the module, with on/off control using GPIO pin of AM3517 or AM3505 CPU and with brightness control using AM3517 or AM3505 dual mode timer in PWM mode. This example is designed for powering a LED backlight with four LED chains, each of which consumes current of 60 mA (for example - LED backlight of the AUO's M185XW01 V.D. display, 1366x768 resolution, 18.5" size).
Here is schematic diagram of this supply:

  • VIN must be connected to a 10...24V power supply (usually from which 5V for powering of the SAU-Module is generated).
  • VCCIO - 3.3V or other as required by module's I/O pins, needed for pullup.
  • BL_FAULT - Optional connection of backlight fault signal - connect to any GPIO pin.
  • BL_EN - Enable signal - connect to any GPIO pin.
  • BL_PWM - Brightness control PWM signal - connect to any pin of the SAU-module, that is connected to CPU's pin with "gptX_pwm_evt" capability (see AM3517 datasheet and SAUModule schematic diagram)

We developed own backlight driver for the Linux operating system for control of backlight on/off and brightness using connections of this type (GPIO for on/off control and AM3517/AM3505 hardware timer in PWM mode for brightness control). You can download patch that contains code of this driver from here. To integrate this driver into your Linux kernel you should apply this patch to the kernel source code and add some initialization code to board initialization routine. Example of this code:

/*****************************************************************/
#include "linux/omap_dm_timer_bl.h"

[...]

static struct omap_dmtimer_bl_platform_data omap_dm_timer_bl_pdata = {
	.gpio_onoff = GPIO_BACKLIGHT_EN,
	.onoff_active_low = 0,
	.timer_id = BACKLIGHT_TIMER_ID,
	.pwm_active_low = 0,
};


static struct platform_device omap_dm_timer_bl_dev = {
	.name	= "omap-dmtimer-bl",
	.id	= -1,
	.dev	= {
		.platform_data	= &omap_dm_timer_bl_pdata,
	},
};



static struct platform_device *sau3517_devices[] __initdata = {
	&sau3517_dss_device,
[...]
	&omap_dm_timer_bl_dev,
};
/*****************************************************************/

Fields of omap_dmtimer_bl_platform_data:

  • gpio_onoff - GPIO # of pin that controls BL_ENA signal
  • onoff_active_low - set to 1 if this signal has active low level
  • timer_id - CPU's timer # that controls BL_PWM signal using gptX_pwm_evt CPU's pin
  • pwm_active_low - set to 1 if this signal has active low level