sound: hda_intel: add card number to irq description
PATCH 1/1 sound: hda_intel: add card number to irq description
Currently the info in /proc/interrupts doesn't allow to figure out which interrupt belongs to which card (HDMI, PCH, ..).
Therefore add card details to the interrupt description. With the patch the info in /proc/interrupts looks like this:
PCI-MSI 442368-edge snd_hda_intel:card1
PCI-MSI 49152-edge snd_hda_intel:card0
This could be partially reused for the hda_tegra driver as it also uses struct azx.
--- sound/pci/hda/hda_controller.h | 2 ++ sound/pci/hda/hda_intel.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-)
sound/pci/hda/hda_controller.h +2 -0
@@ -125,6 +125,8 @@ struct azx {int num_streams;const int *jackpoll_ms;/* per-card jack poll interval */ +char irq_descr[32 ];/* Interrupt description */ +/* Register interaction. */ const struct hda_controller_ops *ops;
sound/pci/hda/hda_intel.c +3 -1
@@ -725,7 +725,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)if (request_irq (chip->pci->irq, azx_interrupt, chip->msi ?0 :IRQF_SHARED , -KBUILD_MODNAME , chip)) { + chip->irq_descr, chip)) {dev_err (chip->card->dev,"unable to grab IRQ %d, disabling device\n" , chip->pci->irq);
@@ -1605,6 +1605,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,check_msi (chip); chip->dev_index = dev; chip->jackpoll_ms = jackpoll_ms; +snprintf (chip->irq_descr,sizeof (chip->irq_descr),"%s:%s" , +KBUILD_MODNAME ,dev_name (&card->card_dev));INIT_LIST_HEAD (&chip->pcm_list);INIT_WORK (&hda->irq_pending_work, azx_irq_pending_work);INIT_LIST_HEAD (&hda->list);
Signature · 1 line
2.6.4
Quoted 6 lines · Heiner Kallweit
Currently the info in
/proc/interruptsdoesn't allow to figure out which interrupt belongs to which card (HDMI, PCH, ..).
Therefore add card details to the interrupt description. With the patch the info in/proc/interruptslooks like this:
Quoted 7 lines
PCI-MSI 442368-edge snd_hda_intel:card1
PCI-MSI 49152-edge snd_hda_intel:card0This could be partially reused for the
hda_tegradriver as it also uses struct azx.Signed-off-by Heiner Kallweit <[email protected]>
Thanks for the patch. The change here itself isn't wrong, per se. It's an improvement indeed.
However, I wonder whether this needs to be implemented in that way -- namely, driver-specific way. This problem is common in most sound drivers that support multiple instances. Can we have a solution that can be shared more?
Takashi
Quoted 44 lines
--- sound/pci/hda/hda_controller.h | 2 ++ sound/pci/hda/hda_intel.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-)sound/pci/hda/hda_controller.h +2
-0@@ -125,6 +125,8 @@ struct azx {int num_streams;const int *jackpoll_ms;/* per-card jack poll interval */ +char irq_descr[32 ];/* Interrupt description */ +/* Register interaction. */ const struct hda_controller_ops *ops;sound/pci/hda/hda_intel.c +3
-1@@ -725,7 +725,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)if (request_irq (chip->pci->irq, azx_interrupt, chip->msi ?0 :IRQF_SHARED , -KBUILD_MODNAME , chip)) { + chip->irq_descr, chip)) {dev_err (chip->card->dev,"unable to grab IRQ %d, disabling device\n" , chip->pci->irq);@@ -1605,6 +1605,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,check_msi (chip); chip->dev_index = dev; chip->jackpoll_ms = jackpoll_ms; +snprintf (chip->irq_descr,sizeof (chip->irq_descr),"%s:%s" , +KBUILD_MODNAME ,dev_name (&card->card_dev));INIT_LIST_HEAD (&chip->pcm_list);INIT_WORK (&hda->irq_pending_work, azx_irq_pending_work);INIT_LIST_HEAD (&hda->list);Signature · 1 line
2.6.4
Am 22.12.2015 um 10:13 schrieb Takashi Iwai:
Quoted 16 lines
Quoted 6 lines · Heiner Kallweit
Currently the info in
/proc/interruptsdoesn't allow to figure out which interrupt belongs to which card (HDMI, PCH, ..).
Therefore add card details to the interrupt description. With the patch the info in/proc/interruptslooks like this:Quoted 7 lines
PCI-MSI 442368-edge snd_hda_intel:card1
PCI-MSI 49152-edge snd_hda_intel:card0This could be partially reused for the
hda_tegradriver as it also uses struct azx.Signed-off-by Heiner Kallweit <[email protected]>
Quoted 8 lines
Thanks for the patch. The change here itself isn't wrong, per se. It's an improvement indeed.
However, I wonder whether this needs to be implemented in that way -- namely, driver-specific way. This problem is common in most sound drivers that support multiple instances. Can we have a solution that can be shared more?
Indeed, we could implement the extension one layer below in struct snd_card. Then it would be more generic. I'll send a v2.
Heiner
Quoted 48 lines
Takashi
Quoted 44 lines
--- sound/pci/hda/hda_controller.h | 2 ++ sound/pci/hda/hda_intel.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-)sound/pci/hda/hda_controller.h +2
-0@@ -125,6 +125,8 @@ struct azx {int num_streams;const int *jackpoll_ms;/* per-card jack poll interval */ +char irq_descr[32 ];/* Interrupt description */ +/* Register interaction. */ const struct hda_controller_ops *ops;sound/pci/hda/hda_intel.c +3
-1@@ -725,7 +725,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)if (request_irq (chip->pci->irq, azx_interrupt, chip->msi ?0 :IRQF_SHARED , -KBUILD_MODNAME , chip)) { + chip->irq_descr, chip)) {dev_err (chip->card->dev,"unable to grab IRQ %d, disabling device\n" , chip->pci->irq);@@ -1605,6 +1605,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,check_msi (chip); chip->dev_index = dev; chip->jackpoll_ms = jackpoll_ms; +snprintf (chip->irq_descr,sizeof (chip->irq_descr),"%s:%s" , +KBUILD_MODNAME ,dev_name (&card->card_dev));INIT_LIST_HEAD (&chip->pcm_list);INIT_WORK (&hda->irq_pending_work, azx_irq_pending_work);INIT_LIST_HEAD (&hda->list);Signature · 1 line
2.6.4