summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-10-01 15:23:37 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-10-01 15:23:37 +0200
commit7bcbe1b93b10ad0b1e0f731f9c90d2caaccef163 (patch)
tree0af8c66516cd9b8252d7f8b8ede1e42eec84b2fd /arch
parentef8bcc1feb274d2f3a7a0ec68fd995f10832896a (diff)
tegra: colibri_t20: fix pwm backlight
Fix PWM backlight by using PWM<A> rather than PWM<C> by default. Invert brightness value due to unified TFT interface displays (e.g. EDT ET070080DH6) inverted LEDCTRL pin behaviour (e.g. 0V brightest vs. 3.3V darkest) and use PWM frequency of 1 kHz as recommended. Add comment about PWM pin muxing. While at it do some ifdef and indentation clean-up.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-colibri_t20-panel.c20
-rw-r--r--arch/arm/mach-tegra/board-colibri_t20-pinmux.c3
-rw-r--r--arch/arm/mach-tegra/board-colibri_t20.c23
3 files changed, 31 insertions, 15 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t20-panel.c b/arch/arm/mach-tegra/board-colibri_t20-panel.c
index 94879b558f0d..1887a66a2695 100644
--- a/arch/arm/mach-tegra/board-colibri_t20-panel.c
+++ b/arch/arm/mach-tegra/board-colibri_t20-panel.c
@@ -70,19 +70,29 @@ static void colibri_t20_backlight_exit(struct device *dev) {
gpio_free(colibri_t20_bl_enb);
}
-static int colibri_t20_backlight_notify(struct device *unused, int brightness)
+static int colibri_t20_backlight_notify(struct device *dev, int brightness)
{
+ struct platform_pwm_backlight_data *pdata = dev->platform_data;
+
gpio_set_value(colibri_t20_bl_enb, !!brightness);
- return brightness;
+
+ /* unified TFT interface displays (e.g. EDT ET070080DH6) LEDCTRL pin
+ with inverted behaviour (e.g. 0V brightest vs. 3.3V darkest) */
+ if (brightness) return pdata->max_brightness - brightness;
+ else return brightness;
}
static int colibri_t20_disp1_check_fb(struct device *dev, struct fb_info *info);
static struct platform_pwm_backlight_data colibri_t20_backlight_data = {
+#ifndef MECS_TELLURIUM
+ .pwm_id = 0, /* PWM<A> (PMFM_PWM0) */
+#else
.pwm_id = 2, /* PWM<C> (PMFM_PWM2) */
+#endif
.max_brightness = 255,
.dft_brightness = 127,
- .pwm_period_ns = 5000000,
+ .pwm_period_ns = 1000000, /* 1 kHz */
.init = colibri_t20_backlight_init,
.exit = colibri_t20_backlight_exit,
.notify = colibri_t20_backlight_notify,
@@ -368,7 +378,11 @@ static struct platform_device *colibri_t20_gfx_devices[] __initdata = {
&colibri_t20_nvmap_device,
#endif
#ifndef CAMERA_INTERFACE
+#ifndef MECS_TELLURIUM
+ &tegra_pwfm0_device,
+#else
&tegra_pwfm2_device,
+#endif
&colibri_t20_backlight_device,
#endif /* !CAMERA_INTERFACE */
};
diff --git a/arch/arm/mach-tegra/board-colibri_t20-pinmux.c b/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
index 64f2301b7774..f11fc708c1b8 100644
--- a/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
+++ b/arch/arm/mach-tegra/board-colibri_t20-pinmux.c
@@ -93,7 +93,8 @@ static __initdata struct tegra_pingroup_config colibri_t20_pinmux[] = {
/* GPIO T2 and T3 */
{TEGRA_PINGROUP_DTB, TEGRA_MUX_VI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_DTC, TEGRA_MUX_VI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
- /* GPIO L0, L1, L2, L3, L6 and L7 */
+ /* GPIO L0, L1, L2, L3, L6 and L7
+ GPIO L4 and L5 multiplexed with PWM<A> and PWM<D> */
{TEGRA_PINGROUP_DTD, TEGRA_MUX_VI, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
/* AX88772B V_BUS, WM9715L PENDOWN, GPIO A0 and BB4 */
// {TEGRA_PINGROUP_DTE, TEGRA_MUX_RSVD, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
diff --git a/arch/arm/mach-tegra/board-colibri_t20.c b/arch/arm/mach-tegra/board-colibri_t20.c
index d0d6b2fac7d8..abc419226d13 100644
--- a/arch/arm/mach-tegra/board-colibri_t20.c
+++ b/arch/arm/mach-tegra/board-colibri_t20.c
@@ -86,7 +86,7 @@ static struct wm97xx_pdata colibri_t20_wm97xx_pdata = {
static struct platform_device colibri_t20_audio_device = {
.name = "colibri_t20-snd-wm9715l",
.id = 0,
-// .dev = {
+// .dev = {
// .platform_data = &colibri_t20_audio_pdata,
// },
};
@@ -167,7 +167,9 @@ static struct gpio colibri_t20_gpios[] = {
//conflicts with Ethernet interrupt on Protea
{TEGRA_GPIO_PL2, GPIOF_IN, "SODI-79, Iris X16-19"},
{TEGRA_GPIO_PL3, GPIOF_IN, "SODI-97, Iris X16-17"},
+//multiplexed PWM<D>
{TEGRA_GPIO_PL4, GPIOF_IN, "SODIMM pin 67"},
+//multiplexed PWM<A>
{TEGRA_GPIO_PL5, GPIOF_IN, "SODIMM pin 59"},
{TEGRA_GPIO_PL6, GPIOF_IN, "SODI-85, Iris X16-18"},
{TEGRA_GPIO_PL7, GPIOF_IN, "SODIMM pin 65"},
@@ -248,8 +250,7 @@ static struct i2c_board_info colibri_t20_i2c_bus1_board_info[] = {
I2C_BOARD_INFO("rtc-ds1307", 0x68),
.type = "m41t00",
},
-#if 0
-//#ifdef CAMERA_INTERFACE
+#ifdef CAMERA_INTERFACE
{
I2C_BOARD_INFO("adv7180", 0x21),
},
@@ -476,7 +477,7 @@ static struct platform_device tegra_nand_device = {
.id = -1,
.num_resources = ARRAY_SIZE(resources_nand),
.resource = resources_nand,
- .dev = {
+ .dev = {
.platform_data = &colibri_t20_nand_data,
},
};
@@ -616,7 +617,7 @@ static struct tegra_usb_platform_data tegra_udc_pdata = {
.op_mode = TEGRA_USB_OPMODE_DEVICE,
.phy_intf = TEGRA_USB_PHY_INTF_UTMI,
.port_otg = true,
- .u_cfg.utmi = {
+ .u_cfg.utmi = {
.elastic_limit = 16,
.hssync_start_delay = 0,
.idle_wait_delay = 17,
@@ -627,7 +628,7 @@ static struct tegra_usb_platform_data tegra_udc_pdata = {
.xcvr_setup_offset = 0,
.xcvr_use_fuses = 1,
},
- .u_data.dev = {
+ .u_data.dev = {
.charging_supported = false,
.remote_wakeup_supported = false,
.vbus_gpio = -1,
@@ -640,7 +641,7 @@ static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
.op_mode = TEGRA_USB_OPMODE_HOST,
.phy_intf = TEGRA_USB_PHY_INTF_UTMI,
.port_otg = true,
- .u_cfg.utmi = {
+ .u_cfg.utmi = {
.elastic_limit = 16,
.hssync_start_delay = 9,
.idle_wait_delay = 17,
@@ -649,7 +650,7 @@ static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
.xcvr_lsrslew = 2,
.xcvr_setup = 8,
},
- .u_data.host = {
+ .u_data.host = {
.hot_plug = true,
.power_off_on_suspend = true,
.remote_wakeup_supported = false,
@@ -705,7 +706,7 @@ static struct tegra_usb_platform_data tegra_ehci2_ulpi_link_pdata = {
.ops = &ulpi_link_plat_ops,
.phy_intf = TEGRA_USB_PHY_INTF_ULPI_LINK,
.port_otg = false,
- .u_cfg.ulpi = {
+ .u_cfg.ulpi = {
.clk = "cdev2",
.clock_out_delay = 1,
.data_trimmer = 4,
@@ -713,7 +714,7 @@ static struct tegra_usb_platform_data tegra_ehci2_ulpi_link_pdata = {
.shadow_clk_delay = 10,
.stpdirnxt_trimmer = 4,
},
- .u_data.host = {
+ .u_data.host = {
.hot_plug = false,
.power_off_on_suspend = true,
.remote_wakeup_supported = false,
@@ -727,7 +728,7 @@ static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
.op_mode = TEGRA_USB_OPMODE_HOST,
.phy_intf = TEGRA_USB_PHY_INTF_UTMI,
.port_otg = false,
- .u_cfg.utmi = {
+ .u_cfg.utmi = {
.elastic_limit = 16,
.hssync_start_delay = 9,
.idle_wait_delay = 17,