Thread (1 message) 1 message, 1 author, 2013-12-23

Re: [PATCH 1/3] dtc: Keep type information from DTS

From: Tomasz Figa <hidden>
Date: 2013-12-23 19:16:46

On Monday 16 of December 2013 11:08:33 Stephen Warren wrote:
On 12/13/2013 09:49 AM, Tomasz Figa wrote:
quoted
Currently dtc loses information about data types when parsing DTS,
because it flattens all the parsed property data into a flat stream of
bytes. The only saved metadata is for references to other nodes inside
cell arrays. This makes it impossible to do any checks on data types on
livetree representation.

This patch makes dtc store type information inside data struct by using
marker infrastructure. A new type of marker is introduced that holds
type enum as its ref member. Such markers are then inserted wherever
data of given type starts, so information about type of each property
data section is preserved.
quoted
diff --git a/dtc-parser.y b/dtc-parser.y
quoted
 	| propdataprefix DT_REF
 		{
-			$$ = data_add_marker($1, REF_PATH, $2);
+			struct data d;
+			d = data_add_marker($1, TYPE, (char *)TYPE_STRING);
+			$$ = data_add_marker(d, REF_PATH, $2);
 		}
I guess here, the lexer does give us a string that's the target of the
reference, so this is correct. However, I wonder if semantically we
shouldn't call this a TYPE_REFERENCE, so we can distinguish between
references and regular strings?
Hmm, a REF_PATH tag is already being added by this code, so you don't lose
this information. Still, maybe it would be better to unify REF_* and TYPE
tags and add TYPE_PATH and TYPE_PHANDLE types...
quoted
diff --git a/livetree.c b/livetree.c
quoted
@@ -530,16 +530,24 @@ cell_t get_node_phandle(struct node *root, struct node *node)
 	node->phandle = phandle;
 
 	if (!get_property(node, "linux,phandle")
-	    && (phandle_format & PHANDLE_LEGACY))
+	    && (phandle_format & PHANDLE_LEGACY)) {
+		struct data d;
+
+		d = data_add_marker(empty_data, TYPE, (char *)TYPE_ARRAY_INT32);
Similarly here, can we encode as e.g. TYPE_PHANDLE or something like
that, so we keep the semantic information?
"linux,phandle" property isn't really a phandle (as in reference by
phandle), but an integer assigning phandle number for given node, so
I'm not sure if TYPE_PHANDLE would be correct here.

Best regards,
Tomasz

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help