> + return 0;
> +}
> +
> +late_initcall(imx_cpuidle_init);
We have a late_initcall here which needs to be protected from other
cpus. On the other hand we depend on board code calling
imx_cpuidle_board_params() before this initcall. I think the board code
should call a imx_cpuidle_init(struct imx_cpuidle_params
*cpuidle_params) instead which makes the flow of execution more clear.
imx_cpuidle_init can not be called directly in board code, since it is too early to register cpuidle driver and device which depend on some other system resource.
Yong