-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (GNU/Linux)
 
 iQEcBAABAgAGBQJRRkrbAAoJEHm+PkMAQRiGy3oH/jrbHinYs0auurANgx4TdtWT
 /WNajstKBqLOJJ6cnTR7sOqwOVlptt65EbbTs+qGyZ2Z2W/Lg0BMenHvNHo4ER8C
 e7UbMdBCSLKBjAMKh1XCoZscGv4Exm8WRH3Vc5yP0Hafj3EzSAVLY1dta9WKKoQi
 bh7D1ErUlbU1zczA1w5YbPF0LqFKRvyZOwebMCCAKAxv5wWAxmbcPNxVR4sufkjg
 k6TkQ2ysgWivZAfy3tJYOcxiEu7ahpZVEuYdlZEJQXHRQUfoNljQlOp4BqKsYUai
 5A0kaf2VpKay/7pkhvTfBBcF/jFJ68pYP6gQ2ThNdr0b5kOiAfMWj030Xyngnhg=
 =iO9t
 -----END PGP SIGNATURE-----

Merge tag 'v3.9-rc3' into next/multiplatform

Linux 3.9-rc3

Conflicts:
	arch/arm/Kconfig
	arch/arm/mach-spear/spear3xx.c
	arch/arm/plat-spear/Kconfig

This is a dependency for ux500/multiplatform

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2013-04-09 15:50:59 +02:00
Родитель f5f2915158 a937536b86
Коммит 835f9c38bb
353 изменённых файлов: 2594 добавлений и 1652 удалений

Просмотреть файл

