@@ -377,3 +377,42 @@ static int dts_is_printable_strings(const void *data, int len)
return substrs && !substr_len;
}
+
+static void dts_write_data(FILE *fp, const char *data, int len)
+{
+ int i;
+ const char *p = data;
+ const char *s;
+
+ if (len == 0) {
+ return;
+ }
+
+ if (dts_is_printable_strings(data, len)) {
+ fprintf(fp, " = ");
+
+ s = data;
+ do {
+ fprintf(fp, "\"%s\"", s);
+ s += strlen(s) + 1;
+ if (s < data + len) {
+ fprintf(fp, ", ");
+ }
+ } while (s < data + len);
+ } else if ((len % 4) == 0) {
+ const uint32_t *cell = (const uint32_t *)data;
+
+ fprintf(fp, " = <");
+ for (i = 0; i < len; i += 4) {
+ fprintf(fp, "0x%x%s", fdt32_to_cpu(cell[i / 4]),
+ i < (len - 4) ? " " : "");
+ }
+ fprintf(fp, ">");
+ } else {
+ fprintf(fp, " = [");
+ for (i = 0; i < len; i++) {
+ fprintf(fp, "%02hhx%s", *p++, i < len - 1 ? " " : "");
+ }
+ fprintf(fp, "]");
+ }
+}