diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2012-10-01 15:23:37 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2012-10-01 15:23:37 +0200 |
commit | 7bcbe1b93b10ad0b1e0f731f9c90d2caaccef163 (patch) | |
tree | 0af8c66516cd9b8252d7f8b8ede1e42eec84b2fd /arch/arm | |
parent | ef8bcc1feb274d2f3a7a0ec68fd995f10832896a (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/arm')
-rw-r--r-- | arch/arm/mach-tegra/board-colibri_t20-panel.c | 20 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-colibri_t20-pinmux.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-colibri_t20.c | 23 |
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, |