pca954x_find_chip() was selected at compile time: with FDT in the kernel it
only ever consulted the device tree, and the device-hints path was compiled
out entirely. An arm64 GENERIC kernel has both FDT and ACPI support and may
be booted either way, so dispatch on how the device was actually described
instead -- an OFW node if it has one, else an ACPI handle, else hints.
ACPI firmware identifies these parts by _HID rather than by a compatible
string; NXP's Layerscape reference firmware declares the on-board PCA9547 as
NXP0002.
While here, register the plain iicbus(4) driver on the mux unconditionally
rather than only in the !FDT case. ofw_iicbus(4) declines a child bus that
has no OFW node, so on a device-tree system the ofw flavour still wins and on
an ACPI one the channels get a bus at all. The hints loop also walked
nitems(part_descrs) - 1, a leftover from when the array had a NULL terminator
it no longer has, so the last part was never matched.
Depends on D60060