Message ID | CA2BBD087345B6D1+20240823095708.3237375-1-wangyuli@uniontech.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] PCI: Add function 0 DMA alias quirk for Glenfly arise chip | expand |
On Fri, 23 Aug 2024 11:57:08 +0200, WangYuli wrote: > > Add DMA support for audio function of Glenfly arise chip, > which uses request id of function 0. > > Link: https://lore.kernel.org/all/20240822185617.GA344785@bhelgaas/ > Signed-off-by: SiyuLi <siyuli@glenfly.com> > Signed-off-by: WangYuli <wangyuli@uniontech.com> For the sound part: Reviewed-by: Takashi Iwai <tiwai@suse.de> thanks, Takashi > --- > drivers/pci/quirks.c | 6 ++++++ > include/linux/pci_ids.h | 4 ++++ > sound/pci/hda/hda_intel.c | 2 +- > 3 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index dd75c7646bb7..7aad5311326d 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -4259,6 +4259,12 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); > > +/* > + * Some Glenfly chips use function 0 as the PCIe requester ID for DMA too. > + */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D40, quirk_dma_func0_alias); > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D41, quirk_dma_func0_alias); > + > static void quirk_dma_func1_alias(struct pci_dev *dev) > { > if (PCI_FUNC(dev->devfn) != 1) > diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h > index e388c8b1cbc2..536465196d09 100644 > --- a/include/linux/pci_ids.h > +++ b/include/linux/pci_ids.h > @@ -2661,6 +2661,10 @@ > #define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 > #define PCI_DEVICE_ID_DCI_PCCOM2 0x0004 > > +#define PCI_VENDOR_ID_GLENFLY 0x6766 > +#define PCI_DEVICE_ID_GLENFLY_ARISE10C0_AUDIO 0x3D40 > +#define PCI_DEVICE_ID_GLENFLY_ARISE1020_AUDIO 0x3D41 > + > #define PCI_VENDOR_ID_INTEL 0x8086 > #define PCI_DEVICE_ID_INTEL_EESSC 0x0008 > #define PCI_DEVICE_ID_INTEL_HDA_CML_LP 0x02c8 > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c > index b33602e64d17..e8958a464647 100644 > --- a/sound/pci/hda/hda_intel.c > +++ b/sound/pci/hda/hda_intel.c > @@ -2671,7 +2671,7 @@ static const struct pci_device_id azx_ids[] = { > .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | > AZX_DCAPS_PM_RUNTIME }, > /* GLENFLY */ > - { PCI_DEVICE(0x6766, PCI_ANY_ID), > + { PCI_DEVICE(PCI_VENDOR_ID_GLENFLY, PCI_ANY_ID), > .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, > .class_mask = 0xffffff, > .driver_data = AZX_DRIVER_GFHDMI | AZX_DCAPS_POSFIX_LPIB | > -- > 2.43.4 >
On Fri, Aug 23, 2024 at 05:57:08PM +0800, WangYuli wrote: > Add DMA support for audio function of Glenfly arise chip, > which uses request id of function 0. > > Link: https://lore.kernel.org/all/20240822185617.GA344785@bhelgaas/ > Signed-off-by: SiyuLi <siyuli@glenfly.com> > Signed-off-by: WangYuli <wangyuli@uniontech.com> Applied with Takashi's reviewed-by to pci/iommu for v6.12, thanks! I changed the hex to lower-case to match nearby code and dropped the #defines for PCI_DEVICE_ID_GLENFLY_ARISE10C0_AUDIO and PCI_DEVICE_ID_GLENFLY_ARISE1020_AUDIO since they aren't used. If those values are used in more places than the quirk, we can add them and use the #defines in all the places. > --- > drivers/pci/quirks.c | 6 ++++++ > include/linux/pci_ids.h | 4 ++++ > sound/pci/hda/hda_intel.c | 2 +- > 3 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index dd75c7646bb7..7aad5311326d 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -4259,6 +4259,12 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); > > +/* > + * Some Glenfly chips use function 0 as the PCIe requester ID for DMA too. > + */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D40, quirk_dma_func0_alias); > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D41, quirk_dma_func0_alias); > + > static void quirk_dma_func1_alias(struct pci_dev *dev) > { > if (PCI_FUNC(dev->devfn) != 1) > diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h > index e388c8b1cbc2..536465196d09 100644 > --- a/include/linux/pci_ids.h > +++ b/include/linux/pci_ids.h > @@ -2661,6 +2661,10 @@ > #define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 > #define PCI_DEVICE_ID_DCI_PCCOM2 0x0004 > > +#define PCI_VENDOR_ID_GLENFLY 0x6766 > +#define PCI_DEVICE_ID_GLENFLY_ARISE10C0_AUDIO 0x3D40 > +#define PCI_DEVICE_ID_GLENFLY_ARISE1020_AUDIO 0x3D41 > + > #define PCI_VENDOR_ID_INTEL 0x8086 > #define PCI_DEVICE_ID_INTEL_EESSC 0x0008 > #define PCI_DEVICE_ID_INTEL_HDA_CML_LP 0x02c8 > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c > index b33602e64d17..e8958a464647 100644 > --- a/sound/pci/hda/hda_intel.c > +++ b/sound/pci/hda/hda_intel.c > @@ -2671,7 +2671,7 @@ static const struct pci_device_id azx_ids[] = { > .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | > AZX_DCAPS_PM_RUNTIME }, > /* GLENFLY */ > - { PCI_DEVICE(0x6766, PCI_ANY_ID), > + { PCI_DEVICE(PCI_VENDOR_ID_GLENFLY, PCI_ANY_ID), > .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, > .class_mask = 0xffffff, > .driver_data = AZX_DRIVER_GFHDMI | AZX_DCAPS_POSFIX_LPIB | > -- > 2.43.4 >
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index dd75c7646bb7..7aad5311326d 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4259,6 +4259,12 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); +/* + * Some Glenfly chips use function 0 as the PCIe requester ID for DMA too. + */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D40, quirk_dma_func0_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_GLENFLY, 0x3D41, quirk_dma_func0_alias); + static void quirk_dma_func1_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 1) diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e388c8b1cbc2..536465196d09 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2661,6 +2661,10 @@ #define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 #define PCI_DEVICE_ID_DCI_PCCOM2 0x0004 +#define PCI_VENDOR_ID_GLENFLY 0x6766 +#define PCI_DEVICE_ID_GLENFLY_ARISE10C0_AUDIO 0x3D40 +#define PCI_DEVICE_ID_GLENFLY_ARISE1020_AUDIO 0x3D41 + #define PCI_VENDOR_ID_INTEL 0x8086 #define PCI_DEVICE_ID_INTEL_EESSC 0x0008 #define PCI_DEVICE_ID_INTEL_HDA_CML_LP 0x02c8 diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index b33602e64d17..e8958a464647 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2671,7 +2671,7 @@ static const struct pci_device_id azx_ids[] = { .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | AZX_DCAPS_PM_RUNTIME }, /* GLENFLY */ - { PCI_DEVICE(0x6766, PCI_ANY_ID), + { PCI_DEVICE(PCI_VENDOR_ID_GLENFLY, PCI_ANY_ID), .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, .class_mask = 0xffffff, .driver_data = AZX_DRIVER_GFHDMI | AZX_DCAPS_POSFIX_LPIB |