]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_metadata.h
Merge remote-tracking branches 'spi/fix/armada', 'spi/fix/atmel', 'spi/fix/doc',...
[mirror_ubuntu-hirsute-kernel.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / ia_css_metadata.h
1 /*
2 * Support for Intel Camera Imaging ISP subsystem.
3 * Copyright (c) 2015, Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 */
14
15 #ifndef __IA_CSS_METADATA_H
16 #define __IA_CSS_METADATA_H
17
18 /* @file
19 * This file contains structure for processing sensor metadata.
20 */
21
22 #include <type_support.h>
23 #include "ia_css_types.h"
24 #include "ia_css_stream_format.h"
25
26 /* Metadata configuration. This data structure contains necessary info
27 * to process sensor metadata.
28 */
29 struct ia_css_metadata_config {
30 enum ia_css_stream_format data_type; /** Data type of CSI-2 embedded
31 data. The default value is IA_CSS_STREAM_FORMAT_EMBEDDED. For
32 certain sensors, user can choose non-default data type for embedded
33 data. */
34 struct ia_css_resolution resolution; /** Resolution */
35 };
36
37 struct ia_css_metadata_info {
38 struct ia_css_resolution resolution; /** Resolution */
39 uint32_t stride; /** Stride in bytes */
40 uint32_t size; /** Total size in bytes */
41 };
42
43 struct ia_css_metadata {
44 struct ia_css_metadata_info info; /** Layout info */
45 ia_css_ptr address; /** CSS virtual address */
46 uint32_t exp_id;
47 /** Exposure ID, see ia_css_event_public.h for more detail */
48 };
49 #define SIZE_OF_IA_CSS_METADATA_STRUCT sizeof(struct ia_css_metadata)
50
51 /* @brief Allocate a metadata buffer.
52 * @param[in] metadata_info Metadata info struct, contains details on metadata buffers.
53 * @return Pointer of metadata buffer or NULL (if error)
54 *
55 * This function allocates a metadata buffer according to the properties
56 * specified in the metadata_info struct.
57 */
58 struct ia_css_metadata *
59 ia_css_metadata_allocate(const struct ia_css_metadata_info *metadata_info);
60
61 /* @brief Free a metadata buffer.
62 *
63 * @param[in] metadata Pointer of metadata buffer.
64 * @return None
65 *
66 * This function frees a metadata buffer.
67 */
68 void
69 ia_css_metadata_free(struct ia_css_metadata *metadata);
70
71 #endif /* __IA_CSS_METADATA_H */