SG -- It depends upon how the firmware is implemented. If another
firmware is downloaded on it, it will emulate another device.
Also, if a firmware emulated on it supports switching between
devices,
that too is possible. Its just a microcontroller, we can do
whatever we feel like
with it. Both the PRUs have separate instruction/data ram, so
both can be used
to implement two different devices.
I see. So the problem that I see with the current code is that you
force the system to provide a set of devices from the MFD, which
then get passed to the individual drivers (uart and can) that load
the firmware they need. Please correct me if I am reading your code
wrong.
What I suggest you do instead is to have the request_firmware
call in the low-level MFD driver, so the user can provide the
firmware that he/she wants to use, and then the MFD driver will
create the devices that match the firmware loaded into the device.
You can easily do that by adding a small header to the firmware
format and interpret that header by the MFD driver. When the name
of the subdevice is part of that header, the MFD driver does not
need to understand the difference, it can simply pass that on
when creating its child devices.