diff options
| -rw-r--r-- | drivers/video/imxfb.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c index 8435c5d601a1..609f4e97bde7 100644 --- a/drivers/video/imxfb.c +++ b/drivers/video/imxfb.c | |||
| @@ -139,6 +139,7 @@ struct imxfb_info { | |||
| 139 | struct clk *clk_ahb; | 139 | struct clk *clk_ahb; |
| 140 | struct clk *clk_per; | 140 | struct clk *clk_per; |
| 141 | enum imxfb_type devtype; | 141 | enum imxfb_type devtype; |
| 142 | bool enabled; | ||
| 142 | 143 | ||
| 143 | /* | 144 | /* |
| 144 | * These are the addresses we mapped | 145 | * These are the addresses we mapped |
| @@ -536,6 +537,10 @@ static void imxfb_exit_backlight(struct imxfb_info *fbi) | |||
| 536 | 537 | ||
| 537 | static void imxfb_enable_controller(struct imxfb_info *fbi) | 538 | static void imxfb_enable_controller(struct imxfb_info *fbi) |
| 538 | { | 539 | { |
| 540 | |||
| 541 | if (fbi->enabled) | ||
| 542 | return; | ||
| 543 | |||
| 539 | pr_debug("Enabling LCD controller\n"); | 544 | pr_debug("Enabling LCD controller\n"); |
| 540 | 545 | ||
| 541 | writel(fbi->screen_dma, fbi->regs + LCDC_SSA); | 546 | writel(fbi->screen_dma, fbi->regs + LCDC_SSA); |
| @@ -556,6 +561,7 @@ static void imxfb_enable_controller(struct imxfb_info *fbi) | |||
| 556 | clk_prepare_enable(fbi->clk_ipg); | 561 | clk_prepare_enable(fbi->clk_ipg); |
| 557 | clk_prepare_enable(fbi->clk_ahb); | 562 | clk_prepare_enable(fbi->clk_ahb); |
| 558 | clk_prepare_enable(fbi->clk_per); | 563 | clk_prepare_enable(fbi->clk_per); |
| 564 | fbi->enabled = true; | ||
| 559 | 565 | ||
| 560 | if (fbi->backlight_power) | 566 | if (fbi->backlight_power) |
| 561 | fbi->backlight_power(1); | 567 | fbi->backlight_power(1); |
| @@ -565,6 +571,9 @@ static void imxfb_enable_controller(struct imxfb_info *fbi) | |||
| 565 | 571 | ||
| 566 | static void imxfb_disable_controller(struct imxfb_info *fbi) | 572 | static void imxfb_disable_controller(struct imxfb_info *fbi) |
| 567 | { | 573 | { |
| 574 | if (!fbi->enabled) | ||
| 575 | return; | ||
| 576 | |||
| 568 | pr_debug("Disabling LCD controller\n"); | 577 | pr_debug("Disabling LCD controller\n"); |
| 569 | 578 | ||
| 570 | if (fbi->backlight_power) | 579 | if (fbi->backlight_power) |
| @@ -575,6 +584,7 @@ static void imxfb_disable_controller(struct imxfb_info *fbi) | |||
| 575 | clk_disable_unprepare(fbi->clk_per); | 584 | clk_disable_unprepare(fbi->clk_per); |
| 576 | clk_disable_unprepare(fbi->clk_ipg); | 585 | clk_disable_unprepare(fbi->clk_ipg); |
| 577 | clk_disable_unprepare(fbi->clk_ahb); | 586 | clk_disable_unprepare(fbi->clk_ahb); |
| 587 | fbi->enabled = false; | ||
| 578 | 588 | ||
| 579 | writel(0, fbi->regs + LCDC_RMCR); | 589 | writel(0, fbi->regs + LCDC_RMCR); |
| 580 | } | 590 | } |
