Skip to content

Commit 95d6499

Browse files
lyakhlgirdwood
authored andcommitted
pcm_converter: add __sparse_cache annotations
PCM converter functions operate on locked and cached buffers, add __sparse_cache annotations to them. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
1 parent f8bbd24 commit 95d6499

File tree

4 files changed

+75
-72
lines changed

4 files changed

+75
-72
lines changed

src/audio/pcm_converter/pcm_converter.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
* \authors Karol Trzcinski <karolx.trzcinski@linux.intel.com>
1111
*/
1212

13+
#include <sof/compiler_attributes.h>
1314
#include <sof/audio/audio_stream.h>
1415
#include <sof/audio/pcm_converter.h>
1516
#include <sof/debug/panic.h>
1617

17-
int pcm_convert_as_linear(const struct audio_stream *source, uint32_t ioffset,
18-
struct audio_stream *sink, uint32_t ooffset,
18+
int pcm_convert_as_linear(const struct audio_stream __sparse_cache *source, uint32_t ioffset,
19+
struct audio_stream __sparse_cache *sink, uint32_t ooffset,
1920
uint32_t samples, pcm_converter_lin_func converter)
2021
{
2122
const int s_size_in = audio_stream_sample_bytes(source);

src/audio/pcm_converter/pcm_converter_generic.c

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <sof/audio/format.h>
2121
#include <sof/bit.h>
2222
#include <sof/common.h>
23+
#include <sof/compiler_attributes.h>
2324
#include <ipc/stream.h>
2425

2526
#include <stddef.h>
@@ -30,8 +31,8 @@
3031

3132
#if CONFIG_PCM_CONVERTER_FORMAT_S16LE && CONFIG_PCM_CONVERTER_FORMAT_S24LE
3233

33-
static int pcm_convert_s16_to_s24(const struct audio_stream *source,
34-
uint32_t ioffset, struct audio_stream *sink,
34+
static int pcm_convert_s16_to_s24(const struct audio_stream __sparse_cache *source,
35+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
3536
uint32_t ooffset, uint32_t samples)
3637
{
3738
int16_t *src = source->r_ptr;
@@ -59,8 +60,8 @@ static int pcm_convert_s16_to_s24(const struct audio_stream *source,
5960
return samples;
6061
}
6162

62-
static int pcm_convert_s24_to_s16(const struct audio_stream *source,
63-
uint32_t ioffset, struct audio_stream *sink,
63+
static int pcm_convert_s24_to_s16(const struct audio_stream __sparse_cache *source,
64+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
6465
uint32_t ooffset, uint32_t samples)
6566
{
6667
int32_t *src = source->r_ptr;
@@ -92,8 +93,8 @@ static int pcm_convert_s24_to_s16(const struct audio_stream *source,
9293

9394
#if CONFIG_PCM_CONVERTER_FORMAT_S16LE && CONFIG_PCM_CONVERTER_FORMAT_S32LE
9495

95-
static int pcm_convert_s16_to_s32(const struct audio_stream *source,
96-
uint32_t ioffset, struct audio_stream *sink,
96+
static int pcm_convert_s16_to_s32(const struct audio_stream __sparse_cache *source,
97+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
9798
uint32_t ooffset, uint32_t samples)
9899
{
99100
int16_t *src = source->r_ptr;
@@ -121,8 +122,8 @@ static int pcm_convert_s16_to_s32(const struct audio_stream *source,
121122
return samples;
122123
}
123124

124-
static int pcm_convert_s32_to_s16(const struct audio_stream *source,
125-
uint32_t ioffset, struct audio_stream *sink,
125+
static int pcm_convert_s32_to_s16(const struct audio_stream __sparse_cache *source,
126+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
126127
uint32_t ooffset, uint32_t samples)
127128
{
128129
int32_t *src = source->r_ptr;
@@ -154,8 +155,8 @@ static int pcm_convert_s32_to_s16(const struct audio_stream *source,
154155

155156
#if CONFIG_PCM_CONVERTER_FORMAT_S24LE && CONFIG_PCM_CONVERTER_FORMAT_S32LE
156157

157-
static int pcm_convert_s24_to_s32(const struct audio_stream *source,
158-
uint32_t ioffset, struct audio_stream *sink,
158+
static int pcm_convert_s24_to_s32(const struct audio_stream __sparse_cache *source,
159+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
159160
uint32_t ooffset, uint32_t samples)
160161
{
161162
int32_t *src = source->r_ptr;
@@ -183,8 +184,8 @@ static int pcm_convert_s24_to_s32(const struct audio_stream *source,
183184
return samples;
184185
}
185186

186-
static int pcm_convert_s32_to_s24(const struct audio_stream *source,
187-
uint32_t ioffset, struct audio_stream *sink,
187+
static int pcm_convert_s32_to_s24(const struct audio_stream __sparse_cache *source,
188+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
188189
uint32_t ooffset, uint32_t samples)
189190
{
190191
int32_t *src = source->r_ptr;
@@ -212,8 +213,8 @@ static int pcm_convert_s32_to_s24(const struct audio_stream *source,
212213
return samples;
213214
}
214215

215-
static int pcm_convert_s32_to_s24_be(const struct audio_stream *source,
216-
uint32_t ioffset, struct audio_stream *sink,
216+
static int pcm_convert_s32_to_s24_be(const struct audio_stream __sparse_cache *source,
217+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
217218
uint32_t ooffset, uint32_t samples)
218219
{
219220
int32_t *src = source->r_ptr;
@@ -377,16 +378,16 @@ static void pcm_convert_f_to_s16_lin(const void *psrc, void *pdst,
377378
dst[i] = sat_int16(_pcm_convert_f_to_i(src[i], 15));
378379
}
379380

380-
static int pcm_convert_s16_to_f(const struct audio_stream *source,
381-
uint32_t ioffset, struct audio_stream *sink,
381+
static int pcm_convert_s16_to_f(const struct audio_stream __sparse_cache *source,
382+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
382383
uint32_t ooffset, uint32_t samples)
383384
{
384385
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
385386
pcm_convert_s16_to_f_lin);
386387
}
387388

388-
static int pcm_convert_f_to_s16(const struct audio_stream *source,
389-
uint32_t ioffset, struct audio_stream *sink,
389+
static int pcm_convert_f_to_s16(const struct audio_stream __sparse_cache *source,
390+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
390391
uint32_t ooffset, uint32_t samples)
391392
{
392393
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
@@ -421,16 +422,16 @@ static void pcm_convert_f_to_s24_lin(const void *psrc, void *pdst,
421422
dst[i] = sat_int24(_pcm_convert_f_to_i(src[i], 23));
422423
}
423424

424-
static int pcm_convert_s24_to_f(const struct audio_stream *source,
425-
uint32_t ioffset, struct audio_stream *sink,
425+
static int pcm_convert_s24_to_f(const struct audio_stream __sparse_cache *source,
426+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
426427
uint32_t ooffset, uint32_t samples)
427428
{
428429
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
429430
pcm_convert_s24_to_f_lin);
430431
}
431432

432-
static int pcm_convert_f_to_s24(const struct audio_stream *source,
433-
uint32_t ioffset, struct audio_stream *sink,
433+
static int pcm_convert_f_to_s24(const struct audio_stream __sparse_cache *source,
434+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
434435
uint32_t ooffset, uint32_t samples)
435436
{
436437
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
@@ -465,16 +466,16 @@ static void pcm_convert_f_to_s32_lin(const void *psrc, void *pdst,
465466
dst[i] = _pcm_convert_f_to_i(src[i], 31);
466467
}
467468

468-
static int pcm_convert_s32_to_f(const struct audio_stream *source,
469-
uint32_t ioffset, struct audio_stream *sink,
469+
static int pcm_convert_s32_to_f(const struct audio_stream __sparse_cache *source,
470+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
470471
uint32_t ooffset, uint32_t samples)
471472
{
472473
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
473474
pcm_convert_s32_to_f_lin);
474475
}
475476

476-
static int pcm_convert_f_to_s32(const struct audio_stream *source,
477-
uint32_t ioffset, struct audio_stream *sink,
477+
static int pcm_convert_f_to_s32(const struct audio_stream __sparse_cache *source,
478+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
478479
uint32_t ooffset, uint32_t samples)
479480
{
480481
return pcm_convert_as_linear(source, ioffset, sink, ooffset, samples,
@@ -527,8 +528,8 @@ const struct pcm_func_map pcm_func_map[] = {
527528
const size_t pcm_func_count = ARRAY_SIZE(pcm_func_map);
528529

529530
#if CONFIG_PCM_CONVERTER_FORMAT_S16_C16_AND_S16_C32
530-
static int pcm_convert_s16_c16_to_s16_c32(const struct audio_stream *source,
531-
uint32_t ioffset, struct audio_stream *sink,
531+
static int pcm_convert_s16_c16_to_s16_c32(const struct audio_stream __sparse_cache *source,
532+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
532533
uint32_t ooffset, uint32_t samples)
533534
{
534535
int16_t *src = source->r_ptr;
@@ -556,8 +557,8 @@ static int pcm_convert_s16_c16_to_s16_c32(const struct audio_stream *source,
556557
return samples;
557558
}
558559

559-
static int pcm_convert_s16_c32_to_s16_c16(const struct audio_stream *source,
560-
uint32_t ioffset, struct audio_stream *sink,
560+
static int pcm_convert_s16_c32_to_s16_c16(const struct audio_stream __sparse_cache *source,
561+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
561562
uint32_t ooffset, uint32_t samples)
562563
{
563564
int32_t *src = source->r_ptr;
@@ -586,8 +587,8 @@ static int pcm_convert_s16_c32_to_s16_c16(const struct audio_stream *source,
586587
}
587588
#endif
588589
#if CONFIG_PCM_CONVERTER_FORMAT_S16_C32_AND_S32_C32
589-
static int pcm_convert_s16_c32_to_s32_c32(const struct audio_stream *source,
590-
uint32_t ioffset, struct audio_stream *sink,
590+
static int pcm_convert_s16_c32_to_s32_c32(const struct audio_stream __sparse_cache *source,
591+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
591592
uint32_t ooffset, uint32_t samples)
592593
{
593594
int32_t *src = source->r_ptr;
@@ -615,8 +616,8 @@ static int pcm_convert_s16_c32_to_s32_c32(const struct audio_stream *source,
615616
return samples;
616617
}
617618

618-
static int pcm_convert_s32_c32_to_s16_c32(const struct audio_stream *source,
619-
uint32_t ioffset, struct audio_stream *sink,
619+
static int pcm_convert_s32_c32_to_s16_c32(const struct audio_stream __sparse_cache *source,
620+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
620621
uint32_t ooffset, uint32_t samples)
621622
{
622623
int32_t *src = source->r_ptr;
@@ -645,8 +646,8 @@ static int pcm_convert_s32_c32_to_s16_c32(const struct audio_stream *source,
645646
}
646647
#endif
647648
#if CONFIG_PCM_CONVERTER_FORMAT_S16_C32_AND_S24_C32
648-
static int pcm_convert_s16_c32_to_s24_c32(const struct audio_stream *source,
649-
uint32_t ioffset, struct audio_stream *sink,
649+
static int pcm_convert_s16_c32_to_s24_c32(const struct audio_stream __sparse_cache *source,
650+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
650651
uint32_t ooffset, uint32_t samples)
651652
{
652653
int32_t *src = source->r_ptr;
@@ -674,8 +675,8 @@ static int pcm_convert_s16_c32_to_s24_c32(const struct audio_stream *source,
674675
return samples;
675676
}
676677

677-
static int pcm_convert_s24_c32_to_s16_c32(const struct audio_stream *source,
678-
uint32_t ioffset, struct audio_stream *sink,
678+
static int pcm_convert_s24_c32_to_s16_c32(const struct audio_stream __sparse_cache *source,
679+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
679680
uint32_t ooffset, uint32_t samples)
680681
{
681682
int32_t *src = source->r_ptr;
@@ -705,8 +706,8 @@ static int pcm_convert_s24_c32_to_s16_c32(const struct audio_stream *source,
705706
#endif
706707

707708
#if CONFIG_PCM_CONVERTER_FORMAT_S24_C24_AND_S24_C32
708-
static int pcm_convert_s24_c24_to_s24_c32(const struct audio_stream *source,
709-
uint32_t ioffset, struct audio_stream *sink,
709+
static int pcm_convert_s24_c24_to_s24_c32(const struct audio_stream __sparse_cache *source,
710+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
710711
uint32_t ooffset, uint32_t samples)
711712
{
712713
uint8_t *src = source->r_ptr;
@@ -735,8 +736,8 @@ static int pcm_convert_s24_c24_to_s24_c32(const struct audio_stream *source,
735736
return samples;
736737
}
737738

738-
static int pcm_convert_s24_c32_to_s24_c24(const struct audio_stream *source,
739-
uint32_t ioffset, struct audio_stream *sink,
739+
static int pcm_convert_s24_c32_to_s24_c24(const struct audio_stream __sparse_cache *source,
740+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
740741
uint32_t ooffset, uint32_t samples)
741742
{
742743
int32_t *src = source->r_ptr;
@@ -769,8 +770,8 @@ static int pcm_convert_s24_c32_to_s24_c24(const struct audio_stream *source,
769770
}
770771

771772
/* 2x24bit samples are packed into 3x16bit samples for hda link dma */
772-
static int pcm_convert_s24_c32_to_s24_c24_link_gtw(const struct audio_stream *source,
773-
uint32_t ioffset, struct audio_stream *sink,
773+
static int pcm_convert_s24_c32_to_s24_c24_link_gtw(const struct audio_stream __sparse_cache *source,
774+
uint32_t ioffset, struct audio_stream __sparse_cache *sink,
774775
uint32_t ooffset, uint32_t samples)
775776
{
776777
int32_t *src = source->r_ptr;

0 commit comments

Comments
 (0)