equal
deleted
inserted
replaced
24 #include "qemu-common.h" |
24 #include "qemu-common.h" |
25 #include "sysemu.h" |
25 #include "sysemu.h" |
26 #include "devtree.h" |
26 #include "devtree.h" |
27 #include "hw/boards.h" |
27 #include "hw/boards.h" |
28 #include "libfdt/libfdt.h" |
28 #include "libfdt/libfdt.h" |
|
29 #include "qemu-char.h" |
29 |
30 |
30 #define BADF(fmt, args...) \ |
31 #define BADF(fmt, args...) \ |
31 do { fprintf(stderr, "error: " fmt , ##args); exit(1);} while (0) |
32 do { fprintf(stderr, "error: " fmt , ##args); exit(1);} while (0) |
32 |
33 |
33 /* Assume no device will ever need more than 4 register windows. */ |
34 /* Assume no device will ever need more than 4 register windows. */ |
411 int n; |
412 int n; |
412 propstr = fdt_getprop_string(dt, node, "chardev"); |
413 propstr = fdt_getprop_string(dt, node, "chardev"); |
413 if (propstr) { |
414 if (propstr) { |
414 i = sscanf(propstr, "serial%d", &n); |
415 i = sscanf(propstr, "serial%d", &n); |
415 if (i == 1 && n >= 0 && n < MAX_SERIAL_PORTS) |
416 if (i == 1 && n >= 0 && n < MAX_SERIAL_PORTS) |
|
417 { |
|
418 if (!serial_hds[n]) |
|
419 { |
|
420 const char* target = fdt_getprop_string(dt, node, "target"); |
|
421 if (target) |
|
422 serial_hds[n] = qemu_chr_open(propstr, target); |
|
423 } |
416 d->chardev = serial_hds[n]; |
424 d->chardev = serial_hds[n]; |
|
425 } |
417 } |
426 } |
418 } |
427 } |
419 find_properties(d); |
428 find_properties(d); |
420 d->dc->create(d); |
429 d->dc->create(d); |
421 if (dc->savevm_version) { |
430 if (dc->savevm_version) { |