Re: [PATCH RFC] drm/bridge: panel: Add device_link between panel and master drm device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 21, 2018 at 12:21:50AM +0200, Jyri Sarha wrote:
> @@ -94,6 +114,8 @@ static void panel_bridge_detach(struct drm_bridge *bridge)
>  	struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
>  
>  	drm_panel_detach(panel_bridge->panel);
> +
> +	device_link_del(panel_bridge->link);

No, you've set the DL_FLAG_AUTOREMOVE flag, so you'll end up removing
the link twice, which oopses.

It's either DL_FLAG_AUTOREMOVE or device_link_del(), not both.


> +static int panel_bridge_link_to_master(struct panel_bridge *panel_bridge)
> +{
> +	struct device *mdev = panel_bridge->bridge.dev->dev;
> +	struct device *pdev = panel_bridge->panel->dev;
> +	u32 flags = DL_FLAG_AUTOREMOVE;
> +
> +	panel_bridge->link = device_link_add(mdev, pdev, flags);
> +	if (!panel_bridge->link) {
> +		dev_err(pdev, "failed to link panel %s to %s\n",
> +			dev_name(pdev), dev_name(mdev));

You're printing two instances of pdev's name in the log message,
one should be sufficient.

Also, you've mixed up the order: mdev is the consumer, pdev the
supplier.

(Bikeshed:  The DL_FLAG_AUTOREMOVE would still fit within 80 chars
on the line with device_link_add() and the flags variable wouldn't
have to be declared then.  Your call.)

Thanks,

Lukas
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux