From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 00/48] Rewrite kernel messages with standard printk helpers Date: Fri, 28 Feb 2014 07:28:06 +0100 Message-ID: References: <1393430030-26704-1-git-send-email-tiwai@suse.de> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id B51BE264FE8 for ; Fri, 28 Feb 2014 07:28:08 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Raymond Yau Cc: ALSA Development Mailing List List-Id: alsa-devel@alsa-project.org At Fri, 28 Feb 2014 11:15:36 +0800, Raymond Yau wrote: > > > > > > > > this is another long series of patches for trivial cleanups. > > > > This time, they replace the printk and snd_print*() calls in ALSA PCI > > > > and USB drivers with dev_err() and co. This will give nicer and more > > > > consistent outputs. > > > > > > > > The only drawback by these replacements is that alsa-info.sh won't be > > > > able to catch the dmesg lines because it doesn't contain any longer > > > > the word "ALSA", but only show the module name like "snd_intel8x0". > > > > > > > > I'm going to fix alsa-info.sh on git soon later, but if you guys think > > > > "oh no it's disaster!", let me know. We need to reconsider a better > > > > way to put the known markers (like explicitly putting "ALSA" at the > > > > beginning.) > > > > > > > > > > > seem missing au88x0 > > > > Yes, because some driver codes are horrible to work on. > > Patches are welcome. > > > > > since au8820 , au8830 and au8810 use different mmio address , the source of > three modules , the driver use CHIP_AU8810 , CHIP_AU8820 and CHIP_AU8830 > for the chip specific code with #ifdef > > 1) how to convert printk(KERN_INFO CARD_NAME ? For KERN_INFO, use dev_info(). Take the device pointer that can be reached from that point. Usually the chip instance has the card pointer, and the card pointer refers to dev, e.g. chip->card->dev. The prefix CARD_NAME can be usually dropped since dev_info() prints already the driver name. If it's difficult to get the device pointer, you don't have to convert to dev_info() at all. But, often, it's easy to modify the function to get the chip or card object. > 2) do it need to remove "vortex:" at the beginning if dev_xxx function > provide the name of the snd-au8830 ? In most cases, you can drop it. But this depends on context. Judge from your common sense. > 3) as Wavetable DMA is not working and au8820 and au8830 have different > mmio address , au88x0_synth is not implemented as separate module You don't have to worry about it; it's either totally irrelevant or doesn't matter. > 4) gameport and mput401_uart use card name in getting the resource and midi > ports It's only about printk. Don't convert anything else. > How do I get the source of topics/ctv-dev-prints ? I don't understand your question. What do you mean source? The git tree is there as usual. > > and > > how do I provide path ? You mean patch? Just submit to ML. thanks, Takashi > > > > au88x0_a3d.c- /* > au88x0_a3d.c: printk(KERN_DEBUG "vortex: ZeroState slice: %d, source > %d\n", > au88x0_a3d.c- a->slice, a->source); > -- > au88x0_a3d.c- if ((a->vortex) == NULL) { > au88x0_a3d.c: printk(KERN_ERR "vortex: ZeroStateA3D: ERROR: > a->vortex is NULL\n"); > au88x0_a3d.c- return; > -- > au88x0_a3d.c- if (v->mixxtlk[0] < 0) { > au88x0_a3d.c: printk > au88x0_a3d.c- ("vortex: vortex_Vort3D: ERROR: not enough free > mixer resources.\n"); > -- > au88x0_a3d.c- if (v->mixxtlk[1] < 0) { > au88x0_a3d.c: printk > au88x0_a3d.c- ("vortex: vortex_Vort3D: ERROR: not enough free > mixer resources.\n"); > -- > au88x0_a3d.c- if (a->vortex == NULL) { > au88x0_a3d.c: printk > au88x0_a3d.c- ("vortex: Vort3D_InitializeSource: A3D source not > initialized\n"); > -- > au88x0.c- if (!(rc = pci_write_config_byte(vortex, 0x40, 0xff))) { > au88x0.c: printk(KERN_INFO CARD_NAME > au88x0.c- ": vortex latency is 0xff\n"); > au88x0.c- } else { > au88x0.c: printk(KERN_WARNING CARD_NAME > au88x0.c- ": could not set vortex latency: pci error > 0x%x\n", rc); > -- > au88x0.c- || !(rc = pci_write_config_byte(via, 0x42, value | > 0x10)))) { > au88x0.c: printk(KERN_INFO CARD_NAME > au88x0.c- ": bridge config is 0x%x\n", value | 0x10); > au88x0.c- } else { > au88x0.c: printk(KERN_WARNING CARD_NAME > au88x0.c- ": could not set vortex latency: pci error > 0x%x\n", rc); > -- > au88x0.c- if (via) { > au88x0.c: printk(KERN_INFO CARD_NAME ": Activating latency > workaround...\n"); > au88x0.c- vortex_fix_latency(vortex); > -- > au88x0.c- pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32)) < 0) { > au88x0.c: printk(KERN_ERR "error to set DMA mask\n"); > au88x0.c- pci_disable_device(pci); > -- > au88x0.c- if (!chip->mmio) { > au88x0.c: printk(KERN_ERR "MMIO area remap failed.\n"); > au88x0.c- err = -ENOMEM; > -- > au88x0.c- if ((err = vortex_core_init(chip)) != 0) { > au88x0.c: printk(KERN_ERR "hw core init failed\n"); > au88x0.c- goto core_out; > -- > au88x0.c- chip)) != 0) { > au88x0.c: printk(KERN_ERR "cannot grab irq\n"); > au88x0.c- goto irq_out; > -- > au88x0.c- || wave == NULL) { > au88x0.c: snd_printk(KERN_ERR "Can't initialize Aureal wavetable > synth\n"); > au88x0.c- } else { > -- > au88x0.c- if ((chip->rev) != 0xfe && (chip->rev) != 0xfa) { > au88x0.c: printk(KERN_ALERT > au88x0.c- "vortex: The revision (%x) of your card has not > been seen before.\n", > au88x0.c- chip->rev); > au88x0.c: printk(KERN_ALERT > au88x0.c- "vortex: Please email the results of 'lspci -vv' to > openvortex-dev@nongnu.org.\n"); > -- > au88x0_core.c- temp = hwread(vortex->mmio, prev); > au88x0_core.c: //printk(KERN_INFO "vortex: mixAddWTD: while addr=%x, > val=%x\n", prev, temp); > au88x0_core.c- if ((++lifeboat) > 0xf) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "vortex_mixer_addWTD: lifeboat > overflow\n"); > -- > au88x0_core.c- if (((1 << ch) & eax) == 0) { > au88x0_core.c: printk(KERN_ERR "mix ALARM %x\n", eax); > au88x0_core.c- return 0; > -- > au88x0_core.c- VORTEX_MIXER_RTBASE + (ebx << 2)); > au88x0_core.c: //printk(KERN_INFO "vortex: mixdelWTD: 1 addr=%x, > val=%x, src=%x\n", ebx, edx, src); > au88x0_core.c- while ((edx & 0xf) != mix) { > au88x0_core.c- if ((esi) > 0xf) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "vortex: mixdelWTD: error lifeboat > overflow\n"); > -- > au88x0_core.c- VORTEX_MIXER_RTBASE + ebp); > au88x0_core.c: //printk(KERN_INFO "vortex: mixdelWTD: while > addr=%x, val=%x\n", ebp, edx); > au88x0_core.c- esi++; > -- > au88x0_core.c- hwwrite(vortex->mmio, ebx, 0); > au88x0_core.c: //printk(KERN_INFO "vortex mixdelWTD between > addr= 0x%x, val= 0x%x\n", ebp, edx); > au88x0_core.c- } else { /* Delete last entry */ > -- > au88x0_core.c- (esp14 << 2), ebx); > au88x0_core.c: //printk(KERN_INFO "vortex mixdelWTD last > addr= 0x%x, val= 0x%x\n", esp14, ebx); > au88x0_core.c- } > -- > au88x0_core.c- } else { > au88x0_core.c: //printk(KERN_INFO "removed last mix\n"); > au88x0_core.c- //7be0 > -- > au88x0_core.c- if ((++lifeboat) > 0x9) { > au88x0_core.c: printk(KERN_ERR "Vortex: Src cvr fail\n"); > au88x0_core.c- break; > -- > au88x0_core.c- if ((lifeboat++) > 15) { > au88x0_core.c: printk(KERN_ERR "Vortex: could not set src-%d > from %d to %d\n", > au88x0_core.c- src, hw_ratio, desired_ratio); > -- > au88x0_core.c- /* 0x30f00 e=g=1 esp10=0 ebp=f */ > au88x0_core.c: //printk(KERN_INFO "vortex: SRC %d, d=0x%x, esi=0x%x, > esp10=0x%x, ebp=0x%x\n", src, d, esi, esp10, ebp); > au88x0_core.c-} > -- > au88x0_core.c- temp = hwread(vortex->mmio, prev); > au88x0_core.c: //printk(KERN_INFO "vortex: srcAddWTD: while addr=%x, > val=%x\n", prev, temp); > au88x0_core.c- if ((++lifeboat) > 0xf) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "vortex_src_addWTD: lifeboat overflow\n"); > -- > au88x0_core.c- if (((1 << ch) & eax) == 0) { > au88x0_core.c: printk(KERN_ERR "src alarm\n"); > au88x0_core.c- return 0; > -- > au88x0_core.c- VORTEX_SRC_RTBASE + (ebx << 2)); > au88x0_core.c: //printk(KERN_INFO "vortex: srcdelWTD: 1 addr=%x, > val=%x, src=%x\n", ebx, edx, src); > au88x0_core.c- while ((edx & 0xf) != src) { > au88x0_core.c- if ((esi) > 0xf) { > au88x0_core.c: printk > au88x0_core.c- ("vortex: srcdelWTD: error, lifeboat > overflow\n"); > -- > au88x0_core.c- VORTEX_SRC_RTBASE + ebp); > au88x0_core.c: //printk(KERN_INFO "vortex: srcdelWTD: while > addr=%x, val=%x\n", ebp, edx); > au88x0_core.c- esi++; > -- > au88x0_core.c- hwwrite(vortex->mmio, ebx, 0); > au88x0_core.c: //printk(KERN_INFO "vortex srcdelWTD between > addr= 0x%x, val= 0x%x\n", ebp, edx); > au88x0_core.c- } else { /* Delete last entry */ > -- > au88x0_core.c- (esp14 << 2), ebx); > au88x0_core.c: //printk(KERN_INFO"vortex srcdelWTD last > addr= 0x%x, val= 0x%x\n", esp14, ebx); > au88x0_core.c- } > -- > au88x0_core.c- if (lifeboat++ > 0xbb8) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "Vortex: vortex_fifo_setadbctrl fail\n"); > -- > au88x0_core.c- if (lifeboat++ > 0xbb8) { > au88x0_core.c: printk(KERN_ERR "Vortex: vortex_fifo_setwtctrl > fail\n"); > au88x0_core.c- break; > -- > au88x0_core.c- if (lifeboat++ > 0xbb8) { > au88x0_core.c: printk(KERN_ERR "Vortex: vortex_fifo_setwtctrl > fail (hanging)\n"); > au88x0_core.c- break; > -- > au88x0_core.c- if (hwread(vortex->mmio, addr) != (FIFO_U0 | FIFO_U1)) > au88x0_core.c: printk(KERN_ERR "bad adb fifo reset!"); > au88x0_core.c- vortex_fifo_clearadbdata(vortex, x, FIFO_SIZE); > -- > au88x0_core.c- if (hwread(vortex->mmio, addr) != FIFO_U0) > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "bad wt fifo reset (0x%08x, 0x%08x)!\n", > -- > au88x0_core.c- /* > au88x0_core.c: printk(KERN_DEBUG "vortex: cfg0 = 0x%x\nvortex: > cfg1=0x%x\n", > au88x0_core.c- dma->cfg0, dma->cfg1); > -- > au88x0_core.c- if (delta != 1) > au88x0_core.c: printk(KERN_INFO "vortex: %d virt=%d, real=%d, > delta=%d\n", > au88x0_core.c- adbdma, dma->period_virt, dma->period_real, > delta); > -- > au88x0_core.c- if (delta != 1) > au88x0_core.c: printk(KERN_WARNING "vortex: wt virt = %d, delta = > %d\n", > au88x0_core.c- dma->period_virt, delta); > -- > au88x0_core.c- if ((lifeboat++) > ADB_MASK) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "vortex_adb_addroutes: unending route! > 0x%x\n", > -- > au88x0_core.c- if (((lifeboat++) > ADB_MASK) || (temp == ADB_MASK)) { > au88x0_core.c: printk(KERN_ERR > au88x0_core.c- "vortex_adb_delroutes: route not found! > 0x%x\n", > -- > au88x0_core.c- ADB_CODECOUT(1 + 4)); > au88x0_core.c: /* printk(KERN_DEBUG "SDAC detected "); */ > au88x0_core.c- } > -- > au88x0_core.c- /* > au88x0_core.c: printk(KERN_DEBUG > au88x0_core.c- "vortex: ResManager: type %d out %d\n", > -- > au88x0_core.c- /* > au88x0_core.c: printk(KERN_DEBUG > au88x0_core.c- "vortex: ResManager: type %d in %d\n", > -- > au88x0_core.c- } > au88x0_core.c: printk(KERN_ERR "vortex: FATAL: ResManager: resource type > %d exhausted.\n", restype); > au88x0_core.c- return -ENOMEM; > -- > au88x0_core.c- VORTEX_RESOURCE_LAST); > au88x0_core.c: printk(KERN_ERR "vortex: out of A3D sources. > Sorry\n"); > au88x0_core.c- return -EBUSY; > -- > au88x0_core.c- if (source == 0) { > au88x0_core.c: printk(KERN_ERR "vortex: missing irq source\n"); > au88x0_core.c- return IRQ_NONE; > -- > au88x0_core.c- if (source & IRQ_FATAL) { > au88x0_core.c: printk(KERN_ERR "vortex: IRQ fatal error\n"); > au88x0_core.c- } > au88x0_core.c- if (source & IRQ_PARITY) { > au88x0_core.c: printk(KERN_ERR "vortex: IRQ parity error\n"); > au88x0_core.c- } > au88x0_core.c- if (source & IRQ_REG) { > au88x0_core.c: printk(KERN_ERR "vortex: IRQ reg error\n"); > au88x0_core.c- } > au88x0_core.c- if (source & IRQ_FIFO) { > au88x0_core.c: printk(KERN_ERR "vortex: IRQ fifo error\n"); > au88x0_core.c- } > au88x0_core.c- if (source & IRQ_DMA) { > au88x0_core.c: printk(KERN_ERR "vortex: IRQ dma error\n"); > au88x0_core.c- } > -- > au88x0_core.c- if (!handled) { > au88x0_core.c: printk(KERN_ERR "vortex: unknown irq source %x\n", > source); > au88x0_core.c- } > -- > au88x0_core.c- if (lifeboat++ > POLL_COUNT) { > au88x0_core.c: printk(KERN_ERR "vortex: ac97 codec stuck > busy\n"); > au88x0_core.c- return; > -- > au88x0_core.c- if (lifeboat++ > POLL_COUNT) { > au88x0_core.c: printk(KERN_ERR "vortex: ac97 codec stuck > busy\n"); > au88x0_core.c- return 0xffff; > -- > au88x0_core.c- if (lifeboat++ > POLL_COUNT) { > au88x0_core.c: printk(KERN_ERR "vortex: ac97 address never > arrived\n"); > au88x0_core.c- return 0xffff; > -- > au88x0_core.c- > au88x0_core.c: printk(KERN_INFO "Vortex: init.... "); > au88x0_core.c- /* Hardware Init. */ > -- > au88x0_core.c- > au88x0_core.c: printk(KERN_INFO "done.\n"); > au88x0_core.c- spin_lock_init(&vortex->lock); > -- > au88x0_core.c- > au88x0_core.c: printk(KERN_INFO "Vortex: shutdown..."); > au88x0_core.c-#ifndef CHIP_AU8820 > -- > au88x0_core.c- > au88x0_core.c: printk(KERN_INFO "done.\n"); > au88x0_core.c- return 0; > -- > au88x0_core.c- fmt = 0x8; > au88x0_core.c: printk(KERN_ERR "vortex: format unsupported %d\n", > alsafmt); > au88x0_core.c- break; > -- > au88x0_eq.c- if (count != 20) { > au88x0_eq.c: printk(KERN_ERR "vortex: peak count error 20 != %d \n", > count); > au88x0_eq.c- return -1; > -- > au88x0_game.c- if (!gp) { > au88x0_game.c: printk(KERN_ERR "vortex: cannot allocate memory for > gameport\n"); > au88x0_game.c- return -ENOMEM; > -- > au88x0_mpu401.c- if (temp != MPU401_ACK /*0xfe */ ) { > au88x0_mpu401.c: printk(KERN_ERR "midi port doesn't acknowledge!\n"); > au88x0_mpu401.c- return -ENODEV; > -- > au88x0_pcm.c- if (err < 0) { > au88x0_pcm.c: printk(KERN_ERR "Vortex: pcm page alloc failed!\n"); > au88x0_pcm.c- return err; > -- > au88x0_pcm.c- /* > au88x0_pcm.c: printk(KERN_INFO "Vortex: periods %d, period_bytes %d, > channels = %d\n", params_periods(hw_params), > au88x0_pcm.c- params_period_bytes(hw_params), > params_channels(hw_params)); > -- > au88x0_pcm.c- // do something to start the PCM engine > au88x0_pcm.c: //printk(KERN_INFO "vortex: start %d\n", dma); > au88x0_pcm.c- stream->fifo_enabled = 1; > -- > au88x0_pcm.c- else { > au88x0_pcm.c: printk(KERN_INFO "vortex: wt start %d\n", dma); > au88x0_pcm.c- vortex_wtdma_startfifo(chip, dma); > -- > au88x0_pcm.c- // do something to stop the PCM engine > au88x0_pcm.c: //printk(KERN_INFO "vortex: stop %d\n", dma); > au88x0_pcm.c- stream->fifo_enabled = 0; > -- > au88x0_pcm.c- else { > au88x0_pcm.c: printk(KERN_INFO "vortex: wt stop %d\n", dma); > au88x0_pcm.c- vortex_wtdma_stopfifo(chip, dma); > -- > au88x0_pcm.c- case SNDRV_PCM_TRIGGER_PAUSE_PUSH: > au88x0_pcm.c: //printk(KERN_INFO "vortex: pause %d\n", dma); > au88x0_pcm.c- if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) > -- > au88x0_pcm.c- case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: > au88x0_pcm.c: //printk(KERN_INFO "vortex: resume %d\n", dma); > au88x0_pcm.c- if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) > -- > au88x0_pcm.c-#endif > au88x0_pcm.c: //printk(KERN_INFO "vortex: pointer = 0x%x\n", > current_ptr); > au88x0_pcm.c- spin_unlock(&chip->lock); > -- > au88x0_synth.c- temp = hwread(vortex->mmio, WT_PARM(wt, 3)); > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT PARM3: %x\n", temp); > au88x0_synth.c- //hwwrite(vortex->mmio, WT_PARM(wt, 3), temp); > -- > au88x0_synth.c- > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT GMODE: %x\n", > hwread(vortex->mmio, WT_GMODE(wt))); > au88x0_synth.c- > -- > au88x0_synth.c- hwwrite(vortex->mmio, WT_PARM(wt, 1), voice->parm1); > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT GMODE 2 : %x\n", > hwread(vortex->mmio, WT_GMODE(wt))); > au88x0_synth.c- return 0; > -- > au88x0_synth.c- if (wt >= (NR_WT / NR_WT_PB)) { > au88x0_synth.c: printk > au88x0_synth.c- ("vortex: WT SetReg: bank out of range. > reg=0x%x, wt=%d\n", > -- > au88x0_synth.c- if (wt >= NR_WT) { > au88x0_synth.c: printk(KERN_ERR "vortex: WT SetReg: voice out of > range\n"); > au88x0_synth.c- return 0; > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_RUN(wt), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_PARM(wt,0), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_PARM(wt,1), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_PARM(wt,2), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_PARM(wt,3), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_MUTE(wt), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = > 0x%08x\n", > au88x0_synth.c- WT_DELAY(wt,0), (int)val); > -- > au88x0_synth.c- /* > au88x0_synth.c: printk(KERN_DEBUG "vortex: WT SetReg(0x%x) = 0x%08x\n", > ecx, (int)val); > au88x0_synth.c- */ > [2 ] >