diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2008-01-28 10:00:54 -0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-01-28 10:00:54 -0800 |
| commit | df694001f044ff84344322c47cc2b0df87b76c12 (patch) | |
| tree | 36f6d3e2568c3aca595c575c87fee3e138743ac1 | |
| parent | e8432b7bab8032bda2b4551435deb2847e2ad802 (diff) | |
| download | patches-df694001f044ff84344322c47cc2b0df87b76c12.tar.gz | |
druver and usb patches
| -rw-r--r-- | driver/driver-core-convert-to-use-class_find_device-api.patch | 79 | ||||
| -rw-r--r-- | driver/kobject-kerneldoc-comment-fix.patch | 30 | ||||
| -rw-r--r-- | driver/nozomi-driver-update.patch | 247 | ||||
| -rw-r--r-- | driver/pm-export-device_pm_schedule_removal.patch | 67 | ||||
| -rw-r--r-- | pci/pci-remove-users-of-pci_enable_device_bars.patch | 6 | ||||
| -rw-r--r-- | series | 9 | ||||
| -rw-r--r-- | usb/usb-handle-idvendor-of-0x0000.patch | 31 | ||||
| -rw-r--r-- | usb/usb-use-a-real-vendor-and-product-id-for-root-hubs.patch | 36 | ||||
| -rw-r--r-- | version | 2 |
9 files changed, 502 insertions, 5 deletions
diff --git a/driver/driver-core-convert-to-use-class_find_device-api.patch b/driver/driver-core-convert-to-use-class_find_device-api.patch new file mode 100644 index 00000000000000..3a77b61a5a2edd --- /dev/null +++ b/driver/driver-core-convert-to-use-class_find_device-api.patch @@ -0,0 +1,79 @@ +From hidave.darkstar@gmail.com Mon Jan 28 08:57:59 2008 +From: Dave Young <hidave.darkstar@gmail.com> +Date: Mon, 28 Jan 2008 16:56:11 +0800 +Subject: driver core: convert to use class_find_device api +To: gregkh@suse.de +Cc: linux-kernel@vger.kernel.org +Message-ID: <20080128085611.GA27570@darkstar.te-china.tietoenator.com> +Content-Disposition: inline + + +Convert to use class_find_device api in drivers/base/core.c + +Signed-off-by: Dave Young <hidave.darkstar@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/base/core.c | 32 +++++++++++--------------------- + 1 file changed, 11 insertions(+), 21 deletions(-) + +--- a/drivers/base/core.c ++++ b/drivers/base/core.c +@@ -1144,25 +1144,11 @@ error: + } + EXPORT_SYMBOL_GPL(device_create); + +-/** +- * find_device - finds a device that was created with device_create() +- * @class: pointer to the struct class that this device was registered with +- * @devt: the dev_t of the device that was previously registered +- */ +-static struct device *find_device(struct class *class, dev_t devt) ++static int __match_devt(struct device *dev, void *data) + { +- struct device *dev = NULL; +- struct device *dev_tmp; ++ dev_t *devt = data; + +- down(&class->sem); +- list_for_each_entry(dev_tmp, &class->devices, node) { +- if (dev_tmp->devt == devt) { +- dev = dev_tmp; +- break; +- } +- } +- up(&class->sem); +- return dev; ++ return dev->devt == *devt; + } + + /** +@@ -1177,9 +1163,11 @@ void device_destroy(struct class *class, + { + struct device *dev; + +- dev = find_device(class, devt); +- if (dev) ++ dev = class_find_device(class, &devt, __match_devt); ++ if (dev) { ++ put_device(dev); + device_unregister(dev); ++ } + } + EXPORT_SYMBOL_GPL(device_destroy); + +@@ -1203,9 +1191,11 @@ void destroy_suspended_device(struct cla + { + struct device *dev; + +- dev = find_device(class, devt); +- if (dev) ++ dev = class_find_device(class, &devt, __match_devt); ++ if (dev) { + device_pm_schedule_removal(dev); ++ put_device(dev); ++ } + } + EXPORT_SYMBOL_GPL(destroy_suspended_device); + #endif /* CONFIG_PM_SLEEP */ diff --git a/driver/kobject-kerneldoc-comment-fix.patch b/driver/kobject-kerneldoc-comment-fix.patch new file mode 100644 index 00000000000000..527adabf41bd24 --- /dev/null +++ b/driver/kobject-kerneldoc-comment-fix.patch @@ -0,0 +1,30 @@ +From hidave.darkstar@gmail.com Mon Jan 28 08:58:35 2008 +From: Dave Young <hidave.darkstar@gmail.com> +Date: Mon, 28 Jan 2008 16:58:00 +0800 +Subject: kobject: kerneldoc comment fix +To: gregkh@suse.de +Cc: linux-kernel@vger.kernel.org +Message-ID: <20080128085800.GB27570@darkstar.te-china.tietoenator.com> +Content-Disposition: inline + + +Fix kerneldoc comment of kobject_create. + +Signed-off-by: Dave Young <hidave.darkstar@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + lib/kobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/kobject.c ++++ b/lib/kobject.c +@@ -637,7 +637,7 @@ struct kobject *kobject_create(void) + * @name: the name for the kset + * @parent: the parent kobject of this kobject, if any. + * +- * This function creates a kset structure dynamically and registers it ++ * This function creates a kobject structure dynamically and registers it + * with sysfs. When you are finished with this structure, call + * kobject_put() and the structure will be dynamically freed when + * it is no longer being used. diff --git a/driver/nozomi-driver-update.patch b/driver/nozomi-driver-update.patch new file mode 100644 index 00000000000000..14d060ba806324 --- /dev/null +++ b/driver/nozomi-driver-update.patch @@ -0,0 +1,247 @@ +From fseidel@suse.de Mon Jan 28 08:55:56 2008 +From: Frank Seidel <fseidel@suse.de> +Date: Fri, 25 Jan 2008 21:13:24 +0100 +Subject: nozomi driver update +To: Greg KH <gregkh@suse.de> +Cc: Jan Engelhardt <jengelh@computergmbh.de>, linux-kernel@vger.kernel.org, Jiri Slaby <jirislaby@gmail.com> +Message-ID: <200801252113.25108.fseidel@suse.de> +Content-Disposition: inline + + +From: Frank Seidel <fseidel@suse.de> + +Minor cleanups and removal of in-file changelog: + +- Correction of misspellings and wrong encoded Name +- changed 'unsigned' to 'unsigned int' for better readability +- use of generic devicefile access macro +- fixed/added explanatory comment to ntty_put_char + +Signed-off-by: Frank Seidel <fseidel@suse.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/char/nozomi.c | 122 ++++++++++++++------------------------------------ + 1 file changed, 36 insertions(+), 86 deletions(-) + +--- a/drivers/char/nozomi.c ++++ b/drivers/char/nozomi.c +@@ -2,7 +2,7 @@ + * nozomi.c -- HSDPA driver Broadband Wireless Data Card - Globe Trotter + * + * Written by: Ulf Jakobsson, +- * Jan �erfeldt, ++ * Jan Åkerfeldt, + * Stefan Thomasson, + * + * Maintained by: Paul Hardwick (p.hardwick@option.com) +@@ -38,60 +38,6 @@ + * -------------------------------------------------------------------------- + */ + +-/* +- * CHANGELOG +- * Version 2.1d +- * 11-November-2007 Jiri Slaby, Frank Seidel +- * - Big rework of multicard support by Jiri +- * - Major cleanups (semaphore to mutex, endianess, no major reservation) +- * - Optimizations +- * +- * Version 2.1c +- * 30-October-2007 Frank Seidel +- * - Completed multicard support +- * - Minor cleanups +- * +- * Version 2.1b +- * 07-August-2007 Frank Seidel +- * - Minor cleanups +- * - theoretical multicard support +- * +- * Version 2.1 +- * 03-July-2006 Paul Hardwick +- * +- * - Stability Improvements. Incorporated spinlock wraps patch. +- * - Updated for newer 2.6.14+ kernels (tty_buffer_request_room) +- * - using __devexit macro for tty +- * +- * +- * Version 2.0 +- * 08-feb-2006 15:34:10:Ulf +- * +- * -Fixed issue when not waking up line disipine layer, could probably result +- * in better uplink performance for 2.4. +- * +- * -Fixed issue with big endian during initalization, now proper toggle flags +- * are handled between preloader and maincode. +- * +- * -Fixed flow control issue. +- * +- * -Added support for setting DTR. +- * +- * -For 2.4 kernels, removing temporary buffer that's not needed. +- * +- * -Reading CTS only for modem port (only port that supports it). +- * +- * -Return 0 in write_room instead of netative value, it's not handled in +- * upper layer. +- * +- * -------------------------------------------------------------------------- +- * Version 1.0 +- * +- * First version of driver, only tested with card of type F32_2. +- * Works fine with 2.4 and 2.6 kernels. +- * Driver also support big endian architecture. +- */ +- + /* Enable this to have a lot of debug printouts */ + #define DEBUG + +@@ -143,8 +89,9 @@ do { \ + /* Do we need this settable at runtime? */ + static int debug = NOZOMI_DEBUG_LEVEL; + +-#define D(lvl, args...) do {if (lvl & debug) NFO(KERN_DEBUG, ##args); } \ +- while (0) ++#define D(lvl, args...) do \ ++ {if (lvl & debug) NFO(KERN_DEBUG, ##args); } \ ++ while (0) + #define D_(lvl, args...) D(lvl, ##args) + + /* These printouts are always printed */ +@@ -273,13 +220,13 @@ enum port_type { + /* Big endian */ + + struct toggles { +- unsigned enabled:5; /* ++ unsigned int enabled:5; /* + * Toggle fields are valid if enabled is 0, + * else A-channels must always be used. + */ +- unsigned diag_dl:1; +- unsigned mdm_dl:1; +- unsigned mdm_ul:1; ++ unsigned int diag_dl:1; ++ unsigned int mdm_dl:1; ++ unsigned int mdm_ul:1; + } __attribute__ ((packed)); + + /* Configuration table to read at startup of card */ +@@ -320,19 +267,19 @@ struct config_table { + /* This stores all control downlink flags */ + struct ctrl_dl { + u8 port; +- unsigned reserved:4; +- unsigned CTS:1; +- unsigned RI:1; +- unsigned DCD:1; +- unsigned DSR:1; ++ unsigned int reserved:4; ++ unsigned int CTS:1; ++ unsigned int RI:1; ++ unsigned int DCD:1; ++ unsigned int DSR:1; + } __attribute__ ((packed)); + + /* This stores all control uplink flags */ + struct ctrl_ul { + u8 port; +- unsigned reserved:6; +- unsigned RTS:1; +- unsigned DTR:1; ++ unsigned int reserved:6; ++ unsigned int RTS:1; ++ unsigned int DTR:1; + } __attribute__ ((packed)); + + #else +@@ -340,10 +287,10 @@ struct ctrl_ul { + + /* This represents the toggle information */ + struct toggles { +- unsigned mdm_ul:1; +- unsigned mdm_dl:1; +- unsigned diag_dl:1; +- unsigned enabled:5; /* ++ unsigned int mdm_ul:1; ++ unsigned int mdm_dl:1; ++ unsigned int diag_dl:1; ++ unsigned int enabled:5; /* + * Toggle fields are valid if enabled is 0, + * else A-channels must always be used. + */ +@@ -379,19 +326,19 @@ struct config_table { + + /* This stores all control downlink flags */ + struct ctrl_dl { +- unsigned DSR:1; +- unsigned DCD:1; +- unsigned RI:1; +- unsigned CTS:1; +- unsigned reserverd:4; ++ unsigned int DSR:1; ++ unsigned int DCD:1; ++ unsigned int RI:1; ++ unsigned int CTS:1; ++ unsigned int reserverd:4; + u8 port; + } __attribute__ ((packed)); + + /* This stores all control uplink flags */ + struct ctrl_ul { +- unsigned DTR:1; +- unsigned RTS:1; +- unsigned reserved:6; ++ unsigned int DTR:1; ++ unsigned int RTS:1; ++ unsigned int reserved:6; + u8 port; + } __attribute__ ((packed)); + #endif +@@ -694,7 +641,7 @@ static void dump_table(const struct nozo + dc->config_table.ul_ctrl_len); + } + #else +-static __inline__ void dump_table(const struct nozomi *dc) { } ++static inline void dump_table(const struct nozomi *dc) { } + #endif + + /* +@@ -1102,7 +1049,7 @@ static int send_flow_control(struct nozo + } + + /* +- * Handle donlink data, ports that are handled are modem and diagnostics ++ * Handle downlink data, ports that are handled are modem and diagnostics + * Return 1 - ok + * Return 0 - toggle fields are out of sync + */ +@@ -1363,7 +1310,7 @@ static ssize_t card_type_show(struct dev + + return sprintf(buf, "%d\n", dc->card_type); + } +-static DEVICE_ATTR(card_type, 0444, card_type_show, NULL); ++static DEVICE_ATTR(card_type, S_IRUGO, card_type_show, NULL); + + static ssize_t open_ttys_show(struct device *dev, struct device_attribute *attr, + char *buf) +@@ -1372,7 +1319,7 @@ static ssize_t open_ttys_show(struct dev + + return sprintf(buf, "%u\n", dc->open_ttys); + } +-static DEVICE_ATTR(open_ttys, 0444, open_ttys_show, NULL); ++static DEVICE_ATTR(open_ttys, S_IRUGO, open_ttys_show, NULL); + + static void make_sysfs_files(struct nozomi *dc) + { +@@ -1882,7 +1829,10 @@ static void ntty_throttle(struct tty_str + /* just to discard single character writes */ + static void ntty_put_char(struct tty_struct *tty, unsigned char c) + { +- /* FIXME !!! */ ++ /* ++ * card does not react correct when we write single chars ++ * to the card, so we discard them ++ */ + DBG2("PUT CHAR Function: %c", c); + } + diff --git a/driver/pm-export-device_pm_schedule_removal.patch b/driver/pm-export-device_pm_schedule_removal.patch new file mode 100644 index 00000000000000..0e02e5150b17ae --- /dev/null +++ b/driver/pm-export-device_pm_schedule_removal.patch @@ -0,0 +1,67 @@ +From rjw@sisk.pl Mon Jan 28 08:57:01 2008 +From: "Rafael J. Wysocki" <rjw@sisk.pl> +Date: Fri, 25 Jan 2008 01:30:25 +0100 +Subject: PM: Export device_pm_schedule_removal +To: Andrew Morton <akpm@linux-foundation.org> +Cc: Michael Buesch <mb@bu3sch.de>, pm list <linux-pm@lists.linux-foundation.org>, Alan Stern <stern@rowland.harvard.edu>, Len Brown <lenb@kernel.org>, LKML <linux-kernel@vger.kernel.org>, Pavel Machek <pavel@ucw.cz>, bcm43xx-dev@lists.berlios.de, Alessandro Rubini <rubini@ipvvis.unipv.it>, Richard Purdie <rpurdie@rpsys.net>, Greg KH <greg@kroah.com> +Message-ID: <200801250130.26591.rjw@sisk.pl> +Content-Disposition: inline + + +From: Rafael J. Wysocki <rjw@sisk.pl> + +Move the declaration of device_pm_schedule_removal() to device.h +and make it exported, as it will be used directly by some drivers +for unregistering device objects during suspend/resume cycles in a +safe way. + +Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> +Acked-by: Pavel Machek <pavel@ucw.cz> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/base/power/main.c | 1 + + drivers/base/power/power.h | 1 - + include/linux/device.h | 6 ++++++ + 3 files changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/base/power/main.c ++++ b/drivers/base/power/main.c +@@ -129,6 +129,7 @@ void device_pm_schedule_removal(struct d + list_move_tail(&dev->power.entry, &dpm_destroy); + mutex_unlock(&dpm_list_mtx); + } ++EXPORT_SYMBOL_GPL(device_pm_schedule_removal); + + /** + * pm_sleep_lock - mutual exclusion for registration and suspend +--- a/drivers/base/power/power.h ++++ b/drivers/base/power/power.h +@@ -13,7 +13,6 @@ static inline struct device *to_device(s + + extern void device_pm_add(struct device *); + extern void device_pm_remove(struct device *); +-extern void device_pm_schedule_removal(struct device *); + extern int pm_sleep_lock(void); + extern void pm_sleep_unlock(void); + +--- a/include/linux/device.h ++++ b/include/linux/device.h +@@ -534,11 +534,17 @@ extern struct device *device_create(stru + extern void device_destroy(struct class *cls, dev_t devt); + #ifdef CONFIG_PM_SLEEP + extern void destroy_suspended_device(struct class *cls, dev_t devt); ++extern void device_pm_schedule_removal(struct device *); + #else /* !CONFIG_PM_SLEEP */ + static inline void destroy_suspended_device(struct class *cls, dev_t devt) + { + device_destroy(cls, devt); + } ++ ++static inline void device_pm_schedule_removal(struct device *dev) ++{ ++ device_unregister(dev); ++} + #endif /* !CONFIG_PM_SLEEP */ + + /* diff --git a/pci/pci-remove-users-of-pci_enable_device_bars.patch b/pci/pci-remove-users-of-pci_enable_device_bars.patch index bd4a58942b4d8a..a020b90fdb4744 100644 --- a/pci/pci-remove-users-of-pci_enable_device_bars.patch +++ b/pci/pci-remove-users-of-pci_enable_device_bars.patch @@ -53,7 +53,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c -@@ -161,8 +161,14 @@ static int __devinit cs5520_init_one(str +@@ -156,8 +156,14 @@ static int __devinit cs5520_init_one(str ide_setup_pci_noise(dev, d); /* We must not grab the entire device, it has 'ISA' space in its @@ -72,7 +72,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c -@@ -236,7 +236,9 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise); +@@ -240,7 +240,9 @@ EXPORT_SYMBOL_GPL(ide_setup_pci_noise); * @d: IDE port info * * Enable the IDE PCI device. We attempt to enable the device in full @@ -83,7 +83,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> * * Returns zero on success or an error code */ -@@ -246,7 +248,7 @@ static int ide_pci_enable(struct pci_dev +@@ -250,7 +252,7 @@ static int ide_pci_enable(struct pci_dev int ret; if (pci_enable_device(dev)) { @@ -14,6 +14,11 @@ driver/driver-core-add-bus_find_device_by_name-function.patch driver/net-convert-the-phy_device-file-to-use-bus_find_device_by_name.patch driver/ppc-fix-powerpc-vio_find_name-to-not-use-devices_subsys.patch +driver/nozomi-driver-update.patch +driver/pm-export-device_pm_schedule_removal.patch +driver/driver-core-convert-to-use-class_find_device-api.patch +driver/kobject-kerneldoc-comment-fix.patch + # driver patches for after 2.6.24 is out #driver/atm-convert-struct-class_device-to-struct-device.patch @@ -217,7 +222,8 @@ usb/usb-ehci-remove-false-clear-reset-path.patch usb/usb-ehci-should-use-u16-for-isochronous-intervals.patch usb/usb-fix-usb_serial_driver-structure-for-kobil-cardreader-driver.patch usb/usbfs_opts.patch - +usb/usb-handle-idvendor-of-0x0000.patch +usb/usb-use-a-real-vendor-and-product-id-for-root-hubs.patch usb/usb-mark-usb-drivers-as-being-gpl-only.patch # my ols tutorial driver, never in mainline @@ -231,3 +237,4 @@ usb/usb-gotemp.patch #pending/block-make-genhd-use-the-new-class-iterator-functions.patch #pending/class-move-driver-core-specific-parts-to-a-private-structure.patch + diff --git a/usb/usb-handle-idvendor-of-0x0000.patch b/usb/usb-handle-idvendor-of-0x0000.patch new file mode 100644 index 00000000000000..7e99303712abe0 --- /dev/null +++ b/usb/usb-handle-idvendor-of-0x0000.patch @@ -0,0 +1,31 @@ +From foo@baz Tue Apr 9 12:12:43 2002 +Date: Mon, 28 Jan 2008 09:50:12 -0800 +To: Greg KH <greg@kroah.com> +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: USB: handle idVendor of 0x0000 + +From: Greg Kroah-Hartman <gregkh@suse.de> + +Some crazy devices in the wild have a vendor id of 0x0000. If we try to +add a module alias with this id, we just can't do it due to a check in +the file2alias.c file. Change the test to verify that both the vendor +and product ids are 0x0000 to show a real "blank" module alias. + +Cc: Janusz <janumix@poczta.fm> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + scripts/mod/file2alias.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/scripts/mod/file2alias.c ++++ b/scripts/mod/file2alias.c +@@ -155,7 +155,7 @@ static void do_usb_entry_multi(struct us + * Some modules (visor) have empty slots as placeholder for + * run-time specification that results in catch-all alias + */ +- if (!(id->idVendor | id->bDeviceClass | id->bInterfaceClass)) ++ if (!(id->idVendor | id->idProduct | id->bDeviceClass | id->bInterfaceClass)) + return; + + /* Convert numeric bcdDevice range into fnmatch-able pattern(s) */ diff --git a/usb/usb-use-a-real-vendor-and-product-id-for-root-hubs.patch b/usb/usb-use-a-real-vendor-and-product-id-for-root-hubs.patch new file mode 100644 index 00000000000000..f81d3dc77be2e3 --- /dev/null +++ b/usb/usb-use-a-real-vendor-and-product-id-for-root-hubs.patch @@ -0,0 +1,36 @@ +From foo@baz Tue Apr 9 12:12:43 2002 +Date: Mon, 28 Jan 2008 09:50:12 -0800 +To: Greg KH <greg@kroah.com> +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: USB: use a real vendor and product id for root hubs + +From: Greg Kroah-Hartman <gregkh@suse.de> + +Turns out that a company is out there using the vendor id of 0x0000 in +the wild, so use a real vendor/product id for the root hubs. + +Now that the Linux Foundation has a real vendor id, we use that, and the +first product id: + 0x1d6b is the vendor id of the Linux Foundation + 0x0001 is the product id for Linux root hubs + + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/core/hcd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -132,8 +132,8 @@ static const u8 usb2_rh_dev_descriptor [ + 0x01, /* __u8 bDeviceProtocol; [ usb 2.0 single TT ]*/ + 0x40, /* __u8 bMaxPacketSize0; 64 Bytes */ + +- 0x00, 0x00, /* __le16 idVendor; */ +- 0x00, 0x00, /* __le16 idProduct; */ ++ 0x6b, 0x1d, /* __le16 idVendor; Linux Foundation */ ++ 0x01, 0x00, /* __le16 idProduct; device 0x0001 */ + KERNEL_VER, KERNEL_REL, /* __le16 bcdDevice */ + + 0x03, /* __u8 iManufacturer; */ @@ -1 +1 @@ -2.6.24-git2 +2.6.24-git4 |
