Search
SailfishOS Open Build Service
>
Projects
>
home:dcthang:branches:nemo:devel:hw:ti:omap3:n900
>
kernel-adaptation-n900
> linux-2.6-RX-51-Set-pin-muxing-hooks-for-SDI-on-off.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File linux-2.6-RX-51-Set-pin-muxing-hooks-for-SDI-on-off.patch of Package kernel-adaptation-n900
From 6c6bbd595458d20c9d6573a430d1b3eba826fc5e Mon Sep 17 00:00:00 2001 From: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> Date: Mon, 18 Apr 2011 15:34:16 +0300 Subject: [PATCH] RX-51: Set pin muxing hooks for SDI on/off The SDI block in OMAP3 leaks statically 1,6mA of current. This can be blocked by putting the SDI pins into safe mode when the SDI is disabled. Using the regulator VSDI_CSI switching for blocking the leak cannot be done, as VSDI_CSI also powers the DSI pins used for cellular modem enable, reset and other controls. Hence the pinmuxing is used instead. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> --- arch/arm/mach-omap2/board-rx51-video.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c index 612b058..0b98a80 100644 --- a/arch/arm/mach-omap2/board-rx51-video.c +++ b/arch/arm/mach-omap2/board-rx51-video.c @@ -30,6 +30,36 @@ #if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) +/* Enable input logic and pull all lines up when SDI display is on. */ +static struct omap_board_mux rx51_sdi_on_mux[] = { + OMAP3_MUX(DSS_DATA10, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + OMAP3_MUX(DSS_DATA11, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + OMAP3_MUX(DSS_DATA12, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + OMAP3_MUX(DSS_DATA13, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + OMAP3_MUX(DSS_DATA22, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + OMAP3_MUX(DSS_DATA23, OMAP_PIN_OUTPUT | OMAP_MUX_MODE1), + { .reg_offset = OMAP_MUX_TERMINATOR }, +}; + +/* Disable input logic and pull all lines down when SDI display is off. */ +static struct omap_board_mux rx51_sdi_off_mux[] = { + OMAP3_MUX(DSS_DATA10, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + OMAP3_MUX(DSS_DATA11, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + OMAP3_MUX(DSS_DATA12, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + OMAP3_MUX(DSS_DATA13, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + OMAP3_MUX(DSS_DATA22, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + OMAP3_MUX(DSS_DATA23, OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_MUX_MODE7), + { .reg_offset = OMAP_MUX_TERMINATOR }, +}; + +static void rx51_set_mux(int on) +{ + if (on) + omap_mux_write_array(rx51_sdi_on_mux); + else + omap_mux_write_array(rx51_sdi_off_mux); +} + static int rx51_lcd_enable(struct omap_dss_device *dssdev) { gpio_set_value(dssdev->reset_gpio, 1); @@ -79,6 +109,7 @@ static struct omap_dss_board_info rx51_dss_board_info = { .num_devices = ARRAY_SIZE(rx51_dss_devices), .devices = rx51_dss_devices, .default_device = &rx51_lcd_device, + .set_mux = rx51_set_mux, }; struct platform_device rx51_display_device = { -- 1.7.0.4