1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2019-2022 Bootlin
4  * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
5  */
6 
7 #ifndef _LOGICVC_OF_H_
8 #define _LOGICVC_OF_H_
9 
10 enum logicvc_of_property_index {
11 	LOGICVC_OF_PROPERTY_DISPLAY_INTERFACE = 0,
12 	LOGICVC_OF_PROPERTY_DISPLAY_COLORSPACE,
13 	LOGICVC_OF_PROPERTY_DISPLAY_DEPTH,
14 	LOGICVC_OF_PROPERTY_ROW_STRIDE,
15 	LOGICVC_OF_PROPERTY_DITHERING,
16 	LOGICVC_OF_PROPERTY_BACKGROUND_LAYER,
17 	LOGICVC_OF_PROPERTY_LAYERS_CONFIGURABLE,
18 	LOGICVC_OF_PROPERTY_LAYERS_COUNT,
19 	LOGICVC_OF_PROPERTY_LAYER_DEPTH,
20 	LOGICVC_OF_PROPERTY_LAYER_COLORSPACE,
21 	LOGICVC_OF_PROPERTY_LAYER_ALPHA_MODE,
22 	LOGICVC_OF_PROPERTY_LAYER_BASE_OFFSET,
23 	LOGICVC_OF_PROPERTY_LAYER_BUFFER_OFFSET,
24 	LOGICVC_OF_PROPERTY_LAYER_PRIMARY,
25 	LOGICVC_OF_PROPERTY_MAXIMUM,
26 };
27 
28 struct logicvc_of_property_sv {
29 	const char *string;
30 	u32 value;
31 };
32 
33 struct logicvc_of_property {
34 	char *name;
35 	bool optional;
36 	struct logicvc_of_property_sv *sv;
37 	u32 range[2];
38 };
39 
40 int logicvc_of_property_parse_u32(struct device_node *of_node,
41 				  unsigned int index, u32 *target);
42 void logicvc_of_property_parse_bool(struct device_node *of_node,
43 				    unsigned int index, bool *target);
44 bool logicvc_of_node_is_layer(struct device_node *of_node);
45 
46 #endif
47