[PATCH v9 02/14] ASoC: Intel: catpt: Implement IPC protocol
Rojewski, Cezary
cezary.rojewski at intel.com
Tue Sep 29 11:39:36 CEST 2020
On 2020-09-29 10:46 AM, Andy Shevchenko wrote:
> 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.
>
This will cost us additional check (2x reply==NULL instead of 1x). Maybe
a newline between:
reply->header = ipc->rx.header;
if (!ret && reply->data)
memcpy(reply->data, ipc->rx.data, reply->size);
suffices?
...
>>>> + 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.
>
In general I'm avoiding that subject here. Quite disappointed with what
I had to face, and that's not "just" existing linux solution but every
other component involved in LPT/WPT ADSP project.
I have plans for many more comments Andy, e.g.: fw image block division
(ascii graph and such). All of that will come in time, eventually. Not
intending to leave catpt without maintenance like other sound/soc/intel/
solutions once were.
>>>> +#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.
>
If there are no other concerns, either a quick spinoff (v10) or delay
those readability improvements till series with resource_union() re-use?
While catpt is a big upgrade when compared to existing /haswell/
(obviously) there are more fruits of this rewrite: house cleaning -
follow-up series targeting /haswell/, /baytrail/ and /common/ of
sound/soc/intel. Guess everyone would like to see those in 5.10.
Regards,
Czarek
More information about the Alsa-devel
mailing list