Hi Heikki, > -----Original Message----- > From: linux-usb-owner@xxxxxxxxxxxxxxx <linux-usb-owner@xxxxxxxxxxxxxxx> On > Behalf Of Heikki Krogerus > Sent: Monday, April 15, 2019 5:10 AM > To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: Ajay Gupta <ajayg@xxxxxxxxxx>; linux-usb@xxxxxxxxxxxxxxx > Subject: [PATCH v2 6/7] usb: typec: displayport: Export probe and remove > functions > > From: Ajay Gupta <ajayg@xxxxxxxxxx> > > VirtualLink standard extends the DisplayPort Alt Mode by utilizing also the USB 2 > pins on the USB Type-C connector. > It uses the same messages as DisplayPort, but not the DP SVID. At the time of > writing, USB IF has not assigned a Standard ID (SID) for VirtualLink, so the > manufacturers of VirtualLink adapters use their Vendor IDs as the SVID. > > Since the SVID specific communication is exactly the same as with DisplayPort > alternate mode, there is no need to implement separate driver for VirtualLink. > We'll handle the current VirtualLink adapters with probe drivers, and once there > is SVID assigned for it, we add it to the displayport alt mode driver. > > To support probing drivers, exporting the probe and remove functions, and also > changing the DP_HEADER helper macro to use the SVID of the alternate mode > device instead of the DisplayPort alt mode SVID. > > Suggested-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > Signed-off-by: Ajay Gupta <ajayg@xxxxxxxxxx> > Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > --- > drivers/usb/typec/altmodes/displayport.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) Looks like you missed adding displayport.h file. It is available in original patch below, https://marc.info/?l=linux-usb&m=155492587224379&w=2 Thanks > nvpublic > diff --git a/drivers/usb/typec/altmodes/displayport.c > b/drivers/usb/typec/altmodes/displayport.c > index 1b2afeb1eeb6..4092248a5936 100644 > --- a/drivers/usb/typec/altmodes/displayport.c > +++ b/drivers/usb/typec/altmodes/displayport.c > @@ -14,7 +14,7 @@ > #include <linux/usb/pd_vdo.h> > #include <linux/usb/typec_dp.h> > > -#define DP_HEADER(cmd) (VDO(USB_TYPEC_DP_SID, 1, > cmd) | \ > +#define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \ > VDO_OPOS(USB_TYPEC_DP_MODE)) > > enum { > @@ -155,7 +155,7 @@ static int dp_altmode_configured(struct dp_altmode > *dp) > > static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf) { > - u32 header = DP_HEADER(DP_CMD_CONFIGURE); > + u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE); > int ret; > > ret = typec_altmode_notify(dp->alt, TYPEC_STATE_SAFE, &dp->data); > @@ -193,7 +193,7 @@ static void dp_altmode_work(struct work_struct *work) > dev_err(&dp->alt->dev, "failed to enter mode\n"); > break; > case DP_STATE_UPDATE: > - header = DP_HEADER(DP_CMD_STATUS_UPDATE); > + header = DP_HEADER(dp, DP_CMD_STATUS_UPDATE); > vdo = 1; > ret = typec_altmode_vdm(dp->alt, header, &vdo, 2); > if (ret) > @@ -507,7 +507,7 @@ static const struct attribute_group dp_altmode_group = > { > .attrs = dp_altmode_attrs, > }; > > -static int dp_altmode_probe(struct typec_altmode *alt) > +int dp_altmode_probe(struct typec_altmode *alt) > { > const struct typec_altmode *port = typec_altmode_get_partner(alt); > struct dp_altmode *dp; > @@ -545,14 +545,16 @@ static int dp_altmode_probe(struct typec_altmode > *alt) > > return 0; > } > +EXPORT_SYMBOL_GPL(dp_altmode_probe); > > -static void dp_altmode_remove(struct typec_altmode *alt) > +void dp_altmode_remove(struct typec_altmode *alt) > { > struct dp_altmode *dp = typec_altmode_get_drvdata(alt); > > sysfs_remove_group(&alt->dev.kobj, &dp_altmode_group); > cancel_work_sync(&dp->work); > } > +EXPORT_SYMBOL_GPL(dp_altmode_remove); > > static const struct typec_device_id dp_typec_id[] = { > { USB_TYPEC_DP_SID, USB_TYPEC_DP_MODE }, > -- > 2.20.1