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

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

 



From: Fabio Estevam <festevam@xxxxxxxxx>
Sent: Thursday 2nd May 2019 13:30
> 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: Christoph Niedermaier <cniedermaier@xxxxxxxxxxxxxxxxxx>

Best regards,



[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