[PATCH] serial/imx: enable the clock when we really use the uart port

Huang Shijie b32955 at freescale.com
Wed May 2 04:28:07 EDT 2012


于 2012年05月02日 16:19, Sascha Hauer 写道:
> On Wed, May 02, 2012 at 04:19:30PM +0800, Huang Shijie wrote:
>> The current code keeps the clock enabled even when we do not really
>> use the uart port. But keep the clock enabled will consume some power.
>>
>> In order to save more power, disable the clock when we do not use
>> the uart, and enable the clock when we really use the uart port.
>>
>> Signed-off-by: Huang Shijie<b32955 at freescale.com>
> This conflicts with my series converting i.MX to the common clock
> framework. Please lets delay this until this has been merged.
OK, thanks

Huang Shijie
> Sascha
>
>> ---
>>   drivers/tty/serial/imx.c |    6 +++++-
>>   1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
>> index e7fecee..f5dcdf6 100644
>> --- a/drivers/tty/serial/imx.c
>> +++ b/drivers/tty/serial/imx.c
>> @@ -694,6 +694,8 @@ static int imx_startup(struct uart_port *port)
>>   	int retval;
>>   	unsigned long flags, temp;
>>
>> +	clk_prepare_enable(sport->clk);
>> +
>>   	imx_setup_ufcr(sport, 0);
>>
>>   	/* disable the DREN bit (Data Ready interrupt enable) before
>> @@ -877,6 +879,8 @@ static void imx_shutdown(struct uart_port *port)
>>   		temp&= ~(UCR1_IREN);
>>
>>   	writel(temp, sport->port.membase + UCR1);
>> +
>> +	clk_disable_unprepare(sport->clk);
>>   }
>>
>>   static void
>> @@ -1526,6 +1530,7 @@ static int serial_imx_probe(struct platform_device *pdev)
>>   		goto deinit;
>>   	platform_set_drvdata(pdev,&sport->port);
>>
>> +	clk_disable_unprepare(sport->clk);
>>   	return 0;
>>   deinit:
>>   	if (pdata&&  pdata->exit)
>> @@ -1552,7 +1557,6 @@ static int serial_imx_remove(struct platform_device *pdev)
>>
>>   	if (sport) {
>>   		uart_remove_one_port(&imx_reg,&sport->port);
>> -		clk_disable_unprepare(sport->clk);
>>   		clk_put(sport->clk);
>>   	}
>>
>> -- 
>> 1.7.3.2
>>
>>
>>





More information about the linux-arm-kernel mailing list