ChangeSet 1.1557.49.29, 2004/02/19 15:34:39-08:00, stern@rowland.harvard.edu [PATCH] USB: Use driver-model logging in the UHCI driver The main item in this patch is the conversion of the UHCI driver from using the old usb.h logging macros to the new driver-model dev_xxx macros. There are a few other minor changes too: updated version number, author, copyright, and maintainer information, removed some unneeded error messages, added some line breaks, added a convenience macro for the device pointer. drivers/usb/host/uhci-hcd.c | 117 +++++++++++++++++++++++--------------------- drivers/usb/host/uhci-hcd.h | 2 drivers/usb/host/uhci-hub.c | 9 +-- 3 files changed, 67 insertions(+), 61 deletions(-) diff -Nru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c --- a/drivers/usb/host/uhci-hcd.c Thu Feb 19 17:20:42 2004 +++ b/drivers/usb/host/uhci-hcd.c Thu Feb 19 17:20:42 2004 @@ -13,6 +13,7 @@ * (C) Copyright 2000 Yggdrasil Computing, Inc. (port of new PCI interface * support from usb-ohci.c by Adam Richter, adam@yggdrasil.com). * (C) Copyright 1999 Gregory P. Smith (from usb-ohci.c) + * (C) Copyright 2004 Alan Stern, stern@rowland.harvard.edu * * Intel documents this fairly well, and as far as I know there * are no royalties or anything like that, but even so there are @@ -46,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -59,13 +61,13 @@ #include "../core/hcd.h" #include "uhci-hcd.h" -#include - /* * Version Information */ -#define DRIVER_VERSION "v2.1" -#define DRIVER_AUTHOR "Linus 'Frodo Rabbit' Torvalds, Johannes Erdfelt, Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber" +#define DRIVER_VERSION "v2.2" +#define DRIVER_AUTHOR "Linus 'Frodo Rabbit' Torvalds, Johannes Erdfelt, \ +Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber, \ +Alan Stern" #define DRIVER_DESC "USB Universal Host Controller Interface driver" /* @@ -285,11 +287,11 @@ static void uhci_free_td(struct uhci_hcd *uhci, struct uhci_td *td) { if (!list_empty(&td->list)) - dbg("td %p is still in list!", td); + dev_warn(uhci_dev(uhci), "td %p still in list!\n", td); if (!list_empty(&td->remove_list)) - dbg("td %p still in remove_list!", td); + dev_warn(uhci_dev(uhci), "td %p still in remove_list!\n", td); if (!list_empty(&td->fl_list)) - dbg("td %p is still in fl_list!", td); + dev_warn(uhci_dev(uhci), "td %p still in fl_list!\n", td); if (td->dev) usb_put_dev(td->dev); @@ -325,9 +327,9 @@ static void uhci_free_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) { if (!list_empty(&qh->list)) - dbg("qh %p list not empty!", qh); + dev_warn(uhci_dev(uhci), "qh %p list not empty!\n", qh); if (!list_empty(&qh->remove_list)) - dbg("qh %p still in remove_list!", qh); + dev_warn(uhci_dev(uhci), "qh %p still in remove_list!\n", qh); if (qh->dev) usb_put_dev(qh->dev); @@ -657,10 +659,8 @@ struct urb_priv *urbp; urbp = kmem_cache_alloc(uhci_up_cachep, SLAB_ATOMIC); - if (!urbp) { - err("uhci_alloc_urb_priv: couldn't allocate memory for urb_priv\n"); + if (!urbp) return NULL; - } memset((void *)urbp, 0, sizeof(*urbp)); @@ -718,7 +718,8 @@ return; if (!list_empty(&urbp->urb_list)) - warn("uhci_destroy_urb_priv: urb %p still on uhci->urb_list or uhci->remove_list", urb); + dev_warn(uhci_dev(uhci), "urb %p still on uhci->urb_list " + "or uhci->remove_list!\n", urb); spin_lock_irqsave(&uhci->td_remove_list_lock, flags); @@ -956,10 +957,8 @@ } urbp->qh = uhci_alloc_qh(uhci, urb->dev); - if (!urbp->qh) { - err("unable to allocate new QH for control retrigger"); + if (!urbp->qh) return -ENOMEM; - } urbp->qh->urbp = urbp; @@ -1068,7 +1067,8 @@ err: if ((debug == 1 && ret != -EPIPE) || debug > 1) { /* Some debugging code */ - dbg("uhci_result_control() failed with status %x", status); + dev_dbg(uhci_dev(uhci), "%s: failed with status %x\n", + __FUNCTION__, status); if (errbuf) { /* Print the chain for debugging purposes */ @@ -1233,7 +1233,8 @@ #if 0 if ((debug == 1 && ret != -EPIPE) || debug > 1) { /* Some debugging code */ - dbg("uhci_result_common() failed with status %x", status); + dev_dbg(uhci_dev(uhci), "%s: failed with status %x\n", + __FUNCTION__, status); if (errbuf) { /* Print the chain for debugging purposes */ @@ -1580,8 +1581,9 @@ uhci_unlink_generic(uhci, urb); break; default: - info("uhci_transfer_result: unknown pipe type %d for urb %p\n", - usb_pipetype(urb->pipe), urb); + dev_info(uhci_dev(uhci), "%s: unknown pipe type %d " + "for urb %p\n", + __FUNCTION__, usb_pipetype(urb->pipe), urb); } /* Move it from uhci->urb_list to uhci->complete_list */ @@ -1892,11 +1894,14 @@ if (status & ~(USBSTS_USBINT | USBSTS_ERROR | USBSTS_RD)) { if (status & USBSTS_HSE) - err("%x: host system error, PCI problems?", io_addr); + dev_err(uhci_dev(uhci), "host system error, " + "PCI problems?\n"); if (status & USBSTS_HCPE) - err("%x: host controller process error. something bad happened", io_addr); + dev_err(uhci_dev(uhci), "host controller process " + "error, something bad happened!\n"); if ((status & USBSTS_HCH) && uhci->state > 0) { - err("%x: host controller halted. very bad", io_addr); + dev_err(uhci_dev(uhci), "host controller halted, " + "very bad!\n"); /* FIXME: Reset the controller, fix the offending TD */ } } @@ -1952,7 +1957,7 @@ { unsigned int io_addr = uhci->io_addr; - dbg("%x: suspend_hc", io_addr); + dev_dbg(uhci_dev(uhci), "%s\n", __FUNCTION__); uhci->state = UHCI_SUSPENDED; uhci->resume_detect = 0; outw(USBCMD_EGSM, io_addr + USBCMD); @@ -1964,7 +1969,7 @@ switch (uhci->state) { case UHCI_SUSPENDED: /* Start the resume */ - dbg("%x: wakeup_hc", io_addr); + dev_dbg(uhci_dev(uhci), "%s\n", __FUNCTION__); /* Global resume for >= 20ms */ outw(USBCMD_FGR | USBCMD_EGSM, io_addr + USBCMD); @@ -2015,8 +2020,7 @@ unsigned int io_addr = uhci->io_addr; int i; - if (!uhci->hcd.self.controller || - to_pci_dev(uhci->hcd.self.controller)->vendor != PCI_VENDOR_ID_INTEL) + if (to_pci_dev(uhci_dev(uhci))->vendor != PCI_VENDOR_ID_INTEL) return 1; /* Some of Intel's USB controllers have a bug that causes false @@ -2090,7 +2094,7 @@ outw(USBCMD_HCRESET, io_addr + USBCMD); while (inw(io_addr + USBCMD) & USBCMD_HCRESET) { if (!--timeout) { - printk(KERN_ERR "uhci: USBCMD_HCRESET timed out!\n"); + dev_err(uhci_dev(uhci), "USBCMD_HCRESET timed out!\n"); break; } } @@ -2140,7 +2144,8 @@ } if (uhci->fl) { - dma_free_coherent(uhci->hcd.self.controller, sizeof(*uhci->fl), uhci->fl, uhci->fl->dma_handle); + dma_free_coherent(uhci_dev(uhci), sizeof(*uhci->fl), + uhci->fl, uhci->fl->dma_handle); uhci->fl = NULL; } @@ -2165,7 +2170,8 @@ * interrupts from any previous setup. */ reset_hc(uhci); - pci_write_config_word(to_pci_dev(hcd->self.controller), USBLEGSUP, USBLEGSUP_DEFAULT); + pci_write_config_word(to_pci_dev(uhci_dev(uhci)), USBLEGSUP, + USBLEGSUP_DEFAULT); return 0; } @@ -2197,12 +2203,12 @@ struct proc_dir_entry *ent; #endif - io_size = pci_resource_len(to_pci_dev(hcd->self.controller), hcd->region); + io_size = pci_resource_len(to_pci_dev(uhci_dev(uhci)), hcd->region); #ifdef CONFIG_PROC_FS ent = create_proc_entry(hcd->self.bus_name, S_IFREG|S_IRUGO|S_IWUSR, uhci_proc_root); if (!ent) { - err("couldn't create uhci proc entry"); + dev_err(uhci_dev(uhci), "couldn't create uhci proc entry\n"); retval = -ENOMEM; goto err_create_proc_entry; } @@ -2233,10 +2239,11 @@ spin_lock_init(&uhci->frame_list_lock); - uhci->fl = dma_alloc_coherent(hcd->self.controller, - sizeof(*uhci->fl), &dma_handle, 0); + uhci->fl = dma_alloc_coherent(uhci_dev(uhci), sizeof(*uhci->fl), + &dma_handle, 0); if (!uhci->fl) { - err("unable to allocate consistent memory for frame list"); + dev_err(uhci_dev(uhci), "unable to allocate " + "consistent memory for frame list\n"); goto err_alloc_fl; } @@ -2244,17 +2251,17 @@ uhci->fl->dma_handle = dma_handle; - uhci->td_pool = dma_pool_create("uhci_td", hcd->self.controller, - sizeof(struct uhci_td), 16, 0); + uhci->td_pool = dma_pool_create("uhci_td", uhci_dev(uhci), + sizeof(struct uhci_td), 16, 0); if (!uhci->td_pool) { - err("unable to create td dma_pool"); + dev_err(uhci_dev(uhci), "unable to create td dma_pool\n"); goto err_create_td_pool; } - uhci->qh_pool = dma_pool_create("uhci_qh", hcd->self.controller, - sizeof(struct uhci_qh), 16, 0); + uhci->qh_pool = dma_pool_create("uhci_qh", uhci_dev(uhci), + sizeof(struct uhci_qh), 16, 0); if (!uhci->qh_pool) { - err("unable to create qh dma_pool"); + dev_err(uhci_dev(uhci), "unable to create qh dma_pool\n"); goto err_create_qh_pool; } @@ -2272,12 +2279,13 @@ break; } if (debug) - info("detected %d ports", port); + dev_info(uhci_dev(uhci), "detected %d ports\n", port); /* This is experimental so anything less than 2 or greater than 8 is */ /* something weird and we'll ignore it */ if (port < 2 || port > UHCI_RH_MAXCHILD) { - info("port count misdetected? forcing to 2 ports"); + dev_info(uhci_dev(uhci), "port count misdetected? " + "forcing to 2 ports\n"); port = 2; } @@ -2285,20 +2293,20 @@ hcd->self.root_hub = udev = usb_alloc_dev(NULL, &hcd->self, 0); if (!udev) { - err("unable to allocate root hub"); + dev_err(uhci_dev(uhci), "unable to allocate root hub\n"); goto err_alloc_root_hub; } uhci->term_td = uhci_alloc_td(uhci, udev); if (!uhci->term_td) { - err("unable to allocate terminating TD"); + dev_err(uhci_dev(uhci), "unable to allocate terminating TD\n"); goto err_alloc_term_td; } for (i = 0; i < UHCI_NUM_SKELQH; i++) { uhci->skelqh[i] = uhci_alloc_qh(uhci, udev); if (!uhci->skelqh[i]) { - err("unable to allocate QH %d", i); + dev_err(uhci_dev(uhci), "unable to allocate QH\n"); goto err_alloc_skelqh; } } @@ -2365,8 +2373,8 @@ udev->speed = USB_SPEED_FULL; - if (usb_register_root_hub(udev, hcd->self.controller) != 0) { - err("unable to start root hub"); + if (usb_register_root_hub(udev, uhci_dev(uhci)) != 0) { + dev_err(uhci_dev(uhci), "unable to start root hub\n"); retval = -ENOMEM; goto err_start_root_hub; } @@ -2404,8 +2412,8 @@ uhci->td_pool = NULL; err_create_td_pool: - dma_free_coherent(hcd->self.controller, - sizeof(*uhci->fl), uhci->fl, uhci->fl->dma_handle); + dma_free_coherent(uhci_dev(uhci), sizeof(*uhci->fl), + uhci->fl, uhci->fl->dma_handle); uhci->fl = NULL; err_alloc_fl: @@ -2461,7 +2469,7 @@ { struct uhci_hcd *uhci = hcd_to_uhci(hcd); - pci_set_master(to_pci_dev(uhci->hcd.self.controller)); + pci_set_master(to_pci_dev(uhci_dev(uhci))); if (uhci->state == UHCI_SUSPENDED) uhci->resume_detect = 1; @@ -2553,7 +2561,7 @@ { int retval = -ENOMEM; - info(DRIVER_DESC " " DRIVER_VERSION); + printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION "\n"); if (usb_disabled()) return -ENODEV; @@ -2583,7 +2591,7 @@ init_failed: if (kmem_cache_destroy(uhci_up_cachep)) - printk(KERN_INFO "uhci: not all urb_priv's were freed\n"); + printk(KERN_WARN "uhci: not all urb_priv's were freed!\n"); up_failed: @@ -2605,7 +2613,7 @@ pci_unregister_driver(&uhci_pci_driver); if (kmem_cache_destroy(uhci_up_cachep)) - printk(KERN_INFO "uhci: not all urb_priv's were freed\n"); + printk(KERN_WARN "uhci: not all urb_priv's were freed!\n"); #ifdef CONFIG_PROC_FS remove_proc_entry("driver/uhci", 0); @@ -2621,4 +2629,3 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); - diff -Nru a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h --- a/drivers/usb/host/uhci-hcd.h Thu Feb 19 17:20:42 2004 +++ b/drivers/usb/host/uhci-hcd.h Thu Feb 19 17:20:42 2004 @@ -315,6 +315,7 @@ }; #define hcd_to_uhci(hcd_ptr) container_of(hcd_ptr, struct uhci_hcd, hcd) +#define uhci_dev(u) ((u)->hcd.self.controller) /* * This describes the full uhci information. @@ -422,4 +423,3 @@ */ #endif - diff -Nru a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c --- a/drivers/usb/host/uhci-hub.c Thu Feb 19 17:20:42 2004 +++ b/drivers/usb/host/uhci-hub.c Thu Feb 19 17:20:42 2004 @@ -1,7 +1,7 @@ /* * Universal Host Controller Interface driver for USB. * - * Maintainer: Johannes Erdfelt + * Maintainer: Alan Stern * * (C) Copyright 1999 Linus Torvalds * (C) Copyright 1999-2002 Johannes Erdfelt, johannes@erdfelt.com @@ -9,6 +9,7 @@ * (C) Copyright 1999 Georg Acher, acher@in.tum.de * (C) Copyright 1999 Deti Fliegl, deti@fliegl.de * (C) Copyright 1999 Thomas Sailer, sailer@ife.ee.ethz.ch + * (C) Copyright 2004 Alan Stern, stern@rowland.harvard.edu */ static __u8 root_hub_hub_des[] = @@ -122,9 +123,8 @@ wPortStatus |= 1 << USB_PORT_FEAT_LOWSPEED; if (wPortChange) - dev_dbg (uhci->hcd.self.controller, - "port %d portsc %04x\n", - wIndex, status); + dev_dbg(uhci_dev(uhci), "port %d portsc %04x\n", + wIndex, status); *(__u16 *)buf = cpu_to_le16(wPortStatus); *(__u16 *)(buf + 2) = cpu_to_le16(wPortChange); @@ -209,4 +209,3 @@ return retval; } -