diff --git a/drivers/platform/tegra/dce/dce-client-ipc.c b/drivers/platform/tegra/dce/dce-client-ipc.c index 59c94f78..0fe190ec 100644 --- a/drivers/platform/tegra/dce/dce-client-ipc.c +++ b/drivers/platform/tegra/dce/dce-client-ipc.c @@ -332,14 +332,17 @@ static void dce_client_process_event_ipc(struct tegra_dce *d, } msg_length = DCE_CLIENT_MAX_IPC_MSG_SIZE; - ret = dce_ipc_read_message(d, cl->int_type, msg_data, msg_length); - if (ret) { - dce_err(d, "Error in reading DCE msg for ch_type [%d]", - cl->int_type); - goto done; - } + do { + ret = dce_ipc_read_message(d, cl->int_type, msg_data, msg_length); + if (ret) { + dce_info(d, "Error in reading DCE msg for ch_type [%d]", + cl->int_type); + goto done; + } + + cl->callback_fn(cl->handle, cl->type, msg_length, msg_data, cl->data); + } while (dce_ipc_is_data_available(d, cl->int_type)); - cl->callback_fn(cl->handle, cl->type, msg_length, msg_data, cl->data); done: if (msg_data) dce_kfree(d, msg_data); diff --git a/drivers/platform/tegra/dce/dce-ipc.c b/drivers/platform/tegra/dce/dce-ipc.c index e1e98260..00af55cd 100644 --- a/drivers/platform/tegra/dce/dce-ipc.c +++ b/drivers/platform/tegra/dce/dce-ipc.c @@ -675,7 +675,7 @@ int dce_ipc_read_message(struct tegra_dce *d, u32 ch_type, ret = _dce_ipc_get_next_read_buff(ch); if (ret) { - dce_err(ch->d, "Error getting next free buf to read"); + dce_info(ch->d, "Error getting next free buf to read"); goto out; }