Lines Matching refs:dti
43 typedef void (*check_fn)(struct check *c, struct dt_info *dti, struct node *node);
75 static inline void PRINTF(3, 4) check_msg(struct check *c, struct dt_info *dti, in check_msg() argument
84 strcmp(dti->outname, "-") ? dti->outname : "<stdout>", in check_msg()
92 #define FAIL(c, dti, ...) \ argument
96 check_msg((c), dti, __VA_ARGS__); \
99 static void check_nodes_props(struct check *c, struct dt_info *dti, struct node *node) in check_nodes_props() argument
105 c->fn(c, dti, node); in check_nodes_props()
108 check_nodes_props(c, dti, child); in check_nodes_props()
111 static bool run_check(struct check *c, struct dt_info *dti) in run_check() argument
113 struct node *dt = dti->dt; in run_check()
126 error = error || run_check(prq, dti); in run_check()
129 check_msg(c, dti, "Failed prerequisite '%s'", in run_check()
137 check_nodes_props(c, dti, dt); in run_check()
156 static inline void check_always_fail(struct check *c, struct dt_info *dti, in check_always_fail() argument
159 FAIL(c, dti, "always_fail check"); in check_always_fail()
163 static void check_is_string(struct check *c, struct dt_info *dti, in check_is_string() argument
174 FAIL(c, dti, "\"%s\" property in %s is not a string", in check_is_string()
182 static void check_is_cell(struct check *c, struct dt_info *dti, in check_is_cell() argument
193 FAIL(c, dti, "\"%s\" property in %s is not a single cell", in check_is_cell()
205 static void check_duplicate_node_names(struct check *c, struct dt_info *dti, in check_duplicate_node_names() argument
215 FAIL(c, dti, "Duplicate node name %s", in check_duplicate_node_names()
220 static void check_duplicate_property_names(struct check *c, struct dt_info *dti, in check_duplicate_property_names() argument
230 FAIL(c, dti, "Duplicate property name %s in %s", in check_duplicate_property_names()
243 static void check_node_name_chars(struct check *c, struct dt_info *dti, in check_node_name_chars() argument
249 FAIL(c, dti, "Bad character '%c' in node %s", in check_node_name_chars()
254 static void check_node_name_chars_strict(struct check *c, struct dt_info *dti, in check_node_name_chars_strict() argument
260 FAIL(c, dti, "Character '%c' not recommended in node %s", in check_node_name_chars_strict()
265 static void check_node_name_format(struct check *c, struct dt_info *dti, in check_node_name_format() argument
269 FAIL(c, dti, "Node %s has multiple '@' characters in name", in check_node_name_format()
274 static void check_unit_address_vs_reg(struct check *c, struct dt_info *dti, in check_unit_address_vs_reg() argument
288 FAIL(c, dti, "Node %s has a reg or ranges property, but no unit name", in check_unit_address_vs_reg()
292 FAIL(c, dti, "Node %s has a unit name, but no reg property", in check_unit_address_vs_reg()
298 static void check_property_name_chars(struct check *c, struct dt_info *dti, in check_property_name_chars() argument
307 FAIL(c, dti, "Bad character '%c' in property name \"%s\", node %s", in check_property_name_chars()
314 struct dt_info *dti, in check_property_name_chars_strict() argument
339 FAIL(c, dti, "Character '%c' not recommended in property name \"%s\", node %s", in check_property_name_chars_strict()
352 static void check_duplicate_label(struct check *c, struct dt_info *dti, in check_duplicate_label() argument
356 struct node *dt = dti->dt; in check_duplicate_label()
373 FAIL(c, dti, "Duplicate label '%s' on " DESCLABEL_FMT in check_duplicate_label()
379 static void check_duplicate_label_node(struct check *c, struct dt_info *dti, in check_duplicate_label_node() argument
386 check_duplicate_label(c, dti, l->label, node, NULL, NULL); in check_duplicate_label_node()
392 check_duplicate_label(c, dti, l->label, node, prop, NULL); in check_duplicate_label_node()
395 check_duplicate_label(c, dti, m->ref, node, prop, m); in check_duplicate_label_node()
400 static cell_t check_phandle_prop(struct check *c, struct dt_info *dti, in check_phandle_prop() argument
403 struct node *root = dti->dt; in check_phandle_prop()
413 FAIL(c, dti, "%s has bad length (%d) %s property", in check_phandle_prop()
425 FAIL(c, dti, "%s in %s is a reference to another node", in check_phandle_prop()
439 FAIL(c, dti, "%s has bad value (0x%x) in %s property", in check_phandle_prop()
447 static void check_explicit_phandles(struct check *c, struct dt_info *dti, in check_explicit_phandles() argument
450 struct node *root = dti->dt; in check_explicit_phandles()
457 phandle = check_phandle_prop(c, dti, node, "phandle"); in check_explicit_phandles()
459 linux_phandle = check_phandle_prop(c, dti, node, "linux,phandle"); in check_explicit_phandles()
466 FAIL(c, dti, "%s has mismatching 'phandle' and 'linux,phandle'" in check_explicit_phandles()
474 FAIL(c, dti, "%s has duplicated phandle 0x%x (seen before at %s)", in check_explicit_phandles()
483 static void check_name_properties(struct check *c, struct dt_info *dti, in check_name_properties() argument
499 FAIL(c, dti, "\"name\" property in %s is incorrect (\"%s\" instead" in check_name_properties()
517 static void fixup_phandle_references(struct check *c, struct dt_info *dti, in fixup_phandle_references() argument
520 struct node *dt = dti->dt; in fixup_phandle_references()
533 if (!(dti->dtsflags & DTSF_PLUGIN)) in fixup_phandle_references()
534 FAIL(c, dti, "Reference to non-existent node or " in fixup_phandle_references()
550 static void fixup_path_references(struct check *c, struct dt_info *dti, in fixup_path_references() argument
553 struct node *dt = dti->dt; in fixup_path_references()
566 FAIL(c, dti, "Reference to non-existent node or label \"%s\"\n", in fixup_path_references()
590 static void fixup_addr_size_cells(struct check *c, struct dt_info *dti, in fixup_addr_size_cells() argument
614 static void check_reg_format(struct check *c, struct dt_info *dti, in check_reg_format() argument
625 FAIL(c, dti, "Root node has a \"reg\" property"); in check_reg_format()
630 FAIL(c, dti, "\"reg\" property in %s is empty", node->fullpath); in check_reg_format()
637 FAIL(c, dti, "\"reg\" property in %s has invalid length (%d bytes) " in check_reg_format()
643 static void check_ranges_format(struct check *c, struct dt_info *dti, in check_ranges_format() argument
654 FAIL(c, dti, "Root node has a \"ranges\" property"); in check_ranges_format()
666 FAIL(c, dti, "%s has empty \"ranges\" property but its " in check_ranges_format()
671 FAIL(c, dti, "%s has empty \"ranges\" property but its " in check_ranges_format()
676 FAIL(c, dti, "\"ranges\" property in %s has invalid length (%d bytes) " in check_ranges_format()
688 static void check_pci_bridge(struct check *c, struct dt_info *dti, struct node *node) in check_pci_bridge() argument
701 FAIL(c, dti, "Node %s node name is not \"pci\" or \"pcie\"", in check_pci_bridge()
706 FAIL(c, dti, "Node %s missing ranges for PCI bridge (or not a bridge)", in check_pci_bridge()
710 FAIL(c, dti, "Node %s incorrect #address-cells for PCI bridge", in check_pci_bridge()
713 FAIL(c, dti, "Node %s incorrect #size-cells for PCI bridge", in check_pci_bridge()
718 FAIL(c, dti, "Node %s missing bus-range for PCI bridge", in check_pci_bridge()
723 FAIL(c, dti, "Node %s bus-range must be 2 cells", in check_pci_bridge()
729 FAIL(c, dti, "Node %s bus-range 1st cell must be less than or equal to 2nd cell", in check_pci_bridge()
732 FAIL(c, dti, "Node %s bus-range maximum bus number must be less than 256", in check_pci_bridge()
738 static void check_pci_device_bus_num(struct check *c, struct dt_info *dti, struct node *node) in check_pci_device_bus_num() argument
763 FAIL(c, dti, "Node %s PCI bus number %d out of range, expected (%d - %d)", in check_pci_device_bus_num()
768 static void check_pci_device_reg(struct check *c, struct dt_info *dti, struct node *node) in check_pci_device_reg() argument
781 FAIL(c, dti, "Node %s missing PCI reg property", node->fullpath); in check_pci_device_reg()
787 FAIL(c, dti, "Node %s PCI reg config space address cells 2 and 3 must be 0", in check_pci_device_reg()
795 FAIL(c, dti, "Node %s PCI reg address is not configuration space", in check_pci_device_reg()
798 FAIL(c, dti, "Node %s PCI reg config space address register number must be 0", in check_pci_device_reg()
811 FAIL(c, dti, "Node %s PCI unit address format error, expected \"%s\"", in check_pci_device_reg()
837 static void check_simple_bus_bridge(struct check *c, struct dt_info *dti, struct node *node) in check_simple_bus_bridge() argument
844 static void check_simple_bus_reg(struct check *c, struct dt_info *dti, struct node *node) in check_simple_bus_reg() argument
868 FAIL(c, dti, "Node %s missing or empty reg/ranges property", node->fullpath); in check_simple_bus_reg()
878 FAIL(c, dti, "Node %s simple-bus unit address format error, expected \"%s\"", in check_simple_bus_reg()
883 static void check_unit_address_format(struct check *c, struct dt_info *dti, in check_unit_address_format() argument
895 FAIL(c, dti, "Node %s unit name should not have leading \"0x\"", in check_unit_address_format()
901 FAIL(c, dti, "Node %s unit name should not have leading 0s", in check_unit_address_format()
910 static void check_avoid_default_addr_size(struct check *c, struct dt_info *dti, in check_avoid_default_addr_size() argument
925 FAIL(c, dti, "Relying on default #address-cells value for %s", in check_avoid_default_addr_size()
929 FAIL(c, dti, "Relying on default #size-cells value for %s", in check_avoid_default_addr_size()
936 struct dt_info *dti, in check_obsolete_chosen_interrupt_controller() argument
939 struct node *dt = dti->dt; in check_obsolete_chosen_interrupt_controller()
953 FAIL(c, dti, "/chosen has obsolete \"interrupt-controller\" " in check_obsolete_chosen_interrupt_controller()
966 struct dt_info *dti, in check_property_phandle_args() argument
971 struct node *root = dti->dt; in check_property_phandle_args()
975 FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s", in check_property_phandle_args()
1003 FAIL(c, dti, "Property '%s', cell %d is not a phandle reference in %s", in check_property_phandle_args()
1009 FAIL(c, dti, "Could not get phandle node for %s:%s(cell %d)", in check_property_phandle_args()
1020 FAIL(c, dti, "Missing property '%s' in node %s or bad phandle (referred from %s:%s[%d])", in check_property_phandle_args()
1028 FAIL(c, dti, "%s property size (%d) too small for cell size %d in %s", in check_property_phandle_args()
1035 struct dt_info *dti, in check_provider_cells_property() argument
1045 check_property_phandle_args(c, dti, node, prop, provider); in check_provider_cells_property()
1091 struct dt_info *dti, in check_gpios_property() argument
1109 check_property_phandle_args(c, dti, node, prop, &provider); in check_gpios_property()
1116 struct dt_info *dti, in check_deprecated_gpio_property() argument
1131 FAIL(c, dti, "'[*-]gpio' is deprecated, use '[*-]gpios' instead for %s:%s", in check_deprecated_gpio_property()
1153 struct dt_info *dti, in check_interrupts_property() argument
1156 struct node *root = dti->dt; in check_interrupts_property()
1166 FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s", in check_interrupts_property()
1181 FAIL(c, dti, "Bad interrupt-parent phandle for %s", in check_interrupts_property()
1186 FAIL(c, dti, in check_interrupts_property()
1197 FAIL(c, dti, "Missing interrupt-parent for %s", node->fullpath); in check_interrupts_property()
1203 FAIL(c, dti, "Missing #interrupt-cells in interrupt-parent %s", in check_interrupts_property()
1210 FAIL(c, dti, in check_interrupts_property()
1334 void process_checks(bool force, struct dt_info *dti) in process_checks() argument
1343 error = error || run_check(c, dti); in process_checks()