With this patch the following property assignment: property = ['a' 2b '\r'];
is equivalent to: property = [61 2b 0d]; Signed-off-by: Anton Staaf <robot...@chromium.org> Cc: Jon Loeliger <j...@jdl.com> Cc: David Gibson <da...@gibson.dropbear.id.au> Cc: Grant Likely <grant.lik...@secretlab.ca> --- Documentation/dts-format.txt | 5 +++-- dtc-parser.y | 4 ++++ tests/char_literal.c | 8 ++++++++ tests/char_literal.dts | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Documentation/dts-format.txt b/Documentation/dts-format.txt index eae8b76..555bd89 100644 --- a/Documentation/dts-format.txt +++ b/Documentation/dts-format.txt @@ -48,11 +48,12 @@ NUL-terminated strings, as bytestrings or a combination of these. e.g. compatible = "simple-bus"; * A bytestring is enclosed in square brackets [] with each byte - represented by two hexadecimal digits. Spaces between each byte are - optional. + represented by two hexadecimal digits or a character literal. + Spaces between each byte or character literal are optional. e.g. local-mac-address = [00 00 12 34 56 78]; or equivalently local-mac-address = [000012345678]; + e.g. keymap = ['a' 'b' 'c' 'd']; * Values may have several comma-separated components, which are concatenated together. diff --git a/dtc-parser.y b/dtc-parser.y index 554f11a..bc05a24 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -286,6 +286,10 @@ bytestring: { $$ = data_add_marker($1, LABEL, $2); } + | bytestring DT_CHAR_LITERAL + { + $$ = data_append_byte($1, eval_char_literal($2)); + } ; subnodes: diff --git a/tests/char_literal.c b/tests/char_literal.c index 150f2a0..c6e2405 100644 --- a/tests/char_literal.c +++ b/tests/char_literal.c @@ -33,6 +33,11 @@ int main(int argc, char *argv[]) { void *fdt; uint32_t expected_cells[5]; + uint8_t expected_bytes[5] = {TEST_CHAR1, + TEST_CHAR2, + TEST_CHAR3, + TEST_CHAR4, + TEST_CHAR5}; expected_cells[0] = cpu_to_fdt32((unsigned char)TEST_CHAR1); expected_cells[1] = cpu_to_fdt32((unsigned char)TEST_CHAR2); @@ -46,5 +51,8 @@ int main(int argc, char *argv[]) check_getprop(fdt, 0, "char-literal-cells", sizeof(expected_cells), expected_cells); + check_getprop(fdt, 0, "char-literal-bytes", + sizeof(expected_bytes), expected_bytes); + PASS(); } diff --git a/tests/char_literal.dts b/tests/char_literal.dts index 22e17ed..9baba5c 100644 --- a/tests/char_literal.dts +++ b/tests/char_literal.dts @@ -2,4 +2,5 @@ / { char-literal-cells = <'\r' 'b' '\0' '\'' '\xff'>; + char-literal-bytes = ['\r' 'b' '\0' '\'' '\xff']; }; -- 1.7.3.1 _______________________________________________ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss