On Thu, May 03, 2012 at 03:59:43PM -0700, H Hartley Sweeten wrote:
> Greg,
>
> There were a number of patches to the comedi drivers back in
> Nov/Dec 2011 similar to this one:
>
> commit 3dbeb83c245bbdc906eb54821d1cd77a25f56741
> Staging: comedi: fix printk issue in serial2002.c
>
> These patches converted the printk's to dev_* versions similar
> to this:
>
> - printk("comedi%d: serial2002: ", dev->minor);
> + dev_dbg(dev->hw_dev, "comedi%d: attached\n", dev->minor);
>
> I don't think these will work like the author intended.
Based on my previous interactions with that author, I wouldn't doubt it :(
> In comedidev.h the hw_dev variable in struct comedi_device is
> defined as:
>
> /* hw_dev is passed to dma_alloc_coherent when allocating async buffers
> * for subdevices that have async_dma_dir set to something other than
> * DMA_NONE */
> struct device *hw_dev;
>
> This pointer is only setup by a couple comedi pci drivers. For
> most comedi drivers it's going to be NULL.
>
> It appears the "correct" struct device * to use would be the
> class_dev pointer in struct comedi_device. As a bonus, this
> pointer is created in comedi_fops.c:comedi_alloc_board_minor()
> like this:
>
> info->device->minor = i;
> csdev = device_create(comedi_class, hardware_device,
> MKDEV(COMEDI_MAJOR, i), NULL, "comedi%i", i);
> if (!IS_ERR(csdev))
> info->device->class_dev = csdev;
>
> So, if I get this right, most of the printk's and current
> dev_* variants of this form:
>
> printk(KERN_INFO "comedi%d: 8255:", dev->minor);
>
> could be changed to simply:
>
> dev_info(dev->class_dev, "8255:");
>
> And the "comedi" prefix is automatically added. Do I have this right?
Yes. You can drop the 8255: as well if you want, but, you probably
don't want to, see the thread on linux-kernel today from me and Kay and
Dmitry with the subject: "proper struct device selection for
dev_printk()" for more details.
Thanks for finding this, and fixing it up.
greg k-h
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel