Re: [PATCH] ARM: imx: cpuidle-imx6sx: Restrict the SW2ISO increase to i.MX6SX

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/2/19 1:30 PM, Fabio Estevam wrote:
> Since commit 1e434b703248 ("ARM: imx: update the cpu power up timing
> setting on i.mx6sx") some characters loss is noticed on i.MX6ULL UART
> as reported by Christoph Niedermaier.
> 
> The intention of such commit was to increase the SW2ISO field for i.MX6SX
> only, but since cpuidle-imx6sx is also used on i.MX6UL/i.MX6ULL this caused
> unintended side effects on other SoCs.
> 
> Fix this problem by keeping the original SW2ISO value for i.MX6UL/i.MX6ULL
> and only increase SW2ISO in the i.MX6SX case.
> 
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 1e434b703248 ("ARM: imx: update the cpu power up timing setting on i.mx6sx")
> Reported-by: Christoph Niedermaier <cniedermaier@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Fabio Estevam <festevam@xxxxxxxxx>
> ---
>  arch/arm/mach-imx/cpuidle-imx6sx.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-imx/cpuidle-imx6sx.c b/arch/arm/mach-imx/cpuidle-imx6sx.c
> index fd0053e47a15..57cb9c763222 100644
> --- a/arch/arm/mach-imx/cpuidle-imx6sx.c
> +++ b/arch/arm/mach-imx/cpuidle-imx6sx.c
> @@ -15,6 +15,7 @@
>  
>  #include "common.h"
>  #include "cpuidle.h"
> +#include "hardware.h"
>  
>  static int imx6sx_idle_finish(unsigned long val)
>  {
> @@ -99,8 +100,12 @@ static struct cpuidle_driver imx6sx_cpuidle_driver = {
>  	.safe_state_index = 0,
>  };
>  
> +#define SW2ISO_ORIGINAL		0x2
> +#define SW2ISO_IMX6SX		0xf
>  int __init imx6sx_cpuidle_init(void)
>  {
> +	u32 sw2iso = SW2ISO_ORIGINAL;
> +
>  	imx6_set_int_mem_clk_lpm(true);
>  	imx6_enable_rbc(false);
>  	imx_gpc_set_l2_mem_power_in_lpm(false);
> @@ -110,7 +115,9 @@ int __init imx6sx_cpuidle_init(void)
>  	 * except for power up sw2iso which need to be
>  	 * larger than LDO ramp up time.
>  	 */
> -	imx_gpc_set_arm_power_up_timing(0xf, 1);
> +	if (cpu_is_imx6sx())
> +		sw2iso = SW2ISO_IMX6SX;
> +	imx_gpc_set_arm_power_up_timing(sw2iso, 1);
>  	imx_gpc_set_arm_power_down_timing(1, 1);
>  
>  	return cpuidle_register(&imx6sx_cpuidle_driver, NULL);
> 

Tested-by: Sébastien Szymanski <sebastien.szymanski@xxxxxxxxxxxx>

Regards,

-- 
Sébastien Szymanski
Software engineer, Armadeus Systems
Tel: +33 (0)9 72 29 41 44
Fax: +33 (0)9 72 28 79 26



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux