diff --git a/sound/pci/ctxfi/ctamixer.c b/sound/pci/ctxfi/ctamixer.c
index 119791a..859e996 100644
--- a/sound/pci/ctxfi/ctamixer.c
+++ b/sound/pci/ctxfi/ctamixer.c
@@ -259,7 +259,7 @@
 	}
 	spin_unlock_irqrestore(&mgr->mgr_lock, flags);
 	if (err) {
-		printk(KERN_ERR "Can't meet AMIXER resource request!\n");
+		printk(KERN_ERR "ctxfi: Can't meet AMIXER resource request!\n");
 		goto error;
 	}
 
@@ -413,7 +413,7 @@
 	}
 	spin_unlock_irqrestore(&mgr->mgr_lock, flags);
 	if (err) {
-		printk(KERN_ERR "Can't meet SUM resource request!\n");
+		printk(KERN_ERR "ctxfi: Can't meet SUM resource request!\n");
 		goto error;
 	}
 
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index f523450..ead104e 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -191,7 +191,7 @@
 	case SNDRV_PCM_FORMAT_S32_LE:
 		return SRC_SF_S32;
 	default:
-		printk(KERN_ERR "not recognized snd format is %d \n",
+		printk(KERN_ERR "ctxfi: not recognized snd format is %d \n",
 			snd_format);
 		return SRC_SF_S16;
 	}
@@ -1254,7 +1254,8 @@
 		err = alsa_dev_funcs[i].create(atc, i,
 				alsa_dev_funcs[i].public_name);
 		if (err) {
-			printk(KERN_ERR "Creating alsa device %d failed!\n", i);
+			printk(KERN_ERR "ctxfi: "
+			       "Creating alsa device %d failed!\n", i);
 			return err;
 		}
 	}
@@ -1289,7 +1290,8 @@
 
 		err = rsc_mgr_funcs[i].create(atc->hw, &atc->rsc_mgrs[i]);
 		if (err) {
-			printk(KERN_ERR "Failed to create rsc_mgr %d!!!\n", i);
+			printk(KERN_ERR "ctxfi: "
+			       "Failed to create rsc_mgr %d!!!\n", i);
 			return err;
 		}
 	}
@@ -1333,7 +1335,7 @@
 		err = daio_mgr->get_daio(daio_mgr, &da_desc,
 					(struct daio **)&atc->daios[i]);
 		if (err) {
-			printk(KERN_ERR "Failed to get DAIO "
+			printk(KERN_ERR "ctxfi: Failed to get DAIO "
 					"resource %d!!!\n", i);
 			return err;
 		}
@@ -1349,7 +1351,7 @@
 	err = daio_mgr->get_daio(daio_mgr, &da_desc,
 				(struct daio **)&atc->daios[i]);
 	if (err) {
-		printk(KERN_ERR "Failed to get S/PDIF-in resource!!!\n");
+		printk(KERN_ERR "ctxfi: Failed to get S/PDIF-in resource!!!\n");
 		return err;
 	}
 	atc->n_daio++;
@@ -1400,7 +1402,7 @@
 
 	err = ct_mixer_create(atc, (struct ct_mixer **)&atc->mixer);
 	if (err) {
-		printk(KERN_ERR "Failed to create mixer obj!!!\n");
+		printk(KERN_ERR "ctxfi: Failed to create mixer obj!!!\n");
 		return err;
 	}
 
@@ -1600,7 +1602,7 @@
 
 error1:
 	ct_atc_destroy(atc);
-	printk(KERN_ERR "Something wrong!!!\n");
+	printk(KERN_ERR "ctxfi: Something wrong!!!\n");
 	return err;
 }
 
