svn commit: r212450 - in user/weongyo/usb/sys/dev/usb: . controller

Weongyo Jeong weongyo at FreeBSD.org
Sat Sep 11 01:49:06 UTC 2010


Author: weongyo
Date: Sat Sep 11 01:49:05 2010
New Revision: 212450
URL: http://svn.freebsd.org/changeset/base/212450

Log:
  Removes `usb_bus_mem_callback_t' and simplifies the logic passing the
  callback pointer.  As a refection by this change the following prototype
  of functions are changed:
  
    o usb_bus_mem_flush_all
    o usb_bus_mem_free_all
    o usb_bus_mem_alloc_all

Modified:
  user/weongyo/usb/sys/dev/usb/controller/ehci.c
  user/weongyo/usb/sys/dev/usb/controller/ehci.h
  user/weongyo/usb/sys/dev/usb/controller/ehci_ixp4xx.c
  user/weongyo/usb/sys/dev/usb/controller/ehci_mv.c
  user/weongyo/usb/sys/dev/usb/controller/ehci_pci.c
  user/weongyo/usb/sys/dev/usb/controller/ohci.c
  user/weongyo/usb/sys/dev/usb/controller/ohci.h
  user/weongyo/usb/sys/dev/usb/controller/ohci_atmelarm.c
  user/weongyo/usb/sys/dev/usb/controller/ohci_pci.c
  user/weongyo/usb/sys/dev/usb/controller/ohci_s3c24x0.c
  user/weongyo/usb/sys/dev/usb/controller/uhci.c
  user/weongyo/usb/sys/dev/usb/controller/uhci.h
  user/weongyo/usb/sys/dev/usb/controller/uhci_pci.c
  user/weongyo/usb/sys/dev/usb/controller/usb_controller.c
  user/weongyo/usb/sys/dev/usb/usb_bus.h
  user/weongyo/usb/sys/dev/usb/usb_controller.h

Modified: user/weongyo/usb/sys/dev/usb/controller/ehci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ehci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ehci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -482,9 +482,9 @@ ehci_init(ehci_softc_t *sc)
 		qh->qh_qtd.qtd_altnext = htohc32(sc, EHCI_LINK_TERMINATE);
 		qh->qh_qtd.qtd_status = htohc32(sc, EHCI_QTD_HALTED);
 	}
-	/* flush all cache into memory */
 
-	usb_bus_mem_flush_all(&sc->sc_bus, ehci_iterate_hw_softc);
+	/* flush all cache into memory */
+	usb_bus_mem_flush_all(&sc->sc_bus);
 
 #ifdef USB_DEBUG
 	if (ehcidebug) {

Modified: user/weongyo/usb/sys/dev/usb/controller/ehci.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ehci.h	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ehci.h	Sat Sep 11 01:49:05 2010	(r212450)
@@ -437,8 +437,6 @@ hc16toh(const struct ehci_softc *sc, con
 }
 #endif
 
-usb_bus_mem_callback_t ehci_iterate_hw_softc;
-
 usb_error_t ehci_reset(ehci_softc_t *sc);
 usb_error_t ehci_init(ehci_softc_t *sc);
 void	ehci_detach(struct ehci_softc *sc);
@@ -446,5 +444,6 @@ void	ehci_suspend(struct ehci_softc *sc)
 void	ehci_resume(struct ehci_softc *sc);
 void	ehci_shutdown(ehci_softc_t *sc);
 void	ehci_interrupt(ehci_softc_t *sc);
+void	ehci_iterate_hw_softc(struct usb_bus *, usb_bus_mem_sub_callback_t *);
 
 #endif					/* _EHCI_H_ */

Modified: user/weongyo/usb/sys/dev/usb/controller/ehci_ixp4xx.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ehci_ixp4xx.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ehci_ixp4xx.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -150,12 +150,11 @@ ehci_ixp_attach(device_t self)
 	sc->sc_bus.parent = self;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = EHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = ehci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus,
-	    USB_GET_DMA_TAG(self), ehci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self)))
 		return (ENOMEM);
-	}
 
 	/* NB: hints fix the memory location and irq */
 
@@ -291,7 +290,7 @@ ehci_ixp_detach(device_t self)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, ehci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/ehci_mv.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ehci_mv.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ehci_mv.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -165,12 +165,11 @@ mv_ehci_attach(device_t self)
 	sc->sc_bus.parent = self;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = EHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = ehci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus,
-	    USB_GET_DMA_TAG(self), ehci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self)))
 		return (ENOMEM);
-	}
 
 	rid = 0;
 	sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, RF_ACTIVE);
@@ -333,7 +332,7 @@ mv_ehci_detach(device_t self)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, ehci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/ehci_pci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ehci_pci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ehci_pci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -305,12 +305,11 @@ ehci_pci_attach(device_t self)
 	sc->sc_bus.parent = self;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = EHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = ehci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus,
-	    USB_GET_DMA_TAG(self), ehci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self)))
 		return (ENOMEM);
-	}
 
 	pci_enable_busmaster(self);
 
@@ -534,7 +533,7 @@ ehci_pci_detach(device_t self)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, ehci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/ohci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ohci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ohci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -397,7 +397,7 @@ ohci_init(ohci_softc_t *sc)
 	}
 	/* flush all cache into memory */
 
-	usb_bus_mem_flush_all(&sc->sc_bus, ohci_iterate_hw_softc);
+	usb_bus_mem_flush_all(&sc->sc_bus);
 
 	/* set up the bus struct */
 	sc->sc_bus.methods = &ohci_bus_methods;

Modified: user/weongyo/usb/sys/dev/usb/controller/ohci.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ohci.h	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ohci.h	Sat Sep 11 01:49:05 2010	(r212450)
@@ -256,12 +256,11 @@ typedef struct ohci_softc {
 
 } ohci_softc_t;
 
-usb_bus_mem_callback_t ohci_iterate_hw_softc;
-
 usb_error_t ohci_init(ohci_softc_t *sc);
 void	ohci_detach(struct ohci_softc *sc);
 void	ohci_suspend(ohci_softc_t *sc);
 void	ohci_resume(ohci_softc_t *sc);
 void	ohci_interrupt(ohci_softc_t *sc);
+void	ohci_iterate_hw_softc(struct usb_bus *, usb_bus_mem_sub_callback_t *);
 
 #endif					/* _OHCI_H_ */

Modified: user/weongyo/usb/sys/dev/usb/controller/ohci_atmelarm.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ohci_atmelarm.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ohci_atmelarm.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -92,12 +92,12 @@ ohci_atmelarm_attach(device_t dev)
 	sc->sc_ohci.sc_bus.parent = dev;
 	sc->sc_ohci.sc_bus.devices = sc->sc_ohci.sc_devices;
 	sc->sc_ohci.sc_bus.devices_max = OHCI_MAX_DEVICES;
+	sc->sc_ohci.sc_bus.busmem_func = ohci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_ohci.sc_bus,
-	    USB_GET_DMA_TAG(dev), ohci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_ohci.sc_bus, USB_GET_DMA_TAG(dev)))
 		return (ENOMEM);
-	}
+
 	sc->iclk = at91_pmc_clock_ref("ohci_clk");
 	sc->fclk = at91_pmc_clock_ref("uhpck");
 
@@ -212,7 +212,7 @@ ohci_atmelarm_detach(device_t dev)
 		    sc->sc_ohci.sc_io_res);
 		sc->sc_ohci.sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_ohci.sc_bus, ohci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_ohci.sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/ohci_pci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ohci_pci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ohci_pci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -221,12 +221,12 @@ ohci_pci_attach(device_t self)
 	sc->sc_bus.parent = self;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = OHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = ohci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self),
-	    ohci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self)))
 		return (ENOMEM);
-	}
+
 	sc->sc_dev = self;
 
 	pci_enable_busmaster(self);
@@ -377,7 +377,7 @@ ohci_pci_detach(device_t self)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, ohci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/ohci_s3c24x0.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/ohci_s3c24x0.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/ohci_s3c24x0.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -85,12 +85,11 @@ ohci_s3c24x0_attach(device_t dev)
 	sc->sc_bus.parent = dev;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = OHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = ohci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(dev),
-	    ohci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(dev)))
 		return (ENOMEM);
-	}
 
 	sc->sc_dev = dev;
 
@@ -189,7 +188,7 @@ ohci_s3c24x0_detach(device_t dev)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, ohci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/uhci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/uhci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/uhci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -638,9 +638,9 @@ uhci_init(uhci_softc_t *sc)
 			    sc->sc_isoc_p_last[x % UHCI_VFRAMELIST_COUNT]->td_self;
 		}
 	}
-	/* flush all cache into memory */
 
-	usb_bus_mem_flush_all(&sc->sc_bus, uhci_iterate_hw_softc);
+	/* flush all cache into memory */
+	usb_bus_mem_flush_all(&sc->sc_bus);
 
 	/* set up the bus struct */
 	sc->sc_bus.methods = &uhci_bus_methods;

Modified: user/weongyo/usb/sys/dev/usb/controller/uhci.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/uhci.h	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/uhci.h	Sat Sep 11 01:49:05 2010	(r212450)
@@ -242,12 +242,11 @@ typedef struct uhci_softc {
 	char	sc_vendor[16];		/* vendor string for root hub */
 } uhci_softc_t;
 
-usb_bus_mem_callback_t uhci_iterate_hw_softc;
-
 usb_error_t uhci_init(uhci_softc_t *sc);
 void	uhci_suspend(uhci_softc_t *sc);
 void	uhci_resume(uhci_softc_t *sc);
 void	uhci_reset(uhci_softc_t *sc);
 void	uhci_interrupt(uhci_softc_t *sc);
+void	uhci_iterate_hw_softc(struct usb_bus *, usb_bus_mem_sub_callback_t *);
 
 #endif					/* _UHCI_H_ */

Modified: user/weongyo/usb/sys/dev/usb/controller/uhci_pci.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/uhci_pci.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/uhci_pci.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -281,12 +281,11 @@ uhci_pci_attach(device_t self)
 	sc->sc_bus.parent = self;
 	sc->sc_bus.devices = sc->sc_devices;
 	sc->sc_bus.devices_max = UHCI_MAX_DEVICES;
+	sc->sc_bus.busmem_func = uhci_iterate_hw_softc;
 
 	/* get all DMA memory */
-	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self),
-	    uhci_iterate_hw_softc)) {
+	if (usb_bus_mem_alloc_all(&sc->sc_bus, USB_GET_DMA_TAG(self)))
 		return ENOMEM;
-	}
 	sc->sc_dev = self;
 
 	pci_enable_busmaster(self);
@@ -442,7 +441,7 @@ uhci_pci_detach(device_t self)
 		    sc->sc_io_res);
 		sc->sc_io_res = NULL;
 	}
-	usb_bus_mem_free_all(&sc->sc_bus, uhci_iterate_hw_softc);
+	usb_bus_mem_free_all(&sc->sc_bus);
 
 	return (0);
 }

Modified: user/weongyo/usb/sys/dev/usb/controller/usb_controller.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/controller/usb_controller.c	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/controller/usb_controller.c	Sat Sep 11 01:49:05 2010	(r212450)
@@ -486,11 +486,11 @@ usb_bus_mem_flush_all_cb(struct usb_bus 
  *------------------------------------------------------------------------*/
 #if USB_HAVE_BUSDMA
 void
-usb_bus_mem_flush_all(struct usb_bus *bus, usb_bus_mem_callback_t *func)
+usb_bus_mem_flush_all(struct usb_bus *bus)
 {
 
-	if (func != NULL)
-		(*func)(bus, usb_bus_mem_flush_all_cb);
+	if (bus->busmem_func != NULL)
+		bus->busmem_func(bus, usb_bus_mem_flush_all_cb);
 }
 #endif
 
@@ -519,8 +519,7 @@ usb_bus_mem_alloc_all_cb(struct usb_bus 
  * Else: Failure
  *------------------------------------------------------------------------*/
 uint8_t
-usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat,
-    usb_bus_mem_callback_t *func)
+usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat)
 {
 
 	bus->alloc_failed = 0;
@@ -544,11 +543,11 @@ usb_bus_mem_alloc_all(struct usb_bus *bu
 		bus->alloc_failed = 1;		/* failure */
 	}
 #if USB_HAVE_BUSDMA
-	if (func != NULL)
-		(*func)(bus, usb_bus_mem_alloc_all_cb);
+	if (bus->busmem_func != NULL)
+		bus->busmem_func(bus, usb_bus_mem_alloc_all_cb);
 #endif
 	if (bus->alloc_failed)
-		usb_bus_mem_free_all(bus, func);
+		usb_bus_mem_free_all(bus);
 	return (bus->alloc_failed);
 }
 
@@ -569,12 +568,12 @@ usb_bus_mem_free_all_cb(struct usb_bus *
  *	usb_bus_mem_free_all - factored out code
  *------------------------------------------------------------------------*/
 void
-usb_bus_mem_free_all(struct usb_bus *bus, usb_bus_mem_callback_t *func)
+usb_bus_mem_free_all(struct usb_bus *bus)
 {
 
 #if USB_HAVE_BUSDMA
-	if (func != NULL)
-		(*func)(bus, usb_bus_mem_free_all_cb);
+	if (bus->busmem_func != NULL)
+		bus->busmem_func(bus, usb_bus_mem_free_all_cb);
 	usb_dma_tag_unsetup(bus->dma_parent_tag);
 #endif
 

Modified: user/weongyo/usb/sys/dev/usb/usb_bus.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_bus.h	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/usb_bus.h	Sat Sep 11 01:49:05 2010	(r212450)
@@ -86,6 +86,8 @@ struct usb_bus {
 	struct usb_bus_methods *methods;	/* filled by HC driver */
 	struct usb_device **devices;
 
+	void (*busmem_func)(struct usb_bus *, usb_bus_mem_sub_callback_t *);
+
 	usb_power_mask_t hw_power_state;	/* see USB_HW_POWER_XXX */
 	usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
 

Modified: user/weongyo/usb/sys/dev/usb/usb_controller.h
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_controller.h	Sat Sep 11 01:27:10 2010	(r212449)
+++ user/weongyo/usb/sys/dev/usb/usb_controller.h	Sat Sep 11 01:49:05 2010	(r212450)
@@ -48,8 +48,6 @@ struct usb_endpoint_descriptor;
 typedef void	(usb_bus_mem_sub_callback_t)(struct usb_bus *,
 		    struct usb_page_cache *, struct usb_page *, usb_size_t,
 		    usb_size_t);
-typedef void	(usb_bus_mem_callback_t)(struct usb_bus *,
-		    usb_bus_mem_sub_callback_t *);
 
 /*
  * The following structure is used to define all the USB BUS
@@ -193,10 +191,9 @@ struct usb_temp_setup {
 
 /* prototypes */
 
-void	usb_bus_mem_flush_all(struct usb_bus *bus, usb_bus_mem_callback_t *cb);
-uint8_t	usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat,
-	    usb_bus_mem_callback_t *cb);
-void	usb_bus_mem_free_all(struct usb_bus *bus, usb_bus_mem_callback_t *cb);
+void	usb_bus_mem_flush_all(struct usb_bus *bus);
+uint8_t	usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat);
+void	usb_bus_mem_free_all(struct usb_bus *bus);
 uint16_t usb_isoc_time_expand(struct usb_bus *bus, uint16_t isoc_time_curr);
 uint16_t usbd_fs_isoc_schedule_isoc_time_expand(struct usb_device *udev, struct usb_fs_isoc_schedule **pp_start, struct usb_fs_isoc_schedule **pp_end, uint16_t isoc_time);
 uint8_t	usbd_fs_isoc_schedule_alloc(struct usb_fs_isoc_schedule *fss, uint8_t *pstart, uint16_t len);


More information about the svn-src-user mailing list