/[linux-patches]/genpatches-2.6/tags/3.0-30/1035_linux-3.0.36.patch
Gentoo

Contents of /genpatches-2.6/tags/3.0-30/1035_linux-3.0.36.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2206 - (show annotations) (download)
Mon Sep 17 18:58:14 2012 UTC (2 years, 3 months ago) by mpagano
File size: 22103 byte(s)
3.0-30 release
1 diff --git a/Makefile b/Makefile
2 index fe91076..cc34921 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 3
7 PATCHLEVEL = 0
8 -SUBLEVEL = 35
9 +SUBLEVEL = 36
10 EXTRAVERSION =
11 NAME = Sneaky Weasel
12
13 diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
14 index 74ac889..a37fe02 100644
15 --- a/arch/arm/mach-imx/mach-mx21ads.c
16 +++ b/arch/arm/mach-imx/mach-mx21ads.c
17 @@ -32,7 +32,7 @@
18 * Memory-mapped I/O on MX21ADS base board
19 */
20 #define MX21ADS_MMIO_BASE_ADDR 0xf5000000
21 -#define MX21ADS_MMIO_SIZE SZ_16M
22 +#define MX21ADS_MMIO_SIZE 0xc00000
23
24 #define MX21ADS_REG_ADDR(offset) (void __force __iomem *) \
25 (MX21ADS_MMIO_BASE_ADDR + (offset))
26 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
27 index b50c593..8385d1d 100644
28 --- a/arch/x86/xen/enlighten.c
29 +++ b/arch/x86/xen/enlighten.c
30 @@ -198,6 +198,9 @@ static void __init xen_banner(void)
31 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
32 }
33
34 +#define CPUID_THERM_POWER_LEAF 6
35 +#define APERFMPERF_PRESENT 0
36 +
37 static __read_mostly unsigned int cpuid_leaf1_edx_mask = ~0;
38 static __read_mostly unsigned int cpuid_leaf1_ecx_mask = ~0;
39
40 @@ -218,6 +221,11 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
41 maskedx = cpuid_leaf1_edx_mask;
42 break;
43
44 + case CPUID_THERM_POWER_LEAF:
45 + /* Disabling APERFMPERF for kernel usage */
46 + maskecx = ~(1 << APERFMPERF_PRESENT);
47 + break;
48 +
49 case 0xb:
50 /* Suppress extended topology stuff */
51 maskebx = 0;
52 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
53 index d549bbc..bf401ae 100644
54 --- a/drivers/pci/pci.c
55 +++ b/drivers/pci/pci.c
56 @@ -1682,6 +1682,11 @@ int pci_prepare_to_sleep(struct pci_dev *dev)
57 if (target_state == PCI_POWER_ERROR)
58 return -EIO;
59
60 + /* Some devices mustn't be in D3 during system sleep */
61 + if (target_state == PCI_D3hot &&
62 + (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP))
63 + return 0;
64 +
65 pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev));
66
67 error = pci_set_power_state(dev, target_state);
68 diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
69 index a6b07dd..975af43 100644
70 --- a/drivers/pci/quirks.c
71 +++ b/drivers/pci/quirks.c
72 @@ -2856,6 +2856,32 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev)
73 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
74 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
75
76 +/*
77 + * The Intel 6 Series/C200 Series chipset's EHCI controllers on many
78 + * ASUS motherboards will cause memory corruption or a system crash
79 + * if they are in D3 while the system is put into S3 sleep.
80 + */
81 +static void __devinit asus_ehci_no_d3(struct pci_dev *dev)
82 +{
83 + const char *sys_info;
84 + static const char good_Asus_board[] = "P8Z68-V";
85 +
86 + if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)
87 + return;
88 + if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK)
89 + return;
90 + sys_info = dmi_get_system_info(DMI_BOARD_NAME);
91 + if (sys_info && memcmp(sys_info, good_Asus_board,
92 + sizeof(good_Asus_board) - 1) == 0)
93 + return;
94 +
95 + dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n");
96 + dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP;
97 + device_set_wakeup_capable(&dev->dev, false);
98 +}
99 +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3);
100 +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3);
101 +
102 static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
103 struct pci_fixup *end)
104 {
105 diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
106 index 158f631..496e06e 100644
107 --- a/drivers/usb/class/cdc-acm.c
108 +++ b/drivers/usb/class/cdc-acm.c
109 @@ -498,6 +498,14 @@ static int acm_tty_open(struct tty_struct *tty, struct file *filp)
110
111 usb_autopm_put_interface(acm->control);
112
113 + /*
114 + * Unthrottle device in case the TTY was closed while throttled.
115 + */
116 + spin_lock_irq(&acm->read_lock);
117 + acm->throttled = 0;
118 + acm->throttle_req = 0;
119 + spin_unlock_irq(&acm->read_lock);
120 +
121 if (acm_submit_read_urbs(acm, GFP_KERNEL))
122 goto bail_out;
123
124 diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
125 index aa7bbbc..6c1642b 100644
126 --- a/drivers/usb/core/hcd-pci.c
127 +++ b/drivers/usb/core/hcd-pci.c
128 @@ -495,15 +495,6 @@ static int hcd_pci_suspend_noirq(struct device *dev)
129
130 pci_save_state(pci_dev);
131
132 - /*
133 - * Some systems crash if an EHCI controller is in D3 during
134 - * a sleep transition. We have to leave such controllers in D0.
135 - */
136 - if (hcd->broken_pci_sleep) {
137 - dev_dbg(dev, "Staying in PCI D0\n");
138 - return retval;
139 - }
140 -
141 /* If the root hub is dead rather than suspended, disallow remote
142 * wakeup. usb_hc_died() should ensure that both hosts are marked as
143 * dying, so we only need to check the primary roothub.
144 diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
145 index 1eebd45..806060c 100644
146 --- a/drivers/usb/core/message.c
147 +++ b/drivers/usb/core/message.c
148 @@ -1803,7 +1803,6 @@ free_interfaces:
149 intfc = cp->intf_cache[i];
150 intf->altsetting = intfc->altsetting;
151 intf->num_altsetting = intfc->num_altsetting;
152 - intf->intf_assoc = find_iad(dev, cp, i);
153 kref_get(&intfc->ref);
154
155 alt = usb_altnum_to_altsetting(intf, 0);
156 @@ -1816,6 +1815,8 @@ free_interfaces:
157 if (!alt)
158 alt = &intf->altsetting[0];
159
160 + intf->intf_assoc =
161 + find_iad(dev, cp, alt->desc.bInterfaceNumber);
162 intf->cur_altsetting = alt;
163 usb_enable_interface(dev, intf, true);
164 intf->dev.parent = &dev->dev;
165 diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
166 index efb9efc..f768314 100644
167 --- a/drivers/usb/host/ehci-pci.c
168 +++ b/drivers/usb/host/ehci-pci.c
169 @@ -144,14 +144,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
170 hcd->has_tt = 1;
171 tdi_reset(ehci);
172 }
173 - if (pdev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK) {
174 - /* EHCI #1 or #2 on 6 Series/C200 Series chipset */
175 - if (pdev->device == 0x1c26 || pdev->device == 0x1c2d) {
176 - ehci_info(ehci, "broken D3 during system sleep on ASUS\n");
177 - hcd->broken_pci_sleep = 1;
178 - device_set_wakeup_capable(&pdev->dev, false);
179 - }
180 - }
181 break;
182 case PCI_VENDOR_ID_TDI:
183 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
184 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
185 index dbba936..16ec4d3 100644
186 --- a/drivers/usb/host/xhci.c
187 +++ b/drivers/usb/host/xhci.c
188 @@ -730,8 +730,8 @@ int xhci_suspend(struct xhci_hcd *xhci)
189 command = xhci_readl(xhci, &xhci->op_regs->command);
190 command |= CMD_CSS;
191 xhci_writel(xhci, command, &xhci->op_regs->command);
192 - if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) {
193 - xhci_warn(xhci, "WARN: xHC CMD_CSS timeout\n");
194 + if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10 * 1000)) {
195 + xhci_warn(xhci, "WARN: xHC save state timeout\n");
196 spin_unlock_irq(&xhci->lock);
197 return -ETIMEDOUT;
198 }
199 @@ -786,8 +786,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
200 command |= CMD_CRS;
201 xhci_writel(xhci, command, &xhci->op_regs->command);
202 if (handshake(xhci, &xhci->op_regs->status,
203 - STS_RESTORE, 0, 10*100)) {
204 - xhci_dbg(xhci, "WARN: xHC CMD_CSS timeout\n");
205 + STS_RESTORE, 0, 10 * 1000)) {
206 + xhci_warn(xhci, "WARN: xHC restore state timeout\n");
207 spin_unlock_irq(&xhci->lock);
208 return -ETIMEDOUT;
209 }
210 diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
211 index f2c57e0..aa0c43f 100644
212 --- a/drivers/usb/serial/cp210x.c
213 +++ b/drivers/usb/serial/cp210x.c
214 @@ -82,6 +82,7 @@ static const struct usb_device_id id_table[] = {
215 { USB_DEVICE(0x10C4, 0x8066) }, /* Argussoft In-System Programmer */
216 { USB_DEVICE(0x10C4, 0x806F) }, /* IMS USB to RS422 Converter Cable */
217 { USB_DEVICE(0x10C4, 0x807A) }, /* Crumb128 board */
218 + { USB_DEVICE(0x10C4, 0x80C4) }, /* Cygnal Integrated Products, Inc., Optris infrared thermometer */
219 { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
220 { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
221 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
222 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
223 index f08d494..86fc8fc 100644
224 --- a/drivers/usb/serial/ftdi_sio.c
225 +++ b/drivers/usb/serial/ftdi_sio.c
226 @@ -735,6 +735,7 @@ static struct usb_device_id id_table_combined [] = {
227 { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) },
228 { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) },
229 { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) },
230 + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_RTS01_PID) },
231 { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) },
232 { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) },
233 { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
234 diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
235 index 219b199..d27d7d7 100644
236 --- a/drivers/usb/serial/ftdi_sio_ids.h
237 +++ b/drivers/usb/serial/ftdi_sio_ids.h
238 @@ -784,6 +784,7 @@
239 #define RTSYSTEMS_VID 0x2100 /* Vendor ID */
240 #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */
241 #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */
242 +#define RTSYSTEMS_RTS01_PID 0x9e57 /* USB-RTS01 Radio Cable */
243
244
245 /*
246 diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
247 index ba0d287..42de17b 100644
248 --- a/drivers/usb/serial/mct_u232.c
249 +++ b/drivers/usb/serial/mct_u232.c
250 @@ -359,13 +359,16 @@ static int mct_u232_set_modem_ctrl(struct usb_serial *serial,
251 MCT_U232_SET_REQUEST_TYPE,
252 0, 0, buf, MCT_U232_SET_MODEM_CTRL_SIZE,
253 WDR_TIMEOUT);
254 - if (rc < 0)
255 - dev_err(&serial->dev->dev,
256 - "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
257 + kfree(buf);
258 +
259 dbg("set_modem_ctrl: state=0x%x ==> mcr=0x%x", control_state, mcr);
260
261 - kfree(buf);
262 - return rc;
263 + if (rc < 0) {
264 + dev_err(&serial->dev->dev,
265 + "Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
266 + return rc;
267 + }
268 + return 0;
269 } /* mct_u232_set_modem_ctrl */
270
271 static int mct_u232_get_modem_stat(struct usb_serial *serial,
272 diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
273 index 3257519..fdbeb6a 100644
274 --- a/drivers/usb/serial/mos7840.c
275 +++ b/drivers/usb/serial/mos7840.c
276 @@ -206,7 +206,7 @@ static const struct usb_device_id moschip_port_id_table[] = {
277 {} /* terminating entry */
278 };
279
280 -static const struct usb_device_id moschip_id_table_combined[] __devinitconst = {
281 +static const struct usb_device_id moschip_id_table_combined[] = {
282 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)},
283 {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)},
284 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)},
285 diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
286 index cbe3451..ce02457 100644
287 --- a/drivers/usb/serial/option.c
288 +++ b/drivers/usb/serial/option.c
289 @@ -47,6 +47,7 @@
290 /* Function prototypes */
291 static int option_probe(struct usb_serial *serial,
292 const struct usb_device_id *id);
293 +static void option_release(struct usb_serial *serial);
294 static int option_send_setup(struct usb_serial_port *port);
295 static void option_instat_callback(struct urb *urb);
296
297 @@ -150,6 +151,7 @@ static void option_instat_callback(struct urb *urb);
298 #define HUAWEI_PRODUCT_E14AC 0x14AC
299 #define HUAWEI_PRODUCT_K3806 0x14AE
300 #define HUAWEI_PRODUCT_K4605 0x14C6
301 +#define HUAWEI_PRODUCT_K5005 0x14C8
302 #define HUAWEI_PRODUCT_K3770 0x14C9
303 #define HUAWEI_PRODUCT_K3771 0x14CA
304 #define HUAWEI_PRODUCT_K4510 0x14CB
305 @@ -425,7 +427,7 @@ static void option_instat_callback(struct urb *urb);
306 #define SAMSUNG_VENDOR_ID 0x04e8
307 #define SAMSUNG_PRODUCT_GT_B3730 0x6889
308
309 -/* YUGA products www.yuga-info.com*/
310 +/* YUGA products www.yuga-info.com gavin.kx@qq.com */
311 #define YUGA_VENDOR_ID 0x257A
312 #define YUGA_PRODUCT_CEM600 0x1601
313 #define YUGA_PRODUCT_CEM610 0x1602
314 @@ -442,6 +444,8 @@ static void option_instat_callback(struct urb *urb);
315 #define YUGA_PRODUCT_CEU516 0x160C
316 #define YUGA_PRODUCT_CEU528 0x160D
317 #define YUGA_PRODUCT_CEU526 0x160F
318 +#define YUGA_PRODUCT_CEU881 0x161F
319 +#define YUGA_PRODUCT_CEU882 0x162F
320
321 #define YUGA_PRODUCT_CWM600 0x2601
322 #define YUGA_PRODUCT_CWM610 0x2602
323 @@ -457,23 +461,26 @@ static void option_instat_callback(struct urb *urb);
324 #define YUGA_PRODUCT_CWU518 0x260B
325 #define YUGA_PRODUCT_CWU516 0x260C
326 #define YUGA_PRODUCT_CWU528 0x260D
327 +#define YUGA_PRODUCT_CWU581 0x260E
328 #define YUGA_PRODUCT_CWU526 0x260F
329 -
330 -#define YUGA_PRODUCT_CLM600 0x2601
331 -#define YUGA_PRODUCT_CLM610 0x2602
332 -#define YUGA_PRODUCT_CLM500 0x2603
333 -#define YUGA_PRODUCT_CLM510 0x2604
334 -#define YUGA_PRODUCT_CLM800 0x2605
335 -#define YUGA_PRODUCT_CLM900 0x2606
336 -
337 -#define YUGA_PRODUCT_CLU718 0x2607
338 -#define YUGA_PRODUCT_CLU716 0x2608
339 -#define YUGA_PRODUCT_CLU728 0x2609
340 -#define YUGA_PRODUCT_CLU726 0x260A
341 -#define YUGA_PRODUCT_CLU518 0x260B
342 -#define YUGA_PRODUCT_CLU516 0x260C
343 -#define YUGA_PRODUCT_CLU528 0x260D
344 -#define YUGA_PRODUCT_CLU526 0x260F
345 +#define YUGA_PRODUCT_CWU582 0x261F
346 +#define YUGA_PRODUCT_CWU583 0x262F
347 +
348 +#define YUGA_PRODUCT_CLM600 0x3601
349 +#define YUGA_PRODUCT_CLM610 0x3602
350 +#define YUGA_PRODUCT_CLM500 0x3603
351 +#define YUGA_PRODUCT_CLM510 0x3604
352 +#define YUGA_PRODUCT_CLM800 0x3605
353 +#define YUGA_PRODUCT_CLM900 0x3606
354 +
355 +#define YUGA_PRODUCT_CLU718 0x3607
356 +#define YUGA_PRODUCT_CLU716 0x3608
357 +#define YUGA_PRODUCT_CLU728 0x3609
358 +#define YUGA_PRODUCT_CLU726 0x360A
359 +#define YUGA_PRODUCT_CLU518 0x360B
360 +#define YUGA_PRODUCT_CLU516 0x360C
361 +#define YUGA_PRODUCT_CLU528 0x360D
362 +#define YUGA_PRODUCT_CLU526 0x360F
363
364 /* Viettel products */
365 #define VIETTEL_VENDOR_ID 0x2262
366 @@ -666,6 +673,11 @@ static const struct usb_device_id option_ids[] = {
367 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) },
368 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff),
369 .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
370 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) },
371 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) },
372 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x31) },
373 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x32) },
374 + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x33) },
375 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },
376 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },
377 { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) },
378 @@ -1207,6 +1219,11 @@ static const struct usb_device_id option_ids[] = {
379 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) },
380 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) },
381 { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },
382 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU881) },
383 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU882) },
384 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU581) },
385 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU582) },
386 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU583) },
387 { USB_DEVICE_AND_INTERFACE_INFO(VIETTEL_VENDOR_ID, VIETTEL_PRODUCT_VT1000, 0xff, 0xff, 0xff) },
388 { USB_DEVICE_AND_INTERFACE_INFO(ZD_VENDOR_ID, ZD_PRODUCT_7000, 0xff, 0xff, 0xff) },
389 { USB_DEVICE(LG_VENDOR_ID, LG_PRODUCT_L02C) }, /* docomo L-02C modem */
390 @@ -1257,7 +1274,7 @@ static struct usb_serial_driver option_1port_device = {
391 .ioctl = usb_wwan_ioctl,
392 .attach = usb_wwan_startup,
393 .disconnect = usb_wwan_disconnect,
394 - .release = usb_wwan_release,
395 + .release = option_release,
396 .read_int_callback = option_instat_callback,
397 #ifdef CONFIG_PM
398 .suspend = usb_wwan_suspend,
399 @@ -1267,35 +1284,6 @@ static struct usb_serial_driver option_1port_device = {
400
401 static int debug;
402
403 -/* per port private data */
404 -
405 -#define N_IN_URB 4
406 -#define N_OUT_URB 4
407 -#define IN_BUFLEN 4096
408 -#define OUT_BUFLEN 4096
409 -
410 -struct option_port_private {
411 - /* Input endpoints and buffer for this port */
412 - struct urb *in_urbs[N_IN_URB];
413 - u8 *in_buffer[N_IN_URB];
414 - /* Output endpoints and buffer for this port */
415 - struct urb *out_urbs[N_OUT_URB];
416 - u8 *out_buffer[N_OUT_URB];
417 - unsigned long out_busy; /* Bit vector of URBs in use */
418 - int opened;
419 - struct usb_anchor delayed;
420 -
421 - /* Settings for the port */
422 - int rts_state; /* Handshaking pins (outputs) */
423 - int dtr_state;
424 - int cts_state; /* Handshaking pins (inputs) */
425 - int dsr_state;
426 - int dcd_state;
427 - int ri_state;
428 -
429 - unsigned long tx_start_time[N_OUT_URB];
430 -};
431 -
432 /* Functions used by new usb-serial code. */
433 static int __init option_init(void)
434 {
435 @@ -1393,12 +1381,22 @@ static int option_probe(struct usb_serial *serial,
436 return 0;
437 }
438
439 +static void option_release(struct usb_serial *serial)
440 +{
441 + struct usb_wwan_intf_private *priv = usb_get_serial_data(serial);
442 +
443 + usb_wwan_release(serial);
444 +
445 + kfree(priv);
446 +}
447 +
448 static void option_instat_callback(struct urb *urb)
449 {
450 int err;
451 int status = urb->status;
452 struct usb_serial_port *port = urb->context;
453 - struct option_port_private *portdata = usb_get_serial_port_data(port);
454 + struct usb_wwan_port_private *portdata =
455 + usb_get_serial_port_data(port);
456
457 dbg("%s", __func__);
458 dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata);
459 @@ -1459,7 +1457,7 @@ static int option_send_setup(struct usb_serial_port *port)
460 struct usb_serial *serial = port->serial;
461 struct usb_wwan_intf_private *intfdata =
462 (struct usb_wwan_intf_private *) serial->private;
463 - struct option_port_private *portdata;
464 + struct usb_wwan_port_private *portdata;
465 int ifNum = serial->interface->cur_altsetting->desc.bInterfaceNumber;
466 int val = 0;
467 dbg("%s", __func__);
468 diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
469 index 247c014..7cd2c26 100644
470 --- a/drivers/usb/serial/qcserial.c
471 +++ b/drivers/usb/serial/qcserial.c
472 @@ -104,7 +104,13 @@ static const struct usb_device_id id_table[] = {
473 {USB_DEVICE(0x1410, 0xa021)}, /* Novatel Gobi 3000 Composite */
474 {USB_DEVICE(0x413c, 0x8193)}, /* Dell Gobi 3000 QDL */
475 {USB_DEVICE(0x413c, 0x8194)}, /* Dell Gobi 3000 Composite */
476 + {USB_DEVICE(0x1199, 0x9010)}, /* Sierra Wireless Gobi 3000 QDL */
477 + {USB_DEVICE(0x1199, 0x9012)}, /* Sierra Wireless Gobi 3000 QDL */
478 {USB_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */
479 + {USB_DEVICE(0x1199, 0x9014)}, /* Sierra Wireless Gobi 3000 QDL */
480 + {USB_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */
481 + {USB_DEVICE(0x1199, 0x9018)}, /* Sierra Wireless Gobi 3000 QDL */
482 + {USB_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */
483 {USB_DEVICE(0x12D1, 0x14F0)}, /* Sony Gobi 3000 QDL */
484 {USB_DEVICE(0x12D1, 0x14F1)}, /* Sony Gobi 3000 Composite */
485 { } /* Terminating entry */
486 diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
487 index ef71ba3..d547638 100644
488 --- a/drivers/usb/serial/sierra.c
489 +++ b/drivers/usb/serial/sierra.c
490 @@ -304,6 +304,10 @@ static const struct usb_device_id id_table[] = {
491 { USB_DEVICE(0x1199, 0x68A3), /* Sierra Wireless Direct IP modems */
492 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
493 },
494 + /* AT&T Direct IP LTE modems */
495 + { USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF),
496 + .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
497 + },
498 { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */
499 .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
500 },
501 diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
502 index 5d7b71b..6f81aa5 100644
503 --- a/drivers/usb/serial/usb-serial.c
504 +++ b/drivers/usb/serial/usb-serial.c
505 @@ -669,12 +669,14 @@ exit:
506 static struct usb_serial_driver *search_serial_device(
507 struct usb_interface *iface)
508 {
509 - const struct usb_device_id *id;
510 + const struct usb_device_id *id = NULL;
511 struct usb_serial_driver *drv;
512 + struct usb_driver *driver = to_usb_driver(iface->dev.driver);
513
514 /* Check if the usb id matches a known device */
515 list_for_each_entry(drv, &usb_serial_driver_list, driver_list) {
516 - id = get_iface_id(drv, iface);
517 + if (drv->usb_driver == driver)
518 + id = get_iface_id(drv, iface);
519 if (id)
520 return drv;
521 }
522 diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
523 index 7b8112da..aac1563 100644
524 --- a/fs/hfsplus/wrapper.c
525 +++ b/fs/hfsplus/wrapper.c
526 @@ -56,7 +56,7 @@ int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
527 DECLARE_COMPLETION_ONSTACK(wait);
528 struct bio *bio;
529 int ret = 0;
530 - unsigned int io_size;
531 + u64 io_size;
532 loff_t start;
533 int offset;
534
535 diff --git a/include/linux/pci.h b/include/linux/pci.h
536 index c446b5c..ff5970b 100644
537 --- a/include/linux/pci.h
538 +++ b/include/linux/pci.h
539 @@ -174,6 +174,8 @@ enum pci_dev_flags {
540 PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1,
541 /* Device configuration is irrevocably lost if disabled into D3 */
542 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
543 + /* Device causes system crash if in D3 during S3 sleep */
544 + PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8,
545 };
546
547 enum pci_irq_reroute_variant {
548 diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
549 index 32ba8c5..c0ecc5a 100644
550 --- a/include/linux/usb/hcd.h
551 +++ b/include/linux/usb/hcd.h
552 @@ -128,8 +128,6 @@ struct usb_hcd {
553 unsigned wireless:1; /* Wireless USB HCD */
554 unsigned authorized_default:1;
555 unsigned has_tt:1; /* Integrated TT in root hub */
556 - unsigned broken_pci_sleep:1; /* Don't put the
557 - controller in PCI-D3 for system sleep */
558
559 int irq; /* irq allocated */
560 void __iomem *regs; /* device memory/io */
561 diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
562 index ce5f111..54c59ab 100644
563 --- a/net/sunrpc/svc.c
564 +++ b/net/sunrpc/svc.c
565 @@ -1302,7 +1302,8 @@ bc_svc_process(struct svc_serv *serv, struct rpc_rqst *req,
566 sizeof(req->rq_snd_buf));
567 return bc_send(req);
568 } else {
569 - /* Nothing to do to drop request */
570 + /* drop request */
571 + xprt_free_bc_request(req);
572 return 0;
573 }
574 }

  ViewVC Help
Powered by ViewVC 1.1.20