提交 70f1e28e 编写于 作者: H Heiko Stübner 提交者: Tomi Valkeinen

AUO-K190x: add runtime-pm calls to controller init functions

The controller init may be called from a context where the device
is runtime suspended, leading to a deadlock, as the controllers only
accepts the wakeup command when suspended.
Signed-off-by: NHeiko Stübner <heiko@sntech.de>
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 a1655100
...@@ -60,9 +60,12 @@ ...@@ -60,9 +60,12 @@
static void auok1900_init(struct auok190xfb_par *par) static void auok1900_init(struct auok190xfb_par *par)
{ {
struct device *dev = par->info->device;
struct auok190x_board *board = par->board; struct auok190x_board *board = par->board;
u16 init_param = 0; u16 init_param = 0;
pm_runtime_get_sync(dev);
init_param |= AUOK1900_INIT_TEMP_AVERAGE; init_param |= AUOK1900_INIT_TEMP_AVERAGE;
init_param |= AUOK1900_INIT_ROTATE(par->rotation); init_param |= AUOK1900_INIT_ROTATE(par->rotation);
init_param |= AUOK190X_INIT_INVERSE_WHITE; init_param |= AUOK190X_INIT_INVERSE_WHITE;
...@@ -74,6 +77,9 @@ static void auok1900_init(struct auok190xfb_par *par) ...@@ -74,6 +77,9 @@ static void auok1900_init(struct auok190xfb_par *par)
/* let the controller finish */ /* let the controller finish */
board->wait_for_rdy(par); board->wait_for_rdy(par);
pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
} }
static void auok1900_update_region(struct auok190xfb_par *par, int mode, static void auok1900_update_region(struct auok190xfb_par *par, int mode,
......
...@@ -101,9 +101,12 @@ ...@@ -101,9 +101,12 @@
static void auok1901_init(struct auok190xfb_par *par) static void auok1901_init(struct auok190xfb_par *par)
{ {
struct device *dev = par->info->device;
struct auok190x_board *board = par->board; struct auok190x_board *board = par->board;
u16 init_param = 0; u16 init_param = 0;
pm_runtime_get_sync(dev);
init_param |= AUOK190X_INIT_INVERSE_WHITE; init_param |= AUOK190X_INIT_INVERSE_WHITE;
init_param |= AUOK190X_INIT_FORMAT0; init_param |= AUOK190X_INIT_FORMAT0;
init_param |= AUOK1901_INIT_RESOLUTION(par->resolution); init_param |= AUOK1901_INIT_RESOLUTION(par->resolution);
...@@ -113,6 +116,9 @@ static void auok1901_init(struct auok190xfb_par *par) ...@@ -113,6 +116,9 @@ static void auok1901_init(struct auok190xfb_par *par)
/* let the controller finish */ /* let the controller finish */
board->wait_for_rdy(par); board->wait_for_rdy(par);
pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
} }
static void auok1901_update_region(struct auok190xfb_par *par, int mode, static void auok1901_update_region(struct auok190xfb_par *par, int mode,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册