瀏覽代碼

ALSA: asihpi: Turn off msg/resp logging after DSP has crashed.

Prevents spewing of useless messages if app keeps trying to
access the card.

Signed-off-by: Eliot Blennerhassett <eliot@blennerhassett.gen.nz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Eliot Blennerhassett 10 年之前
父節點
當前提交
5bc91f5b3c
共有 1 個文件被更改,包括 12 次插入3 次删除
  1. 12 3
      sound/pci/asihpi/hpimsgx.c

+ 12 - 3
sound/pci/asihpi/hpimsgx.c

@@ -1,7 +1,7 @@
 /******************************************************************************
 /******************************************************************************
 
 
     AudioScience HPI driver
     AudioScience HPI driver
-    Copyright (C) 1997-2011  AudioScience Inc. <support@audioscience.com>
+    Copyright (C) 1997-2014  AudioScience Inc. <support@audioscience.com>
 
 
     This program is free software; you can redistribute it and/or modify
     This program is free software; you can redistribute it and/or modify
     it under the terms of version 2 of the GNU General Public License as
     it under the terms of version 2 of the GNU General Public License as
@@ -35,6 +35,7 @@ static struct pci_device_id asihpi_pci_tbl[] = {
 static struct hpios_spinlock msgx_lock;
 static struct hpios_spinlock msgx_lock;
 
 
 static hpi_handler_func *hpi_entry_points[HPI_MAX_ADAPTERS];
 static hpi_handler_func *hpi_entry_points[HPI_MAX_ADAPTERS];
+static int logging_enabled = 1;
 
 
 static hpi_handler_func *hpi_lookup_entry_point_function(const struct hpi_pci
 static hpi_handler_func *hpi_lookup_entry_point_function(const struct hpi_pci
 	*pci_info)
 	*pci_info)
@@ -312,7 +313,9 @@ static void instream_message(struct hpi_message *phm,
 void hpi_send_recv_ex(struct hpi_message *phm, struct hpi_response *phr,
 void hpi_send_recv_ex(struct hpi_message *phm, struct hpi_response *phr,
 	void *h_owner)
 	void *h_owner)
 {
 {
-	HPI_DEBUG_MESSAGE(DEBUG, phm);
+
+	if (logging_enabled)
+		HPI_DEBUG_MESSAGE(DEBUG, phm);
 
 
 	if (phm->type != HPI_TYPE_REQUEST) {
 	if (phm->type != HPI_TYPE_REQUEST) {
 		hpi_init_response(phr, phm->object, phm->function,
 		hpi_init_response(phr, phm->object, phm->function,
@@ -352,8 +355,14 @@ void hpi_send_recv_ex(struct hpi_message *phm, struct hpi_response *phr,
 		hw_entry_point(phm, phr);
 		hw_entry_point(phm, phr);
 		break;
 		break;
 	}
 	}
-	HPI_DEBUG_RESPONSE(phr);
 
 
+	if (logging_enabled)
+		HPI_DEBUG_RESPONSE(phr);
+
+	if (phr->error >= HPI_ERROR_DSP_COMMUNICATION) {
+		hpi_debug_level_set(HPI_DEBUG_LEVEL_ERROR);
+		logging_enabled = 0;
+	}
 }
 }
 
 
 static void adapter_open(struct hpi_message *phm, struct hpi_response *phr)
 static void adapter_open(struct hpi_message *phm, struct hpi_response *phr)