[PATCH v2 06/13] ASoC: Intel: catpt: PCM operations

Cezary Rojewski cezary.rojewski at intel.com
Tue Aug 11 14:44:05 CEST 2020


On 2020-08-11 2:17 PM, Amadeusz Sławiński wrote:
> 
> 
> On 8/11/2020 12:00 PM, Cezary Rojewski wrote:
>> DSP designed for Lynxpoint and Wildcat Point offers no dynamic topology
>> i.e. all pipelines are already defined within firmware and host is
>> relegated to allocing stream for predefined pins. This is represented by
>> 'catpt_topology' member.
>>
>> Implementation covers all available pin types:
>> - system playback and capture
>> - two offload streams
>> - loopback (reference)
>> - bluetooth playback and capture
>>
>> PCM DAI operations differentiate between those pins as some (mainly
>> offload) are to be handled differently - DSP expects wp updates on each
>> notify_position notification.
>>
>> System playback has no volume control capability as it is routed to
>> mixer stream directly. Other primary streams - capture and two offloads
>> - offer individual volume controls.
>>
>> Compared to sound/soc/intel/haswell this configures SSP device format
>> automatically on pcm creation.
>>
>> Signed-off-by: Cezary Rojewski <cezary.rojewski at intel.com>
>> ---
> 
> ...
> 
>> +
>> +static int catpt_set_ctlvol(struct catpt_dev *cdev, u8 stream_id, 
>> long *ctlvol)
>> +{
>> +    u32 dspvol;
>> +    int ret, i;
>> +
>> +    if (ctlvol[0] == ctlvol[1]) {
> 
> This check seems bit suspicious to me, as CATPT_CHANNELS_MAX is 4 and 
> you only check 2 of possible values here, while in else part, you loop 
> over all possible 4 to set them? So there is chance that ctlvol[0] is 
> equal to ctlvol[1], but ctlvol[2] and ctlvol[3] are different, what 
> happens then?
> 

Check is simplified as majority of configurations make use of stereo 
only. Maybe it shouldn't have been. Will fix in v3.


More information about the Alsa-devel mailing list