diff mbox series

drm: display: Set fwnode for aux bus devices

Message ID 20241023191339.1491282-1-saravanak@google.com (mailing list archive)
State New, archived
Headers show
Series drm: display: Set fwnode for aux bus devices | expand

Commit Message

Saravana Kannan Oct. 23, 2024, 7:13 p.m. UTC
fwnode needs to be set for a device for fw_devlink to be able to
track/enforce its dependencies correctly. Without this, you'll see error
messages like this when the supplier has probed and tries to make sure
all its fwnode consumers are linked to it using device links:

mediatek-drm-dp 1c500000.edp-tx: Failed to create device link (0x180) with backlight-lcd0
tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180) with 1-0008

Reported-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
Closes: https://lore.kernel.org/all/7b995947-4540-4b17-872e-e107adca4598@notapiano/
Tested-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
Reported-by: Jon Hunter <jonathanh@nvidia.com>
Closes: https://lore.kernel.org/all/20240910130019.35081-1-jonathanh@nvidia.com/
Signed-off-by: Saravana Kannan <saravanak@google.com>
---

Don't pull this into stable branches unless its causing a regression in
older LTS branches. fw_devlink code is complicated and it might end up
with missing dependencies picking up changes piecemeal.

-Saravana


 drivers/gpu/drm/display/drm_dp_aux_bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Nícolas F. R. A. Prado Oct. 23, 2024, 7:55 p.m. UTC | #1
On Wed, Oct 23, 2024 at 12:13:36PM -0700, Saravana Kannan wrote:
> fwnode needs to be set for a device for fw_devlink to be able to
> track/enforce its dependencies correctly. Without this, you'll see error
> messages like this when the supplier has probed and tries to make sure
> all its fwnode consumers are linked to it using device links:
> 
> mediatek-drm-dp 1c500000.edp-tx: Failed to create device link (0x180) with backlight-lcd0
> tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180) with 1-0008
> 
> Reported-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> Closes: https://lore.kernel.org/all/7b995947-4540-4b17-872e-e107adca4598@notapiano/
> Tested-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> Reported-by: Jon Hunter <jonathanh@nvidia.com>
> Closes: https://lore.kernel.org/all/20240910130019.35081-1-jonathanh@nvidia.com/

Hi Saravana,

the issue faced by Jon needs the exact same change but in a different place,
drivers/phy/tegra/xusb.c, which I posted at:
https://lore.kernel.org/all/f979aff2-34f4-4f6d-bb9a-03a02afc4635@notapiano/

So we need two separate patches, one for each issue. Feel free to add that to
this series. (I could send it myself, but I think it makes more sense to keep
them together)

Thanks,
Nícolas
Saravana Kannan Oct. 24, 2024, 6:22 a.m. UTC | #2
On Wed, Oct 23, 2024 at 12:56 PM Nícolas F. R. A. Prado
<nfraprado@collabora.com> wrote:
>
> On Wed, Oct 23, 2024 at 12:13:36PM -0700, Saravana Kannan wrote:
> > fwnode needs to be set for a device for fw_devlink to be able to
> > track/enforce its dependencies correctly. Without this, you'll see error
> > messages like this when the supplier has probed and tries to make sure
> > all its fwnode consumers are linked to it using device links:
> >
> > mediatek-drm-dp 1c500000.edp-tx: Failed to create device link (0x180) with backlight-lcd0
> > tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180) with 1-0008
> >
> > Reported-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> > Closes: https://lore.kernel.org/all/7b995947-4540-4b17-872e-e107adca4598@notapiano/
> > Tested-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> > Reported-by: Jon Hunter <jonathanh@nvidia.com>
> > Closes: https://lore.kernel.org/all/20240910130019.35081-1-jonathanh@nvidia.com/
>
> Hi Saravana,
>
> the issue faced by Jon needs the exact same change but in a different place,
> drivers/phy/tegra/xusb.c, which I posted at:
> https://lore.kernel.org/all/f979aff2-34f4-4f6d-bb9a-03a02afc4635@notapiano/

Ah sorry, I was in a hurry and missed the fact it was a different file.

>
> So we need two separate patches, one for each issue. Feel free to add that to
> this series. (I could send it myself, but I think it makes more sense to keep
> them together)

Sent a new series. Thanks for the heads up and the fix for Jon's issue.

-Saravana
AngeloGioacchino Del Regno Oct. 24, 2024, 11:35 a.m. UTC | #3
Il 23/10/24 21:13, Saravana Kannan ha scritto:
> fwnode needs to be set for a device for fw_devlink to be able to
> track/enforce its dependencies correctly. Without this, you'll see error
> messages like this when the supplier has probed and tries to make sure
> all its fwnode consumers are linked to it using device links:
> 
> mediatek-drm-dp 1c500000.edp-tx: Failed to create device link (0x180) with backlight-lcd0
> tegra-xusb-padctl 3520000.padctl: Failed to create device link (0x180) with 1-0008
> 
> Reported-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> Closes: https://lore.kernel.org/all/7b995947-4540-4b17-872e-e107adca4598@notapiano/
> Tested-by: "Nícolas F. R. A. Prado" <nfraprado@collabora.com>
> Reported-by: Jon Hunter <jonathanh@nvidia.com>
> Closes: https://lore.kernel.org/all/20240910130019.35081-1-jonathanh@nvidia.com/
> Signed-off-by: Saravana Kannan <saravanak@google.com>
> ---

On MT8186, MT8192, MT8195 Chromebooks:

Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/display/drm_dp_aux_bus.c b/drivers/gpu/drm/display/drm_dp_aux_bus.c
index d810529ebfb6..ec7eac6b595f 100644
--- a/drivers/gpu/drm/display/drm_dp_aux_bus.c
+++ b/drivers/gpu/drm/display/drm_dp_aux_bus.c
@@ -292,7 +292,7 @@  int of_dp_aux_populate_bus(struct drm_dp_aux *aux,
 	aux_ep->dev.parent = aux->dev;
 	aux_ep->dev.bus = &dp_aux_bus_type;
 	aux_ep->dev.type = &dp_aux_device_type_type;
-	aux_ep->dev.of_node = of_node_get(np);
+	device_set_node(&aux_ep->dev, of_fwnode_handle(of_node_get(np)));
 	dev_set_name(&aux_ep->dev, "aux-%s", dev_name(aux->dev));
 
 	ret = device_register(&aux_ep->dev);