Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:3.10 commit in: /
Date: Mon, 21 Sep 2015 17:36:41
Message-Id: 1442856216.0b50229c6cfa46b016839ffc0fe426f6a06ce213.mpagano@gentoo
1 commit: 0b50229c6cfa46b016839ffc0fe426f6a06ce213
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Mon Sep 21 17:23:36 2015 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Mon Sep 21 17:23:36 2015 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=0b50229c
7
8 Linux patch 3.10.89
9
10 0000_README | 4 +
11 1088_linux-3.10.89.patch | 661 +++++++++++++++++++++++++++++++++++++++++++++++
12 2 files changed, 665 insertions(+)
13
14 diff --git a/0000_README b/0000_README
15 index ad2e99c..2d39ba5 100644
16 --- a/0000_README
17 +++ b/0000_README
18 @@ -394,6 +394,10 @@ Patch: 1087_linux-3.10.88.patch
19 From: http://www.kernel.org
20 Desc: Linux 3.10.88
21
22 +Patch: 1088_linux-3.10.89.patch
23 +From: http://www.kernel.org
24 +Desc: Linux 3.10.89
25 +
26 Patch: 1500_XATTR_USER_PREFIX.patch
27 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
28 Desc: Support for namespace user.pax.* on tmpfs.
29
30 diff --git a/1088_linux-3.10.89.patch b/1088_linux-3.10.89.patch
31 new file mode 100644
32 index 0000000..cb2dc79
33 --- /dev/null
34 +++ b/1088_linux-3.10.89.patch
35 @@ -0,0 +1,661 @@
36 +diff --git a/Makefile b/Makefile
37 +index e94ce68ecf87..ca82393e1eea 100644
38 +--- a/Makefile
39 ++++ b/Makefile
40 +@@ -1,6 +1,6 @@
41 + VERSION = 3
42 + PATCHLEVEL = 10
43 +-SUBLEVEL = 88
44 ++SUBLEVEL = 89
45 + EXTRAVERSION =
46 + NAME = TOSSUG Baby Fish
47 +
48 +diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c b/arch/x86/crypto/ghash-clmulni-intel_glue.c
49 +index a8d6f69f92a3..4bcf841e4701 100644
50 +--- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
51 ++++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
52 +@@ -291,6 +291,7 @@ static struct ahash_alg ghash_async_alg = {
53 + .cra_name = "ghash",
54 + .cra_driver_name = "ghash-clmulni",
55 + .cra_priority = 400,
56 ++ .cra_ctxsize = sizeof(struct ghash_async_ctx),
57 + .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_ASYNC,
58 + .cra_blocksize = GHASH_BLOCK_SIZE,
59 + .cra_type = &crypto_ahash_type,
60 +diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile
61 +index 136224b74d4f..81250ece3062 100644
62 +--- a/arch/xtensa/Makefile
63 ++++ b/arch/xtensa/Makefile
64 +@@ -55,10 +55,10 @@ ifneq ($(CONFIG_LD_NO_RELAX),)
65 + LDFLAGS := --no-relax
66 + endif
67 +
68 +-ifeq ($(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1)
69 ++ifeq ($(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1)
70 + CHECKFLAGS += -D__XTENSA_EB__
71 + endif
72 +-ifeq ($(shell echo -e __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1)
73 ++ifeq ($(shell echo __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1)
74 + CHECKFLAGS += -D__XTENSA_EL__
75 + endif
76 +
77 +diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile
78 +index 64ffc4b53df6..ca20a892021b 100644
79 +--- a/arch/xtensa/boot/Makefile
80 ++++ b/arch/xtensa/boot/Makefile
81 +@@ -12,7 +12,7 @@
82 + KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include
83 + HOSTFLAGS += -Iarch/$(ARCH)/boot/include
84 +
85 +-BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#")
86 ++BIG_ENDIAN := $(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#")
87 +
88 + export ccflags-y
89 + export BIG_ENDIAN
90 +diff --git a/arch/xtensa/include/asm/traps.h b/arch/xtensa/include/asm/traps.h
91 +index f2faa58f9a43..03d02df47b9a 100644
92 +--- a/arch/xtensa/include/asm/traps.h
93 ++++ b/arch/xtensa/include/asm/traps.h
94 +@@ -24,30 +24,39 @@ static inline void spill_registers(void)
95 + {
96 + #if XCHAL_NUM_AREGS > 16
97 + __asm__ __volatile__ (
98 +- " call12 1f\n"
99 ++ " call8 1f\n"
100 + " _j 2f\n"
101 + " retw\n"
102 + " .align 4\n"
103 + "1:\n"
104 ++#if XCHAL_NUM_AREGS == 32
105 ++ " _entry a1, 32\n"
106 ++ " addi a8, a0, 3\n"
107 ++ " _entry a1, 16\n"
108 ++ " mov a12, a12\n"
109 ++ " retw\n"
110 ++#else
111 + " _entry a1, 48\n"
112 +- " addi a12, a0, 3\n"
113 +-#if XCHAL_NUM_AREGS > 32
114 +- " .rept (" __stringify(XCHAL_NUM_AREGS) " - 32) / 12\n"
115 ++ " call12 1f\n"
116 ++ " retw\n"
117 ++ " .align 4\n"
118 ++ "1:\n"
119 ++ " .rept (" __stringify(XCHAL_NUM_AREGS) " - 16) / 12\n"
120 + " _entry a1, 48\n"
121 + " mov a12, a0\n"
122 + " .endr\n"
123 +-#endif
124 +- " _entry a1, 48\n"
125 ++ " _entry a1, 16\n"
126 + #if XCHAL_NUM_AREGS % 12 == 0
127 +- " mov a8, a8\n"
128 +-#elif XCHAL_NUM_AREGS % 12 == 4
129 + " mov a12, a12\n"
130 +-#elif XCHAL_NUM_AREGS % 12 == 8
131 ++#elif XCHAL_NUM_AREGS % 12 == 4
132 + " mov a4, a4\n"
133 ++#elif XCHAL_NUM_AREGS % 12 == 8
134 ++ " mov a8, a8\n"
135 + #endif
136 + " retw\n"
137 ++#endif
138 + "2:\n"
139 +- : : : "a12", "a13", "memory");
140 ++ : : : "a8", "a9", "memory");
141 + #else
142 + __asm__ __volatile__ (
143 + " mov a12, a12\n"
144 +diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S
145 +index 6e53174f8556..b268d3cc01d1 100644
146 +--- a/arch/xtensa/kernel/entry.S
147 ++++ b/arch/xtensa/kernel/entry.S
148 +@@ -549,12 +549,13 @@ user_exception_exit:
149 + * (if we have restored WSBITS-1 frames).
150 + */
151 +
152 ++2:
153 + #if XCHAL_HAVE_THREADPTR
154 + l32i a3, a1, PT_THREADPTR
155 + wur a3, threadptr
156 + #endif
157 +
158 +-2: j common_exception_exit
159 ++ j common_exception_exit
160 +
161 + /* This is the kernel exception exit.
162 + * We avoided to do a MOVSP when we entered the exception, but we
163 +@@ -1933,7 +1934,7 @@ ENDPROC(system_call)
164 + mov a12, a0
165 + .endr
166 + #endif
167 +- _entry a1, 48
168 ++ _entry a1, 16
169 + #if XCHAL_NUM_AREGS % 12 == 0
170 + mov a8, a8
171 + #elif XCHAL_NUM_AREGS % 12 == 4
172 +@@ -1957,7 +1958,7 @@ ENDPROC(system_call)
173 +
174 + ENTRY(_switch_to)
175 +
176 +- entry a1, 16
177 ++ entry a1, 48
178 +
179 + mov a11, a3 # and 'next' (a3)
180 +
181 +diff --git a/drivers/auxdisplay/ks0108.c b/drivers/auxdisplay/ks0108.c
182 +index 5b93852392b8..0d752851a1ee 100644
183 +--- a/drivers/auxdisplay/ks0108.c
184 ++++ b/drivers/auxdisplay/ks0108.c
185 +@@ -139,6 +139,7 @@ static int __init ks0108_init(void)
186 +
187 + ks0108_pardevice = parport_register_device(ks0108_parport, KS0108_NAME,
188 + NULL, NULL, NULL, PARPORT_DEV_EXCL, NULL);
189 ++ parport_put_port(ks0108_parport);
190 + if (ks0108_pardevice == NULL) {
191 + printk(KERN_ERR KS0108_NAME ": ERROR: "
192 + "parport didn't register new device\n");
193 +diff --git a/drivers/base/devres.c b/drivers/base/devres.c
194 +index 507379e7b763..4e2fb405da87 100644
195 +--- a/drivers/base/devres.c
196 ++++ b/drivers/base/devres.c
197 +@@ -296,10 +296,10 @@ void * devres_get(struct device *dev, void *new_res,
198 + if (!dr) {
199 + add_dr(dev, &new_dr->node);
200 + dr = new_dr;
201 +- new_dr = NULL;
202 ++ new_res = NULL;
203 + }
204 + spin_unlock_irqrestore(&dev->devres_lock, flags);
205 +- devres_free(new_dr);
206 ++ devres_free(new_res);
207 +
208 + return dr->data;
209 + }
210 +diff --git a/drivers/base/platform.c b/drivers/base/platform.c
211 +index 9eda84246ffd..8717be5093a2 100644
212 +--- a/drivers/base/platform.c
213 ++++ b/drivers/base/platform.c
214 +@@ -347,9 +347,7 @@ int platform_device_add(struct platform_device *pdev)
215 +
216 + while (--i >= 0) {
217 + struct resource *r = &pdev->resource[i];
218 +- unsigned long type = resource_type(r);
219 +-
220 +- if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
221 ++ if (r->parent)
222 + release_resource(r);
223 + }
224 +
225 +@@ -380,9 +378,7 @@ void platform_device_del(struct platform_device *pdev)
226 +
227 + for (i = 0; i < pdev->num_resources; i++) {
228 + struct resource *r = &pdev->resource[i];
229 +- unsigned long type = resource_type(r);
230 +-
231 +- if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
232 ++ if (r->parent)
233 + release_resource(r);
234 + }
235 + }
236 +diff --git a/drivers/clk/versatile/clk-sp810.c b/drivers/clk/versatile/clk-sp810.c
237 +index bf9b15a585e1..b9e05bde0c06 100644
238 +--- a/drivers/clk/versatile/clk-sp810.c
239 ++++ b/drivers/clk/versatile/clk-sp810.c
240 +@@ -128,8 +128,8 @@ struct clk *clk_sp810_timerclken_of_get(struct of_phandle_args *clkspec,
241 + {
242 + struct clk_sp810 *sp810 = data;
243 +
244 +- if (WARN_ON(clkspec->args_count != 1 || clkspec->args[0] >
245 +- ARRAY_SIZE(sp810->timerclken)))
246 ++ if (WARN_ON(clkspec->args_count != 1 ||
247 ++ clkspec->args[0] >= ARRAY_SIZE(sp810->timerclken)))
248 + return NULL;
249 +
250 + return sp810->timerclken[clkspec->args[0]].clk;
251 +diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
252 +index fc604fc75797..1fbd38b371d4 100644
253 +--- a/drivers/gpu/drm/radeon/radeon_connectors.c
254 ++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
255 +@@ -78,6 +78,11 @@ void radeon_connector_hotplug(struct drm_connector *connector)
256 + if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) {
257 + drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
258 + } else if (radeon_dp_needs_link_train(radeon_connector)) {
259 ++ /* Don't try to start link training before we
260 ++ * have the dpcd */
261 ++ if (!radeon_dp_getdpcd(radeon_connector))
262 ++ return;
263 ++
264 + /* set it to OFF so that drm_helper_connector_dpms()
265 + * won't return immediately since the current state
266 + * is ON at this point.
267 +diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
268 +index ada164e1b3a1..de904e6a4ab7 100644
269 +--- a/drivers/hid/usbhid/hid-core.c
270 ++++ b/drivers/hid/usbhid/hid-core.c
271 +@@ -180,7 +180,7 @@ static void hid_io_error(struct hid_device *hid)
272 + if (time_after(jiffies, usbhid->stop_retry)) {
273 +
274 + /* Retries failed, so do a port reset unless we lack bandwidth*/
275 +- if (test_bit(HID_NO_BANDWIDTH, &usbhid->iofl)
276 ++ if (!test_bit(HID_NO_BANDWIDTH, &usbhid->iofl)
277 + && !test_and_set_bit(HID_RESET_PENDING, &usbhid->iofl)) {
278 +
279 + schedule_work(&usbhid->reset_work);
280 +diff --git a/drivers/iio/gyro/Kconfig b/drivers/iio/gyro/Kconfig
281 +index 107cafcb89da..953a0621c6fe 100644
282 +--- a/drivers/iio/gyro/Kconfig
283 ++++ b/drivers/iio/gyro/Kconfig
284 +@@ -73,7 +73,8 @@ config IIO_ST_GYRO_SPI_3AXIS
285 + config ITG3200
286 + tristate "InvenSense ITG3200 Digital 3-Axis Gyroscope I2C driver"
287 + depends on I2C
288 +- select IIO_TRIGGERED_BUFFER if IIO_BUFFER
289 ++ select IIO_BUFFER
290 ++ select IIO_TRIGGERED_BUFFER
291 + help
292 + Say yes here to add support for the InvenSense ITG3200 digital
293 + 3-axis gyroscope sensor.
294 +diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c
295 +index b7db38376295..b0d05e88087c 100644
296 +--- a/drivers/iio/imu/adis16480.c
297 ++++ b/drivers/iio/imu/adis16480.c
298 +@@ -110,6 +110,10 @@
299 + struct adis16480_chip_info {
300 + unsigned int num_channels;
301 + const struct iio_chan_spec *channels;
302 ++ unsigned int gyro_max_val;
303 ++ unsigned int gyro_max_scale;
304 ++ unsigned int accel_max_val;
305 ++ unsigned int accel_max_scale;
306 + };
307 +
308 + struct adis16480 {
309 +@@ -533,19 +537,21 @@ static int adis16480_set_filter_freq(struct iio_dev *indio_dev,
310 + static int adis16480_read_raw(struct iio_dev *indio_dev,
311 + const struct iio_chan_spec *chan, int *val, int *val2, long info)
312 + {
313 ++ struct adis16480 *st = iio_priv(indio_dev);
314 ++
315 + switch (info) {
316 + case IIO_CHAN_INFO_RAW:
317 + return adis_single_conversion(indio_dev, chan, 0, val);
318 + case IIO_CHAN_INFO_SCALE:
319 + switch (chan->type) {
320 + case IIO_ANGL_VEL:
321 +- *val = 0;
322 +- *val2 = IIO_DEGREE_TO_RAD(20000); /* 0.02 degree/sec */
323 +- return IIO_VAL_INT_PLUS_MICRO;
324 ++ *val = st->chip_info->gyro_max_scale;
325 ++ *val2 = st->chip_info->gyro_max_val;
326 ++ return IIO_VAL_FRACTIONAL;
327 + case IIO_ACCEL:
328 +- *val = 0;
329 +- *val2 = IIO_G_TO_M_S_2(800); /* 0.8 mg */
330 +- return IIO_VAL_INT_PLUS_MICRO;
331 ++ *val = st->chip_info->accel_max_scale;
332 ++ *val2 = st->chip_info->accel_max_val;
333 ++ return IIO_VAL_FRACTIONAL;
334 + case IIO_MAGN:
335 + *val = 0;
336 + *val2 = 100; /* 0.0001 gauss */
337 +@@ -702,18 +708,39 @@ static const struct adis16480_chip_info adis16480_chip_info[] = {
338 + [ADIS16375] = {
339 + .channels = adis16485_channels,
340 + .num_channels = ARRAY_SIZE(adis16485_channels),
341 ++ /*
342 ++ * storing the value in rad/degree and the scale in degree
343 ++ * gives us the result in rad and better precession than
344 ++ * storing the scale directly in rad.
345 ++ */
346 ++ .gyro_max_val = IIO_RAD_TO_DEGREE(22887),
347 ++ .gyro_max_scale = 300,
348 ++ .accel_max_val = IIO_M_S_2_TO_G(21973),
349 ++ .accel_max_scale = 18,
350 + },
351 + [ADIS16480] = {
352 + .channels = adis16480_channels,
353 + .num_channels = ARRAY_SIZE(adis16480_channels),
354 ++ .gyro_max_val = IIO_RAD_TO_DEGREE(22500),
355 ++ .gyro_max_scale = 450,
356 ++ .accel_max_val = IIO_M_S_2_TO_G(12500),
357 ++ .accel_max_scale = 5,
358 + },
359 + [ADIS16485] = {
360 + .channels = adis16485_channels,
361 + .num_channels = ARRAY_SIZE(adis16485_channels),
362 ++ .gyro_max_val = IIO_RAD_TO_DEGREE(22500),
363 ++ .gyro_max_scale = 450,
364 ++ .accel_max_val = IIO_M_S_2_TO_G(20000),
365 ++ .accel_max_scale = 5,
366 + },
367 + [ADIS16488] = {
368 + .channels = adis16480_channels,
369 + .num_channels = ARRAY_SIZE(adis16480_channels),
370 ++ .gyro_max_val = IIO_RAD_TO_DEGREE(22500),
371 ++ .gyro_max_scale = 450,
372 ++ .accel_max_val = IIO_M_S_2_TO_G(22500),
373 ++ .accel_max_scale = 18,
374 + },
375 + };
376 +
377 +diff --git a/drivers/of/address.c b/drivers/of/address.c
378 +index 8fb2b5769733..9ceff3c86d74 100644
379 +--- a/drivers/of/address.c
380 ++++ b/drivers/of/address.c
381 +@@ -629,10 +629,10 @@ struct device_node *of_find_matching_node_by_address(struct device_node *from,
382 + struct resource res;
383 +
384 + while (dn) {
385 +- if (of_address_to_resource(dn, 0, &res))
386 +- continue;
387 +- if (res.start == base_address)
388 ++ if (!of_address_to_resource(dn, 0, &res) &&
389 ++ res.start == base_address)
390 + return dn;
391 ++
392 + dn = of_find_matching_node(dn, matches);
393 + }
394 +
395 +diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
396 +index 910339c0791f..390e4094e4d5 100644
397 +--- a/drivers/pci/quirks.c
398 ++++ b/drivers/pci/quirks.c
399 +@@ -2796,12 +2796,15 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x3c28, vtd_mask_spec_errors);
400 +
401 + static void fixup_ti816x_class(struct pci_dev *dev)
402 + {
403 ++ u32 class = dev->class;
404 ++
405 + /* TI 816x devices do not have class code set when in PCIe boot mode */
406 +- dev_info(&dev->dev, "Setting PCI class for 816x PCIe device\n");
407 +- dev->class = PCI_CLASS_MULTIMEDIA_VIDEO;
408 ++ dev->class = PCI_CLASS_MULTIMEDIA_VIDEO << 8;
409 ++ dev_info(&dev->dev, "PCI class overridden (%#08x -> %#08x)\n",
410 ++ class, dev->class);
411 + }
412 + DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_TI, 0xb800,
413 +- PCI_CLASS_NOT_DEFINED, 0, fixup_ti816x_class);
414 ++ PCI_CLASS_NOT_DEFINED, 0, fixup_ti816x_class);
415 +
416 + /* Some PCIe devices do not work reliably with the claimed maximum
417 + * payload size supported.
418 +diff --git a/drivers/tty/serial/8250/8250_pnp.c b/drivers/tty/serial/8250/8250_pnp.c
419 +index 35d9ab95c5cb..91b14202b90b 100644
420 +--- a/drivers/tty/serial/8250/8250_pnp.c
421 ++++ b/drivers/tty/serial/8250/8250_pnp.c
422 +@@ -365,6 +365,11 @@ static const struct pnp_device_id pnp_dev_table[] = {
423 + /* Winbond CIR port, should not be probed. We should keep track
424 + of it to prevent the legacy serial driver from probing it */
425 + { "WEC1022", CIR_PORT },
426 ++ /*
427 ++ * SMSC IrCC SIR/FIR port, should not be probed by serial driver
428 ++ * as well so its own driver can bind to it.
429 ++ */
430 ++ { "SMCF010", CIR_PORT },
431 + { "", 0 }
432 + };
433 +
434 +diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
435 +index 57d7ec6c8090..27040a6314d4 100644
436 +--- a/drivers/usb/dwc3/ep0.c
437 ++++ b/drivers/usb/dwc3/ep0.c
438 +@@ -804,6 +804,11 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
439 + unsigned maxp = ep0->endpoint.maxpacket;
440 +
441 + transfer_size += (maxp - (transfer_size % maxp));
442 ++
443 ++ /* Maximum of DWC3_EP0_BOUNCE_SIZE can only be received */
444 ++ if (transfer_size > DWC3_EP0_BOUNCE_SIZE)
445 ++ transfer_size = DWC3_EP0_BOUNCE_SIZE;
446 ++
447 + transferred = min_t(u32, ur->length,
448 + transfer_size - length);
449 + memcpy(ur->buf, dwc->ep0_bounce, transferred);
450 +@@ -916,11 +921,14 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
451 + return;
452 + }
453 +
454 +- WARN_ON(req->request.length > DWC3_EP0_BOUNCE_SIZE);
455 +-
456 + maxpacket = dep->endpoint.maxpacket;
457 + transfer_size = roundup(req->request.length, maxpacket);
458 +
459 ++ if (transfer_size > DWC3_EP0_BOUNCE_SIZE) {
460 ++ dev_WARN(dwc->dev, "bounce buf can't handle req len\n");
461 ++ transfer_size = DWC3_EP0_BOUNCE_SIZE;
462 ++ }
463 ++
464 + dwc->ep0_bounced = true;
465 +
466 + /*
467 +diff --git a/drivers/usb/host/ehci-sysfs.c b/drivers/usb/host/ehci-sysfs.c
468 +index 14ced00ba220..0659024290af 100644
469 +--- a/drivers/usb/host/ehci-sysfs.c
470 ++++ b/drivers/usb/host/ehci-sysfs.c
471 +@@ -29,7 +29,7 @@ static ssize_t show_companion(struct device *dev,
472 + int count = PAGE_SIZE;
473 + char *ptr = buf;
474 +
475 +- ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
476 ++ ehci = hcd_to_ehci(dev_get_drvdata(dev));
477 + nports = HCS_N_PORTS(ehci->hcs_params);
478 +
479 + for (index = 0; index < nports; ++index) {
480 +@@ -54,7 +54,7 @@ static ssize_t store_companion(struct device *dev,
481 + struct ehci_hcd *ehci;
482 + int portnum, new_owner;
483 +
484 +- ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
485 ++ ehci = hcd_to_ehci(dev_get_drvdata(dev));
486 + new_owner = PORT_OWNER; /* Owned by companion */
487 + if (sscanf(buf, "%d", &portnum) != 1)
488 + return -EINVAL;
489 +@@ -85,7 +85,7 @@ static ssize_t show_uframe_periodic_max(struct device *dev,
490 + struct ehci_hcd *ehci;
491 + int n;
492 +
493 +- ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
494 ++ ehci = hcd_to_ehci(dev_get_drvdata(dev));
495 + n = scnprintf(buf, PAGE_SIZE, "%d\n", ehci->uframe_periodic_max);
496 + return n;
497 + }
498 +@@ -102,7 +102,7 @@ static ssize_t store_uframe_periodic_max(struct device *dev,
499 + unsigned long flags;
500 + ssize_t ret;
501 +
502 +- ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
503 ++ ehci = hcd_to_ehci(dev_get_drvdata(dev));
504 + if (kstrtouint(buf, 0, &uframe_periodic_max) < 0)
505 + return -EINVAL;
506 +
507 +diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
508 +index b55e5f3a311d..514f3117ee2b 100644
509 +--- a/drivers/usb/serial/ftdi_sio.c
510 ++++ b/drivers/usb/serial/ftdi_sio.c
511 +@@ -621,6 +621,10 @@ static struct usb_device_id id_table_combined [] = {
512 + { USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLXM_PID),
513 + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
514 + { USB_DEVICE(FTDI_VID, FTDI_SYNAPSE_SS200_PID) },
515 ++ { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX_PID) },
516 ++ { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX2_PID) },
517 ++ { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX2WI_PID) },
518 ++ { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX3_PID) },
519 + /*
520 + * ELV devices:
521 + */
522 +diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
523 +index 99316d7cfc03..bfb0ecd98808 100644
524 +--- a/drivers/usb/serial/ftdi_sio_ids.h
525 ++++ b/drivers/usb/serial/ftdi_sio_ids.h
526 +@@ -568,6 +568,14 @@
527 + */
528 + #define FTDI_SYNAPSE_SS200_PID 0x9090 /* SS200 - SNAP Stick 200 */
529 +
530 ++/*
531 ++ * CustomWare / ShipModul NMEA multiplexers product ids (FTDI_VID)
532 ++ */
533 ++#define FTDI_CUSTOMWARE_MINIPLEX_PID 0xfd48 /* MiniPlex first generation NMEA Multiplexer */
534 ++#define FTDI_CUSTOMWARE_MINIPLEX2_PID 0xfd49 /* MiniPlex-USB and MiniPlex-2 series */
535 ++#define FTDI_CUSTOMWARE_MINIPLEX2WI_PID 0xfd4a /* MiniPlex-2Wi */
536 ++#define FTDI_CUSTOMWARE_MINIPLEX3_PID 0xfd4b /* MiniPlex-3 series */
537 ++
538 +
539 + /********************************/
540 + /** third-party VID/PID combos **/
541 +diff --git a/drivers/usb/serial/symbolserial.c b/drivers/usb/serial/symbolserial.c
542 +index 9b1648945e7a..1e2d86d4f539 100644
543 +--- a/drivers/usb/serial/symbolserial.c
544 ++++ b/drivers/usb/serial/symbolserial.c
545 +@@ -97,7 +97,7 @@ exit:
546 +
547 + static int symbol_open(struct tty_struct *tty, struct usb_serial_port *port)
548 + {
549 +- struct symbol_private *priv = usb_get_serial_data(port->serial);
550 ++ struct symbol_private *priv = usb_get_serial_port_data(port);
551 + unsigned long flags;
552 + int result = 0;
553 +
554 +@@ -123,7 +123,7 @@ static void symbol_close(struct usb_serial_port *port)
555 + static void symbol_throttle(struct tty_struct *tty)
556 + {
557 + struct usb_serial_port *port = tty->driver_data;
558 +- struct symbol_private *priv = usb_get_serial_data(port->serial);
559 ++ struct symbol_private *priv = usb_get_serial_port_data(port);
560 +
561 + spin_lock_irq(&priv->lock);
562 + priv->throttled = true;
563 +@@ -133,7 +133,7 @@ static void symbol_throttle(struct tty_struct *tty)
564 + static void symbol_unthrottle(struct tty_struct *tty)
565 + {
566 + struct usb_serial_port *port = tty->driver_data;
567 +- struct symbol_private *priv = usb_get_serial_data(port->serial);
568 ++ struct symbol_private *priv = usb_get_serial_port_data(port);
569 + int result;
570 + bool was_throttled;
571 +
572 +diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c
573 +index 345713d2f8f3..6b42789ae799 100644
574 +--- a/fs/hpfs/namei.c
575 ++++ b/fs/hpfs/namei.c
576 +@@ -8,6 +8,17 @@
577 + #include <linux/sched.h>
578 + #include "hpfs_fn.h"
579 +
580 ++static void hpfs_update_directory_times(struct inode *dir)
581 ++{
582 ++ time_t t = get_seconds();
583 ++ if (t == dir->i_mtime.tv_sec &&
584 ++ t == dir->i_ctime.tv_sec)
585 ++ return;
586 ++ dir->i_mtime.tv_sec = dir->i_ctime.tv_sec = t;
587 ++ dir->i_mtime.tv_nsec = dir->i_ctime.tv_nsec = 0;
588 ++ hpfs_write_inode_nolock(dir);
589 ++}
590 ++
591 + static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
592 + {
593 + const unsigned char *name = dentry->d_name.name;
594 +@@ -99,6 +110,7 @@ static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
595 + result->i_mode = mode | S_IFDIR;
596 + hpfs_write_inode_nolock(result);
597 + }
598 ++ hpfs_update_directory_times(dir);
599 + d_instantiate(dentry, result);
600 + hpfs_unlock(dir->i_sb);
601 + return 0;
602 +@@ -187,6 +199,7 @@ static int hpfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, b
603 + result->i_mode = mode | S_IFREG;
604 + hpfs_write_inode_nolock(result);
605 + }
606 ++ hpfs_update_directory_times(dir);
607 + d_instantiate(dentry, result);
608 + hpfs_unlock(dir->i_sb);
609 + return 0;
610 +@@ -262,6 +275,7 @@ static int hpfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, de
611 + insert_inode_hash(result);
612 +
613 + hpfs_write_inode_nolock(result);
614 ++ hpfs_update_directory_times(dir);
615 + d_instantiate(dentry, result);
616 + brelse(bh);
617 + hpfs_unlock(dir->i_sb);
618 +@@ -340,6 +354,7 @@ static int hpfs_symlink(struct inode *dir, struct dentry *dentry, const char *sy
619 + insert_inode_hash(result);
620 +
621 + hpfs_write_inode_nolock(result);
622 ++ hpfs_update_directory_times(dir);
623 + d_instantiate(dentry, result);
624 + hpfs_unlock(dir->i_sb);
625 + return 0;
626 +@@ -423,6 +438,8 @@ again:
627 + out1:
628 + hpfs_brelse4(&qbh);
629 + out:
630 ++ if (!err)
631 ++ hpfs_update_directory_times(dir);
632 + hpfs_unlock(dir->i_sb);
633 + return err;
634 + }
635 +@@ -477,6 +494,8 @@ static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
636 + out1:
637 + hpfs_brelse4(&qbh);
638 + out:
639 ++ if (!err)
640 ++ hpfs_update_directory_times(dir);
641 + hpfs_unlock(dir->i_sb);
642 + return err;
643 + }
644 +@@ -595,7 +614,7 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
645 + goto end1;
646 + }
647 +
648 +- end:
649 ++end:
650 + hpfs_i(i)->i_parent_dir = new_dir->i_ino;
651 + if (S_ISDIR(i->i_mode)) {
652 + inc_nlink(new_dir);
653 +@@ -610,6 +629,10 @@ static int hpfs_rename(struct inode *old_dir, struct dentry *old_dentry,
654 + brelse(bh);
655 + }
656 + end1:
657 ++ if (!err) {
658 ++ hpfs_update_directory_times(old_dir);
659 ++ hpfs_update_directory_times(new_dir);
660 ++ }
661 + hpfs_unlock(i->i_sb);
662 + return err;
663 + }
664 +diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
665 +index 3d35b7023591..683911167953 100644
666 +--- a/include/linux/iio/iio.h
667 ++++ b/include/linux/iio/iio.h
668 +@@ -569,6 +569,15 @@ int iio_str_to_fixpoint(const char *str, int fract_mult, int *integer,
669 + #define IIO_DEGREE_TO_RAD(deg) (((deg) * 314159ULL + 9000000ULL) / 18000000ULL)
670 +
671 + /**
672 ++ * IIO_RAD_TO_DEGREE() - Convert rad to degree
673 ++ * @rad: A value in rad
674 ++ *
675 ++ * Returns the given value converted from rad to degree
676 ++ */
677 ++#define IIO_RAD_TO_DEGREE(rad) \
678 ++ (((rad) * 18000000ULL + 314159ULL / 2) / 314159ULL)
679 ++
680 ++/**
681 + * IIO_G_TO_M_S_2() - Convert g to meter / second**2
682 + * @g: A value in g
683 + *
684 +@@ -576,4 +585,12 @@ int iio_str_to_fixpoint(const char *str, int fract_mult, int *integer,
685 + */
686 + #define IIO_G_TO_M_S_2(g) ((g) * 980665ULL / 100000ULL)
687 +
688 ++/**
689 ++ * IIO_M_S_2_TO_G() - Convert meter / second**2 to g
690 ++ * @ms2: A value in meter / second**2
691 ++ *
692 ++ * Returns the given value converted from meter / second**2 to g
693 ++ */
694 ++#define IIO_M_S_2_TO_G(ms2) (((ms2) * 100000ULL + 980665ULL / 2) / 980665ULL)
695 ++
696 + #endif /* _INDUSTRIAL_IO_H_ */