diff --git a/sound/pci/ctxfi/cthw20k2.c b/sound/pci/ctxfi/cthw20k2.c
index 9c2d38b..7c24c2c 100644
--- a/sound/pci/ctxfi/cthw20k2.c
+++ b/sound/pci/ctxfi/cthw20k2.c
@@ -1144,7 +1144,7 @@
 		hw_write_20kx(hw, AUDIO_IO_TX_BLRCLK, 0x11111111);
 		hw_write_20kx(hw, AUDIO_IO_RX_BLRCLK, 0);
 	} else {
-		printk(KERN_ALERT "ERROR!!! Invalid sampling rate!!!\n");
+		printk(KERN_ALERT "ctxfi: ERROR!!! Invalid sampling rate!!!\n");
 		return -EINVAL;
 	}
 
@@ -1197,7 +1197,8 @@
 
 	/* Set up device page table */
 	if ((~0UL) == info->vm_pgt_phys) {
-		printk(KERN_ALERT "Wrong device page table page address!!!\n");
+		printk(KERN_ALERT "ctxfi: "
+		       "Wrong device page table page address!!!\n");
 		return -1;
 	}
 
@@ -1314,7 +1315,7 @@
 		break;
 	}
 	if (i >= 1000) {
-		printk(KERN_ALERT "PLL initialization failed!!!\n");
+		printk(KERN_ALERT "ctxfi: PLL initialization failed!!!\n");
 		return -EBUSY;
 	}
 
@@ -1338,7 +1339,7 @@
 			break;
 	}
 	if (!get_field(gctl, GCTL_AID)) {
-		printk(KERN_ALERT "Card Auto-init failed!!!\n");
+		printk(KERN_ALERT "ctxfi: Card Auto-init failed!!!\n");
 		return -EBUSY;
 	}
 
@@ -1762,7 +1763,7 @@
 	/* Initialize I2C */
 	err = I2CInit(hw, 0x1A, 1, 1);
 	if (err < 0) {
-		printk(KERN_ALERT "Failure to acquire I2C!!!\n");
+		printk(KERN_ALERT "ctxfi: Failure to acquire I2C!!!\n");
 		goto error;
 	}
 