@ -13,9 +13,6 @@ Required parent device properties:
4 = active high level-sensitive 4 = active high level-sensitive
8 = active low level-sensitive 8 = active low level-sensitive
Optional parent device properties:
- reg : contains the PRCMU mailbox address for the AB8500 i2c port
The AB8500 consists of a large and varied group of sub-devices: The AB8500 consists of a large and varied group of sub-devices:
Device IRQ Names Supply Names Description Device IRQ Names Supply Names Description
@ -86,9 +83,8 @@ Non-standard child device properties:
- stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic - stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic
- stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580) - stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
ab8500@5 { ab8500 {
compatible = "stericsson,ab8500"; compatible = "stericsson,ab8500";
reg = <5>; /* mailbox 5 is i2c */
interrupts = <0 40 0x4>; interrupts = <0 40 0x4>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;

Просмотреть файл

@ -11,6 +11,9 @@ Required properties:
- "nvidia,tegra20-uart" - "nvidia,tegra20-uart"
- "nxp,lpc3220-uart" - "nxp,lpc3220-uart"
- "ibm,qpace-nwp-serial" - "ibm,qpace-nwp-serial"
- "altr,16550-FIFO32"
- "altr,16550-FIFO64"
- "altr,16550-FIFO128"
- "serial" if the port type is unknown. - "serial" if the port type is unknown.
- reg : offset and length of the register set for the device. - reg : offset and length of the register set for the device.
- interrupts : should contain uart interrupt. - interrupts : should contain uart interrupt.

Просмотреть файл

@ -3,10 +3,26 @@ ALPS Touchpad Protocol
Introduction Introduction
------------ ------------
Currently the ALPS touchpad driver supports five protocol versions in use by
ALPS touchpads, called versions 1, 2, 3, 4 and 5.
Currently the ALPS touchpad driver supports four protocol versions in use by Since roughly mid-2010 several new ALPS touchpads have been released and
ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various integrated into a variety of laptops and netbooks. These new touchpads
protocol versions is contained in the following sections. have enough behavior differences that the alps_model_data definition
table, describing the properties of the different versions, is no longer
adequate. The design choices were to re-define the alps_model_data
table, with the risk of regression testing existing devices, or isolate
the new devices outside of the alps_model_data table. The latter design
choice was made. The new touchpad signatures are named: "Rushmore",
"Pinnacle", and "Dolphin", which you will see in the alps.c code.
For the purposes of this document, this group of ALPS touchpads will
generically be called "new ALPS touchpads".
We experimented with probing the ACPI interface _HID (Hardware ID)/_CID
(Compatibility ID) definition as a way to uniquely identify the
different ALPS variants but there did not appear to be a 1:1 mapping.
In fact, it appeared to be an m:n mapping between the _HID and actual
hardware type.
Detection Detection
--------- ---------
@ -20,9 +36,13 @@ If the E6 report is successful, the touchpad model is identified using the "E7
report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
matched against known models in the alps_model_data_array. matched against known models in the alps_model_data_array.
With protocol versions 3 and 4, the E7 report model signature is always For older touchpads supporting protocol versions 3 and 4, the E7 report
73-02-64. To differentiate between these versions, the response from the model signature is always 73-02-64. To differentiate between these
"Enter Command Mode" sequence must be inspected as described below. versions, the response from the "Enter Command Mode" sequence must be
inspected as described below.
The new ALPS touchpads have an E7 signature of 73-03-50 or 73-03-0A but
seem to be better differentiated by the EC Command Mode response.
Command Mode Command Mode
------------ ------------
@ -47,6 +67,14 @@ address of the register being read, and the third contains the value of the
register. Registers are written by writing the value one nibble at a time register. Registers are written by writing the value one nibble at a time
using the same encoding used for addresses. using the same encoding used for addresses.
For the new ALPS touchpads, the EC command is used to enter command
mode. The response in the new ALPS touchpads is significantly different,
and more important in determining the behavior. This code has been
separated from the original alps_model_data table and put in the
alps_identify function. For example, there seem to be two hardware init
sequences for the "Dolphin" touchpads as determined by the second byte
of the EC response.
Packet Format Packet Format
------------- -------------
@ -187,3 +215,28 @@ There are several things worth noting here.
well. well.
So far no v4 devices with tracksticks have been encountered. So far no v4 devices with tracksticks have been encountered.
ALPS Absolute Mode - Protocol Version 5
---------------------------------------
This is basically Protocol Version 3 but with different logic for packet
decode. It uses the same alps_process_touchpad_packet_v3 call with a
specialized decode_fields function pointer to correctly interpret the
packets. This appears to only be used by the Dolphin devices.
For single-touch, the 6-byte packet format is:
byte 0: 1 1 0 0 1 0 0 0
byte 1: 0 x6 x5 x4 x3 x2 x1 x0
byte 2: 0 y6 y5 y4 y3 y2 y1 y0
byte 3: 0 M R L 1 m r l
byte 4: y10 y9 y8 y7 x10 x9 x8 x7
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
For mt, the format is:
byte 0: 1 1 1 n3 1 n2 n1 x24
byte 1: 1 y7 y6 y5 y4 y3 y2 y1
byte 2: ? x2 x1 y12 y11 y10 y9 y8
byte 3: 0 x23 x22 x21 x20 x19 x18 x17
byte 4: 0 x9 x8 x7 x6 x5 x4 x3
byte 5: 0 x16 x15 x14 x13 x12 x11 x10

Просмотреть файл

@ -105,6 +105,83 @@ Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
Proto [2 bytes] Proto [2 bytes]
Raw protocol(IP, IPv6, etc) frame. Raw protocol(IP, IPv6, etc) frame.
3.3 Multiqueue tuntap interface:
From version 3.8, Linux supports multiqueue tuntap which can uses multiple
file descriptors (queues) to parallelize packets sending or receiving. The
device allocation is the same as before, and if user wants to create multiple
queues, TUNSETIFF with the same device name must be called many times with
IFF_MULTI_QUEUE flag.
char *dev should be the name of the device, queues is the number of queues to
be created, fds is used to store and return the file descriptors (queues)
created to the caller. Each file descriptor were served as the interface of a
queue which could be accessed by userspace.
#include <linux/if.h>
#include <linux/if_tun.h>
int tun_alloc_mq(char *dev, int queues, int *fds)
{
struct ifreq ifr;
int fd, err, i;
if (!dev)
return -1;
memset(&ifr, 0, sizeof(ifr));
/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
* IFF_MULTI_QUEUE - Create a queue of multiqueue device
*/
ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_MULTI_QUEUE;
strcpy(ifr.ifr_name, dev);
for (i = 0; i < queues; i++) {
if ((fd = open("/dev/net/tun", O_RDWR)) < 0)
goto err;
err = ioctl(fd, TUNSETIFF, (void *)&ifr);
if (err) {
close(fd);
goto err;
}
fds[i] = fd;
}
return 0;
err:
for (--i; i >= 0; i--)
close(fds[i]);
return err;
}
A new ioctl(TUNSETQUEUE) were introduced to enable or disable a queue. When
calling it with IFF_DETACH_QUEUE flag, the queue were disabled. And when
calling it with IFF_ATTACH_QUEUE flag, the queue were enabled. The queue were
enabled by default after it was created through TUNSETIFF.
fd is the file descriptor (queue) that we want to enable or disable, when
enable is true we enable it, otherwise we disable it
#include <linux/if.h>
#include <linux/if_tun.h>
int tun_set_queue(int fd, int enable)
{
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
if (enable)
ifr.ifr_flags = IFF_ATTACH_QUEUE;
else
ifr.ifr_flags = IFF_DETACH_QUEUE;
return ioctl(fd, TUNSETQUEUE, (void *)&ifr);
}
Universal TUN/TAP device driver Frequently Asked Question. Universal TUN/TAP device driver Frequently Asked Question.
1. What platforms are supported by TUN/TAP driver ? 1. What platforms are supported by TUN/TAP driver ?

Просмотреть файл

@ -1873,7 +1873,7 @@ feature:
status\input | 0 | 1 | else | status\input | 0 | 1 | else |
--------------+------------+------------+------------+ --------------+------------+------------+------------+
not allocated |(do nothing)| alloc+swap | EINVAL | not allocated |(do nothing)| alloc+swap |(do nothing)|
--------------+------------+------------+------------+ --------------+------------+------------+------------+
allocated | free | swap | clear | allocated | free | swap | clear |
--------------+------------+------------+------------+ --------------+------------+------------+------------+

Просмотреть файл

@ -4005,6 +4005,22 @@ M: Stanislaw Gruszka <stf_xl@wp.pl>
S: Maintained S: Maintained
F: drivers/usb/atm/ueagle-atm.c F: drivers/usb/atm/ueagle-atm.c
INA209 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: lm-sensors@lm-sensors.org
S: Maintained
F: Documentation/hwmon/ina209
F: Documentation/devicetree/bindings/i2c/ina209.txt
F: drivers/hwmon/ina209.c
INA2XX HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: lm-sensors@lm-sensors.org
S: Maintained
F: Documentation/hwmon/ina2xx
F: drivers/hwmon/ina2xx.c
F: include/linux/platform_data/ina2xx.h
INDUSTRY PACK SUBSYSTEM (IPACK) INDUSTRY PACK SUBSYSTEM (IPACK)
M: Samuel Iglesias Gonsalvez <siglesias@igalia.com> M: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
M: Jens Taprogge <jens.taprogge@taprogge.org> M: Jens Taprogge <jens.taprogge@taprogge.org>
@ -5098,6 +5114,15 @@ S: Maintained
F: Documentation/hwmon/max6650 F: Documentation/hwmon/max6650
F: drivers/hwmon/max6650.c F: drivers/hwmon/max6650.c
MAX6697 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: lm-sensors@lm-sensors.org
S: Maintained
F: Documentation/hwmon/max6697
F: Documentation/devicetree/bindings/i2c/max6697.txt
F: drivers/hwmon/max6697.c
F: include/linux/platform_data/max6697.h
MAXIRADIO FM RADIO RECEIVER DRIVER MAXIRADIO FM RADIO RECEIVER DRIVER
M: Hans Verkuil <hverkuil@xs4all.nl> M: Hans Verkuil <hverkuil@xs4all.nl>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
@ -6412,6 +6437,8 @@ F: Documentation/networking/LICENSE.qla3xxx
F: drivers/net/ethernet/qlogic/qla3xxx.* F: drivers/net/ethernet/qlogic/qla3xxx.*
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
M: Rajesh Borundia <rajesh.borundia@qlogic.com>
M: Shahed Shaikh <shahed.shaikh@qlogic.com>
M: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com> M: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
M: Sony Chacko <sony.chacko@qlogic.com> M: Sony Chacko <sony.chacko@qlogic.com>
M: linux-driver@qlogic.com M: linux-driver@qlogic.com

Просмотреть файл

@ -1,7 +1,7 @@
VERSION = 3 VERSION = 3
PATCHLEVEL = 9 PATCHLEVEL = 9
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc2 EXTRAVERSION = -rc3
NAME = Unicycling Gorilla NAME = Unicycling Gorilla
# *DOCUMENTATION* # *DOCUMENTATION*

Просмотреть файл

@ -319,13 +319,6 @@ config ARCH_WANT_OLD_COMPAT_IPC
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
bool bool
config HAVE_VIRT_TO_BUS
bool
help
An architecture should select this if it implements the
deprecated interface virt_to_bus(). All new architectures
should probably not select this.
config HAVE_ARCH_SECCOMP_FILTER config HAVE_ARCH_SECCOMP_FILTER
bool bool
help help

Просмотреть файл

@ -9,7 +9,7 @@ config ALPHA
select HAVE_PERF_EVENTS select HAVE_PERF_EVENTS
select HAVE_DMA_ATTRS select HAVE_DMA_ATTRS
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select AUTO_IRQ_AFFINITY if SMP select AUTO_IRQ_AFFINITY if SMP
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW

Просмотреть файл

@ -509,7 +509,6 @@ config ARCH_IXP4XX
config ARCH_DOVE config ARCH_DOVE
bool "Marvell Dove" bool "Marvell Dove"
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select COMMON_CLK_DOVE
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select MIGHT_HAVE_PCI select MIGHT_HAVE_PCI
@ -1584,13 +1583,16 @@ config LOCAL_TIMERS
accounting to be spread across the timer interval, preventing a accounting to be spread across the timer interval, preventing a
"thundering herd" at every timer tick. "thundering herd" at every timer tick.
# The GPIO number here must be sorted by descending number. In case of
# a multiplatform kernel, we just want the highest value required by the
# selected platforms.
config ARCH_NR_GPIO config ARCH_NR_GPIO
int int
default 1024 if ARCH_SHMOBILE || ARCH_TEGRA default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
default 355 if ARCH_U8500
default 264 if MACH_H4700
default 512 if SOC_OMAP5 default 512 if SOC_OMAP5
default 355 if ARCH_U8500
default 288 if ARCH_VT8500 || ARCH_SUNXI default 288 if ARCH_VT8500 || ARCH_SUNXI
default 264 if MACH_H4700
default 0 default 0
help help
Maximum number of GPIOs in the system. Maximum number of GPIOs in the system.
@ -1814,8 +1816,9 @@ config XEN_DOM0
config XEN config XEN
bool "Xen guest support on ARM (EXPERIMENTAL)" bool "Xen guest support on ARM (EXPERIMENTAL)"
depends on ARM && OF depends on ARM && AEABI && OF
depends on CPU_V7 && !CPU_V6 depends on CPU_V7 && !CPU_V6
depends on !GENERIC_ATOMIC64
help help
Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.

Просмотреть файл

@ -510,7 +510,7 @@ config DEBUG_IMX_UART_PORT
DEBUG_IMX31_UART || \ DEBUG_IMX31_UART || \
DEBUG_IMX35_UART || \ DEBUG_IMX35_UART || \
DEBUG_IMX51_UART || \ DEBUG_IMX51_UART || \
DEBUG_IMX50_IMX53_UART || \ DEBUG_IMX53_UART || \
DEBUG_IMX6Q_UART DEBUG_IMX6Q_UART
default 1 default 1
help help

Просмотреть файл

@ -115,4 +115,4 @@ i:
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
$(obj)/Image System.map "$(INSTALL_PATH)" $(obj)/Image System.map "$(INSTALL_PATH)"
subdir- := bootp compressed subdir- := bootp compressed dts

Просмотреть файл

@ -64,5 +64,13 @@
status = "okay"; status = "okay";
/* No CD or WP GPIOs */ /* No CD or WP GPIOs */
}; };
usb@d0050000 {
status = "okay";
};
usb@d0051000 {
status = "okay";
};
}; };
}; };

