Hi Rickard, Thanks for your checking.
I have just confirmed that those functions really not used currently, although they may be needed for advanced developing. So, I have no objection if you remove them now. Liam, what's your opinion? ~Keyon > -----Original Message----- > From: Rickard Strandqvist [mailto:rickard_strandqv...@spectrumdigital.se] > Sent: Sunday, January 04, 2015 8:35 AM > To: Liam Girdwood; Mark Brown > Cc: Rickard Strandqvist; Jaroslav Kysela; Takashi Iwai; Jie, Yang; Jarkko > Nikula; > Dan Carpenter; Christian Engelmayer; Piskorski, Pawel; > alsa-de...@alsa-project.org; linux-kernel@vger.kernel.org > Subject: [PATCH] soc: intel: sst-haswell-ipc: Remove some unused functions > > Removes some functions that are not used anywhere: > sst_hsw_stream_unmute() sst_hsw_stream_mute() msg_set_stage_type() > sst_hsw_dx_get_state() sst_hsw_dx_set_state() > sst_hsw_stream_set_write_position() > sst_hsw_stream_get_vol_reg() sst_hsw_stream_get_peak_reg() > sst_hsw_stream_get_pointer_reg() sst_hsw_stream_get_read_reg() > sst_hsw_stream_get_mixer_id() sst_hsw_stream_get_hw_id() > sst_hsw_mixer_set_volume_curve() sst_hsw_mixer_unmute() > sst_hsw_mixer_mute() > sst_hsw_stream_set_volume_curve() > > This was partially found by using a static code analysis program called > cppcheck. > > Signed-off-by: Rickard Strandqvist <rickard_strandqv...@spectrumdigital.se> > --- > sound/soc/intel/sst-haswell-ipc.c | 226 > ------------------------------------- > sound/soc/intel/sst-haswell-ipc.h | 34 ------ > 2 files changed, 260 deletions(-) > > diff --git a/sound/soc/intel/sst-haswell-ipc.c > b/sound/soc/intel/sst-haswell-ipc.c > index b629151..26f856c 100644 > --- a/sound/soc/intel/sst-haswell-ipc.c > +++ b/sound/soc/intel/sst-haswell-ipc.c > @@ -333,12 +333,6 @@ static inline u32 msg_get_stage_type(u32 msg) > return (msg & IPC_STG_TYPE_MASK) >> IPC_STG_TYPE_SHIFT; } > > -static inline u32 msg_set_stage_type(u32 msg, u32 type) -{ > - return (msg & ~IPC_STG_TYPE_MASK) + > - (type << IPC_STG_TYPE_SHIFT); > -} > - > static inline u32 msg_get_stream_id(u32 msg) { > return (msg & IPC_STR_ID_MASK) >> IPC_STR_ID_SHIFT; @@ -965,45 > +959,6 @@ int sst_hsw_fw_get_version(struct sst_hsw *hsw, } > > /* Mixer Controls */ > -int sst_hsw_stream_mute(struct sst_hsw *hsw, struct sst_hsw_stream > *stream, > - u32 stage_id, u32 channel) > -{ > - int ret; > - > - ret = sst_hsw_stream_get_volume(hsw, stream, stage_id, channel, > - &stream->mute_volume[channel]); > - if (ret < 0) > - return ret; > - > - ret = sst_hsw_stream_set_volume(hsw, stream, stage_id, channel, 0); > - if (ret < 0) { > - dev_err(hsw->dev, "error: can't unmute stream %d channel %d\n", > - stream->reply.stream_hw_id, channel); > - return ret; > - } > - > - stream->mute[channel] = 1; > - return 0; > -} > - > -int sst_hsw_stream_unmute(struct sst_hsw *hsw, struct sst_hsw_stream > *stream, > - u32 stage_id, u32 channel) > - > -{ > - int ret; > - > - stream->mute[channel] = 0; > - ret = sst_hsw_stream_set_volume(hsw, stream, stage_id, channel, > - stream->mute_volume[channel]); > - if (ret < 0) { > - dev_err(hsw->dev, "error: can't unmute stream %d channel %d\n", > - stream->reply.stream_hw_id, channel); > - return ret; > - } > - > - return 0; > -} > - > int sst_hsw_stream_get_volume(struct sst_hsw *hsw, struct > sst_hsw_stream *stream, > u32 stage_id, u32 channel, u32 *volume) { @@ -1017,17 +972,6 @@ int > sst_hsw_stream_get_volume(struct sst_hsw *hsw, struct sst_hsw_stream > *stream > return 0; > } > > -int sst_hsw_stream_set_volume_curve(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u64 curve_duration, > - enum sst_hsw_volume_curve curve) > -{ > - /* curve duration in steps of 100ns */ > - stream->vol_req.curve_duration = curve_duration; > - stream->vol_req.curve_type = curve; > - > - return 0; > -} > - > /* stream volume */ > int sst_hsw_stream_set_volume(struct sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 stage_id, u32 channel, u32 volume) > @@ -1065,42 +1009,6 @@ int sst_hsw_stream_set_volume(struct sst_hsw > *hsw, > return 0; > } > > -int sst_hsw_mixer_mute(struct sst_hsw *hsw, u32 stage_id, u32 channel) -{ > - int ret; > - > - ret = sst_hsw_mixer_get_volume(hsw, stage_id, channel, > - &hsw->mute_volume[channel]); > - if (ret < 0) > - return ret; > - > - ret = sst_hsw_mixer_set_volume(hsw, stage_id, channel, 0); > - if (ret < 0) { > - dev_err(hsw->dev, "error: failed to unmute mixer channel %d\n", > - channel); > - return ret; > - } > - > - hsw->mute[channel] = 1; > - return 0; > -} > - > -int sst_hsw_mixer_unmute(struct sst_hsw *hsw, u32 stage_id, u32 channel) -{ > - int ret; > - > - ret = sst_hsw_mixer_set_volume(hsw, stage_id, channel, > - hsw->mixer_info.volume_register_address[channel]); > - if (ret < 0) { > - dev_err(hsw->dev, "error: failed to unmute mixer channel %d\n", > - channel); > - return ret; > - } > - > - hsw->mute[channel] = 0; > - return 0; > -} > - > int sst_hsw_mixer_get_volume(struct sst_hsw *hsw, u32 stage_id, u32 > channel, > u32 *volume) > { > @@ -1114,16 +1022,6 @@ int sst_hsw_mixer_get_volume(struct sst_hsw > *hsw, u32 stage_id, u32 channel, > return 0; > } > > -int sst_hsw_mixer_set_volume_curve(struct sst_hsw *hsw, > - u64 curve_duration, enum sst_hsw_volume_curve curve) > -{ > - /* curve duration in steps of 100ns */ > - hsw->curve_duration = curve_duration; > - hsw->curve_type = curve; > - > - return 0; > -} > - > /* global mixer volume */ > int sst_hsw_mixer_set_volume(struct sst_hsw *hsw, u32 stage_id, u32 > channel, > u32 volume) > @@ -1425,50 +1323,6 @@ int sst_hsw_stream_commit(struct sst_hsw *hsw, > struct sst_hsw_stream *stream) > return 0; > } > > -/* Stream Information - these calls could be inline but we want the IPC > - ABI to be opaque to client PCM drivers to cope with any future ABI changes > */ > -int sst_hsw_stream_get_hw_id(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream) > -{ > - return stream->reply.stream_hw_id; > -} > - > -int sst_hsw_stream_get_mixer_id(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream) > -{ > - return stream->reply.mixer_hw_id; > -} > - > -u32 sst_hsw_stream_get_read_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream) > -{ > - return stream->reply.read_position_register_address; > -} > - > -u32 sst_hsw_stream_get_pointer_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream) > -{ > - return stream->reply.presentation_position_register_address; > -} > - > -u32 sst_hsw_stream_get_peak_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 channel) > -{ > - if (channel >= 2) > - return 0; > - > - return stream->reply.peak_meter_register_address[channel]; > -} > - > -u32 sst_hsw_stream_get_vol_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 channel) > -{ > - if (channel >= 2) > - return 0; > - > - return stream->reply.volume_register_address[channel]; > -} > - > int sst_hsw_mixer_get_info(struct sst_hsw *hsw) { > struct sst_hsw_ipc_stream_info_reply *reply; @@ -1591,30 +1445,6 @@ > u64 sst_hsw_get_dsp_presentation_position(struct sst_hsw *hsw, > return ppos; > } > > -int sst_hsw_stream_set_write_position(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 stage_id, u32 position) > -{ > - u32 header; > - int ret; > - > - trace_stream_write_position(stream->reply.stream_hw_id, position); > - > - header = IPC_GLB_TYPE(IPC_GLB_STREAM_MESSAGE) | > - IPC_STR_TYPE(IPC_STR_STAGE_MESSAGE); > - header |= (stream->reply.stream_hw_id << IPC_STR_ID_SHIFT); > - header |= (IPC_STG_SET_WRITE_POSITION << IPC_STG_TYPE_SHIFT); > - header |= (stage_id << IPC_STG_ID_SHIFT); > - stream->wpos.position = position; > - > - ret = ipc_tx_message_nowait(hsw, header, &stream->wpos, > - sizeof(stream->wpos)); > - if (ret < 0) > - dev_err(hsw->dev, "error: stream %d set position %d failed\n", > - stream->reply.stream_hw_id, position); > - > - return ret; > -} > - > /* physical BE config */ > int sst_hsw_device_set_config(struct sst_hsw *hsw, > enum sst_hsw_device_id dev, enum sst_hsw_device_mclk mclk, @@ > -1644,63 +1474,7 @@ int sst_hsw_device_set_config(struct sst_hsw *hsw, } > EXPORT_SYMBOL_GPL(sst_hsw_device_set_config); > > -/* DX Config */ > -int sst_hsw_dx_set_state(struct sst_hsw *hsw, > - enum sst_hsw_dx_state state, struct sst_hsw_ipc_dx_reply *dx) > -{ > - u32 header, state_; > - int ret, item; > - > - header = IPC_GLB_TYPE(IPC_GLB_ENTER_DX_STATE); > - state_ = state; > - > - trace_ipc_request("PM enter Dx state", state); > - > - ret = ipc_tx_message_wait(hsw, header, &state_, sizeof(state_), > - dx, sizeof(*dx)); > - if (ret < 0) { > - dev_err(hsw->dev, "ipc: error set dx state %d failed\n", state); > - return ret; > - } > - > - for (item = 0; item < dx->entries_no; item++) { > - dev_dbg(hsw->dev, > - "Item[%d] offset[%x] - size[%x] - source[%x]\n", > - item, dx->mem_info[item].offset, > - dx->mem_info[item].size, > - dx->mem_info[item].source); > - } > - dev_dbg(hsw->dev, "ipc: got %d entry numbers for state %d\n", > - dx->entries_no, state); > - > - memcpy(&hsw->dx, dx, sizeof(*dx)); > - return 0; > -} > - > /* Used to save state into hsw->dx_reply */ -int sst_hsw_dx_get_state(struct > sst_hsw *hsw, u32 item, > - u32 *offset, u32 *size, u32 *source) > -{ > - struct sst_hsw_ipc_dx_memory_item *dx_mem; > - struct sst_hsw_ipc_dx_reply *dx_reply; > - int entry_no; > - > - dx_reply = &hsw->dx; > - entry_no = dx_reply->entries_no; > - > - trace_ipc_request("PM get Dx state", entry_no); > - > - if (item >= entry_no) > - return -EINVAL; > - > - dx_mem = &dx_reply->mem_info[item]; > - *offset = dx_mem->offset; > - *size = dx_mem->size; > - *source = dx_mem->source; > - > - return 0; > -} > - > static int msg_empty_list_init(struct sst_hsw *hsw) { > int i; > diff --git a/sound/soc/intel/sst-haswell-ipc.h > b/sound/soc/intel/sst-haswell-ipc.h > index 2ac194a..b6297cb 100644 > --- a/sound/soc/intel/sst-haswell-ipc.h > +++ b/sound/soc/intel/sst-haswell-ipc.h > @@ -371,32 +371,18 @@ int sst_hsw_fw_get_version(struct sst_hsw *hsw, > u32 create_channel_map(enum sst_hsw_channel_config config); > > /* Stream Mixer Controls - */ > -int sst_hsw_stream_mute(struct sst_hsw *hsw, struct sst_hsw_stream > *stream, > - u32 stage_id, u32 channel); > -int sst_hsw_stream_unmute(struct sst_hsw *hsw, struct sst_hsw_stream > *stream, > - u32 stage_id, u32 channel); > > int sst_hsw_stream_set_volume(struct sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 stage_id, u32 channel, u32 volume); > int sst_hsw_stream_get_volume(struct sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 stage_id, u32 channel, u32 > *volume); > > -int sst_hsw_stream_set_volume_curve(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u64 curve_duration, > - enum sst_hsw_volume_curve curve); > - > /* Global Mixer Controls - */ > -int sst_hsw_mixer_mute(struct sst_hsw *hsw, u32 stage_id, u32 channel); > -int sst_hsw_mixer_unmute(struct sst_hsw *hsw, u32 stage_id, u32 channel); > - > int sst_hsw_mixer_set_volume(struct sst_hsw *hsw, u32 stage_id, u32 > channel, > u32 volume); > int sst_hsw_mixer_get_volume(struct sst_hsw *hsw, u32 stage_id, u32 > channel, > u32 *volume); > > -int sst_hsw_mixer_set_volume_curve(struct sst_hsw *hsw, > - u64 curve_duration, enum sst_hsw_volume_curve curve); > - > /* Stream API */ > struct sst_hsw_stream *sst_hsw_stream_new(struct sst_hsw *hsw, int id, > u32 (*get_write_position)(struct sst_hsw_stream *stream, void *data), > @@ -436,18 +422,6 @@ int sst_hsw_stream_set_pmemory_info(struct > sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 offset, u32 size); int > sst_hsw_stream_set_smemory_info(struct sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 offset, u32 size); -int > sst_hsw_stream_get_hw_id(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream); > -int sst_hsw_stream_get_mixer_id(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream); > -u32 sst_hsw_stream_get_read_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream); > -u32 sst_hsw_stream_get_pointer_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream); > -u32 sst_hsw_stream_get_peak_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 channel); > -u32 sst_hsw_stream_get_vol_reg(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 channel); > int sst_hsw_mixer_get_info(struct sst_hsw *hsw); > > /* Stream ALSA trigger operations */ > @@ -462,8 +436,6 @@ int sst_hsw_stream_get_read_pos(struct sst_hsw > *hsw, > struct sst_hsw_stream *stream, u32 *position); int > sst_hsw_stream_get_write_pos(struct sst_hsw *hsw, > struct sst_hsw_stream *stream, u32 *position); -int > sst_hsw_stream_set_write_position(struct sst_hsw *hsw, > - struct sst_hsw_stream *stream, u32 stage_id, u32 position); > u32 sst_hsw_get_dsp_position(struct sst_hsw *hsw, > struct sst_hsw_stream *stream); > u64 sst_hsw_get_dsp_presentation_position(struct sst_hsw *hsw, @@ > -474,12 +446,6 @@ int sst_hsw_device_set_config(struct sst_hsw *hsw, > enum sst_hsw_device_id dev, enum sst_hsw_device_mclk mclk, > enum sst_hsw_device_mode mode, u32 clock_divider); > > -/* DX Config */ > -int sst_hsw_dx_set_state(struct sst_hsw *hsw, > - enum sst_hsw_dx_state state, struct sst_hsw_ipc_dx_reply *dx); > -int sst_hsw_dx_get_state(struct sst_hsw *hsw, u32 item, > - u32 *offset, u32 *size, u32 *source); > - > /* init */ > int sst_hsw_dsp_init(struct device *dev, struct sst_pdata *pdata); void > sst_hsw_dsp_free(struct device *dev, struct sst_pdata *pdata); > -- > 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/