On 7/12/22 12:58, Simon Glass wrote:
Hi Heinrich,
On Mon, 11 Jul 2022 at 00:25, Heinrich Schuchardt
<heinrich.schucha...@canonical.com> wrote:
If parameter drv of lists_bind_fdt() is specified, we shall bind only to
this very driver and to no other.
If the driver drv has an of_match property, we shall only bind to the
driver if it matches the compatible string of the device.
Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
---
drivers/core/lists.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass <s...@chromium.org>
Any chance of a test for this case?
Regards,
Simon
Here are two examples that need to be fixed:
=> unbind /tpm2
=> bind /tpm2 pwm_sandbox
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
tpm 0 [ ] sandbox_tpm2 `-- tpm2
tpm2 should not bind to another driver than the specified one.
=> unbind /tpm2
=> bind /tpm2 usb_ether
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
ethernet 8 [ ] usb_ether `-- tpm2
As tpm2 has a compatible string it should never bind to usb_ether.
The expected behavior is:
=> unbind /tpm2
=> bind /tpm2 pwm_sandbox
Unable to bind. err:0
=> bind /tpm2 usb_ether
Unable to bind. err:0
The patch needs some rework.
lists_bind_fdt() checks if the device has a compatible string. If not it
errors out with "Device '%s' has no compatible string\n".
If drv->of_match == NULL, we can equally error out because the driver
cannot be a match.
Best regards
Heinrich