Просмотреть файл

@ -31,7 +31,6 @@
mpic: interrupt-controller@d0020000 { mpic: interrupt-controller@d0020000 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
#interrupt-cells = <1>; #interrupt-cells = <1>;
#address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
interrupt-controller; interrupt-controller;
}; };
@ -54,7 +53,7 @@
reg = <0xd0012000 0x100>; reg = <0xd0012000 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <41>; interrupts = <41>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
serial@d0012100 { serial@d0012100 {
@ -62,7 +61,7 @@
reg = <0xd0012100 0x100>; reg = <0xd0012100 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <42>; interrupts = <42>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };

Просмотреть файл

@ -46,7 +46,7 @@
reg = <0xd0012200 0x100>; reg = <0xd0012200 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <43>; interrupts = <43>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
serial@d0012300 { serial@d0012300 {
@ -54,7 +54,7 @@
reg = <0xd0012300 0x100>; reg = <0xd0012300 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <44>; interrupts = <44>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };

Просмотреть файл

@ -105,7 +105,7 @@
compatible = "fixed-clock"; compatible = "fixed-clock";
reg = <1>; reg = <1>;
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <150000000>; clock-frequency = <250000000>;
}; };
}; };
}; };

Просмотреть файл

@ -319,9 +319,8 @@
}; };
}; };
ab8500@5 { ab8500 {
compatible = "stericsson,ab8500"; compatible = "stericsson,ab8500";
reg = <5>; /* mailbox 5 is i2c */
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
interrupts = <0 40 0x4>; interrupts = <0 40 0x4>;
interrupt-controller; interrupt-controller;

Просмотреть файл

@ -197,6 +197,11 @@
status = "disabled"; status = "disabled";
}; };
rtc@d8500 {
compatible = "marvell,orion-rtc";
reg = <0xd8500 0x20>;
};
crypto: crypto@30000 { crypto: crypto@30000 {
compatible = "marvell,orion-crypto"; compatible = "marvell,orion-crypto";
reg = <0x30000 0x10000>, reg = <0x30000 0x10000>,

Просмотреть файл

@ -221,7 +221,7 @@
}; };
}; };
ab8500@5 { ab8500 {
ab8500-regulators { ab8500-regulators {
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
regulator-name = "V-DISPLAY"; regulator-name = "V-DISPLAY";

Просмотреть файл

@ -158,7 +158,7 @@
}; };
}; };
ab8500@5 { ab8500 {
ab8500-regulators { ab8500-regulators {
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
regulator-name = "V-DISPLAY"; regulator-name = "V-DISPLAY";

Просмотреть файл

@ -42,10 +42,9 @@
fsl,pins = <689 0x10000 /* DISP1_DRDY */ fsl,pins = <689 0x10000 /* DISP1_DRDY */
482 0x10000 /* DISP1_HSYNC */ 482 0x10000 /* DISP1_HSYNC */
489 0x10000 /* DISP1_VSYNC */ 489 0x10000 /* DISP1_VSYNC */
684 0x10000 /* DISP1_DAT_0 */
515 0x10000 /* DISP1_DAT_22 */ 515 0x10000 /* DISP1_DAT_22 */
523 0x10000 /* DISP1_DAT_23 */ 523 0x10000 /* DISP1_DAT_23 */
543 0x10000 /* DISP1_DAT_21 */ 545 0x10000 /* DISP1_DAT_21 */
553 0x10000 /* DISP1_DAT_20 */ 553 0x10000 /* DISP1_DAT_20 */
558 0x10000 /* DISP1_DAT_19 */ 558 0x10000 /* DISP1_DAT_19 */
564 0x10000 /* DISP1_DAT_18 */ 564 0x10000 /* DISP1_DAT_18 */

Просмотреть файл

@ -42,12 +42,10 @@
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
serial@12100 { serial@12100 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
}; };

Просмотреть файл

@ -50,7 +50,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };
}; };

Просмотреть файл

@ -37,7 +37,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -38,7 +38,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -73,7 +73,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -51,7 +51,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };

Просмотреть файл

@ -78,7 +78,6 @@
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -115,7 +115,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -34,7 +34,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -13,7 +13,6 @@
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
}; };

Просмотреть файл

@ -13,7 +13,6 @@
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };
}; };

Просмотреть файл

@ -90,7 +90,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -23,7 +23,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };

Просмотреть файл

@ -117,7 +117,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -18,12 +18,10 @@
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
serial@12100 { serial@12100 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -108,7 +108,6 @@
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };

Просмотреть файл

