On Fri, 2022-03-04 at 15:57 +0100, Cezary Rojewski wrote: > Audio DSP supports low power states i.e.: transitions between D0 and > D3 > and D0-substates in form of D0i0 and D0i3. That process is a > combination > of core and IPC operations. Here, Dx and D0ix IPC handlers are added. > > Signed-off-by: Amadeusz Sławiński < > amadeuszx.slawinski@xxxxxxxxxxxxxxx> > Signed-off-by: Cezary Rojewski <cezary.rojewski@xxxxxxxxx> > --- > sound/soc/intel/avs/messages.c | 44 > ++++++++++++++++++++++++++++++++++ > sound/soc/intel/avs/messages.h | 15 ++++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/sound/soc/intel/avs/messages.c > b/sound/soc/intel/avs/messages.c > index 613c9452226d..e8f441b28d71 100644 > --- a/sound/soc/intel/avs/messages.c > +++ b/sound/soc/intel/avs/messages.c > @@ -401,3 +401,47 @@ int avs_ipc_get_large_config(struct avs_dev > *adev, u16 module_id, u8 instance_id > > return 0; > } > + > +int avs_ipc_set_dx(struct avs_dev *adev, u32 core_mask, bool > powerup) a description for this function would be helpful. > +{ > + union avs_module_msg msg = AVS_MODULE_REQUEST(SET_DX); > + struct avs_ipc_msg request; > + struct avs_dxstate_info dx; > + int ret; > + > + dx.core_mask = core_mask; > + dx.dx_mask = powerup ? core_mask : 0; > + request.header = msg.val; > + request.data = &dx; > + request.size = sizeof(dx); > + > + ret = avs_dsp_send_msg(adev, &request, NULL); > + if (ret) > + avs_ipc_err(adev, &request, "set dx", ret); > + > + return ret; > +} > + > +/* > + * avs_ipc_set_d0ix - Set power gating policy (entering D0IX > substates) > + * > + * @enable_pg: Whether to enable or disable power gating > + * @streaming: Whether a stream is running when transitioning > + */ What do you mean why "whether a stream is running" does it mean any stream? What is the difference between a D0ix transition with a stream running compared to not running? Thanks,Ranjani