[PATCH v9 02/14] ASoC: Intel: catpt: Implement IPC protocol

Andy Shevchenko andriy.shevchenko at linux.intel.com
Tue Sep 29 10:46:26 CEST 2020


On Mon, Sep 28, 2020 at 04:52:41PM +0000, Rojewski, Cezary wrote:
> On 2020-09-28 3:44 PM, Andy Shevchenko wrote:
> > On Sat, Sep 26, 2020 at 10:58:58AM +0200, Cezary Rojewski wrote:

...

> >> +	ret = ipc->rx.rsp.status;
> >> +	if (reply) {
> >> +		reply->header = ipc->rx.header;
> >> +		if (!ret && reply->data)
> >> +			memcpy(reply->data, ipc->rx.data, reply->size);
> >> +	}
> >> +
> >> +	return ret;
> > 
> > One more looking into this... What about
> > 
> > 	if (reply)
> > 		reply->header = ipc->rx.header;
> > 
> > 	ret = ipc->rx.rsp.status; // or even directly if (status) return status.
> > 	if (ret)
> > 		return ret;
> > 
> > 	if (reply->data)
> > 		memcpy(reply->data, ipc->rx.data, reply->size);
> > 
> > 	return 0;
> > 
> > It may be verbose but I think readability is better here.
> 
> In your example, last 'if' will cause exception if reply==NULL.

Yeah, should be reply && reply->data.

> Got your point, although that's just few lines which already involve
> 'if' with { } spacing. After removing size-checks you suggested this
> code is quite thin already.

Yes, sometimes too thin is not good in terms of readability.

...

> >> +	CATPT_CHANNEL_CONFIG_5_POINT_0	= 7, /* L, C, R, Ls & Rs */
> >> +	CATPT_CHANNEL_CONFIG_5_POINT_1	= 8, /* L, C, R, Ls, Rs & LFE */
> >> +	CATPT_CHANNEL_CONFIG_DUAL_MONO	= 9, /* One channel replicated in two */
> >> +	CATPT_CHANNEL_CONFIG_INVALID	= 10,
> > 
> > Hmm... I think I got the point why DUAL_MONO was at the end of the switch-case.
> > 
> 
> Well, well. Indeed we found where Willy is..

So, we may return to the previous state, up to you.

...

> >> +enum catpt_mclk_frequency {
> >> +	CATPT_MCLK_OFF = 0,
> >> +	CATPT_MCLK_FREQ_6_MHZ = 1,
> >> +	CATPT_MCLK_FREQ_21_MHZ = 2,
> >> +	CATPT_MCLK_FREQ_24_MHZ = 3,
> >> +};
> > 
> > Looks like a 3 MHz as base frequency with multiplicators 0, 2, 7, 8.
> 
> Naming based on FW enum type equivalent.

It was just an observation without any AR item :-)
If you really know the (hardware) background of these choices then perhaps
comment would be good to have.

...

> >> +#define CATPT_STREAM_MSG(msg_type) \
> >> +{ \
> >> +	.stream_msg_type = CATPT_STRM_##msg_type, \
> >> +	.global_msg_type = CATPT_GLB_STREAM_MESSAGE }
> >> +#define CATPT_STAGE_MSG(msg_type) \
> >> +{ \
> >> +	.stage_action = CATPT_STG_##msg_type, \
> >> +	.stream_msg_type = CATPT_STRM_STAGE_MESSAGE, \
> >> +	.global_msg_type = CATPT_GLB_STREAM_MESSAGE }
> > 
> > Hmm... This split is interesting. I would rather move } to a new line.
> > 
> 
> As basically everything in my code, style is based on existing example -
> usually stuff from ASoC core - here, it's include/sound/soc.h. It's full
> of such definitions so because catpt belongs to ASoC subsystem, I've
> used the exact same style. No problem changing if that's your preference.

I think it's better to follow the existing style across subsystem. You may
discard my (style related) comments if they contradict with used style.

-- 
With Best Regards,
Andy Shevchenko




More information about the Alsa-devel mailing list