@ -38,6 +38,7 @@
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupts = <35>, <36>, <37>, <38>; interrupts = <35>, <36>, <37>, <38>;
clocks = <&gate_clk 7>;
}; };
gpio1: gpio@10140 { gpio1: gpio@10140 {
@ -49,6 +50,7 @@
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupts = <39>, <40>, <41>; interrupts = <39>, <40>, <41>;
clocks = <&gate_clk 7>;
}; };
serial@12000 { serial@12000 {
@ -57,7 +59,6 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <33>; interrupts = <33>;
clocks = <&gate_clk 7>; clocks = <&gate_clk 7>;
/* set clock-frequency in board dts */
status = "disabled"; status = "disabled";
}; };
@ -67,7 +68,6 @@
reg-shift = <2>; reg-shift = <2>;
interrupts = <34>; interrupts = <34>;
clocks = <&gate_clk 7>; clocks = <&gate_clk 7>;
/* set clock-frequency in board dts */
status = "disabled"; status = "disabled";
}; };
@ -75,6 +75,7 @@
compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc"; compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
reg = <0x10300 0x20>; reg = <0x10300 0x20>;
interrupts = <53>; interrupts = <53>;
clocks = <&gate_clk 7>;
}; };
spi@10600 { spi@10600 {

Просмотреть файл

@ -11,7 +11,7 @@
/ { / {
model = "LaCie Ethernet Disk mini V2"; model = "LaCie Ethernet Disk mini V2";
compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x"; compatible = "lacie,ethernet-disk-mini-v2", "marvell,orion5x-88f5182", "marvell,orion5x";
memory { memory {
reg = <0x00000000 0x4000000>; /* 64 MB */ reg = <0x00000000 0x4000000>; /* 64 MB */

Просмотреть файл

@ -298,7 +298,7 @@
}; };
}; };
ab8500@5 { ab8500 {
ab8500-regulators { ab8500-regulators {
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
regulator-name = "V-DISPLAY"; regulator-name = "V-DISPLAY";

Просмотреть файл

@ -75,6 +75,9 @@
compatible = "arm,pl330", "arm,primecell"; compatible = "arm,pl330", "arm,primecell";
reg = <0xffe01000 0x1000>; reg = <0xffe01000 0x1000>;
interrupts = <0 180 4>; interrupts = <0 180 4>;
#dma-cells = <1>;
#dma-channels = <8>;
#dma-requests = <32>;
}; };
}; };

Просмотреть файл

@ -118,6 +118,7 @@
compatible = "arm,cortex-a9-twd-timer"; compatible = "arm,cortex-a9-twd-timer";
reg = <0x50040600 0x20>; reg = <0x50040600 0x20>;
interrupts = <1 13 0x304>; interrupts = <1 13 0x304>;
clocks = <&tegra_car 132>;
}; };
intc: interrupt-controller { intc: interrupt-controller {

Просмотреть файл

@ -119,6 +119,7 @@
compatible = "arm,cortex-a9-twd-timer"; compatible = "arm,cortex-a9-twd-timer";
reg = <0x50040600 0x20>; reg = <0x50040600 0x20>;
interrupts = <1 13 0xf04>; interrupts = <1 13 0xf04>;
clocks = <&tegra_car 214>;
}; };
intc: interrupt-controller { intc: interrupt-controller {

Просмотреть файл

@ -116,6 +116,7 @@ CONFIG_SND_SOC=y
CONFIG_SND_MXS_SOC=y CONFIG_SND_MXS_SOC=y
CONFIG_SND_SOC_MXS_SGTL5000=y CONFIG_SND_SOC_MXS_SGTL5000=y
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y

Просмотреть файл

@ -126,6 +126,8 @@ CONFIG_INPUT_MISC=y
CONFIG_INPUT_TWL4030_PWRBUTTON=y CONFIG_INPUT_TWL4030_PWRBUTTON=y
CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_MANY_PORTS=y

Просмотреть файл

@ -2,6 +2,7 @@
#define _ASM_ARM_XEN_EVENTS_H #define _ASM_ARM_XEN_EVENTS_H
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/atomic.h>
enum ipi_vector { enum ipi_vector {
XEN_PLACEHOLDER_VECTOR, XEN_PLACEHOLDER_VECTOR,
@ -15,26 +16,8 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
return raw_irqs_disabled_flags(regs->ARM_cpsr); return raw_irqs_disabled_flags(regs->ARM_cpsr);
} }
/* #define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
* We cannot use xchg because it does not support 8-byte atomic64_t, \
* values. However it is safe to use {ldr,dtd}exd directly because all counter), (val))
* platforms which Xen can run on support those instructions.
*/
static inline xen_ulong_t xchg_xen_ulong(xen_ulong_t *ptr, xen_ulong_t val)
{
xen_ulong_t oldval;
unsigned int tmp;
wmb();
asm volatile("@ xchg_xen_ulong\n"
"1: ldrexd %0, %H0, [%3]\n"
" strexd %1, %2, %H2, [%3]\n"
" teq %1, #0\n"
" bne 1b"
: "=&r" (oldval), "=&r" (tmp)
: "r" (val), "r" (ptr)
: "memory", "cc");
return oldval;
}
#endif /* _ASM_ARM_XEN_EVENTS_H */ #endif /* _ASM_ARM_XEN_EVENTS_H */

Просмотреть файл

@ -176,6 +176,7 @@ static struct w1_gpio_platform_data w1_gpio_pdata = {
/* If you choose to use a pin other than PB16 it needs to be 3.3V */ /* If you choose to use a pin other than PB16 it needs to be 3.3V */
.pin = AT91_PIN_PB16, .pin = AT91_PIN_PB16,
.is_open_drain = 1, .is_open_drain = 1,
.ext_pullup_enable_pin = -EINVAL,
}; };
static struct platform_device w1_device = { static struct platform_device w1_device = {

Просмотреть файл

@ -188,6 +188,7 @@ static struct spi_board_info portuxg20_spi_devices[] = {
static struct w1_gpio_platform_data w1_gpio_pdata = { static struct w1_gpio_platform_data w1_gpio_pdata = {
.pin = AT91_PIN_PA29, .pin = AT91_PIN_PA29,
.is_open_drain = 1, .is_open_drain = 1,
.ext_pullup_enable_pin = -EINVAL,
}; };
static struct platform_device w1_device = { static struct platform_device w1_device = {

Просмотреть файл

@ -172,7 +172,7 @@ static struct clk *clk[clk_max];
static struct clk_onecell_data clk_data; static struct clk_onecell_data clk_data;
static enum mx6q_clks const clks_init_on[] __initconst = { static enum mx6q_clks const clks_init_on[] __initconst = {
mmdc_ch0_axi, rom, mmdc_ch0_axi, rom, pll1_sys,
}; };
static struct clk_div_table clk_enet_ref_table[] = { static struct clk_div_table clk_enet_ref_table[] = {

Просмотреть файл

@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup)
#ifdef CONFIG_PM #ifdef CONFIG_PM
/* /*
* The following code is located into the .data section. This is to * The following code must assume it is running from physical address
* allow phys_l2x0_saved_regs to be accessed with a relative load * where absolute virtual addresses to the data section have to be
* as we are running on physical address here. * turned into relative ones.
*/ */
.data
.align
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
.macro pl310_resume .macro pl310_resume
ldr r2, phys_l2x0_saved_regs adr r0, l2x0_saved_regs_offset
ldr r2, [r0]
add r2, r2, r0
ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0
ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value
str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl
@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup)
str r1, [r0, #L2X0_CTRL] @ re-enable L2 str r1, [r0, #L2X0_CTRL] @ re-enable L2
.endm .endm
.globl phys_l2x0_saved_regs l2x0_saved_regs_offset:
phys_l2x0_saved_regs: .word l2x0_saved_regs - .
.long 0
#else #else
.macro pl310_resume .macro pl310_resume
.endm .endm

Просмотреть файл

@ -22,8 +22,6 @@
#include "common.h" #include "common.h"
#include "hardware.h" #include "hardware.h"
extern unsigned long phys_l2x0_saved_regs;
static int imx6q_suspend_finish(unsigned long val) static int imx6q_suspend_finish(unsigned long val)
{ {
cpu_do_idle(); cpu_do_idle();
@ -57,18 +55,5 @@ static const struct platform_suspend_ops imx6q_pm_ops = {
void __init imx6q_pm_init(void) void __init imx6q_pm_init(void)
{ {
/*
* The l2x0 core code provides an infrastucture to save and restore
* l2x0 registers across suspend/resume cycle. But because imx6q
* retains L2 content during suspend and needs to resume L2 before
* MMU is enabled, it can only utilize register saving support and
* have to take care of restoring on its own. So we save physical
* address of the data structure used by l2x0 core to save registers,
* and later restore the necessary ones in imx6q resume entry.
*/
#ifdef CONFIG_CACHE_L2X0
phys_l2x0_saved_regs = __pa(&l2x0_saved_regs);
#endif
suspend_set_ops(&imx6q_pm_ops); suspend_set_ops(&imx6q_pm_ops);
} }

Просмотреть файл

@ -163,6 +163,7 @@ static struct platform_device vulcan_max6369 = {
static struct w1_gpio_platform_data vulcan_w1_gpio_pdata = { static struct w1_gpio_platform_data vulcan_w1_gpio_pdata = {
.pin = 14, .pin = 14,
.ext_pullup_enable_pin = -EINVAL,
}; };
static struct platform_device vulcan_w1_gpio = { static struct platform_device vulcan_w1_gpio = {

Просмотреть файл

@ -41,16 +41,12 @@ static void __init kirkwood_legacy_clk_init(void)
struct device_node *np = of_find_compatible_node( struct device_node *np = of_find_compatible_node(
NULL, NULL, "marvell,kirkwood-gating-clock"); NULL, NULL, "marvell,kirkwood-gating-clock");
struct of_phandle_args clkspec; struct of_phandle_args clkspec;
struct clk *clk;
clkspec.np = np; clkspec.np = np;
clkspec.args_count = 1; clkspec.args_count = 1;
clkspec.args[0] = CGC_BIT_GE0;
orion_clkdev_add(NULL, "mv643xx_eth_port.0",
of_clk_get_from_provider(&clkspec));
clkspec.args[0] = CGC_BIT_PEX0; clkspec.args[0] = CGC_BIT_PEX0;
orion_clkdev_add("0", "pcie", orion_clkdev_add("0", "pcie",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
@ -59,9 +55,24 @@ static void __init kirkwood_legacy_clk_init(void)
orion_clkdev_add("1", "pcie", orion_clkdev_add("1", "pcie",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
clkspec.args[0] = CGC_BIT_GE1; clkspec.args[0] = CGC_BIT_SDIO;
orion_clkdev_add(NULL, "mv643xx_eth_port.1", orion_clkdev_add(NULL, "mvsdio",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
/*
* The ethernet interfaces forget the MAC address assigned by
* u-boot if the clocks are turned off. Until proper DT support
* is available we always enable them for now.
*/
clkspec.args[0] = CGC_BIT_GE0;
clk = of_clk_get_from_provider(&clkspec);
orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk);
clk_prepare_enable(clk);
clkspec.args[0] = CGC_BIT_GE1;
clk = of_clk_get_from_provider(&clkspec);
orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk);
clk_prepare_enable(clk);
} }
static void __init kirkwood_of_clk_init(void) static void __init kirkwood_of_clk_init(void)

Просмотреть файл

@ -100,7 +100,7 @@ static struct irq_domain_ops icoll_irq_domain_ops = {
.xlate = irq_domain_xlate_onecell, .xlate = irq_domain_xlate_onecell,
}; };
void __init icoll_of_init(struct device_node *np, static void __init icoll_of_init(struct device_node *np,
struct device_node *interrupt_parent) struct device_node *interrupt_parent)
{ {
/* /*

Просмотреть файл

@ -402,17 +402,17 @@ static void __init cfa10049_init(void)
{ {
enable_clk_enet_out(); enable_clk_enet_out();
update_fec_mac_prop(OUI_CRYSTALFONTZ); update_fec_mac_prop(OUI_CRYSTALFONTZ);
mxsfb_pdata.mode_list = cfa10049_video_modes;
mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
mxsfb_pdata.default_bpp = 32;
mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
} }
static void __init cfa10037_init(void) static void __init cfa10037_init(void)
{ {
enable_clk_enet_out(); enable_clk_enet_out();
update_fec_mac_prop(OUI_CRYSTALFONTZ); update_fec_mac_prop(OUI_CRYSTALFONTZ);
mxsfb_pdata.mode_list = cfa10049_video_modes;
mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
mxsfb_pdata.default_bpp = 32;
mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
} }
static void __init apf28_init(void) static void __init apf28_init(void)

Просмотреть файл

@ -18,6 +18,7 @@
#include <mach/mx23.h> #include <mach/mx23.h>
#include <mach/mx28.h> #include <mach/mx28.h>
#include <mach/common.h>
/* /*
* Define the MX23 memory map. * Define the MX23 memory map.

Просмотреть файл

@ -19,6 +19,7 @@
#include <asm/processor.h> /* for cpu_relax() */ #include <asm/processor.h> /* for cpu_relax() */
#include <mach/mxs.h> #include <mach/mxs.h>
#include <mach/common.h>
#define OCOTP_WORD_OFFSET 0x20 #define OCOTP_WORD_OFFSET 0x20
#define OCOTP_WORD_COUNT 0x20 #define OCOTP_WORD_COUNT 0x20

Просмотреть файл

@ -31,6 +31,8 @@
#include <plat/i2c.h> #include <plat/i2c.h>
#include <mach/irqs.h>
#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
void omap7xx_map_io(void); void omap7xx_map_io(void);
#else #else

Просмотреть файл

@ -311,9 +311,6 @@ config MACH_OMAP_ZOOM2
default y default y
select OMAP_PACKAGE_CBB select OMAP_PACKAGE_CBB
select REGULATOR_FIXED_VOLTAGE if REGULATOR select REGULATOR_FIXED_VOLTAGE if REGULATOR
select SERIAL_8250
select SERIAL_8250_CONSOLE
select SERIAL_CORE_CONSOLE
config MACH_OMAP_ZOOM3 config MACH_OMAP_ZOOM3
bool "OMAP3630 Zoom3 board" bool "OMAP3630 Zoom3 board"
@ -321,9 +318,6 @@ config MACH_OMAP_ZOOM3
default y default y
select OMAP_PACKAGE_CBP select OMAP_PACKAGE_CBP
select REGULATOR_FIXED_VOLTAGE if REGULATOR select REGULATOR_FIXED_VOLTAGE if REGULATOR
select SERIAL_8250
select SERIAL_8250_CONSOLE
select SERIAL_CORE_CONSOLE
config MACH_CM_T35 config MACH_CM_T35
bool "CompuLab CM-T35/CM-T3730 modules" bool "CompuLab CM-T35/CM-T3730 modules"

Просмотреть файл

@ -102,6 +102,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
.init_irq = omap_intc_of_init, .init_irq = omap_intc_of_init,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_generic_init, .init_machine = omap_generic_init,
.init_late = omap3_init_late,
.init_time = omap3_sync32k_timer_init, .init_time = omap3_sync32k_timer_init,
.dt_compat = omap3_boards_compat, .dt_compat = omap3_boards_compat,
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
@ -119,6 +120,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
.init_irq = omap_intc_of_init, .init_irq = omap_intc_of_init,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_generic_init, .init_machine = omap_generic_init,
.init_late = omap3_init_late,
.init_time = omap3_secure_sync32k_timer_init, .init_time = omap3_secure_sync32k_timer_init,
.dt_compat = omap3_gp_boards_compat, .dt_compat = omap3_gp_boards_compat,
.restart = omap3xxx_restart, .restart = omap3xxx_restart,

Просмотреть файл

@ -17,6 +17,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/usb/phy.h>
#include <linux/usb/musb.h> #include <linux/usb/musb.h>
#include <linux/platform_data/spi-omap2-mcspi.h> #include <linux/platform_data/spi-omap2-mcspi.h>
@ -98,6 +99,7 @@ static void __init rx51_init(void)
sdrc_params = nokia_get_sdram_timings(); sdrc_params = nokia_get_sdram_timings();
omap_sdrc_init(sdrc_params, sdrc_params); omap_sdrc_init(sdrc_params, sdrc_params);
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
usb_musb_init(&musb_board_data); usb_musb_init(&musb_board_data);
rx51_peripherals_init(); rx51_peripherals_init();

Просмотреть файл

@ -108,7 +108,6 @@ void omap35xx_init_late(void);
void omap3630_init_late(void); void omap3630_init_late(void);
void am35xx_init_late(void); void am35xx_init_late(void);
void ti81xx_init_late(void); void ti81xx_init_late(void);
void omap4430_init_late(void);
int omap2_common_pm_late_init(void); int omap2_common_pm_late_init(void);
#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430) #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)

Просмотреть файл

@ -1122,9 +1122,6 @@ int gpmc_calc_timings(struct gpmc_timings *gpmc_t,
/* TODO: remove, see function definition */ /* TODO: remove, see function definition */
gpmc_convert_ps_to_ns(gpmc_t); gpmc_convert_ps_to_ns(gpmc_t);
/* Now the GPMC is initialised, unreserve the chip-selects */
gpmc_cs_map = 0;
return 0; return 0;
} }
@ -1383,6 +1380,9 @@ static int gpmc_probe(struct platform_device *pdev)
if (IS_ERR_VALUE(gpmc_setup_irq())) if (IS_ERR_VALUE(gpmc_setup_irq()))
dev_warn(gpmc_dev, "gpmc_setup_irq failed\n"); dev_warn(gpmc_dev, "gpmc_setup_irq failed\n");
/* Now the GPMC is initialised, unreserve the chip-selects */
gpmc_cs_map = 0;
rc = gpmc_probe_dt(pdev); rc = gpmc_probe_dt(pdev);
if (rc < 0) { if (rc < 0) {
clk_disable_unprepare(gpmc_l3_clk); clk_disable_unprepare(gpmc_l3_clk);

Просмотреть файл

@ -211,8 +211,6 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,
return -EINVAL; return -EINVAL;
} }
pr_err("%s: Could not find signal %s\n", __func__, muxname);
return -ENODEV; return -ENODEV;
} }
@ -234,6 +232,8 @@ int __init omap_mux_get_by_name(const char *muxname,
return mux_mode; return mux_mode;
} }
pr_err("%s: Could not find signal %s\n", __func__, muxname);
return -ENODEV; return -ENODEV;
} }
@ -739,8 +739,9 @@ static void __init omap_mux_dbg_create_entry(
list_for_each_entry(e, &partition->muxmodes, node) { list_for_each_entry(e, &partition->muxmodes, node) {
struct omap_mux *m = &e->mux; struct omap_mux *m = &e->mux;
(void)debugfs_create_file(m->muxnames[0], S_IWUSR, mux_dbg_dir, (void)debugfs_create_file(m->muxnames[0], S_IWUSR | S_IRUGO,
m, &omap_mux_dbg_signal_fops); mux_dbg_dir, m,
&omap_mux_dbg_signal_fops);
} }
} }

Просмотреть файл

@ -505,6 +505,7 @@ static struct w1_gpio_platform_data w1_gpio_platform_data = {
.pin = GPIO_ONE_WIRE, .pin = GPIO_ONE_WIRE,
.is_open_drain = 0, .is_open_drain = 0,
.enable_external_pullup = w1_enable_external_pullup, .enable_external_pullup = w1_enable_external_pullup,
.ext_pullup_enable_pin = -EINVAL,
}; };
struct platform_device raumfeld_w1_gpio_device = { struct platform_device raumfeld_w1_gpio_device = {

Просмотреть файл

@ -342,6 +342,7 @@ static int __init atomic_pool_init(void)
{ {
struct dma_pool *pool = &atomic_pool; struct dma_pool *pool = &atomic_pool;
pgprot_t prot = pgprot_dmacoherent(pgprot_kernel); pgprot_t prot = pgprot_dmacoherent(pgprot_kernel);
gfp_t gfp = GFP_KERNEL | GFP_DMA;
unsigned long nr_pages = pool->size >> PAGE_SHIFT; unsigned long nr_pages = pool->size >> PAGE_SHIFT;
unsigned long *bitmap; unsigned long *bitmap;
struct page *page; struct page *page;
@ -361,8 +362,8 @@ static int __init atomic_pool_init(void)
ptr = __alloc_from_contiguous(NULL, pool->size, prot, &page, ptr = __alloc_from_contiguous(NULL, pool->size, prot, &page,
atomic_pool_init); atomic_pool_init);
else else
ptr = __alloc_remap_buffer(NULL, pool->size, GFP_KERNEL, prot, ptr = __alloc_remap_buffer(NULL, pool->size, gfp, prot, &page,
&page, atomic_pool_init); atomic_pool_init);
if (ptr) { if (ptr) {
int i; int i;

Просмотреть файл

@ -157,9 +157,12 @@ void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg,
u32 size = readl(ddr_window_cpu_base + DDR_SIZE_CS_OFF(i)); u32 size = readl(ddr_window_cpu_base + DDR_SIZE_CS_OFF(i));
/* /*
* Chip select enabled? * We only take care of entries for which the chip
* select is enabled, and that don't have high base
* address bits set (devices can only access the first
* 32 bits of the memory).
*/ */
if (size & 1) { if ((size & 1) && !(base & 0xF)) {
struct mbus_dram_window *w; struct mbus_dram_window *w;
w = &orion_mbus_dram_info.cs[cs++]; w = &orion_mbus_dram_info.cs[cs++];

Просмотреть файл

@ -7,7 +7,7 @@ config AVR32
select HAVE_OPROFILE select HAVE_OPROFILE
select HAVE_KPROBES select HAVE_KPROBES
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select HARDIRQS_SW_RESEND select HARDIRQS_SW_RESEND

Просмотреть файл

@ -33,7 +33,7 @@ config BLACKFIN
select ARCH_HAVE_CUSTOM_GPIO_H select ARCH_HAVE_CUSTOM_GPIO_H
select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_WANT_OPTIONAL_GPIOLIB
select HAVE_UID16 select HAVE_UID16
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64

Просмотреть файл

@ -43,7 +43,7 @@ config CRIS
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_UID16 select HAVE_UID16
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_IOMAP select GENERIC_IOMAP

Просмотреть файл

@ -6,7 +6,7 @@ config FRV
select HAVE_PERF_EVENTS select HAVE_PERF_EVENTS
select HAVE_UID16 select HAVE_UID16
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_BUGVERBOSE
select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_HAVE_NMI_SAFE_CMPXCHG

Просмотреть файл

@ -5,7 +5,7 @@ config H8300
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select HAVE_UID16 select HAVE_UID16
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES

Просмотреть файл

@ -26,7 +26,7 @@ config IA64
select HAVE_MEMBLOCK select HAVE_MEMBLOCK
select HAVE_MEMBLOCK_NODE_MAP select HAVE_MEMBLOCK_NODE_MAP
select HAVE_VIRT_CPU_ACCOUNTING select HAVE_VIRT_CPU_ACCOUNTING
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select ARCH_DISCARD_MEMBLOCK select ARCH_DISCARD_MEMBLOCK
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_PENDING_IRQ if SMP select GENERIC_PENDING_IRQ if SMP

Просмотреть файл

@ -10,7 +10,7 @@ config M32R
select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_IPC_PARSE_VERSION
select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_BUGVERBOSE
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64

Просмотреть файл

@ -63,10 +63,10 @@ struct stat64 {
long long st_size; long long st_size;
unsigned long st_blksize; unsigned long st_blksize;
#if defined(__BIG_ENDIAN) #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
unsigned long __pad4; /* future possible st_blocks high bits */ unsigned long __pad4; /* future possible st_blocks high bits */
unsigned long st_blocks; /* Number 512-byte blocks allocated. */ unsigned long st_blocks; /* Number 512-byte blocks allocated. */
#elif defined(__LITTLE_ENDIAN) #elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
unsigned long st_blocks; /* Number 512-byte blocks allocated. */ unsigned long st_blocks; /* Number 512-byte blocks allocated. */
unsigned long __pad4; /* future possible st_blocks high bits */ unsigned long __pad4; /* future possible st_blocks high bits */
#else #else

Просмотреть файл

@ -8,7 +8,7 @@ config M68K
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select HAVE_UID16 select HAVE_UID16
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES
select GENERIC_STRNCPY_FROM_USER if MMU select GENERIC_STRNCPY_FROM_USER if MMU

Просмотреть файл

@ -310,7 +310,6 @@ config COBRA5282
config SOM5282EM config SOM5282EM
bool "EMAC.Inc SOM5282EM board support" bool "EMAC.Inc SOM5282EM board support"
depends on M528x depends on M528x
select EMAC_INC
help help
Support for the EMAC.Inc SOM5282EM module. Support for the EMAC.Inc SOM5282EM module.

Просмотреть файл

@ -757,7 +757,7 @@
/* 'EZ328-compatible definitions */ /* 'EZ328-compatible definitions */
#define TCN_ADDR TCN1_ADDR #define TCN_ADDR TCN1_ADDR
#define TCN TCN #define TCN TCN1
/* /*
* Timer Unit 1 and 2 Status Registers * Timer Unit 1 and 2 Status Registers

Просмотреть файл

@ -57,6 +57,9 @@ void (*mach_reset)(void);
void (*mach_halt)(void); void (*mach_halt)(void);
void (*mach_power_off)(void); void (*mach_power_off)(void);
#ifdef CONFIG_M68000
#define CPU_NAME "MC68000"
#endif
#ifdef CONFIG_M68328 #ifdef CONFIG_M68328
#define CPU_NAME "MC68328" #define CPU_NAME "MC68328"
#endif #endif

Просмотреть файл

@ -188,7 +188,7 @@ void __init mem_init(void)
} }
} }
#if !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE) #if defined(CONFIG_MMU) && !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE)
/* insert pointer tables allocated so far into the tablelist */ /* insert pointer tables allocated so far into the tablelist */
init_pointer_table((unsigned long)kernel_pg_dir); init_pointer_table((unsigned long)kernel_pg_dir);
for (i = 0; i < PTRS_PER_PGD; i++) { for (i = 0; i < PTRS_PER_PGD; i++) {

Просмотреть файл

@ -69,7 +69,7 @@ static void __init m528x_uarts_init(void)
u8 port; u8 port;
/* make sure PUAPAR is set for UART0 and UART1 */ /* make sure PUAPAR is set for UART0 and UART1 */
port = readb(MCF5282_GPIO_PUAPAR); port = readb(MCFGPIO_PUAPAR);
port |= 0x03 | (0x03 << 2); port |= 0x03 | (0x03 << 2);
writeb(port, MCFGPIO_PUAPAR); writeb(port, MCFGPIO_PUAPAR);
} }

Просмотреть файл

@ -19,7 +19,7 @@ config MICROBLAZE
select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_KMEMLEAK
select IRQ_DOMAIN select IRQ_DOMAIN
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select GENERIC_PCI_IOMAP select GENERIC_PCI_IOMAP

Просмотреть файл

@ -38,7 +38,7 @@ config MIPS
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select GENERIC_CMOS_UPDATE select GENERIC_CMOS_UPDATE
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_REL if MODULES
select MODULES_USE_ELF_RELA if MODULES && 64BIT select MODULES_USE_ELF_RELA if MODULES && 64BIT
select CLONE_BACKWARDS select CLONE_BACKWARDS

Просмотреть файл

@ -8,7 +8,7 @@ config MN10300
select HAVE_ARCH_KGDB select HAVE_ARCH_KGDB
select GENERIC_ATOMIC64 select GENERIC_ATOMIC64
select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select OLD_SIGSUSPEND3 select OLD_SIGSUSPEND3

Просмотреть файл

@ -9,10 +9,9 @@ config OPENRISC
select OF_EARLY_FLATTREE select OF_EARLY_FLATTREE
select IRQ_DOMAIN select IRQ_DOMAIN
select HAVE_MEMBLOCK select HAVE_MEMBLOCK
select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_VIRT_TO_BUS
select GENERIC_IRQ_CHIP select GENERIC_IRQ_CHIP
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW

Просмотреть файл

@ -21,7 +21,7 @@ config PARISC
select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNCPY_FROM_USER
select SYSCTL_ARCH_UNALIGN_ALLOW select SYSCTL_ARCH_UNALIGN_ALLOW
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select CLONE_BACKWARDS select CLONE_BACKWARDS
select TTY # Needed for pdc_cons.c select TTY # Needed for pdc_cons.c

Просмотреть файл

@ -98,7 +98,7 @@ config PPC
select HAVE_FUNCTION_GRAPH_TRACER select HAVE_FUNCTION_GRAPH_TRACER
select SYSCTL_EXCEPTION_TRACE select SYSCTL_EXCEPTION_TRACE
select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_WANT_OPTIONAL_GPIOLIB
select HAVE_VIRT_TO_BUS if !PPC64 select VIRT_TO_BUS if !PPC64
select HAVE_IDE select HAVE_IDE
select HAVE_IOREMAP_PROT select HAVE_IOREMAP_PROT
select HAVE_EFFICIENT_UNALIGNED_ACCESS select HAVE_EFFICIENT_UNALIGNED_ACCESS

Просмотреть файл

@ -134,7 +134,7 @@ config S390
select HAVE_SYSCALL_WRAPPERS select HAVE_SYSCALL_WRAPPERS
select HAVE_UID16 if 32BIT select HAVE_UID16 if 32BIT
select HAVE_VIRT_CPU_ACCOUNTING select HAVE_VIRT_CPU_ACCOUNTING
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select INIT_ALL_POSSIBLE select INIT_ALL_POSSIBLE
select KTIME_SCALAR if 32BIT select KTIME_SCALAR if 32BIT
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA

Просмотреть файл

@ -12,6 +12,7 @@
#ifndef _ASM_S390_CPU_MF_H #ifndef _ASM_S390_CPU_MF_H
#define _ASM_S390_CPU_MF_H #define _ASM_S390_CPU_MF_H
#include <linux/errno.h>
#include <asm/facility.h> #include <asm/facility.h>
#define CPU_MF_INT_SF_IAE (1 << 31) /* invalid entry address */ #define CPU_MF_INT_SF_IAE (1 << 31) /* invalid entry address */

Просмотреть файл

@ -12,7 +12,7 @@ config SCORE
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select MODULES_USE_ELF_REL select MODULES_USE_ELF_REL
select CLONE_BACKWARDS select CLONE_BACKWARDS

Просмотреть файл

@ -17,7 +17,7 @@ config TILE
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_BUGVERBOSE
select HAVE_SYSCALL_WRAPPERS if TILEGX select HAVE_SYSCALL_WRAPPERS if TILEGX
select HAVE_VIRT_TO_BUS select VIRT_TO_BUS
select SYS_HYPERVISOR select SYS_HYPERVISOR
select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_HAVE_NMI_SAFE_CMPXCHG
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS

Просмотреть файл

@ -37,7 +37,7 @@ extern int console_write_chan(struct chan *chan, const char *buf,
extern int console_open_chan(struct line *line, struct console *co); extern int console_open_chan(struct line *line, struct console *co);
extern void deactivate_chan(struct chan *chan, int irq); extern void deactivate_chan(struct chan *chan, int irq);
extern void reactivate_chan(struct chan *chan, int irq); extern void reactivate_chan(struct chan *chan, int irq);
extern void chan_enable_winch(struct chan *chan, struct tty_struct *tty); extern void chan_enable_winch(struct chan *chan, struct tty_port *port);
extern int enable_chan(struct line *line); extern int enable_chan(struct line *line);
extern void close_chan(struct line *line); extern void close_chan(struct line *line);
extern int chan_window_size(struct line *line, extern int chan_window_size(struct line *line,

Просмотреть файл

@ -122,10 +122,10 @@ static int open_chan(struct list_head *chans)
return err; return err;
} }
void chan_enable_winch(struct chan *chan, struct tty_struct *tty) void chan_enable_winch(struct chan *chan, struct tty_port *port)
{ {
if (chan && chan->primary && chan->ops->winch) if (chan && chan->primary && chan->ops->winch)
register_winch(chan->fd, tty); register_winch(chan->fd, port);
} }
static void line_timer_cb(struct work_struct *work) static void line_timer_cb(struct work_struct *work)

Просмотреть файл

@ -216,7 +216,7 @@ static int winch_thread(void *arg)
} }
} }
static int winch_tramp(int fd, struct tty_struct *tty, int *fd_out, static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
unsigned long *stack_out) unsigned long *stack_out)
{ {
struct winch_data data; struct winch_data data;
@ -271,7 +271,7 @@ static int winch_tramp(int fd, struct tty_struct *tty, int *fd_out,
return err; return err;
} }
void register_winch(int fd, struct tty_struct *tty) void register_winch(int fd, struct tty_port *port)
{ {
unsigned long stack; unsigned long stack;
int pid, thread, count, thread_fd = -1; int pid, thread, count, thread_fd = -1;
@ -281,17 +281,17 @@ void register_winch(int fd, struct tty_struct *tty)
return; return;
pid = tcgetpgrp(fd); pid = tcgetpgrp(fd);
if (is_skas_winch(pid, fd, tty)) { if (is_skas_winch(pid, fd, port)) {
register_winch_irq(-1, fd, -1, tty, 0); register_winch_irq(-1, fd, -1, port, 0);
return; return;
} }
if (pid == -1) { if (pid == -1) {
thread = winch_tramp(fd, tty, &thread_fd, &stack); thread = winch_tramp(fd, port, &thread_fd, &stack);
if (thread < 0) if (thread < 0)
return; return;
register_winch_irq(thread_fd, fd, thread, tty, stack); register_winch_irq(thread_fd, fd, thread, port, stack);
count = write(thread_fd, &c, sizeof(c)); count = write(thread_fd, &c, sizeof(c));
if (count != sizeof(c)) if (count != sizeof(c))

Просмотреть файл

@ -38,10 +38,10 @@ extern int generic_window_size(int fd, void *unused, unsigned short *rows_out,
unsigned short *cols_out); unsigned short *cols_out);
extern void generic_free(void *data); extern void generic_free(void *data);
struct tty_struct; struct tty_port;
extern void register_winch(int fd, struct tty_struct *tty); extern void register_winch(int fd, struct tty_port *port);
extern void register_winch_irq(int fd, int tty_fd, int pid, extern void register_winch_irq(int fd, int tty_fd, int pid,
struct tty_struct *tty, unsigned long stack); struct tty_port *port, unsigned long stack);
#define __channel_help(fn, prefix) \ #define __channel_help(fn, prefix) \
__uml_help(fn, prefix "[0-9]*=<channel description>\n" \ __uml_help(fn, prefix "[0-9]*=<channel description>\n" \

Просмотреть файл

@ -305,7 +305,7 @@ static int line_activate(struct tty_port *port, struct tty_struct *tty)
return ret; return ret;
if (!line->sigio) { if (!line->sigio) {
chan_enable_winch(line->chan_out, tty); chan_enable_winch(line->chan_out, port);
line->sigio = 1; line->sigio = 1;
} }
@ -315,8 +315,22 @@ static int line_activate(struct tty_port *port, struct tty_struct *tty)
return 0; return 0;
} }
static void unregister_winch(struct tty_struct *tty);
static void line_destruct(struct tty_port *port)
{
struct tty_struct *tty = tty_port_tty_get(port);
struct line *line = tty->driver_data;
if (line->sigio) {
unregister_winch(tty);
line->sigio = 0;
}
}
static const struct tty_port_operations line_port_ops = { static const struct tty_port_operations line_port_ops = {
.activate = line_activate, .activate = line_activate,
.destruct = line_destruct,
}; };
int line_open(struct tty_struct *tty, struct file *filp) int line_open(struct tty_struct *tty, struct file *filp)
@ -340,18 +354,6 @@ int line_install(struct tty_driver *driver, struct tty_struct *tty,
return 0; return 0;
} }
static void unregister_winch(struct tty_struct *tty);
void line_cleanup(struct tty_struct *tty)
{
struct line *line = tty->driver_data;
if (line->sigio) {
unregister_winch(tty);
line->sigio = 0;
}
}
void line_close(struct tty_struct *tty, struct file * filp) void line_close(struct tty_struct *tty, struct file * filp)
{ {
struct line *line = tty->driver_data; struct line *line = tty->driver_data;
@ -601,7 +603,7 @@ struct winch {
int fd; int fd;
int tty_fd; int tty_fd;
int pid; int pid;
struct tty_struct *tty; struct tty_port *port;
unsigned long stack; unsigned long stack;
struct work_struct work; struct work_struct work;
}; };
@ -655,7 +657,7 @@ static irqreturn_t winch_interrupt(int irq, void *data)
goto out; goto out;
} }
} }
tty = winch->tty; tty = tty_port_tty_get(winch->port);
if (tty != NULL) { if (tty != NULL) {
line = tty->driver_data; line = tty->driver_data;
if (line != NULL) { if (line != NULL) {
@ -663,6 +665,7 @@ static irqreturn_t winch_interrupt(int irq, void *data)
&tty->winsize.ws_col); &tty->winsize.ws_col);
kill_pgrp(tty->pgrp, SIGWINCH, 1); kill_pgrp(tty->pgrp, SIGWINCH, 1);
} }
tty_kref_put(tty);
} }
out: out:
if (winch->fd != -1) if (winch->fd != -1)
@ -670,7 +673,7 @@ static irqreturn_t winch_interrupt(int irq, void *data)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
void register_winch_irq(int fd, int tty_fd, int pid, struct tty_struct *tty, void register_winch_irq(int fd, int tty_fd, int pid, struct tty_port *port,
unsigned long stack) unsigned long stack)
{ {
struct winch *winch; struct winch *winch;
@ -685,7 +688,7 @@ void register_winch_irq(int fd, int tty_fd, int pid, struct tty_struct *tty,
.fd = fd, .fd = fd,
.tty_fd = tty_fd, .tty_fd = tty_fd,
.pid = pid, .pid = pid,
.tty = tty, .port = port,
.stack = stack }); .stack = stack });
if (um_request_irq(WINCH_IRQ, fd, IRQ_READ, winch_interrupt, if (um_request_irq(WINCH_IRQ, fd, IRQ_READ, winch_interrupt,
@ -714,15 +717,18 @@ static void unregister_winch(struct tty_struct *tty)
{ {
struct list_head *ele, *next; struct list_head *ele, *next;
struct winch *winch; struct winch *winch;
struct tty_struct *wtty;
spin_lock(&winch_handler_lock); spin_lock(&winch_handler_lock);
list_for_each_safe(ele, next, &winch_handlers) { list_for_each_safe(ele, next, &winch_handlers) {
winch = list_entry(ele, struct winch, list); winch = list_entry(ele, struct winch, list);
if (winch->tty == tty) { wtty = tty_port_tty_get(winch->port);
if (wtty == tty) {
free_winch(winch); free_winch(winch);
break; break;
} }
tty_kref_put(wtty);
} }
spin_unlock(&winch_handler_lock); spin_unlock(&winch_handler_lock);
} }

Просмотреть файл

@ -218,6 +218,7 @@ static int uml_net_start_xmit(struct sk_buff *skb, struct net_device *dev)
spin_lock_irqsave(&lp->lock, flags); spin_lock_irqsave(&lp->lock, flags);
len = (*lp->write)(lp->fd, skb, lp); len = (*lp->write)(lp->fd, skb, lp);
skb_tx_timestamp(skb);
if (len == skb->len) { if (len == skb->len) {
dev->stats.tx_packets++; dev->stats.tx_packets++;
@ -281,6 +282,7 @@ static void uml_net_get_drvinfo(struct net_device *dev,
static const struct ethtool_ops uml_net_ethtool_ops = { static const struct ethtool_ops uml_net_ethtool_ops = {
.get_drvinfo = uml_net_get_drvinfo, .get_drvinfo = uml_net_get_drvinfo,
.get_link = ethtool_op_get_link, .get_link = ethtool_op_get_link,
.get_ts_info = ethtool_op_get_ts_info,
}; };
static void uml_net_user_timer_expire(unsigned long _conn) static void uml_net_user_timer_expire(unsigned long _conn)

Просмотреть файл

@ -105,7 +105,6 @@ static const struct tty_operations ssl_ops = {
.throttle = line_throttle, .throttle = line_throttle,
.unthrottle = line_unthrottle, .unthrottle = line_unthrottle,
.install = ssl_install, .install = ssl_install,
.cleanup = line_cleanup,
.hangup = line_hangup, .hangup = line_hangup,
}; };

Просмотреть файл

@ -110,7 +110,6 @@ static const struct tty_operations console_ops = {
.set_termios = line_set_termios, .set_termios = line_set_termios,
.throttle = line_throttle, .throttle = line_throttle,
.unthrottle = line_unthrottle, .unthrottle = line_unthrottle,
.cleanup = line_cleanup,
.hangup = line_hangup, .hangup = line_hangup,
}; };

Просмотреть файл

@ -15,7 +15,7 @@
#include <sysdep/mcontext.h> #include <sysdep/mcontext.h>
#include "internal.h" #include "internal.h"
void (*sig_info[NSIG])(int, siginfo_t *, struct uml_pt_regs *) = { void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *) = {
[SIGTRAP] = relay_signal, [SIGTRAP] = relay_signal,
[SIGFPE] = relay_signal, [SIGFPE] = relay_signal,
[SIGILL] = relay_signal, [SIGILL] = relay_signal,

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше