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

Rojewski, Cezary cezary.rojewski at intel.com
Wed Sep 23 21:33:23 CEST 2020


On 2020-09-23 9:24 PM, Rojewski, Cezary wrote:
> On 2020-09-23 3:17 PM, Andy Shevchenko wrote:
>> On Wed, Sep 23, 2020 at 02:24:56PM +0200, Cezary Rojewski wrote:
>>> Implement IRQ handlers for immediate and delayed replies and
>>> notifications. Communication is synchronous and allows for serialization
>>> of maximum one message at a time.
>>>

...

>>> +		if (!ret && reply->data && reply->size)
>>
>>> +			memcpy(reply->data, ipc->rx.data, ipc->rx.size);
>>
>> This I didn't get. You copy data by using source size?!
>>
>>> +	}
>>> +
>>> +	return ret;
>>
>> I guess the above piece may be refactored, but I don't know how until it is
>> clear why it's written like this.
>>
>> ...
>>
> 
> Well, ipc->rx.size equals reply->size as long as IPC procedure is in
> progress and reply != NULL. So either ipc->rx.size or reply->size
> suffices.
> 
> IPC protocol is quite simple here (albeit cAVS arguably is even simpler):
> 
> OUTBOX <channel: request - reply model>
> TX: copy request header to appropriate register, copy payload to outbox
> <IRQ>
> RX: copy reply header, copy returned payload only in successful case
> 

Forgotten to mention: yes OUTBOX's TX == OUTBOX's RX (HOST owns the
space during the request phase and yields the ownership to DSP once
IPCC_BUSY bit is set).

No ownership juggling in INBOX case.

Czarek



More information about the Alsa-devel mailing list