@@ -1782,7 +1783,7 @@
 		I2CWrite(hw, MAKE_WM8775_ADDR(WM8775_MMC, 0x0A),
 						MAKE_WM8775_DATA(0x0A));
 	} else {
-		printk(KERN_ALERT "Invalid master sampling "
+		printk(KERN_ALERT "ctxfi: Invalid master sampling "
 				  "rate (msr %d)!!!\n", info->msr);
 		err = -EINVAL;
 		goto error;
@@ -1820,7 +1821,7 @@
 		I2CWrite(hw, MAKE_WM8775_ADDR(WM8775_AADCR, 0xCF),
 				MAKE_WM8775_DATA(0xCF)); /* No boost */
 	} else {
-		printk(KERN_ALERT "ERROR!!! Invalid input mux!!!\n");
+		printk(KERN_ALERT "ctxfi: ERROR!!! Invalid input mux!!!\n");
 		err = -EINVAL;
 		goto error;
 	}
@@ -1852,7 +1853,7 @@
 	dma_mask = CT_XFI_DMA_MASK;
 	if (pci_set_dma_mask(pci, dma_mask) < 0 ||
 	    pci_set_consistent_dma_mask(pci, dma_mask) < 0) {
-		printk(KERN_ERR "architecture does not support PCI "
+		printk(KERN_ERR "ctxfi: architecture does not support PCI "
 		"busmaster DMA with mask 0x%x\n", dma_mask);
 		err = -ENXIO;
 		goto error1;
diff --git a/sound/pci/ctxfi/ctmixer.c b/sound/pci/ctxfi/ctmixer.c
index c80d692..b795076 100644
--- a/sound/pci/ctxfi/ctmixer.c
+++ b/sound/pci/ctxfi/ctmixer.c
@@ -760,7 +760,7 @@
 	for (i = 0; i < (NUM_CT_SUMS * CHN_NUM); i++) {
 		err = sum_mgr->get_sum(sum_mgr, &sum_desc, &sum);
 		if (err) {
-			printk(KERN_ERR "Failed to get sum resources for "
+			printk(KERN_ERR "ctxfi:Failed to get sum resources for "
 					  "front output!\n");
 			break;
 		}
@@ -775,8 +775,8 @@
 	for (i = 0; i < (NUM_CT_AMIXERS * CHN_NUM); i++) {
 		err = amixer_mgr->get_amixer(amixer_mgr, &am_desc, &amixer);
 		if (err) {
-			printk(KERN_ERR "Failed to get amixer resources for "
-					  "mixer obj!\n");
+			printk(KERN_ERR "ctxfi:Failed to get amixer resources "
+			       "for mixer obj!\n");
 			break;
 		}
 		mixer->amixers[i] = amixer;
diff --git a/sound/pci/ctxfi/ctpcm.c b/sound/pci/ctxfi/ctpcm.c
index 73d4fdb..a64cb0e 100644
--- a/sound/pci/ctxfi/ctpcm.c
+++ b/sound/pci/ctxfi/ctpcm.c
@@ -284,7 +284,7 @@
 		err = atc->pcm_playback_prepare(atc, apcm);
 
 	if (err < 0) {
-		printk(KERN_ERR "Preparing pcm playback failed!!!\n");
+		printk(KERN_ERR "ctxfi: Preparing pcm playback failed!!!\n");
 		return err;
 	}
 
@@ -389,7 +389,7 @@
 
 	err = atc->pcm_capture_prepare(atc, apcm);
 	if (err < 0) {
-		printk(KERN_ERR "Preparing pcm capture failed!!!\n");
+		printk(KERN_ERR "ctxfi: Preparing pcm capture failed!!!\n");
 		return err;
 	}
 
@@ -477,7 +477,7 @@
 	err = snd_pcm_new(atc->card, name, device,
 			  playback_count, capture_count, &pcm);
 	if (err < 0) {
-		printk(KERN_ERR "snd_pcm_new failed!! Err=%d\n", err);
+		printk(KERN_ERR "ctxfi: snd_pcm_new failed!! Err=%d\n", err);
 		return err;
 	}
 
diff --git a/sound/pci/ctxfi/ctresource.c b/sound/pci/ctxfi/ctresource.c
index 414fc23..da21a71 100644
--- a/sound/pci/ctxfi/ctresource.c
+++ b/sound/pci/ctxfi/ctresource.c
@@ -162,12 +162,14 @@
 	case DAIO:
 		break;
 	default:
-		printk(KERN_ERR "Invalid resource type value %d!\n", type);
+		printk(KERN_ERR
+		       "ctxfi: Invalid resource type value %d!\n", type);
 		return -EINVAL;
 	}
 
 	if (err) {
-		printk(KERN_ERR "Failed to get resource control block!\n");
+		printk(KERN_ERR
+		       "ctxfi: Failed to get resource control block!\n");
 		return err;
 	}
 
@@ -190,8 +192,8 @@
 		case DAIO:
 			break;
 		default:
-			printk(KERN_ERR "Invalid resource type value %d!\n",
-					  rsc->type);
+			printk(KERN_ERR "ctxfi: "
+			       "Invalid resource type value %d!\n", rsc->type);
 			break;
 		}
 
@@ -233,13 +235,15 @@
 	case SUM:
 		break;
 	default:
-		printk(KERN_ERR "Invalid resource type value %d!\n", type);
+		printk(KERN_ERR
+		       "ctxfi: Invalid resource type value %d!\n", type);
 		err = -EINVAL;
 		goto error;
 	}
 
 	if (err) {
-		printk(KERN_ERR "Failed to get manager control block!\n");
+		printk(KERN_ERR
+		       "ctxfi: Failed to get manager control block!\n");
 		goto error;
 	}
 
@@ -282,8 +286,8 @@
 		case SUM:
 			break;
 		default:
-			printk(KERN_ERR "Invalid resource type value %d!\n",
-					  mgr->type);
+			printk(KERN_ERR "ctxfi: "
+			       "Invalid resource type value %d!\n", mgr->type);
 			break;
 		}
 
diff --git a/sound/pci/ctxfi/ctsrc.c b/sound/pci/ctxfi/ctsrc.c
index d3e0ad5..77e118c 100644
--- a/sound/pci/ctxfi/ctsrc.c
+++ b/sound/pci/ctxfi/ctsrc.c
@@ -431,7 +431,7 @@
 
 	spin_unlock_irqrestore(&mgr->mgr_lock, flags);
 	if (err) {
-		printk(KERN_ERR "Can't meet SRC resource request!\n");
+		printk(KERN_ERR "ctxfi: Can't meet SRC resource request!\n");
 		return err;
 	}
 
@@ -740,7 +740,7 @@
 	}
 	spin_unlock_irqrestore(&mgr->mgr_lock, flags);
 	if (err) {
-		printk(KERN_ERR "Can't meet SRCIMP resource request!\n");
+		printk(KERN_ERR "ctxfi: Can't meet SRCIMP resource request!\n");
 		goto error1;
 	}
 
diff --git a/sound/pci/ctxfi/ctvmem.c b/sound/pci/ctxfi/ctvmem.c
index 46ca04c..cecf77e 100644
--- a/sound/pci/ctxfi/ctvmem.c
+++ b/sound/pci/ctxfi/ctvmem.c
@@ -121,12 +121,13 @@
 
 	/* do mapping */
 	if ((unsigned long)host_addr >= VMALLOC_START) {
-		printk(KERN_ERR "Fail! Not support vmalloced addr now!\n");
+		printk(KERN_ERR "ctxfi: "
+		       "Fail! Not support vmalloced addr now!\n");
 		return NULL;
 	}
 
 	if (size > vm->size) {
-		printk(KERN_ERR "Fail! No sufficient device virtural "
+		printk(KERN_ERR "ctxfi: Fail! No sufficient device virtural "
 				  "memory space available!\n");
 		return NULL;
 	}
@@ -139,7 +140,7 @@
 
 	block = get_vm_block(vm, (pages << PAGE_SHIFT));
 	if (block == NULL) {
-		printk(KERN_ERR "No virtual memory block that is big "
+		printk(KERN_ERR "ctxfi: No virtual memory block that is big "
 				  "enough to allocate!\n");
 		return NULL;
 	}
diff --git a/sound/pci/ctxfi/xfi.c b/sound/pci/ctxfi/xfi.c
index b7368fd..19310ed 100644
--- a/sound/pci/ctxfi/xfi.c
+++ b/sound/pci/ctxfi/xfi.c
@@ -57,16 +57,17 @@
 	if (err)
 		return err;
 	if ((reference_rate != 48000) && (reference_rate != 44100)) {
-		printk(KERN_ERR "Invalid reference_rate value %u!!!\n"
-				"The valid values for reference_rate "
-				"are 48000 and 44100.\nValue 48000 is "
-				"assumed.\n", reference_rate);
+		printk(KERN_ERR "ctxfi: Invalid reference_rate value %u!!!\n",
+		       reference_rate);
+		printk(KERN_ERR "ctxfi: The valid values for reference_rate "
+		       "are 48000 and 44100, Value 48000 is assumed.\n");
 		reference_rate = 48000;
 	}
 	if ((multiple != 1) && (multiple != 2)) {
-		printk(KERN_ERR "Invalid multiple value %u!!!\nThe valid "
-				"values for multiple are 1 and 2.\nValue 2 "
-				"is assumed.\n", multiple);
+		printk(KERN_ERR "ctxfi: Invalid multiple value %u!!!\n",
+		       multiple);
+		printk(KERN_ERR "ctxfi: The valid values for multiple are "
+		       "1 and 2, Value 2 is assumed.\n");
 		multiple = 2;
 	}
 	err = ct_atc_create(card, pci, reference_rate, multiple, &atc);
