提交 7bcdd8d5 编写于 作者: O Olof Johansson

Merge branch 'depends/cleanup' into next/drivers

* depends/cleanup: (375 commits)
  ARM: at91: fix board-rm9200-dt after sys_timer conversion
  clocksource: use clockevents_config_and_register() where possible
  ARM: use clockevents_config_and_register() where possible
  clockevents: export clockevents_config_and_register for module use
  timer: vt8500: Move timer code to drivers/clocksource
  irqchip: Move ARM vic.h to include/linux/irqchip/arm-vic.h
  ARM: picoxcell: use common irqchip_init function
  ARM: spear: use common irqchip_init function
  irqchip: Move ARM VIC to drivers/irqchip
  ARM: samsung: remove unused tick.h
  ARM: remove unneeded vic.h includes
  ARM: remove mach .handle_irq for VIC users
  ARM: VIC: set handle_arch_irq in VIC initialization
  ARM: VIC: shrink down vic.h
  irqchip: Move ARM gic.h to include/linux/irqchip/arm-gic.h
  ARM: use common irqchip_init for GIC init
  irqchip: Move ARM GIC to drivers/irqchip
  ARM: remove mach .handle_irq for GIC users
  ARM: GIC: set handle_arch_irq in GIC initialization
  ARM: GIC: remove direct use of gic_raise_softirq
  ...

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
...@@ -116,7 +116,7 @@ my_suspend (struct pci_dev * pci_dev, ...@@ -116,7 +116,7 @@ my_suspend (struct pci_dev * pci_dev,
return 0; /* a negative value on error, 0 on success. */ return 0; /* a negative value on error, 0 on success. */
} }
static void __devexit static void
my_remove (struct pci_dev * pci_dev) my_remove (struct pci_dev * pci_dev)
{ {
my_device *my = pci_get_drvdata (pci_dev); my_device *my = pci_get_drvdata (pci_dev);
...@@ -124,7 +124,7 @@ my_remove (struct pci_dev * pci_dev) ...@@ -124,7 +124,7 @@ my_remove (struct pci_dev * pci_dev)
/* Describe me. */ /* Describe me. */
} }
static int __devinit static int
my_probe (struct pci_dev * pci_dev, my_probe (struct pci_dev * pci_dev,
const struct pci_device_id * pci_id) const struct pci_device_id * pci_id)
{ {
...@@ -157,7 +157,7 @@ my_pci_driver = { ...@@ -157,7 +157,7 @@ my_pci_driver = {
.id_table = my_pci_device_ids, .id_table = my_pci_device_ids,
.probe = my_probe, .probe = my_probe,
.remove = __devexit_p (my_remove), .remove = my_remove,
/* Power management functions. */ /* Power management functions. */
.suspend = my_suspend, .suspend = my_suspend,
......
...@@ -76,7 +76,7 @@ To notify SR-IOV core of Virtual Function Migration: ...@@ -76,7 +76,7 @@ To notify SR-IOV core of Virtual Function Migration:
Following piece of code illustrates the usage of the SR-IOV API. Following piece of code illustrates the usage of the SR-IOV API.
static int __devinit dev_probe(struct pci_dev *dev, const struct pci_device_id *id) static int dev_probe(struct pci_dev *dev, const struct pci_device_id *id)
{ {
pci_enable_sriov(dev, NR_VIRTFN); pci_enable_sriov(dev, NR_VIRTFN);
...@@ -85,7 +85,7 @@ static int __devinit dev_probe(struct pci_dev *dev, const struct pci_device_id * ...@@ -85,7 +85,7 @@ static int __devinit dev_probe(struct pci_dev *dev, const struct pci_device_id *
return 0; return 0;
} }
static void __devexit dev_remove(struct pci_dev *dev) static void dev_remove(struct pci_dev *dev)
{ {
pci_disable_sriov(dev); pci_disable_sriov(dev);
...@@ -131,7 +131,7 @@ static struct pci_driver dev_driver = { ...@@ -131,7 +131,7 @@ static struct pci_driver dev_driver = {
.name = "SR-IOV Physical Function driver", .name = "SR-IOV Physical Function driver",
.id_table = dev_id_table, .id_table = dev_id_table,
.probe = dev_probe, .probe = dev_probe,
.remove = __devexit_p(dev_remove), .remove = dev_remove,
.suspend = dev_suspend, .suspend = dev_suspend,
.resume = dev_resume, .resume = dev_resume,
.shutdown = dev_shutdown, .shutdown = dev_shutdown,
......
...@@ -183,12 +183,6 @@ Please mark the initialization and cleanup functions where appropriate ...@@ -183,12 +183,6 @@ Please mark the initialization and cleanup functions where appropriate
initializes. initializes.
__exit Exit code. Ignored for non-modular drivers. __exit Exit code. Ignored for non-modular drivers.
__devinit Device initialization code.
Identical to __init if the kernel is not compiled
with CONFIG_HOTPLUG, normal function otherwise.
__devexit The same for __exit.
Tips on when/where to use the above attributes: Tips on when/where to use the above attributes:
o The module_init()/module_exit() functions (and all o The module_init()/module_exit() functions (and all
initialization functions called _only_ from these) initialization functions called _only_ from these)
...@@ -196,20 +190,6 @@ Tips on when/where to use the above attributes: ...@@ -196,20 +190,6 @@ Tips on when/where to use the above attributes:
o Do not mark the struct pci_driver. o Do not mark the struct pci_driver.
o The ID table array should be marked __devinitconst; this is done
automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
o The probe() and remove() functions should be marked __devinit
and __devexit respectively. All initialization functions
exclusively called by the probe() routine, can be marked __devinit.
Ditto for remove() and __devexit.
o If mydriver_remove() is marked with __devexit(), then all address
references to mydriver_remove must use __devexit_p(mydriver_remove)
(in the struct pci_driver declaration for example).
__devexit_p() will generate the function name _or_ NULL if the
function will be discarded. For an example, see drivers/net/tg3.c.
o Do NOT mark a function if you are not sure which mark to use. o Do NOT mark a function if you are not sure which mark to use.
Better to not mark the function than mark the function wrong. Better to not mark the function than mark the function wrong.
......
...@@ -185,7 +185,7 @@ input driver: ...@@ -185,7 +185,7 @@ input driver:
.acpi_match_table ACPI_PTR(mpu3050_acpi_match), .acpi_match_table ACPI_PTR(mpu3050_acpi_match),
}, },
.probe = mpu3050_probe, .probe = mpu3050_probe,
.remove = __devexit_p(mpu3050_remove), .remove = mpu3050_remove,
.id_table = mpu3050_ids, .id_table = mpu3050_ids,
}; };
......
...@@ -60,11 +60,6 @@ clks: clkctrl@80040000 { ...@@ -60,11 +60,6 @@ clks: clkctrl@80040000 {
compatible = "fsl,imx23-clkctrl"; compatible = "fsl,imx23-clkctrl";
reg = <0x80040000 0x2000>; reg = <0x80040000 0x2000>;
#clock-cells = <1>; #clock-cells = <1>;
clock-output-names =
...
"uart", /* 32 */
...
"end_of_list";
}; };
auart0: serial@8006c000 { auart0: serial@8006c000 {
......
...@@ -146,10 +146,6 @@ clks: ccm@53f80000 { ...@@ -146,10 +146,6 @@ clks: ccm@53f80000 {
compatible = "fsl,imx25-ccm"; compatible = "fsl,imx25-ccm";
reg = <0x53f80000 0x4000>; reg = <0x53f80000 0x4000>;
interrupts = <31>; interrupts = <31>;
clock-output-names = ...
"uart_ipg",
"uart_serial",
...;
}; };
uart1: serial@43f90000 { uart1: serial@43f90000 {
......
...@@ -83,11 +83,6 @@ clks: clkctrl@80040000 { ...@@ -83,11 +83,6 @@ clks: clkctrl@80040000 {
compatible = "fsl,imx28-clkctrl"; compatible = "fsl,imx28-clkctrl";
reg = <0x80040000 0x2000>; reg = <0x80040000 0x2000>;
#clock-cells = <1>; #clock-cells = <1>;
clock-output-names =
...
"uart", /* 45 */
...
"end_of_list";
}; };
auart0: serial@8006a000 { auart0: serial@8006a000 {
......
...@@ -211,10 +211,6 @@ clks: ccm@020c4000 { ...@@ -211,10 +211,6 @@ clks: ccm@020c4000 {
reg = <0x020c4000 0x4000>; reg = <0x020c4000 0x4000>;
interrupts = <0 87 0x04 0 88 0x04>; interrupts = <0 87 0x04 0 88 0x04>;
#clock-cells = <1>; #clock-cells = <1>;
clock-output-names = ...
"uart_ipg",
"uart_serial",
...;
}; };
uart1: serial@02020000 { uart1: serial@02020000 {
......
GPIO line that should be set high/low to power off a device Driver a GPIO line that can be used to turn the power off.
The driver supports both level triggered and edge triggered power off.
At driver load time, the driver will request the given gpio line and
install a pm_power_off handler. If the optional properties 'input' is
not found, the GPIO line will be driven in the inactive
state. Otherwise its configured as an input.
When the pm_power_off is called, the gpio is configured as an output,
and drive active, so triggering a level triggered power off
condition. This will also cause an inactive->active edge condition, so
triggering positive edge triggered power off. After a delay of 100ms,
the GPIO is set to inactive, thus causing an active->inactive edge,
triggering negative edge triggered power off. After another 100ms
delay the GPIO is driver active again. If the power is still on and
the CPU still running after a 3000ms delay, a WARN_ON(1) is emitted.
Required properties: Required properties:
- compatible : should be "gpio-poweroff". - compatible : should be "gpio-poweroff".
...@@ -13,10 +28,9 @@ Optional properties: ...@@ -13,10 +28,9 @@ Optional properties:
property is not specified, the GPIO is initialized as an output in its property is not specified, the GPIO is initialized as an output in its
inactive state. inactive state.
Examples: Examples:
gpio-poweroff { gpio-poweroff {
compatible = "gpio-poweroff"; compatible = "gpio-poweroff";
gpios = <&gpio 4 0>; /* GPIO 4 Active Low */ gpios = <&gpio 4 0>;
}; };
CSR SiRFprimaII pinmux controller
Required properties:
- compatible : "sirf,prima2-pinctrl"
- reg : Address range of the pinctrl registers
- interrupts : Interrupts used by every GPIO group
- gpio-controller : Indicates this device is a GPIO controller
- interrupt-controller : Marks the device node as an interrupt controller
Optional properties:
- sirf,pullups : if n-th bit of m-th bank is set, set a pullup on GPIO-n of bank m
- sirf,pulldowns : if n-th bit of m-th bank is set, set a pulldown on GPIO-n of bank m
Please refer to pinctrl-bindings.txt in this directory for details of the common
pinctrl bindings used by client devices.
SiRFprimaII's pinmux nodes act as a container for an abitrary number of subnodes.
Each of these subnodes represents some desired configuration for a group of pins.
Required subnode-properties:
- sirf,pins : An array of strings. Each string contains the name of a group.
- sirf,function: A string containing the name of the function to mux to the
group.
Valid values for group and function names can be found from looking at the
group and function arrays in driver files:
drivers/pinctrl/pinctrl-sirf.c
For example, pinctrl might have subnodes like the following:
uart2_pins_a: uart2@0 {
uart {
sirf,pins = "uart2grp";
sirf,function = "uart2";
};
};
uart2_noflow_pins_a: uart2@1 {
uart {
sirf,pins = "uart2_nostreamctrlgrp";
sirf,function = "uart2_nostreamctrl";
};
};
For a specific board, if it wants to use uart2 without hardware flow control,
it can add the following to its board-specific .dts file.
uart2: uart@0xb0070000 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_noflow_pins_a>;
}
...@@ -91,7 +91,7 @@ Example (from the nxp OHCI driver): ...@@ -91,7 +91,7 @@ Example (from the nxp OHCI driver):
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) static int usb_hcd_nxp_probe(struct platform_device *pdev)
{ {
(...) (...)
struct i2c_adapter *i2c_adap; struct i2c_adapter *i2c_adap;
......
...@@ -36,7 +36,7 @@ neigh/default/unres_qlen_bytes - INTEGER ...@@ -36,7 +36,7 @@ neigh/default/unres_qlen_bytes - INTEGER
The maximum number of bytes which may be used by packets The maximum number of bytes which may be used by packets
queued for each unresolved address by other network layers. queued for each unresolved address by other network layers.
(added in linux 3.3) (added in linux 3.3)
Seting negative value is meaningless and will retrun error. Setting negative value is meaningless and will return error.
Default: 65536 Bytes(64KB) Default: 65536 Bytes(64KB)
neigh/default/unres_qlen - INTEGER neigh/default/unres_qlen - INTEGER
...@@ -215,7 +215,7 @@ tcp_ecn - INTEGER ...@@ -215,7 +215,7 @@ tcp_ecn - INTEGER
Possible values are: Possible values are:
0 Disable ECN. Neither initiate nor accept ECN. 0 Disable ECN. Neither initiate nor accept ECN.
1 Always request ECN on outgoing connection attempts. 1 Always request ECN on outgoing connection attempts.
2 Enable ECN when requested by incomming connections 2 Enable ECN when requested by incoming connections
but do not request ECN on outgoing connections. but do not request ECN on outgoing connections.
Default: 2 Default: 2
...@@ -503,7 +503,7 @@ tcp_fastopen - INTEGER ...@@ -503,7 +503,7 @@ tcp_fastopen - INTEGER
tcp_syn_retries - INTEGER tcp_syn_retries - INTEGER
Number of times initial SYNs for an active TCP connection attempt Number of times initial SYNs for an active TCP connection attempt
will be retransmitted. Should not be higher than 255. Default value will be retransmitted. Should not be higher than 255. Default value
is 6, which corresponds to 63seconds till the last restransmission is 6, which corresponds to 63seconds till the last retransmission
with the current initial RTO of 1second. With this the final timeout with the current initial RTO of 1second. With this the final timeout
for an active TCP connection attempt will happen after 127seconds. for an active TCP connection attempt will happen after 127seconds.
...@@ -1331,6 +1331,12 @@ force_tllao - BOOLEAN ...@@ -1331,6 +1331,12 @@ force_tllao - BOOLEAN
race condition where the sender deletes the cached link-layer address race condition where the sender deletes the cached link-layer address
prior to receiving a response to a previous solicitation." prior to receiving a response to a previous solicitation."
ndisc_notify - BOOLEAN
Define mode for notification of address and device changes.
0 - (default): do nothing
1 - Generate unsolicited neighbour advertisements when device is brought
up or hardware address changes.
icmp/*: icmp/*:
ratelimit - INTEGER ratelimit - INTEGER
Limit the maximal rates for sending ICMPv6 packets. Limit the maximal rates for sending ICMPv6 packets.
...@@ -1530,7 +1536,7 @@ cookie_hmac_alg - STRING ...@@ -1530,7 +1536,7 @@ cookie_hmac_alg - STRING
* sha1 * sha1
* none * none
Ability to assign md5 or sha1 as the selected alg is predicated on the Ability to assign md5 or sha1 as the selected alg is predicated on the
configuarion of those algorithms at build time (CONFIG_CRYPTO_MD5 and configuration of those algorithms at build time (CONFIG_CRYPTO_MD5 and
CONFIG_CRYPTO_SHA1). CONFIG_CRYPTO_SHA1).
Default: Dependent on configuration. MD5 if available, else SHA1 if Default: Dependent on configuration. MD5 if available, else SHA1 if
...@@ -1548,7 +1554,7 @@ rcvbuf_policy - INTEGER ...@@ -1548,7 +1554,7 @@ rcvbuf_policy - INTEGER
blocking. blocking.
1: rcvbuf space is per association 1: rcvbuf space is per association
0: recbuf space is per socket 0: rcvbuf space is per socket
Default: 0 Default: 0
......
...@@ -642,12 +642,13 @@ out the following operations: ...@@ -642,12 +642,13 @@ out the following operations:
* During system suspend it calls pm_runtime_get_noresume() and * During system suspend it calls pm_runtime_get_noresume() and
pm_runtime_barrier() for every device right before executing the pm_runtime_barrier() for every device right before executing the
subsystem-level .suspend() callback for it. In addition to that it calls subsystem-level .suspend() callback for it. In addition to that it calls
pm_runtime_disable() for every device right after executing the __pm_runtime_disable() with 'false' as the second argument for every device
subsystem-level .suspend() callback for it. right before executing the subsystem-level .suspend_late() callback for it.
* During system resume it calls pm_runtime_enable() and pm_runtime_put_sync() * During system resume it calls pm_runtime_enable() and pm_runtime_put_sync()
for every device right before and right after executing the subsystem-level for every device right after executing the subsystem-level .resume_early()
.resume() callback for it, respectively. callback and right after executing the subsystem-level .resume() callback
for it, respectively.
7. Generic subsystem callbacks 7. Generic subsystem callbacks
......
...@@ -236,7 +236,7 @@ static int rpmsg_sample_probe(struct rpmsg_channel *rpdev) ...@@ -236,7 +236,7 @@ static int rpmsg_sample_probe(struct rpmsg_channel *rpdev)
return 0; return 0;
} }
static void __devexit rpmsg_sample_remove(struct rpmsg_channel *rpdev) static void rpmsg_sample_remove(struct rpmsg_channel *rpdev)
{ {
dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n"); dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n");
} }
...@@ -253,7 +253,7 @@ static struct rpmsg_driver rpmsg_sample_client = { ...@@ -253,7 +253,7 @@ static struct rpmsg_driver rpmsg_sample_client = {
.id_table = rpmsg_driver_sample_id_table, .id_table = rpmsg_driver_sample_id_table,
.probe = rpmsg_sample_probe, .probe = rpmsg_sample_probe,
.callback = rpmsg_sample_cb, .callback = rpmsg_sample_cb,
.remove = __devexit_p(rpmsg_sample_remove), .remove = rpmsg_sample_remove,
}; };
static int __init init(void) static int __init init(void)
......
...@@ -345,7 +345,7 @@ SPI protocol drivers somewhat resemble platform device drivers: ...@@ -345,7 +345,7 @@ SPI protocol drivers somewhat resemble platform device drivers:
}, },
.probe = CHIP_probe, .probe = CHIP_probe,
.remove = __devexit_p(CHIP_remove), .remove = CHIP_remove,
.suspend = CHIP_suspend, .suspend = CHIP_suspend,
.resume = CHIP_resume, .resume = CHIP_resume,
}; };
...@@ -355,7 +355,7 @@ device whose board_info gave a modalias of "CHIP". Your probe() code ...@@ -355,7 +355,7 @@ device whose board_info gave a modalias of "CHIP". Your probe() code
might look like this unless you're creating a device which is managing might look like this unless you're creating a device which is managing
a bus (appearing under /sys/class/spi_master). a bus (appearing under /sys/class/spi_master).
static int __devinit CHIP_probe(struct spi_device *spi) static int CHIP_probe(struct spi_device *spi)
{ {
struct CHIP *chip; struct CHIP *chip;
struct CHIP_platform_data *pdata; struct CHIP_platform_data *pdata;
......
...@@ -38,6 +38,7 @@ show up in /proc/sys/kernel: ...@@ -38,6 +38,7 @@ show up in /proc/sys/kernel:
- l2cr [ PPC only ] - l2cr [ PPC only ]
- modprobe ==> Documentation/debugging-modules.txt - modprobe ==> Documentation/debugging-modules.txt
- modules_disabled - modules_disabled
- msg_next_id [ sysv ipc ]
- msgmax - msgmax
- msgmnb - msgmnb
- msgmni - msgmni
...@@ -62,7 +63,9 @@ show up in /proc/sys/kernel: ...@@ -62,7 +63,9 @@ show up in /proc/sys/kernel:
- rtsig-max - rtsig-max
- rtsig-nr - rtsig-nr
- sem - sem
- sem_next_id [ sysv ipc ]
- sg-big-buff [ generic SCSI device (sg) ] - sg-big-buff [ generic SCSI device (sg) ]
- shm_next_id [ sysv ipc ]
- shm_rmid_forced - shm_rmid_forced
- shmall - shmall
- shmmax [ sysv ipc ] - shmmax [ sysv ipc ]
...@@ -320,6 +323,22 @@ to false. ...@@ -320,6 +323,22 @@ to false.
============================================================== ==============================================================
msg_next_id, sem_next_id, and shm_next_id:
These three toggles allows to specify desired id for next allocated IPC
object: message, semaphore or shared memory respectively.
By default they are equal to -1, which means generic allocation logic.
Possible values to set are in range {0..INT_MAX}.
Notes:
1) kernel doesn't guarantee, that new object will have desired id. So,
it's up to userspace, how to handle an object with "wrong" id.
2) Toggle with non-default value will be set back to -1 by kernel after
successful IPC object allocation.
==============================================================
nmi_watchdog: nmi_watchdog:
Enables/Disables the NMI watchdog on x86 systems. When the value is Enables/Disables the NMI watchdog on x86 systems. When the value is
...@@ -542,6 +561,19 @@ are doing anyway :) ...@@ -542,6 +561,19 @@ are doing anyway :)
============================================================== ==============================================================
shmall:
This parameter sets the total amount of shared memory pages that
can be used system wide. Hence, SHMALL should always be at least
ceil(shmmax/PAGE_SIZE).
If you are not sure what the default PAGE_SIZE is on your Linux
system, you can run the following command:
# getconf PAGE_SIZE
==============================================================
shmmax: shmmax:
This value can be used to query and set the run time limit This value can be used to query and set the run time limit
......
...@@ -174,8 +174,7 @@ The recommended approach is as follows: ...@@ -174,8 +174,7 @@ The recommended approach is as follows:
static atomic_t drv_instance = ATOMIC_INIT(0); static atomic_t drv_instance = ATOMIC_INIT(0);
static int __devinit drv_probe(struct pci_dev *pdev, static int drv_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
const struct pci_device_id *pci_id)
{ {
... ...
state->instance = atomic_inc_return(&drv_instance) - 1; state->instance = atomic_inc_return(&drv_instance) - 1;
......
...@@ -182,8 +182,7 @@ int iterate(void *p) ...@@ -182,8 +182,7 @@ int iterate(void *p)
static atomic_t drv_instance = ATOMIC_INIT(0); static atomic_t drv_instance = ATOMIC_INIT(0);
static int __devinit drv_probe(struct pci_dev *pdev, static int drv_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
const struct pci_device_id *pci_id)
{ {
... ...
state->instance = atomic_inc_return(&drv_instance) - 1; state->instance = atomic_inc_return(&drv_instance) - 1;
......
此差异已折叠。
VERSION = 3 VERSION = 3
PATCHLEVEL = 8 PATCHLEVEL = 8
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc2 EXTRAVERSION = -rc3
NAME = Terrified Chipmunk NAME = Terrified Chipmunk
# *DOCUMENTATION* # *DOCUMENTATION*
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#ifndef _ASM_AXP_PARPORT_H #ifndef _ASM_AXP_PARPORT_H
#define _ASM_AXP_PARPORT_H 1 #define _ASM_AXP_PARPORT_H 1
static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma); static int parport_pc_find_isa_ports (int autoirq, int autodma);
static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) static int parport_pc_find_nonpci_ports (int autoirq, int autodma)
{ {
return parport_pc_find_isa_ports (autoirq, autodma); return parport_pc_find_isa_ports (autoirq, autodma);
} }
......
...@@ -59,13 +59,13 @@ struct pci_controller *pci_isa_hose; ...@@ -59,13 +59,13 @@ struct pci_controller *pci_isa_hose;
* Quirks. * Quirks.
*/ */
static void __devinit quirk_isa_bridge(struct pci_dev *dev) static void quirk_isa_bridge(struct pci_dev *dev)
{ {
dev->class = PCI_CLASS_BRIDGE_ISA << 8; dev->class = PCI_CLASS_BRIDGE_ISA << 8;
} }
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_isa_bridge); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_isa_bridge);
static void __devinit quirk_cypress(struct pci_dev *dev) static void quirk_cypress(struct pci_dev *dev)
{ {
/* The Notorious Cy82C693 chip. */ /* The Notorious Cy82C693 chip. */
...@@ -104,7 +104,7 @@ static void __devinit quirk_cypress(struct pci_dev *dev) ...@@ -104,7 +104,7 @@ static void __devinit quirk_cypress(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, quirk_cypress); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, quirk_cypress);
/* Called for each device after PCI setup is done. */ /* Called for each device after PCI setup is done. */
static void __devinit pcibios_fixup_final(struct pci_dev *dev) static void pcibios_fixup_final(struct pci_dev *dev)
{ {
unsigned int class = dev->class >> 8; unsigned int class = dev->class >> 8;
...@@ -198,8 +198,7 @@ subsys_initcall(pcibios_init); ...@@ -198,8 +198,7 @@ subsys_initcall(pcibios_init);
#ifdef ALPHA_RESTORE_SRM_SETUP #ifdef ALPHA_RESTORE_SRM_SETUP
static struct pdev_srm_saved_conf *srm_saved_configs; static struct pdev_srm_saved_conf *srm_saved_configs;
void __devinit void pdev_save_srm_config(struct pci_dev *dev)
pdev_save_srm_config(struct pci_dev *dev)
{ {
struct pdev_srm_saved_conf *tmp; struct pdev_srm_saved_conf *tmp;
static int printed = 0; static int printed = 0;
...@@ -241,8 +240,7 @@ pci_restore_srm_config(void) ...@@ -241,8 +240,7 @@ pci_restore_srm_config(void)
} }
#endif #endif
void __devinit void pcibios_fixup_bus(struct pci_bus *bus)
pcibios_fixup_bus(struct pci_bus *bus)
{ {
struct pci_dev *dev = bus->self; struct pci_dev *dev = bus->self;
......
...@@ -68,7 +68,7 @@ enum ipi_message_type { ...@@ -68,7 +68,7 @@ enum ipi_message_type {
}; };
/* Set to a secondary's cpuid when it comes online. */ /* Set to a secondary's cpuid when it comes online. */
static int smp_secondary_alive __devinitdata = 0; static int smp_secondary_alive = 0;
int smp_num_probed; /* Internal processor count */ int smp_num_probed; /* Internal processor count */
int smp_num_cpus = 1; /* Number that came online. */ int smp_num_cpus = 1; /* Number that came online. */
...@@ -172,7 +172,7 @@ smp_callin(void) ...@@ -172,7 +172,7 @@ smp_callin(void)
} }
/* Wait until hwrpb->txrdy is clear for cpu. Return -1 on timeout. */ /* Wait until hwrpb->txrdy is clear for cpu. Return -1 on timeout. */
static int __devinit static int
wait_for_txrdy (unsigned long cpumask) wait_for_txrdy (unsigned long cpumask)
{ {
unsigned long timeout; unsigned long timeout;
...@@ -468,7 +468,7 @@ smp_prepare_cpus(unsigned int max_cpus) ...@@ -468,7 +468,7 @@ smp_prepare_cpus(unsigned int max_cpus)
smp_num_cpus = smp_num_probed; smp_num_cpus = smp_num_probed;
} }
void __devinit void
smp_prepare_boot_cpu(void) smp_prepare_boot_cpu(void)
{ {
} }
......
...@@ -303,7 +303,7 @@ titan_late_init(void) ...@@ -303,7 +303,7 @@ titan_late_init(void)
} }
static int __devinit static int
titan_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) titan_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{ {
u8 intline; u8 intline;
......
...@@ -371,7 +371,6 @@ config ARCH_CNS3XXX ...@@ -371,7 +371,6 @@ config ARCH_CNS3XXX
config ARCH_CLPS711X config ARCH_CLPS711X
bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARCH_USES_GETTIMEOFFSET
select AUTO_ZRELADDR select AUTO_ZRELADDR
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select COMMON_CLK select COMMON_CLK
...@@ -1230,6 +1229,7 @@ config ARM_ERRATA_430973 ...@@ -1230,6 +1229,7 @@ config ARM_ERRATA_430973
config ARM_ERRATA_458693 config ARM_ERRATA_458693
bool "ARM errata: Processor deadlock when a false hazard is created" bool "ARM errata: Processor deadlock when a false hazard is created"
depends on CPU_V7 depends on CPU_V7
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 458693 Cortex-A8 (r2p0) This option enables the workaround for the 458693 Cortex-A8 (r2p0)
erratum. For very specific sequences of memory operations, it is erratum. For very specific sequences of memory operations, it is
...@@ -1243,6 +1243,7 @@ config ARM_ERRATA_458693 ...@@ -1243,6 +1243,7 @@ config ARM_ERRATA_458693
config ARM_ERRATA_460075 config ARM_ERRATA_460075
bool "ARM errata: Data written to the L2 cache can be overwritten with stale data" bool "ARM errata: Data written to the L2 cache can be overwritten with stale data"
depends on CPU_V7 depends on CPU_V7
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 460075 Cortex-A8 (r2p0) This option enables the workaround for the 460075 Cortex-A8 (r2p0)
erratum. Any asynchronous access to the L2 cache may encounter a erratum. Any asynchronous access to the L2 cache may encounter a
...@@ -1255,6 +1256,7 @@ config ARM_ERRATA_460075 ...@@ -1255,6 +1256,7 @@ config ARM_ERRATA_460075
config ARM_ERRATA_742230 config ARM_ERRATA_742230
bool "ARM errata: DMB operation may be faulty" bool "ARM errata: DMB operation may be faulty"
depends on CPU_V7 && SMP depends on CPU_V7 && SMP
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 742230 Cortex-A9 This option enables the workaround for the 742230 Cortex-A9
(r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction
...@@ -1267,6 +1269,7 @@ config ARM_ERRATA_742230 ...@@ -1267,6 +1269,7 @@ config ARM_ERRATA_742230
config ARM_ERRATA_742231 config ARM_ERRATA_742231
bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption" bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption"
depends on CPU_V7 && SMP depends on CPU_V7 && SMP
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 742231 Cortex-A9 This option enables the workaround for the 742231 Cortex-A9
(r2p0..r2p2) erratum. Under certain conditions, specific to the (r2p0..r2p2) erratum. Under certain conditions, specific to the
...@@ -1317,6 +1320,7 @@ config PL310_ERRATA_727915 ...@@ -1317,6 +1320,7 @@ config PL310_ERRATA_727915
config ARM_ERRATA_743622 config ARM_ERRATA_743622
bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption" bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption"
depends on CPU_V7 depends on CPU_V7
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 743622 Cortex-A9 This option enables the workaround for the 743622 Cortex-A9
(r2p*) erratum. Under very rare conditions, a faulty (r2p*) erratum. Under very rare conditions, a faulty
...@@ -1330,6 +1334,7 @@ config ARM_ERRATA_743622 ...@@ -1330,6 +1334,7 @@ config ARM_ERRATA_743622
config ARM_ERRATA_751472 config ARM_ERRATA_751472
bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation" bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
depends on CPU_V7 depends on CPU_V7
depends on !ARCH_MULTIPLATFORM
help help
This option enables the workaround for the 751472 Cortex-A9 (prior This option enables the workaround for the 751472 Cortex-A9 (prior
to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
......
...@@ -50,17 +50,19 @@ ...@@ -50,17 +50,19 @@
ranges; ranges;
serial@d0012000 { serial@d0012000 {
compatible = "ns16550"; compatible = "snps,dw-apb-uart";
reg = <0xd0012000 0x100>; reg = <0xd0012000 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <41>; interrupts = <41>;
reg-io-width = <4>;
status = "disabled"; status = "disabled";
}; };
serial@d0012100 { serial@d0012100 {
compatible = "ns16550"; compatible = "snps,dw-apb-uart";
reg = <0xd0012100 0x100>; reg = <0xd0012100 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <42>; interrupts = <42>;
reg-io-width = <4>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -34,7 +34,14 @@ ...@@ -34,7 +34,14 @@
reg = <0>; reg = <0>;
clocks = <&cpuclk 0>; clocks = <&cpuclk 0>;
}; };
}
cpu@1 {
device_type = "cpu";
compatible = "marvell,sheeva-v7";
reg = <1>;
clocks = <&cpuclk 1>;
};
};
soc { soc {
pinctrl { pinctrl {
......
...@@ -85,5 +85,13 @@ ...@@ -85,5 +85,13 @@
#interrupts-cells = <2>; #interrupts-cells = <2>;
interrupts = <24>; interrupts = <24>;
}; };
ethernet@d0034000 {
compatible = "marvell,armada-370-neta";
reg = <0xd0034000 0x2500>;
interrupts = <14>;
clocks = <&gateclk 1>;
status = "disabled";
};
}; };
}; };
...@@ -100,5 +100,13 @@ ...@@ -100,5 +100,13 @@
#interrupts-cells = <2>; #interrupts-cells = <2>;
interrupts = <24>; interrupts = <24>;
}; };
ethernet@d0034000 {
compatible = "marvell,armada-370-neta";
reg = <0xd0034000 0x2500>;
interrupts = <14>;
clocks = <&gateclk 1>;
status = "disabled";
};
}; };
}; };
...@@ -42,17 +42,19 @@ ...@@ -42,17 +42,19 @@
soc { soc {
serial@d0012200 { serial@d0012200 {
compatible = "ns16550"; compatible = "snps,dw-apb-uart";
reg = <0xd0012200 0x100>; reg = <0xd0012200 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <43>; interrupts = <43>;
reg-io-width = <4>;
status = "disabled"; status = "disabled";
}; };
serial@d0012300 { serial@d0012300 {
compatible = "ns16550"; compatible = "snps,dw-apb-uart";
reg = <0xd0012300 0x100>; reg = <0xd0012300 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <44>; interrupts = <44>;
reg-io-width = <4>;
status = "disabled"; status = "disabled";
}; };
...@@ -93,14 +95,6 @@ ...@@ -93,14 +95,6 @@
status = "disabled"; status = "disabled";
}; };
ethernet@d0034000 {
compatible = "marvell,armada-370-neta";
reg = <0xd0034000 0x2500>;
interrupts = <14>;
clocks = <&gateclk 1>;
status = "disabled";
};
xor@d0060900 { xor@d0060900 {
compatible = "marvell,orion-xor"; compatible = "marvell,orion-xor";
reg = <0xd0060900 0x100 reg = <0xd0060900 0x100
......
...@@ -170,7 +170,9 @@ ...@@ -170,7 +170,9 @@
gpio-bank = <8>; gpio-bank = <8>;
}; };
pinctrl { pinctrl@80157000 {
// This is actually the PRCMU base address
reg = <0x80157000 0x2000>;
compatible = "stericsson,nmk_pinctrl"; compatible = "stericsson,nmk_pinctrl";
}; };
......
...@@ -117,6 +117,7 @@ ...@@ -117,6 +117,7 @@
pinctrl: pinctrl@d0200 { pinctrl: pinctrl@d0200 {
compatible = "marvell,dove-pinctrl"; compatible = "marvell,dove-pinctrl";
reg = <0xd0200 0x10>; reg = <0xd0200 0x10>;
clocks = <&gate_clk 22>;
}; };
spi0: spi@10600 { spi0: spi@10600 {
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
cpu@0 { cpu@0 {
compatible = "arm,cortex-a15"; compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <0>; reg = <0>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
...@@ -39,6 +40,7 @@ ...@@ -39,6 +40,7 @@
cpu@1 { cpu@1 {
compatible = "arm,cortex-a15"; compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <1>; reg = <1>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
...@@ -46,6 +48,7 @@ ...@@ -46,6 +48,7 @@
cpu@2 { cpu@2 {
compatible = "arm,cortex-a15"; compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <2>; reg = <2>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
...@@ -53,6 +56,7 @@ ...@@ -53,6 +56,7 @@
cpu@3 { cpu@3 {
compatible = "arm,cortex-a15"; compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <3>; reg = <3>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
}; };
chosen { chosen {
bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc"; bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
}; };
sdhci@12530000 { sdhci@12530000 {
......
...@@ -574,7 +574,7 @@ ...@@ -574,7 +574,7 @@
hdmi { hdmi {
compatible = "samsung,exynos5-hdmi"; compatible = "samsung,exynos5-hdmi";
reg = <0x14530000 0x100000>; reg = <0x14530000 0x70000>;
interrupts = <0 95 0>; interrupts = <0 95 0>;
}; };
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
}; };
chosen { chosen {
bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC2,115200 init=/linuxrc"; bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC0,115200 init=/linuxrc";
}; };
spi { spi {
......
...@@ -30,33 +30,37 @@ ...@@ -30,33 +30,37 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
cpu@0 { cpu@900 {
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <0>; device_type = "cpu";
reg = <0x900>;
next-level-cache = <&L2>; next-level-cache = <&L2>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
}; };
cpu@1 { cpu@901 {
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <1>; device_type = "cpu";
reg = <0x901>;
next-level-cache = <&L2>; next-level-cache = <&L2>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
}; };
cpu@2 { cpu@902 {
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <2>; device_type = "cpu";
reg = <0x902>;
next-level-cache = <&L2>; next-level-cache = <&L2>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
}; };
cpu@3 { cpu@903 {
compatible = "arm,cortex-a9"; compatible = "arm,cortex-a9";
reg = <3>; device_type = "cpu";
reg = <0x903>;
next-level-cache = <&L2>; next-level-cache = <&L2>;
clocks = <&a9pll>; clocks = <&a9pll>;
clock-names = "cpu"; clock-names = "cpu";
......
...@@ -39,17 +39,17 @@ ...@@ -39,17 +39,17 @@
hog_pins_a: hog@0 { hog_pins_a: hog@0 {
reg = <0>; reg = <0>;
fsl,pinmux-ids = < fsl,pinmux-ids = <
0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */ 0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */
>; >;
fsl,drive-strength = <0>; fsl,drive-strength = <0>;
fsl,voltage = <1>; fsl,voltage = <1>;
fsl,pull-up = <0>; fsl,pull-up = <0>;
}; };
led_pin_gpio0_17: led_gpio0_17@0 { led_pin_gpio2_1: led_gpio2_1@0 {
reg = <0>; reg = <0>;
fsl,pinmux-ids = < fsl,pinmux-ids = <
0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */ 0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */
>; >;
fsl,drive-strength = <0>; fsl,drive-strength = <0>;
fsl,voltage = <1>; fsl,voltage = <1>;
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
leds { leds {
compatible = "gpio-leds"; compatible = "gpio-leds";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&led_pin_gpio0_17>; pinctrl-0 = <&led_pin_gpio2_1>;
user { user {
label = "green"; label = "green";
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
/ { / {
model = "Buglabs i.MX31 Bug 1.x"; model = "Buglabs i.MX31 Bug 1.x";
compatible = "fsl,imx31-bug", "fsl,imx31"; compatible = "buglabs,imx31-bug", "fsl,imx31";
memory { memory {
reg = <0x80000000 0x8000000>; /* 128M */ reg = <0x80000000 0x8000000>; /* 128M */
......
...@@ -492,7 +492,7 @@ ...@@ -492,7 +492,7 @@
compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan"; compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
reg = <0x53fcc000 0x4000>; reg = <0x53fcc000 0x4000>;
interrupts = <83>; interrupts = <83>;
clocks = <&clks 158>, <&clks 157>; clocks = <&clks 87>, <&clks 86>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
status = "disabled"; status = "disabled";
}; };
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#size-cells = <0>; #size-cells = <0>;
interrupts = <32>; interrupts = <32>;
clock-frequency = <100000>; clock-frequency = <100000>;
clocks = <&gate_clk 7>;
status = "disabled"; status = "disabled";
}; };
}; };
......
...@@ -82,4 +82,21 @@ ...@@ -82,4 +82,21 @@
gpios = <&gpio1 16 1>; gpios = <&gpio1 16 1>;
}; };
}; };
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
sata0_power: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "SATA0 Power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
regulator-always-on;
regulator-boot-on;
gpio = <&gpio1 4 0>;
};
};
}; };
...@@ -144,6 +144,7 @@ ...@@ -144,6 +144,7 @@
compatible = "marvell,orion-ehci"; compatible = "marvell,orion-ehci";
reg = <0x50000 0x1000>; reg = <0x50000 0x1000>;
interrupts = <19>; interrupts = <19>;
clocks = <&gate_clk 3>;
status = "okay"; status = "okay";
}; };
......
config ARM_GIC
bool
select IRQ_DOMAIN
select MULTI_IRQ_HANDLER
config GIC_NON_BANKED
bool
config ARM_VIC
bool
select IRQ_DOMAIN
select MULTI_IRQ_HANDLER
config ARM_VIC_NR
int
default 4 if ARCH_S5PV210
default 3 if ARCH_S5PC100
default 2
depends on ARM_VIC
help
The maximum number of VICs available in the system, for
power management.
config ICST config ICST
bool bool
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
# Makefile for the linux kernel. # Makefile for the linux kernel.
# #
obj-$(CONFIG_ARM_GIC) += gic.o
obj-$(CONFIG_ARM_VIC) += vic.o
obj-$(CONFIG_ICST) += icst.o obj-$(CONFIG_ICST) += icst.o
obj-$(CONFIG_SA1111) += sa1111.o obj-$(CONFIG_SA1111) += sa1111.o
obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o obj-$(CONFIG_PCI_HOST_VIA82C505) += via82c505.o
......
...@@ -686,8 +686,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, ...@@ -686,8 +686,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
* %-EINVAL no platform data passed * %-EINVAL no platform data passed
* %0 successful. * %0 successful.
*/ */
static int __devinit static int __sa1111_probe(struct device *me, struct resource *mem, int irq)
__sa1111_probe(struct device *me, struct resource *mem, int irq)
{ {
struct sa1111_platform_data *pd = me->platform_data; struct sa1111_platform_data *pd = me->platform_data;
struct sa1111 *sachip; struct sa1111 *sachip;
...@@ -1011,7 +1010,7 @@ static int sa1111_resume(struct platform_device *dev) ...@@ -1011,7 +1010,7 @@ static int sa1111_resume(struct platform_device *dev)
#define sa1111_resume NULL #define sa1111_resume NULL
#endif #endif
static int __devinit sa1111_probe(struct platform_device *pdev) static int sa1111_probe(struct platform_device *pdev)
{ {
struct resource *mem; struct resource *mem;
int irq; int irq;
......
...@@ -176,7 +176,7 @@ static int scoop_resume(struct platform_device *dev) ...@@ -176,7 +176,7 @@ static int scoop_resume(struct platform_device *dev)
#define scoop_resume NULL #define scoop_resume NULL
#endif #endif
static int __devinit scoop_probe(struct platform_device *pdev) static int scoop_probe(struct platform_device *pdev)
{ {
struct scoop_dev *devptr; struct scoop_dev *devptr;
struct scoop_config *inf; struct scoop_config *inf;
...@@ -243,7 +243,7 @@ static int __devinit scoop_probe(struct platform_device *pdev) ...@@ -243,7 +243,7 @@ static int __devinit scoop_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int __devexit scoop_remove(struct platform_device *pdev) static int scoop_remove(struct platform_device *pdev)
{ {
struct scoop_dev *sdev = platform_get_drvdata(pdev); struct scoop_dev *sdev = platform_get_drvdata(pdev);
int ret; int ret;
...@@ -268,7 +268,7 @@ static int __devexit scoop_remove(struct platform_device *pdev) ...@@ -268,7 +268,7 @@ static int __devexit scoop_remove(struct platform_device *pdev)
static struct platform_driver scoop_driver = { static struct platform_driver scoop_driver = {
.probe = scoop_probe, .probe = scoop_probe,
.remove = __devexit_p(scoop_remove), .remove = scoop_remove,
.suspend = scoop_suspend, .suspend = scoop_suspend,
.resume = scoop_resume, .resume = scoop_resume,
.driver = { .driver = {
......
...@@ -33,9 +33,7 @@ CONFIG_MVNETA=y ...@@ -33,9 +33,7 @@ CONFIG_MVNETA=y
CONFIG_MARVELL_PHY=y CONFIG_MARVELL_PHY=y
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_8250_DW=y
CONFIG_I2C=y
CONFIG_I2C_MV64XXX=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
# CONFIG_USB_SUPPORT is not set # CONFIG_USB_SUPPORT is not set
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
struct tag; struct tag;
struct meminfo; struct meminfo;
struct sys_timer;
struct pt_regs; struct pt_regs;
struct smp_operations; struct smp_operations;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -48,7 +47,7 @@ struct machine_desc { ...@@ -48,7 +47,7 @@ struct machine_desc {
void (*map_io)(void);/* IO mapping function */ void (*map_io)(void);/* IO mapping function */
void (*init_early)(void); void (*init_early)(void);
void (*init_irq)(void); void (*init_irq)(void);
struct sys_timer *timer; /* system tick timer */ void (*init_time)(void);
void (*init_machine)(void); void (*init_machine)(void);
void (*init_late)(void); void (*init_late)(void);
#ifdef CONFIG_MULTI_IRQ_HANDLER #ifdef CONFIG_MULTI_IRQ_HANDLER
......
...@@ -22,6 +22,7 @@ extern int show_fiq_list(struct seq_file *, int); ...@@ -22,6 +22,7 @@ extern int show_fiq_list(struct seq_file *, int);
#ifdef CONFIG_MULTI_IRQ_HANDLER #ifdef CONFIG_MULTI_IRQ_HANDLER
extern void (*handle_arch_irq)(struct pt_regs *); extern void (*handle_arch_irq)(struct pt_regs *);
extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
#endif #endif
/* /*
......
...@@ -10,36 +10,6 @@ ...@@ -10,36 +10,6 @@
#ifndef __ASM_ARM_MACH_TIME_H #ifndef __ASM_ARM_MACH_TIME_H
#define __ASM_ARM_MACH_TIME_H #define __ASM_ARM_MACH_TIME_H
/*
* This is our kernel timer structure.
*
* - init
* Initialise the kernels jiffy timer source, claim interrupt
* using setup_irq. This is called early on during initialisation
* while interrupts are still disabled on the local CPU.
* - suspend
* Suspend the kernel jiffy timer source, if necessary. This
* is called with interrupts disabled, after all normal devices
* have been suspended. If no action is required, set this to
* NULL.
* - resume
* Resume the kernel jiffy timer source, if necessary. This
* is called with interrupts disabled before any normal devices
* are resumed. If no action is required, set this to NULL.
* - offset
* Return the timer offset in microseconds since the last timer
* interrupt. Note: this must take account of any unprocessed
* timer interrupt which may be pending.
*/
struct sys_timer {
void (*init)(void);
void (*suspend)(void);
void (*resume)(void);
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
unsigned long (*offset)(void);
#endif
};
extern void timer_tick(void); extern void timer_tick(void);
struct timespec; struct timespec;
......
...@@ -78,7 +78,7 @@ void pcibios_report_status(u_int status_mask, int warn) ...@@ -78,7 +78,7 @@ void pcibios_report_status(u_int status_mask, int warn)
* Bug 3 is responsible for the sound DMA grinding to a halt. We now * Bug 3 is responsible for the sound DMA grinding to a halt. We now
* live with bug 2. * live with bug 2.
*/ */
static void __devinit pci_fixup_83c553(struct pci_dev *dev) static void pci_fixup_83c553(struct pci_dev *dev)
{ {
/* /*
* Set memory region to start at address 0, and enable IO * Set memory region to start at address 0, and enable IO
...@@ -130,7 +130,7 @@ static void __devinit pci_fixup_83c553(struct pci_dev *dev) ...@@ -130,7 +130,7 @@ static void __devinit pci_fixup_83c553(struct pci_dev *dev)
} }
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, pci_fixup_83c553); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, pci_fixup_83c553);
static void __devinit pci_fixup_unassign(struct pci_dev *dev) static void pci_fixup_unassign(struct pci_dev *dev)
{ {
dev->resource[0].end -= dev->resource[0].start; dev->resource[0].end -= dev->resource[0].start;
dev->resource[0].start = 0; dev->resource[0].start = 0;
...@@ -142,7 +142,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940F, ...@@ -142,7 +142,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_89C940F,
* if it is the host bridge by marking it as such. These resources are of * if it is the host bridge by marking it as such. These resources are of
* no consequence to the PCI layer (they are handled elsewhere). * no consequence to the PCI layer (they are handled elsewhere).
*/ */
static void __devinit pci_fixup_dec21285(struct pci_dev *dev) static void pci_fixup_dec21285(struct pci_dev *dev)
{ {
int i; int i;
...@@ -161,7 +161,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_d ...@@ -161,7 +161,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, pci_fixup_d
/* /*
* PCI IDE controllers use non-standard I/O port decoding, respect it. * PCI IDE controllers use non-standard I/O port decoding, respect it.
*/ */
static void __devinit pci_fixup_ide_bases(struct pci_dev *dev) static void pci_fixup_ide_bases(struct pci_dev *dev)
{ {
struct resource *r; struct resource *r;
int i; int i;
...@@ -182,7 +182,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); ...@@ -182,7 +182,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases);
/* /*
* Put the DEC21142 to sleep * Put the DEC21142 to sleep
*/ */
static void __devinit pci_fixup_dec21142(struct pci_dev *dev) static void pci_fixup_dec21142(struct pci_dev *dev)
{ {
pci_write_config_dword(dev, 0x40, 0x80000000); pci_write_config_dword(dev, 0x40, 0x80000000);
} }
...@@ -204,7 +204,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142, pci_fixup_d ...@@ -204,7 +204,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21142, pci_fixup_d
* functional. However, The CY82C693U _does not work_ in bus * functional. However, The CY82C693U _does not work_ in bus
* master mode without locking the PCI bus solid. * master mode without locking the PCI bus solid.
*/ */
static void __devinit pci_fixup_cy82c693(struct pci_dev *dev) static void pci_fixup_cy82c693(struct pci_dev *dev)
{ {
if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) { if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
u32 base0, base1; u32 base0, base1;
...@@ -254,7 +254,7 @@ static void __devinit pci_fixup_cy82c693(struct pci_dev *dev) ...@@ -254,7 +254,7 @@ static void __devinit pci_fixup_cy82c693(struct pci_dev *dev)
} }
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, pci_fixup_cy82c693); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, pci_fixup_cy82c693);
static void __devinit pci_fixup_it8152(struct pci_dev *dev) static void pci_fixup_it8152(struct pci_dev *dev)
{ {
int i; int i;
/* fixup for ITE 8152 devices */ /* fixup for ITE 8152 devices */
...@@ -361,9 +361,7 @@ void pcibios_fixup_bus(struct pci_bus *bus) ...@@ -361,9 +361,7 @@ void pcibios_fixup_bus(struct pci_bus *bus)
printk(KERN_INFO "PCI: bus%d: Fast back to back transfers %sabled\n", printk(KERN_INFO "PCI: bus%d: Fast back to back transfers %sabled\n",
bus->number, (features & PCI_COMMAND_FAST_BACK) ? "en" : "dis"); bus->number, (features & PCI_COMMAND_FAST_BACK) ? "en" : "dis");
} }
#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pcibios_fixup_bus); EXPORT_SYMBOL(pcibios_fixup_bus);
#endif
/* /*
* Swizzle the device pin each time we cross a bridge. If a platform does * Swizzle the device pin each time we cross a bridge. If a platform does
...@@ -380,7 +378,7 @@ EXPORT_SYMBOL(pcibios_fixup_bus); ...@@ -380,7 +378,7 @@ EXPORT_SYMBOL(pcibios_fixup_bus);
* PCI standard swizzle is implemented on plug-in cards and Cardbus based * PCI standard swizzle is implemented on plug-in cards and Cardbus based
* PCI extenders, so it can not be ignored. * PCI extenders, so it can not be ignored.
*/ */
static u8 __devinit pcibios_swizzle(struct pci_dev *dev, u8 *pin) static u8 pcibios_swizzle(struct pci_dev *dev, u8 *pin)
{ {
struct pci_sys_data *sys = dev->sysdata; struct pci_sys_data *sys = dev->sysdata;
int slot, oldpin = *pin; int slot, oldpin = *pin;
......
...@@ -339,7 +339,7 @@ static struct miscdevice etb_miscdev = { ...@@ -339,7 +339,7 @@ static struct miscdevice etb_miscdev = {
.fops = &etb_fops, .fops = &etb_fops,
}; };
static int __devinit etb_probe(struct amba_device *dev, const struct amba_id *id) static int etb_probe(struct amba_device *dev, const struct amba_id *id)
{ {
struct tracectx *t = &tracer; struct tracectx *t = &tracer;
int ret = 0; int ret = 0;
...@@ -531,7 +531,7 @@ static ssize_t trace_mode_store(struct kobject *kobj, ...@@ -531,7 +531,7 @@ static ssize_t trace_mode_store(struct kobject *kobj,
static struct kobj_attribute trace_mode_attr = static struct kobj_attribute trace_mode_attr =
__ATTR(trace_mode, 0644, trace_mode_show, trace_mode_store); __ATTR(trace_mode, 0644, trace_mode_show, trace_mode_store);
static int __devinit etm_probe(struct amba_device *dev, const struct amba_id *id) static int etm_probe(struct amba_device *dev, const struct amba_id *id)
{ {
struct tracectx *t = &tracer; struct tracectx *t = &tracer;
int ret = 0; int ret = 0;
......
...@@ -117,6 +117,16 @@ void __init init_IRQ(void) ...@@ -117,6 +117,16 @@ void __init init_IRQ(void)
machine_desc->init_irq(); machine_desc->init_irq();
} }
#ifdef CONFIG_MULTI_IRQ_HANDLER
void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
{
if (handle_arch_irq)
return;
handle_arch_irq = handle_irq;
}
#endif
#ifdef CONFIG_SPARSE_IRQ #ifdef CONFIG_SPARSE_IRQ
int __init arch_probe_nr_irqs(void) int __init arch_probe_nr_irqs(void)
{ {
......
...@@ -132,7 +132,7 @@ static int cpu_pmu_request_irq(struct arm_pmu *cpu_pmu, irq_handler_t handler) ...@@ -132,7 +132,7 @@ static int cpu_pmu_request_irq(struct arm_pmu *cpu_pmu, irq_handler_t handler)
return 0; return 0;
} }
static void __devinit cpu_pmu_init(struct arm_pmu *cpu_pmu) static void cpu_pmu_init(struct arm_pmu *cpu_pmu)
{ {
int cpu; int cpu;
for_each_possible_cpu(cpu) { for_each_possible_cpu(cpu) {
...@@ -178,7 +178,7 @@ static struct notifier_block __cpuinitdata cpu_pmu_hotplug_notifier = { ...@@ -178,7 +178,7 @@ static struct notifier_block __cpuinitdata cpu_pmu_hotplug_notifier = {
/* /*
* PMU platform driver and devicetree bindings. * PMU platform driver and devicetree bindings.
*/ */
static struct of_device_id __devinitdata cpu_pmu_of_device_ids[] = { static struct of_device_id cpu_pmu_of_device_ids[] = {
{.compatible = "arm,cortex-a15-pmu", .data = armv7_a15_pmu_init}, {.compatible = "arm,cortex-a15-pmu", .data = armv7_a15_pmu_init},
{.compatible = "arm,cortex-a9-pmu", .data = armv7_a9_pmu_init}, {.compatible = "arm,cortex-a9-pmu", .data = armv7_a9_pmu_init},
{.compatible = "arm,cortex-a8-pmu", .data = armv7_a8_pmu_init}, {.compatible = "arm,cortex-a8-pmu", .data = armv7_a8_pmu_init},
...@@ -190,7 +190,7 @@ static struct of_device_id __devinitdata cpu_pmu_of_device_ids[] = { ...@@ -190,7 +190,7 @@ static struct of_device_id __devinitdata cpu_pmu_of_device_ids[] = {
{}, {},
}; };
static struct platform_device_id __devinitdata cpu_pmu_plat_device_ids[] = { static struct platform_device_id cpu_pmu_plat_device_ids[] = {
{.name = "arm-pmu"}, {.name = "arm-pmu"},
{}, {},
}; };
...@@ -198,7 +198,7 @@ static struct platform_device_id __devinitdata cpu_pmu_plat_device_ids[] = { ...@@ -198,7 +198,7 @@ static struct platform_device_id __devinitdata cpu_pmu_plat_device_ids[] = {
/* /*
* CPU PMU identification and probing. * CPU PMU identification and probing.
*/ */
static int __devinit probe_current_pmu(struct arm_pmu *pmu) static int probe_current_pmu(struct arm_pmu *pmu)
{ {
int cpu = get_cpu(); int cpu = get_cpu();
unsigned long cpuid = read_cpuid_id(); unsigned long cpuid = read_cpuid_id();
...@@ -252,7 +252,7 @@ static int __devinit probe_current_pmu(struct arm_pmu *pmu) ...@@ -252,7 +252,7 @@ static int __devinit probe_current_pmu(struct arm_pmu *pmu)
return ret; return ret;
} }
static int __devinit cpu_pmu_device_probe(struct platform_device *pdev) static int cpu_pmu_device_probe(struct platform_device *pdev)
{ {
const struct of_device_id *of_id; const struct of_device_id *of_id;
int (*init_fn)(struct arm_pmu *); int (*init_fn)(struct arm_pmu *);
......
...@@ -653,7 +653,7 @@ static int armv6_map_event(struct perf_event *event) ...@@ -653,7 +653,7 @@ static int armv6_map_event(struct perf_event *event)
&armv6_perf_cache_map, 0xFF); &armv6_perf_cache_map, 0xFF);
} }
static int __devinit armv6pmu_init(struct arm_pmu *cpu_pmu) static int armv6pmu_init(struct arm_pmu *cpu_pmu)
{ {
cpu_pmu->name = "v6"; cpu_pmu->name = "v6";
cpu_pmu->handle_irq = armv6pmu_handle_irq; cpu_pmu->handle_irq = armv6pmu_handle_irq;
...@@ -685,7 +685,7 @@ static int armv6mpcore_map_event(struct perf_event *event) ...@@ -685,7 +685,7 @@ static int armv6mpcore_map_event(struct perf_event *event)
&armv6mpcore_perf_cache_map, 0xFF); &armv6mpcore_perf_cache_map, 0xFF);
} }
static int __devinit armv6mpcore_pmu_init(struct arm_pmu *cpu_pmu) static int armv6mpcore_pmu_init(struct arm_pmu *cpu_pmu)
{ {
cpu_pmu->name = "v6mpcore"; cpu_pmu->name = "v6mpcore";
cpu_pmu->handle_irq = armv6pmu_handle_irq; cpu_pmu->handle_irq = armv6pmu_handle_irq;
......
...@@ -1226,7 +1226,7 @@ static void armv7pmu_init(struct arm_pmu *cpu_pmu) ...@@ -1226,7 +1226,7 @@ static void armv7pmu_init(struct arm_pmu *cpu_pmu)
cpu_pmu->max_period = (1LLU << 32) - 1; cpu_pmu->max_period = (1LLU << 32) - 1;
}; };
static u32 __devinit armv7_read_num_pmnc_events(void) static u32 armv7_read_num_pmnc_events(void)
{ {
u32 nb_cnt; u32 nb_cnt;
...@@ -1237,7 +1237,7 @@ static u32 __devinit armv7_read_num_pmnc_events(void) ...@@ -1237,7 +1237,7 @@ static u32 __devinit armv7_read_num_pmnc_events(void)
return nb_cnt + 1; return nb_cnt + 1;
} }
static int __devinit armv7_a8_pmu_init(struct arm_pmu *cpu_pmu) static int armv7_a8_pmu_init(struct arm_pmu *cpu_pmu)
{ {
armv7pmu_init(cpu_pmu); armv7pmu_init(cpu_pmu);
cpu_pmu->name = "ARMv7 Cortex-A8"; cpu_pmu->name = "ARMv7 Cortex-A8";
...@@ -1246,7 +1246,7 @@ static int __devinit armv7_a8_pmu_init(struct arm_pmu *cpu_pmu) ...@@ -1246,7 +1246,7 @@ static int __devinit armv7_a8_pmu_init(struct arm_pmu *cpu_pmu)
return 0; return 0;
} }
static int __devinit armv7_a9_pmu_init(struct arm_pmu *cpu_pmu) static int armv7_a9_pmu_init(struct arm_pmu *cpu_pmu)
{ {
armv7pmu_init(cpu_pmu); armv7pmu_init(cpu_pmu);
cpu_pmu->name = "ARMv7 Cortex-A9"; cpu_pmu->name = "ARMv7 Cortex-A9";
...@@ -1255,7 +1255,7 @@ static int __devinit armv7_a9_pmu_init(struct arm_pmu *cpu_pmu) ...@@ -1255,7 +1255,7 @@ static int __devinit armv7_a9_pmu_init(struct arm_pmu *cpu_pmu)
return 0; return 0;
} }
static int __devinit armv7_a5_pmu_init(struct arm_pmu *cpu_pmu) static int armv7_a5_pmu_init(struct arm_pmu *cpu_pmu)
{ {
armv7pmu_init(cpu_pmu); armv7pmu_init(cpu_pmu);
cpu_pmu->name = "ARMv7 Cortex-A5"; cpu_pmu->name = "ARMv7 Cortex-A5";
...@@ -1264,7 +1264,7 @@ static int __devinit armv7_a5_pmu_init(struct arm_pmu *cpu_pmu) ...@@ -1264,7 +1264,7 @@ static int __devinit armv7_a5_pmu_init(struct arm_pmu *cpu_pmu)
return 0; return 0;
} }
static int __devinit armv7_a15_pmu_init(struct arm_pmu *cpu_pmu) static int armv7_a15_pmu_init(struct arm_pmu *cpu_pmu)
{ {
armv7pmu_init(cpu_pmu); armv7pmu_init(cpu_pmu);
cpu_pmu->name = "ARMv7 Cortex-A15"; cpu_pmu->name = "ARMv7 Cortex-A15";
...@@ -1274,7 +1274,7 @@ static int __devinit armv7_a15_pmu_init(struct arm_pmu *cpu_pmu) ...@@ -1274,7 +1274,7 @@ static int __devinit armv7_a15_pmu_init(struct arm_pmu *cpu_pmu)
return 0; return 0;
} }
static int __devinit armv7_a7_pmu_init(struct arm_pmu *cpu_pmu) static int armv7_a7_pmu_init(struct arm_pmu *cpu_pmu)
{ {
armv7pmu_init(cpu_pmu); armv7pmu_init(cpu_pmu);
cpu_pmu->name = "ARMv7 Cortex-A7"; cpu_pmu->name = "ARMv7 Cortex-A7";
......
...@@ -440,7 +440,7 @@ static int xscale_map_event(struct perf_event *event) ...@@ -440,7 +440,7 @@ static int xscale_map_event(struct perf_event *event)
&xscale_perf_cache_map, 0xFF); &xscale_perf_cache_map, 0xFF);
} }
static int __devinit xscale1pmu_init(struct arm_pmu *cpu_pmu) static int xscale1pmu_init(struct arm_pmu *cpu_pmu)
{ {
cpu_pmu->name = "xscale1"; cpu_pmu->name = "xscale1";
cpu_pmu->handle_irq = xscale1pmu_handle_irq; cpu_pmu->handle_irq = xscale1pmu_handle_irq;
...@@ -810,7 +810,7 @@ static inline void xscale2pmu_write_counter(struct perf_event *event, u32 val) ...@@ -810,7 +810,7 @@ static inline void xscale2pmu_write_counter(struct perf_event *event, u32 val)
} }
} }
static int __devinit xscale2pmu_init(struct arm_pmu *cpu_pmu) static int xscale2pmu_init(struct arm_pmu *cpu_pmu)
{ {
cpu_pmu->name = "xscale2"; cpu_pmu->name = "xscale2";
cpu_pmu->handle_irq = xscale2pmu_handle_irq; cpu_pmu->handle_irq = xscale2pmu_handle_irq;
......
...@@ -416,7 +416,8 @@ static void (*smp_cross_call)(const struct cpumask *, unsigned int); ...@@ -416,7 +416,8 @@ static void (*smp_cross_call)(const struct cpumask *, unsigned int);
void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int)) void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))
{ {
smp_cross_call = fn; if (!smp_cross_call)
smp_cross_call = fn;
} }
void arch_send_call_function_ipi_mask(const struct cpumask *mask) void arch_send_call_function_ipi_mask(const struct cpumask *mask)
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <asm/smp_twd.h> #include <asm/smp_twd.h>
#include <asm/localtimer.h> #include <asm/localtimer.h>
#include <asm/hardware/gic.h>
/* set up by the platform code */ /* set up by the platform code */
static void __iomem *twd_base; static void __iomem *twd_base;
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <linux/timex.h> #include <linux/timex.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <linux/syscore_ops.h>
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/irq.h> #include <linux/irq.h>
...@@ -31,11 +30,6 @@ ...@@ -31,11 +30,6 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
/*
* Our system timer.
*/
static struct sys_timer *system_timer;
#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \ #if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \
defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE) defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE)
/* this needs a better home */ /* this needs a better home */
...@@ -69,16 +63,6 @@ unsigned long profile_pc(struct pt_regs *regs) ...@@ -69,16 +63,6 @@ unsigned long profile_pc(struct pt_regs *regs)
EXPORT_SYMBOL(profile_pc); EXPORT_SYMBOL(profile_pc);
#endif #endif
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
u32 arch_gettimeoffset(void)
{
if (system_timer->offset != NULL)
return system_timer->offset() * 1000;
return 0;
}
#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */
#ifndef CONFIG_GENERIC_CLOCKEVENTS #ifndef CONFIG_GENERIC_CLOCKEVENTS
/* /*
* Kernel system timer support. * Kernel system timer support.
...@@ -129,43 +113,8 @@ int __init register_persistent_clock(clock_access_fn read_boot, ...@@ -129,43 +113,8 @@ int __init register_persistent_clock(clock_access_fn read_boot,
return -EINVAL; return -EINVAL;
} }
#if defined(CONFIG_PM) && !defined(CONFIG_GENERIC_CLOCKEVENTS)
static int timer_suspend(void)
{
if (system_timer->suspend)
system_timer->suspend();
return 0;
}
static void timer_resume(void)
{
if (system_timer->resume)
system_timer->resume();
}
#else
#define timer_suspend NULL
#define timer_resume NULL
#endif
static struct syscore_ops timer_syscore_ops = {
.suspend = timer_suspend,
.resume = timer_resume,
};
static int __init timer_init_syscore_ops(void)
{
register_syscore_ops(&timer_syscore_ops);
return 0;
}
device_initcall(timer_init_syscore_ops);
void __init time_init(void) void __init time_init(void)
{ {
system_timer = machine_desc->timer; machine_desc->init_time();
system_timer->init();
sched_clock_postinit(); sched_clock_postinit();
} }
...@@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) ...@@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev)
static struct clock_event_device clkevt = { static struct clock_event_device clkevt = {
.name = "at91_tick", .name = "at91_tick",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
.rating = 150, .rating = 150,
.set_next_event = clkevt32k_next_event, .set_next_event = clkevt32k_next_event,
.set_mode = clkevt32k_mode, .set_mode = clkevt32k_mode,
...@@ -265,17 +264,10 @@ void __init at91rm9200_timer_init(void) ...@@ -265,17 +264,10 @@ void __init at91rm9200_timer_init(void)
at91_st_write(AT91_ST_RTMR, 1); at91_st_write(AT91_ST_RTMR, 1);
/* Setup timer clockevent, with minimum of two ticks (important!!) */ /* Setup timer clockevent, with minimum of two ticks (important!!) */
clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift);
clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt);
clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1;
clkevt.cpumask = cpumask_of(0); clkevt.cpumask = cpumask_of(0);
clockevents_register_device(&clkevt); clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK,
2, AT91_ST_ALMV);
/* register clocksource */ /* register clocksource */
clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);
} }
struct sys_timer at91rm9200_timer = {
.init = at91rm9200_timer_init,
};
...@@ -104,12 +104,38 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) ...@@ -104,12 +104,38 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
} }
} }
static void at91sam926x_pit_suspend(struct clock_event_device *cedev)
{
/* Disable timer */
pit_write(AT91_PIT_MR, 0);
}
static void at91sam926x_pit_reset(void)
{
/* Disable timer and irqs */
pit_write(AT91_PIT_MR, 0);
/* Clear any pending interrupts, wait for PIT to stop counting */
while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
cpu_relax();
/* Start PIT but don't enable IRQ */
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
}
static void at91sam926x_pit_resume(struct clock_event_device *cedev)
{
at91sam926x_pit_reset();
}
static struct clock_event_device pit_clkevt = { static struct clock_event_device pit_clkevt = {
.name = "pit", .name = "pit",
.features = CLOCK_EVT_FEAT_PERIODIC, .features = CLOCK_EVT_FEAT_PERIODIC,
.shift = 32, .shift = 32,
.rating = 100, .rating = 100,
.set_mode = pit_clkevt_mode, .set_mode = pit_clkevt_mode,
.suspend = at91sam926x_pit_suspend,
.resume = at91sam926x_pit_resume,
}; };
...@@ -150,19 +176,6 @@ static struct irqaction at91sam926x_pit_irq = { ...@@ -150,19 +176,6 @@ static struct irqaction at91sam926x_pit_irq = {
.irq = NR_IRQS_LEGACY + AT91_ID_SYS, .irq = NR_IRQS_LEGACY + AT91_ID_SYS,
}; };
static void at91sam926x_pit_reset(void)
{
/* Disable timer and irqs */
pit_write(AT91_PIT_MR, 0);
/* Clear any pending interrupts, wait for PIT to stop counting */
while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0)
cpu_relax();
/* Start PIT but don't enable IRQ */
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
}
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_device_id pit_timer_ids[] = { static struct of_device_id pit_timer_ids[] = {
{ .compatible = "atmel,at91sam9260-pit" }, { .compatible = "atmel,at91sam9260-pit" },
...@@ -211,7 +224,7 @@ static int __init of_at91sam926x_pit_init(void) ...@@ -211,7 +224,7 @@ static int __init of_at91sam926x_pit_init(void)
/* /*
* Set up both clocksource and clockevent support. * Set up both clocksource and clockevent support.
*/ */
static void __init at91sam926x_pit_init(void) void __init at91sam926x_pit_init(void)
{ {
unsigned long pit_rate; unsigned long pit_rate;
unsigned bits; unsigned bits;
...@@ -250,12 +263,6 @@ static void __init at91sam926x_pit_init(void) ...@@ -250,12 +263,6 @@ static void __init at91sam926x_pit_init(void)
clockevents_register_device(&pit_clkevt); clockevents_register_device(&pit_clkevt);
} }
static void at91sam926x_pit_suspend(void)
{
/* Disable timer */
pit_write(AT91_PIT_MR, 0);
}
void __init at91sam926x_ioremap_pit(u32 addr) void __init at91sam926x_ioremap_pit(u32 addr)
{ {
#if defined(CONFIG_OF) #if defined(CONFIG_OF)
...@@ -272,9 +279,3 @@ void __init at91sam926x_ioremap_pit(u32 addr) ...@@ -272,9 +279,3 @@ void __init at91sam926x_ioremap_pit(u32 addr)
if (!pit_base_addr) if (!pit_base_addr)
panic("Impossible to ioremap PIT\n"); panic("Impossible to ioremap PIT\n");
} }
struct sys_timer at91sam926x_timer = {
.init = at91sam926x_pit_init,
.suspend = at91sam926x_pit_suspend,
.resume = at91sam926x_pit_reset,
};
...@@ -42,9 +42,10 @@ ...@@ -42,9 +42,10 @@
#define AT91_TC_CLK1BASE 0x40 #define AT91_TC_CLK1BASE 0x40
#define AT91_TC_CLK2BASE 0x80 #define AT91_TC_CLK2BASE 0x80
static unsigned long at91x40_gettimeoffset(void) static u32 at91x40_gettimeoffset(void)
{ {
return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 /
(AT91X40_MASTER_CLOCK / 128)) * 1000;
} }
static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id)
...@@ -64,6 +65,8 @@ void __init at91x40_timer_init(void) ...@@ -64,6 +65,8 @@ void __init at91x40_timer_init(void)
{ {
unsigned int v; unsigned int v;
arch_gettimeoffset = at91x40_gettimeoffset;
at91_tc_write(AT91_TC_BCR, 0); at91_tc_write(AT91_TC_BCR, 0);
v = at91_tc_read(AT91_TC_BMR); v = at91_tc_read(AT91_TC_BMR);
v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE;
...@@ -79,9 +82,3 @@ void __init at91x40_timer_init(void) ...@@ -79,9 +82,3 @@ void __init at91x40_timer_init(void)
at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN)); at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN));
} }
struct sys_timer at91x40_timer = {
.init = at91x40_timer_init,
.offset = at91x40_gettimeoffset,
};
...@@ -90,7 +90,7 @@ static void __init onearm_board_init(void) ...@@ -90,7 +90,7 @@ static void __init onearm_board_init(void)
MACHINE_START(ONEARM, "Ajeco 1ARM single board computer") MACHINE_START(ONEARM, "Ajeco 1ARM single board computer")
/* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = onearm_init_early, .init_early = onearm_init_early,
......
...@@ -210,7 +210,7 @@ static void __init afeb9260_board_init(void) ...@@ -210,7 +210,7 @@ static void __init afeb9260_board_init(void)
MACHINE_START(AFEB9260, "Custom afeb9260 board") MACHINE_START(AFEB9260, "Custom afeb9260 board")
/* Maintainer: Sergey Lapin <slapin@ossfans.org> */ /* Maintainer: Sergey Lapin <slapin@ossfans.org> */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = afeb9260_init_early, .init_early = afeb9260_init_early,
......
...@@ -187,7 +187,7 @@ static void __init cam60_board_init(void) ...@@ -187,7 +187,7 @@ static void __init cam60_board_init(void)
MACHINE_START(CAM60, "KwikByte CAM60") MACHINE_START(CAM60, "KwikByte CAM60")
/* Maintainer: KwikByte */ /* Maintainer: KwikByte */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cam60_init_early, .init_early = cam60_init_early,
......
...@@ -157,7 +157,7 @@ static void __init carmeva_board_init(void) ...@@ -157,7 +157,7 @@ static void __init carmeva_board_init(void)
MACHINE_START(CARMEVA, "Carmeva") MACHINE_START(CARMEVA, "Carmeva")
/* Maintainer: Conitec Datasystems */ /* Maintainer: Conitec Datasystems */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = carmeva_init_early, .init_early = carmeva_init_early,
......
...@@ -374,7 +374,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260") ...@@ -374,7 +374,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260")
MACHINE_START(CPUAT9G20, "Eukrea CPU9G20") MACHINE_START(CPUAT9G20, "Eukrea CPU9G20")
#endif #endif
/* Maintainer: Eric Benard - EUKREA Electromatique */ /* Maintainer: Eric Benard - EUKREA Electromatique */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cpu9krea_init_early, .init_early = cpu9krea_init_early,
......
...@@ -178,7 +178,7 @@ static void __init cpuat91_board_init(void) ...@@ -178,7 +178,7 @@ static void __init cpuat91_board_init(void)
MACHINE_START(CPUAT91, "Eukrea") MACHINE_START(CPUAT91, "Eukrea")
/* Maintainer: Eric Benard - EUKREA Electromatique */ /* Maintainer: Eric Benard - EUKREA Electromatique */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cpuat91_init_early, .init_early = cpuat91_init_early,
......
...@@ -251,7 +251,7 @@ static void __init csb337_board_init(void) ...@@ -251,7 +251,7 @@ static void __init csb337_board_init(void)
MACHINE_START(CSB337, "Cogent CSB337") MACHINE_START(CSB337, "Cogent CSB337")
/* Maintainer: Bill Gatliff */ /* Maintainer: Bill Gatliff */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = csb337_init_early, .init_early = csb337_init_early,
......
...@@ -132,7 +132,7 @@ static void __init csb637_board_init(void) ...@@ -132,7 +132,7 @@ static void __init csb637_board_init(void)
MACHINE_START(CSB637, "Cogent CSB637") MACHINE_START(CSB637, "Cogent CSB637")
/* Maintainer: Bill Gatliff */ /* Maintainer: Bill Gatliff */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = csb637_init_early, .init_early = csb637_init_early,
......
...@@ -49,7 +49,7 @@ static const char *at91_dt_board_compat[] __initdata = { ...@@ -49,7 +49,7 @@ static const char *at91_dt_board_compat[] __initdata = {
DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)") DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91_dt_initialize, .init_early = at91_dt_initialize,
......
...@@ -44,7 +44,7 @@ static void __init at91eb01_init_early(void) ...@@ -44,7 +44,7 @@ static void __init at91eb01_init_early(void)
MACHINE_START(AT91EB01, "Atmel AT91 EB01") MACHINE_START(AT91EB01, "Atmel AT91 EB01")
/* Maintainer: Greg Ungerer <gerg@snapgear.com> */ /* Maintainer: Greg Ungerer <gerg@snapgear.com> */
.timer = &at91x40_timer, .init_time = at91x40_timer_init,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91eb01_init_early, .init_early = at91eb01_init_early,
.init_irq = at91eb01_init_irq, .init_irq = at91eb01_init_irq,
......
...@@ -116,7 +116,7 @@ static void __init eb9200_board_init(void) ...@@ -116,7 +116,7 @@ static void __init eb9200_board_init(void)
} }
MACHINE_START(ATEB9200, "Embest ATEB9200") MACHINE_START(ATEB9200, "Embest ATEB9200")
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = eb9200_init_early, .init_early = eb9200_init_early,
......
...@@ -181,7 +181,7 @@ static void __init ecb_at91board_init(void) ...@@ -181,7 +181,7 @@ static void __init ecb_at91board_init(void)
MACHINE_START(ECBAT91, "emQbit's ECB_AT91") MACHINE_START(ECBAT91, "emQbit's ECB_AT91")
/* Maintainer: emQbit.com */ /* Maintainer: emQbit.com */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ecb_at91init_early, .init_early = ecb_at91init_early,
......
...@@ -149,7 +149,7 @@ static void __init eco920_board_init(void) ...@@ -149,7 +149,7 @@ static void __init eco920_board_init(void)
MACHINE_START(ECO920, "eco920") MACHINE_START(ECO920, "eco920")
/* Maintainer: Sascha Hauer */ /* Maintainer: Sascha Hauer */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = eco920_init_early, .init_early = eco920_init_early,
......
...@@ -159,7 +159,7 @@ static void __init flexibity_board_init(void) ...@@ -159,7 +159,7 @@ static void __init flexibity_board_init(void)
MACHINE_START(FLEXIBITY, "Flexibity Connect") MACHINE_START(FLEXIBITY, "Flexibity Connect")
/* Maintainer: Maxim Osipov */ /* Maintainer: Maxim Osipov */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = flexibity_init_early, .init_early = flexibity_init_early,
......
...@@ -261,7 +261,7 @@ static void __init foxg20_board_init(void) ...@@ -261,7 +261,7 @@ static void __init foxg20_board_init(void)
MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20") MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20")
/* Maintainer: Sergio Tanzilli */ /* Maintainer: Sergio Tanzilli */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = foxg20_init_early, .init_early = foxg20_init_early,
......
...@@ -574,7 +574,7 @@ static void __init gsia18s_board_init(void) ...@@ -574,7 +574,7 @@ static void __init gsia18s_board_init(void)
} }
MACHINE_START(GSIA18S, "GS_IA18_S") MACHINE_START(GSIA18S, "GS_IA18_S")
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = gsia18s_init_early, .init_early = gsia18s_init_early,
......
...@@ -103,7 +103,7 @@ static void __init kafa_board_init(void) ...@@ -103,7 +103,7 @@ static void __init kafa_board_init(void)
MACHINE_START(KAFA, "Sperry-Sun KAFA") MACHINE_START(KAFA, "Sperry-Sun KAFA")
/* Maintainer: Sergei Sharonov */ /* Maintainer: Sergei Sharonov */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = kafa_init_early, .init_early = kafa_init_early,
......
...@@ -149,7 +149,7 @@ static void __init kb9202_board_init(void) ...@@ -149,7 +149,7 @@ static void __init kb9202_board_init(void)
MACHINE_START(KB9200, "KB920x") MACHINE_START(KB9200, "KB920x")
/* Maintainer: KwikByte, Inc. */ /* Maintainer: KwikByte, Inc. */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = kb9202_init_early, .init_early = kb9202_init_early,
......
...@@ -378,7 +378,7 @@ static void __init neocore926_board_init(void) ...@@ -378,7 +378,7 @@ static void __init neocore926_board_init(void)
MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926") MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926")
/* Maintainer: ADENEO */ /* Maintainer: ADENEO */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = neocore926_init_early, .init_early = neocore926_init_early,
......
...@@ -217,7 +217,7 @@ static void __init pcontrol_g20_board_init(void) ...@@ -217,7 +217,7 @@ static void __init pcontrol_g20_board_init(void)
MACHINE_START(PCONTROL_G20, "PControl G20") MACHINE_START(PCONTROL_G20, "PControl G20")
/* Maintainer: pgsellmann@portner-elektronik.at */ /* Maintainer: pgsellmann@portner-elektronik.at */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = pcontrol_g20_init_early, .init_early = pcontrol_g20_init_early,
......
...@@ -119,7 +119,7 @@ static void __init picotux200_board_init(void) ...@@ -119,7 +119,7 @@ static void __init picotux200_board_init(void)
MACHINE_START(PICOTUX2XX, "picotux 200") MACHINE_START(PICOTUX2XX, "picotux 200")
/* Maintainer: Kleinhenz Elektronik GmbH */ /* Maintainer: Kleinhenz Elektronik GmbH */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = picotux200_init_early, .init_early = picotux200_init_early,
......
...@@ -257,7 +257,7 @@ static void __init ek_board_init(void) ...@@ -257,7 +257,7 @@ static void __init ek_board_init(void)
MACHINE_START(QIL_A9260, "CALAO QIL_A9260") MACHINE_START(QIL_A9260, "CALAO QIL_A9260")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -47,7 +47,7 @@ static const char *at91rm9200_dt_board_compat[] __initdata = { ...@@ -47,7 +47,7 @@ static const char *at91rm9200_dt_board_compat[] __initdata = {
}; };
DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)") DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = at91rm9200_dt_initialize, .init_early = at91rm9200_dt_initialize,
......
...@@ -219,7 +219,7 @@ static void __init dk_board_init(void) ...@@ -219,7 +219,7 @@ static void __init dk_board_init(void)
MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK") MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
/* Maintainer: SAN People/Atmel */ /* Maintainer: SAN People/Atmel */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = dk_init_early, .init_early = dk_init_early,
......
...@@ -186,7 +186,7 @@ static void __init ek_board_init(void) ...@@ -186,7 +186,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK") MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")
/* Maintainer: SAN People/Atmel */ /* Maintainer: SAN People/Atmel */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -222,7 +222,7 @@ static void __init rsi_ews_board_init(void) ...@@ -222,7 +222,7 @@ static void __init rsi_ews_board_init(void)
MACHINE_START(RSI_EWS, "RSI EWS") MACHINE_START(RSI_EWS, "RSI EWS")
/* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */ /* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */
.timer = &at91rm9200_timer, .init_time = at91rm9200_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = rsi_ews_init_early, .init_early = rsi_ews_init_early,
......
...@@ -218,7 +218,7 @@ static void __init ek_board_init(void) ...@@ -218,7 +218,7 @@ static void __init ek_board_init(void)
MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260") MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")
/* Maintainer: Olimex */ /* Maintainer: Olimex */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -343,7 +343,7 @@ static void __init ek_board_init(void) ...@@ -343,7 +343,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -612,7 +612,7 @@ MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK") ...@@ -612,7 +612,7 @@ MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")
MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK") MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")
#endif #endif
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -443,7 +443,7 @@ static void __init ek_board_init(void) ...@@ -443,7 +443,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -409,7 +409,7 @@ static void __init ek_board_init(void) ...@@ -409,7 +409,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
...@@ -419,7 +419,7 @@ MACHINE_END ...@@ -419,7 +419,7 @@ MACHINE_END
MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod") MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -502,7 +502,7 @@ static void __init ek_board_init(void) ...@@ -502,7 +502,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -320,7 +320,7 @@ static void __init ek_board_init(void) ...@@ -320,7 +320,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK") MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -177,7 +177,7 @@ static void __init snapper9260_board_init(void) ...@@ -177,7 +177,7 @@ static void __init snapper9260_board_init(void)
} }
MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module") MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module")
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = snapper9260_init_early, .init_early = snapper9260_init_early,
......
...@@ -272,7 +272,7 @@ static void __init stamp9g20evb_board_init(void) ...@@ -272,7 +272,7 @@ static void __init stamp9g20evb_board_init(void)
MACHINE_START(PORTUXG20, "taskit PortuxG20") MACHINE_START(PORTUXG20, "taskit PortuxG20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,
...@@ -282,7 +282,7 @@ MACHINE_END ...@@ -282,7 +282,7 @@ MACHINE_END
MACHINE_START(STAMP9G20, "taskit Stamp9G20") MACHINE_START(STAMP9G20, "taskit Stamp9G20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,
......
...@@ -355,7 +355,7 @@ static void __init ek_board_init(void) ...@@ -355,7 +355,7 @@ static void __init ek_board_init(void)
MACHINE_START(USB_A9263, "CALAO USB_A9263") MACHINE_START(USB_A9263, "CALAO USB_A9263")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
...@@ -365,7 +365,7 @@ MACHINE_END ...@@ -365,7 +365,7 @@ MACHINE_END
MACHINE_START(USB_A9260, "CALAO USB_A9260") MACHINE_START(USB_A9260, "CALAO USB_A9260")
/* Maintainer: calao-systems */ /* Maintainer: calao-systems */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
...@@ -375,7 +375,7 @@ MACHINE_END ...@@ -375,7 +375,7 @@ MACHINE_END
MACHINE_START(USB_A9G20, "CALAO USB_A92G0") MACHINE_START(USB_A9G20, "CALAO USB_A92G0")
/* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */ /* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */
.timer = &at91sam926x_timer, .init_time = at91sam926x_pit_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册