RE: [PATCH] mei: me: Add itouch device IDs for SPT / ICP

From: Winkler, Tomas
Date: Mon Jun 01 2020 - 17:25:32 EST


>
> >
> > > These device IDs can be found on Microsoft Surface devices.
> > >
> > > Signed-off-by: Dorian Stoll <dorian.stoll@xxxxxxx>
> >
> > This need to be done differently because of the server platforms conflict.
> > I have patches for that I will post short, though we are not
> > officially supporting those devices under Linux, It will be hard to maintain,
> as currently on the MS surface enables it as far as I know.
> >
>
> Thank you for your response!
>
> If you don't mind, could you elaborate on these devices not being supported
> under Linux? Is it just that the functionality they provide (Intel Precise Touch
> & Stylus / iTouch / IPTS) won't be supported? Because that I already know,
> and it is not the intent of this patch. Or do you mean that the entire MEI
> interface won't be supported for these devices?

Just the iTouch.

>
> Some context on this patch: I am part of a small team of volunteers who try
> to make the MS Surface devices usable under linux, including the
> touchscreen (which uses IPTS as of the Surface Pro 4).

Nice work.

> The IPTS driver connects to the device over the MEI bus, but the MEI device is
> provided by the iTouch devices. Currently we build our own kernels with this
> patch applied to allow the driver to work. All of this is loosely based on a
> driver that Intel published a few years ago.

Yes, I'm fully aware of that code base.

> Since the driver is otherwise pretty much standalone,
You do depend on i915, that's the hard part.
> my hope was that
> adding these IDs would make it easier to develop / install our driver without
> having to recompile the entire kernel (i.e. using DKMS). At least until the
> driver has matured enough and is ready for upstream submission itself.
> Especially since other iTouch devices have their device IDs added already.

Agree.

> That this would cause conflicts is unfortunate. Judging purely by your words
> - without having any deeper knowledge about the MEI bus - it seems that it
> might be possible to fix these conflicts? If thats true, I hope it would also be
> possible to add these IDs, so that just the MEI interface to IPTS becomes
> supported -

Yes, I'm working on that just now.

> I don't expect you to support the entire IPTS technology.

Yep, unfortunately it's not going to be funded by my wife.

> > > ---
> > > drivers/misc/mei/hw-me-regs.h | 2 ++
> > > drivers/misc/mei/pci-me.c | 2 ++
> > > 2 files changed, 4 insertions(+)
> > >
> > > diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-
> > > regs.h index 9392934e3a06..90e7d3020fa5 100644
> > > --- a/drivers/misc/mei/hw-me-regs.h
> > > +++ b/drivers/misc/mei/hw-me-regs.h
> > > @@ -59,6 +59,7 @@
> > >
> > > #define MEI_DEV_ID_SPT 0x9D3A /* Sunrise Point */
> > > #define MEI_DEV_ID_SPT_2 0x9D3B /* Sunrise Point 2 */
> > > +#define MEI_DEV_ID_SPT_4 0x9D3E /* Sunrise Point 4 (iTouch) */
> > > #define MEI_DEV_ID_SPT_H 0xA13A /* Sunrise Point H */
> > > #define MEI_DEV_ID_SPT_H_2 0xA13B /* Sunrise Point H 2 */
> > >
> > > @@ -90,6 +91,7 @@
> > > #define MEI_DEV_ID_CDF 0x18D3 /* Cedar Fork */
> > >
> > > #define MEI_DEV_ID_ICP_LP 0x34E0 /* Ice Lake Point LP */
> > > +#define MEI_DEV_ID_ICP_LP_4 0x34E4 /* Ice Lake Point LP 4 (iTouch)
> */
> > >
> > > #define MEI_DEV_ID_JSP_N 0x4DE0 /* Jasper Lake Point N */
> > >
> > > diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
> > > index
> > > a1ed375fed37..5e621e90d8d4 100644
> > > --- a/drivers/misc/mei/pci-me.c
> > > +++ b/drivers/misc/mei/pci-me.c
> > > @@ -68,6 +68,7 @@ static const struct pci_device_id mei_me_pci_tbl[]
> > > = {
> > >
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_SPT, MEI_ME_PCH8_CFG)},
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
> > > + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_4, MEI_ME_PCH8_CFG)},
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_CFG)},
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_CFG)},
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_SPS_CFG)},
> @@ -94,6
> > > +95,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H_3, MEI_ME_PCH8_CFG)},
> > >
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
> > > + {MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP_4, MEI_ME_PCH12_CFG)},
> > >
> > > {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)},
> > >
> > > --
> > > 2.26.2
> > >
> >
> >