search for: msi_write_message

Displaying 17 results from an estimated 17 matches for "msi_write_message".

2014 Jul 30
4
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...*msi, struct msix_entry *entries); >> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); >> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); >> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); >> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); >> void (*msi_set_intx)(struct msi_irqs *msi, int enable); >> }; >> struct msi_ops provides several hook functions, generic MSI driver will call >> the hook functions to access device specific registers. PCI devices will...
2014 Jul 30
4
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...*msi, struct msix_entry *entries); >> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); >> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); >> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); >> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); >> void (*msi_set_intx)(struct msi_irqs *msi, int enable); >> }; >> struct msi_ops provides several hook functions, generic MSI driver will call >> the hook functions to access device specific registers. PCI devices will...
2014 Jul 30
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...s); >>>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); >>>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); >>>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); >>>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); >>>> void (*msi_set_intx)(struct msi_irqs *msi, int enable); >>>> }; >>>> struct msi_ops provides several hook functions, generic MSI driver will call >>>> the hook functions to access device speci...
2014 Jul 30
1
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...ix_entry *entries); >>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); >>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); >>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); >>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); >>> void (*msi_set_intx)(struct msi_irqs *msi, int enable); >>> }; >>> struct msi_ops provides several hook functions, generic MSI driver will call >>> the hook functions to access device specific registers. P...
2014 Jul 30
1
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...ix_entry *entries); >>> u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); >>> u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); >>> void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); >>> void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); >>> void (*msi_set_intx)(struct msi_irqs *msi, int enable); >>> }; >>> struct msi_ops provides several hook functions, generic MSI driver will call >>> the hook functions to access device specific registers. P...
2014 Aug 01
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...hink we should touch the PCI interfaces at this point. > > With the other operations, I think they should all take a 'struct device *' > > as the first argument for convenience and consistency. I don't think you actually > > need msi_read_message(), and we could avoid msi_write_message() by doing it > > the other way round. > > > > There only two functions use the read_msi_msg(), because every msi_desc has > a struct msi_msg, and it caches the msi address and data. I will consider to > retrieve the msg from cached msi_msg, then we can avoid the msi_read_...
2014 Jul 29
0
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...(struct msi_irqs *msi, struct msix_entry *entries); > u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); > u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); > void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); > void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); > void (*msi_set_intx)(struct msi_irqs *msi, int enable); > }; > struct msi_ops provides several hook functions, generic MSI driver will call > the hook functions to access device specific registers. PCI devices will share > the s...
2014 Jul 26
0
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...i_msg(unsigned int irq, struct msi_msg *msg) +{ + struct msi_desc *entry = irq_get_msi_desc(irq); + + __get_cached_msi_msg(entry, msg); +} + +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) +{ + struct msi_irqs *msi = entry->msi; + + if (!msi || !msi->ops || !msi->ops->msi_write_message) + return; + msi->ops->msi_write_message(entry, msg); +} + +void write_msi_msg(unsigned int irq, struct msi_msg *msg) +{ + struct msi_desc *entry = irq_get_msi_desc(irq); + + __write_msi_msg(entry, msg); +} + +void free_msi_irqs(struct msi_irqs *msi) +{ + struct msi_desc *entry, *tmp; + + li...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...t; + struct msi_desc *entry = irq_get_msi_desc(irq); > + > + __get_cached_msi_msg(entry, msg); > +} > + > +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) > +{ > + struct msi_irqs *msi = entry->msi; > + > + if (!msi || !msi->ops || !msi->ops->msi_write_message) > + return; > + msi->ops->msi_write_message(entry, msg); > +} > + > +void write_msi_msg(unsigned int irq, struct msi_msg *msg) > +{ > + struct msi_desc *entry = irq_get_msi_desc(irq); > + > + __write_msi_msg(entry, msg); > +} > + > +void free_msi_irqs(str...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...t; + struct msi_desc *entry = irq_get_msi_desc(irq); > + > + __get_cached_msi_msg(entry, msg); > +} > + > +void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg) > +{ > + struct msi_irqs *msi = entry->msi; > + > + if (!msi || !msi->ops || !msi->ops->msi_write_message) > + return; > + msi->ops->msi_write_message(entry, msg); > +} > + > +void write_msi_msg(unsigned int irq, struct msi_msg *msg) > +{ > + struct msi_desc *entry = irq_get_msi_desc(irq); > + > + __write_msi_msg(entry, msg); > +} > + > +void free_msi_irqs(str...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...struct msi_desc *entry); int msix_setup_entries(struct msi_irqs *msi, struct msix_entry *entries); u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); void (*msi_set_intx)(struct msi_irqs *msi, int enable); }; struct msi_ops provides several hook functions, generic MSI driver will call the hook functions to access device specific registers. PCI devices will share the same msi_ops, because they have t...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
...struct msi_desc *entry); int msix_setup_entries(struct msi_irqs *msi, struct msix_entry *entries); u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); void (*msi_read_message)(struct msi_desc *desc, struct msi_msg *msg); void (*msi_write_message)(struct msi_desc *desc, struct msi_msg *msg); void (*msi_set_intx)(struct msi_irqs *msi, int enable); }; struct msi_ops provides several hook functions, generic MSI driver will call the hook functions to access device specific registers. PCI devices will share the same msi_ops, because they have t...
2014 Aug 20
2
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
> -----Original Message----- > From: linux-pci-owner at vger.kernel.org [mailto:linux-pci-owner at vger.kernel.org] > On Behalf Of Yijing Wang > Sent: Wednesday, August 20, 2014 11:59 AM > To: Bhushan Bharat-R65777; Basu Arnab-B45036 > Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-pci at vger.kernel.org; > Paul.Mundt at huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm-
2014 Aug 20
2
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
> -----Original Message----- > From: linux-pci-owner at vger.kernel.org [mailto:linux-pci-owner at vger.kernel.org] > On Behalf Of Yijing Wang > Sent: Wednesday, August 20, 2014 11:59 AM > To: Bhushan Bharat-R65777; Basu Arnab-B45036 > Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-pci at vger.kernel.org; > Paul.Mundt at huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm-
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...uct msi_ops pci_msi = { > + .msi_set_enable = msi_set_enable, > + .msi_setup_entry = msi_setup_entry, > + .msix_setup_entries = msix_setup_entries, > + .msi_mask_irq = default_msi_mask_irq, > + .msix_mask_irq = default_msix_mask_irq, > + .msi_read_message = __read_msi_msg, > + .msi_write_message = __write_msi_msg, > + .msi_set_intx = pci_intx_for_msi, > +}; Ahh, want to be sure I am understanding this correctly. So if I have a non-pci driver "xyz" which wants to use separate ops then I need to have a all these functions in that driver. Something like driver/xyz/msi.c Tha...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...uct msi_ops pci_msi = { > + .msi_set_enable = msi_set_enable, > + .msi_setup_entry = msi_setup_entry, > + .msix_setup_entries = msix_setup_entries, > + .msi_mask_irq = default_msi_mask_irq, > + .msix_mask_irq = default_msix_mask_irq, > + .msi_read_message = __read_msi_msg, > + .msi_write_message = __write_msi_msg, > + .msi_set_intx = pci_intx_for_msi, > +}; Ahh, want to be sure I am understanding this correctly. So if I have a non-pci driver "xyz" which wants to use separate ops then I need to have a all these functions in that driver. Something like driver/xyz/msi.c Tha...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...ev(struct pci_dev *dev) +static struct msi_ops pci_msi = { + .msi_set_enable = msi_set_enable, + .msi_setup_entry = msi_setup_entry, + .msix_setup_entries = msix_setup_entries, + .msi_mask_irq = default_msi_mask_irq, + .msix_mask_irq = default_msix_mask_irq, + .msi_read_message = __read_msi_msg, + .msi_write_message = __write_msi_msg, + .msi_set_intx = pci_intx_for_msi, +}; + +struct msi_irqs *alloc_msi_irqs(void *data, struct msi_ops *ops) { - INIT_LIST_HEAD(&dev->msi_list); + struct msi_irqs *msi; + + msi = kzalloc(sizeof(struct msi_irqs), GFP_KERNEL); + if (!msi) + return NULL; + INIT_LIST_HEAD(...