diff options
author | Min-wuk Lee <mlee@nvidia.com> | 2011-08-02 11:39:53 +0900 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:48:04 -0800 |
commit | bd3ac96ba64f0899d18d898ad2439a6668c697e0 (patch) | |
tree | dd8d1df448b4e3e8b0088a9c759e9b1b685ebf21 | |
parent | 3f262a2e2eb5b0ebf6fccba596cceab207d77565 (diff) |
video: tegra: dc: Set PWM pin to SFIO in default
Set PWM pin to SFIO before it is configured to DC output pin:
Having too early SFIO setting for this pin makes black screen
in display transition from bootloader to kenel and android
since backlight can be turned off.
Bug 858120
Original-Change-Id: I952aa73c50d1df57b1cedf0a5f9ffee0044048ea
Reviewed-on: http://git-master/r/44304
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: R89903c1f14f1b867638834bd1581d8637b079c94
-rw-r--r-- | arch/arm/mach-tegra/include/mach/dc.h | 2 | ||||
-rw-r--r-- | drivers/video/backlight/tegra_pwm_bl.c | 2 | ||||
-rw-r--r-- | drivers/video/tegra/dc/dc.c | 8 | ||||
-rw-r--r-- | include/linux/tegra_pwm_bl.h | 2 |
4 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/include/mach/dc.h b/arch/arm/mach-tegra/include/mach/dc.h index 400abce5bf02..1fd08f9e5c9f 100644 --- a/arch/arm/mach-tegra/include/mach/dc.h +++ b/arch/arm/mach-tegra/include/mach/dc.h @@ -469,6 +469,8 @@ unsigned tegra_dc_get_out_max_pixclock(const struct tegra_dc *dc); struct tegra_dc_pwm_params { int which_pwm; + void (*switch_to_sfio)(int); + int gpio_conf_to_sfio; unsigned int period; unsigned int clk_div; unsigned int clk_select; diff --git a/drivers/video/backlight/tegra_pwm_bl.c b/drivers/video/backlight/tegra_pwm_bl.c index 31b021cbd40c..7e7bfe76ee25 100644 --- a/drivers/video/backlight/tegra_pwm_bl.c +++ b/drivers/video/backlight/tegra_pwm_bl.c @@ -96,6 +96,8 @@ static int tegra_pwm_backlight_probe(struct platform_device *pdev) tbl->dev = &pdev->dev; tbl->which_dc = data->which_dc; tbl->params.which_pwm = data->which_pwm; + tbl->params.gpio_conf_to_sfio = data->gpio_conf_to_sfio; + tbl->params.switch_to_sfio = data->switch_to_sfio; tbl->params.period = data->period; tbl->params.clk_div = data->clk_div; tbl->params.clk_select = data->clk_select; diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index 9910ef238373..5a7d1c9cd217 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -1423,6 +1423,11 @@ tegra_dc_config_pwm(struct tegra_dc *dc, struct tegra_dc_pwm_params *cfg) cmd_state = tegra_dc_readl(dc, DC_CMD_STATE_ACCESS); tegra_dc_writel(dc, (cmd_state | (1 << 2)), DC_CMD_STATE_ACCESS); + if (cfg->switch_to_sfio && cfg->gpio_conf_to_sfio) + cfg->switch_to_sfio(cfg->gpio_conf_to_sfio); + else + dev_err(&dc->ndev->dev, "Error: Need gpio_conf_to_sfio\n"); + switch (cfg->which_pwm) { case TEGRA_PWM_PM0: /* Select the LM0 on PM0 */ @@ -1443,7 +1448,7 @@ tegra_dc_config_pwm(struct tegra_dc *dc, struct tegra_dc_pwm_params *cfg) tegra_dc_writel(dc, cfg->duty_cycle, DC_COM_PM1_DUTY_CYCLE); break; default: - dev_err(&dc->ndev->dev, "Error\n"); + dev_err(&dc->ndev->dev, "Error: Need which_pwm\n"); break; } tegra_dc_writel(dc, cmd_state, DC_CMD_STATE_ACCESS); @@ -1598,7 +1603,6 @@ void tegra_dc_disable_crc(struct tegra_dc *dc) u32 tegra_dc_read_checksum_latched(struct tegra_dc *dc) { int crc = 0; - u32 val = 0; if(!dc) { dev_err(&dc->ndev->dev, "Failed to get dc.\n"); diff --git a/include/linux/tegra_pwm_bl.h b/include/linux/tegra_pwm_bl.h index 4eac77b04203..ee924842bf84 100644 --- a/include/linux/tegra_pwm_bl.h +++ b/include/linux/tegra_pwm_bl.h @@ -15,6 +15,8 @@ struct platform_tegra_pwm_backlight_data { int which_dc; int which_pwm; + void (*switch_to_sfio)(int); + int gpio_conf_to_sfio; unsigned int dft_brightness; unsigned int max_brightness; unsigned int period; |