1 // SPDX-License-Identifier: GPL-2.0
5 * Qualcomm MSM Camera Subsystem - Format helpers
7 * Copyright (c) 2023, The Linux Foundation. All rights reserved.
8 * Copyright (c) 2023 Qualcomm Technologies, Inc.
10 #include <linux/bug.h>
11 #include <linux/errno.h>
13 #include "camss-format.h"
16 * camss_format_get_bpp - Map media bus format to bits per pixel
17 * @formats: supported media bus formats array
18 * @nformats: size of @formats array
19 * @code: media bus format code
21 * Return number of bits per pixel
23 u8
camss_format_get_bpp(const struct camss_format_info
*formats
, unsigned int nformats
, u32 code
)
27 for (i
= 0; i
< nformats
; i
++)
28 if (code
== formats
[i
].code
)
29 return formats
[i
].mbus_bpp
;
31 WARN(1, "Unknown format\n");
33 return formats
[0].mbus_bpp
;
37 * camss_format_find_code - Find a format code in an array
38 * @code: a pointer to media bus format codes array
39 * @n_code: size of @code array
40 * @index: index of code in the array
41 * @req_code: required code
43 * Return media bus format code
45 u32
camss_format_find_code(u32
*code
, unsigned int n_code
, unsigned int index
, u32 req_code
)
49 if (!req_code
&& index
>= n_code
)
52 for (i
= 0; i
< n_code
; i
++) {
54 if (req_code
== code
[i
])
66 * camss_format_find_format - Find a format in an array
67 * @code: media bus format code
68 * @pixelformat: V4L2 pixel format FCC identifier
69 * @formats: a pointer to formats array
70 * @nformats: size of @formats array
72 * Return index of a format or a negative error code otherwise
74 int camss_format_find_format(u32 code
, u32 pixelformat
, const struct camss_format_info
*formats
,
75 unsigned int nformats
)
79 for (i
= 0; i
< nformats
; i
++) {
80 if (formats
[i
].code
== code
&&
81 formats
[i
].pixelformat
== pixelformat
)
85 for (i
= 0; i
< nformats
; i
++) {
86 if (formats
[i
].code
== code
)