Linux 4.14-rc7
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJZ9kEFAAoJEHm+PkMAQRiGw6wH/0j197qyGd0hkVFMJO6LAgN3 KQWS4nZ5BkVDocwv0RVnUJTtXqU1eozFgdVEtSoaFXpzlHGuptR2Tau9efDCJ7w3 /utZxqvhGebZd2T+j+/o/LE8BRQxhADBNJq2D/o0WNt8ecxuG0GIkhkEYt/o3z1v /sxlwVwzXB7Dc/h1WcgGJG7cS6L9KzzAzGAS/iNvdFrPOygHBv8c0MxVZIiBIeeK 1nZdyvbyM8uenSyG+prGt9ENrqXZxxfwUxIchi2V7A9m1WmD5zijNkf1JCWji/O+ UsA1auxna7MwoxjxqZuGm4MlKOwZ+8xutk4JGgc+aP/ulndJbJYu+4op/3vaFBM= =Mhx+ -----END PGP SIGNATURE----- Backmerge tag 'v4.14-rc7' into drm-next Linux 4.14-rc7 Requested by Ben Skeggs for nouveau to avoid major conflicts, and things were getting a bit conflicty already, esp around amdgpu reverts.
This commit is contained in:
commit
7a88cbd8d6
2
.mailmap
2
.mailmap
|
@ -68,6 +68,8 @@ Jacob Shin <Jacob.Shin@amd.com>
|
||||||
James Bottomley <jejb@mulgrave.(none)>
|
James Bottomley <jejb@mulgrave.(none)>
|
||||||
James Bottomley <jejb@titanic.il.steeleye.com>
|
James Bottomley <jejb@titanic.il.steeleye.com>
|
||||||
James E Wilson <wilson@specifix.com>
|
James E Wilson <wilson@specifix.com>
|
||||||
|
James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
|
||||||
|
James Hogan <jhogan@kernel.org> <james@albanarts.com>
|
||||||
James Ketrenos <jketreno@io.(none)>
|
James Ketrenos <jketreno@io.(none)>
|
||||||
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
||||||
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
||||||
|
|
|
@ -14,3 +14,11 @@ Description:
|
||||||
Show or set the gain boost of the amp, from 0-31 range.
|
Show or set the gain boost of the amp, from 0-31 range.
|
||||||
18 = indoors (default)
|
18 = indoors (default)
|
||||||
14 = outdoors
|
14 = outdoors
|
||||||
|
|
||||||
|
What /sys/bus/iio/devices/iio:deviceX/noise_level_tripped
|
||||||
|
Date: May 2017
|
||||||
|
KernelVersion: 4.13
|
||||||
|
Contact: Matt Ranostay <matt.ranostay@konsulko.com>
|
||||||
|
Description:
|
||||||
|
When 1 the noise level is over the trip level and not reporting
|
||||||
|
valid data
|
||||||
|
|
|
@ -211,7 +211,9 @@ Description:
|
||||||
device, after it has been suspended at run time, from a resume
|
device, after it has been suspended at run time, from a resume
|
||||||
request to the moment the device will be ready to process I/O,
|
request to the moment the device will be ready to process I/O,
|
||||||
in microseconds. If it is equal to 0, however, this means that
|
in microseconds. If it is equal to 0, however, this means that
|
||||||
the PM QoS resume latency may be arbitrary.
|
the PM QoS resume latency may be arbitrary and the special value
|
||||||
|
"n/a" means that user space cannot accept any resume latency at
|
||||||
|
all for the given device.
|
||||||
|
|
||||||
Not all drivers support this attribute. If it isn't supported,
|
Not all drivers support this attribute. If it isn't supported,
|
||||||
it is not present.
|
it is not present.
|
||||||
|
|
|
@ -14,13 +14,3 @@ Description: Enable/disable VMA based swap readahead.
|
||||||
still used for tmpfs etc. other users. If set to
|
still used for tmpfs etc. other users. If set to
|
||||||
false, the global swap readahead algorithm will be
|
false, the global swap readahead algorithm will be
|
||||||
used for all swappable pages.
|
used for all swappable pages.
|
||||||
|
|
||||||
What: /sys/kernel/mm/swap/vma_ra_max_order
|
|
||||||
Date: August 2017
|
|
||||||
Contact: Linux memory management mailing list <linux-mm@kvack.org>
|
|
||||||
Description: The max readahead size in order for VMA based swap readahead
|
|
||||||
|
|
||||||
VMA based swap readahead algorithm will readahead at
|
|
||||||
most 1 << max_order pages for each readahead. The
|
|
||||||
real readahead size for each readahead will be scaled
|
|
||||||
according to the estimation algorithm.
|
|
||||||
|
|
|
@ -127,7 +127,7 @@ Description:
|
||||||
|
|
||||||
What; /sys/power/pm_trace_dev_match
|
What; /sys/power/pm_trace_dev_match
|
||||||
Date: October 2010
|
Date: October 2010
|
||||||
Contact: James Hogan <james@albanarts.com>
|
Contact: James Hogan <jhogan@kernel.org>
|
||||||
Description:
|
Description:
|
||||||
The /sys/power/pm_trace_dev_match file contains the name of the
|
The /sys/power/pm_trace_dev_match file contains the name of the
|
||||||
device associated with the last PM event point saved in the RTC
|
device associated with the last PM event point saved in the RTC
|
||||||
|
|
|
@ -352,44 +352,30 @@ Read-Copy Update (RCU)
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rcupdate.h
|
.. kernel-doc:: include/linux/rcupdate.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rcupdate_wait.h
|
.. kernel-doc:: include/linux/rcupdate_wait.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rcutree.h
|
.. kernel-doc:: include/linux/rcutree.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/tree.c
|
.. kernel-doc:: kernel/rcu/tree.c
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/tree_plugin.h
|
.. kernel-doc:: kernel/rcu/tree_plugin.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/tree_exp.h
|
.. kernel-doc:: kernel/rcu/tree_exp.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/update.c
|
.. kernel-doc:: kernel/rcu/update.c
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/srcu.h
|
.. kernel-doc:: include/linux/srcu.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/srcutree.c
|
.. kernel-doc:: kernel/rcu/srcutree.c
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rculist_bl.h
|
.. kernel-doc:: include/linux/rculist_bl.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rculist.h
|
.. kernel-doc:: include/linux/rculist.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rculist_nulls.h
|
.. kernel-doc:: include/linux/rculist_nulls.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/rcu_sync.h
|
.. kernel-doc:: include/linux/rcu_sync.h
|
||||||
:external:
|
|
||||||
|
|
||||||
.. kernel-doc:: kernel/rcu/sync.c
|
.. kernel-doc:: kernel/rcu/sync.c
|
||||||
:external:
|
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,8 @@ up.
|
||||||
Although MT wq wasted a lot of resource, the level of concurrency
|
Although MT wq wasted a lot of resource, the level of concurrency
|
||||||
provided was unsatisfactory. The limitation was common to both ST and
|
provided was unsatisfactory. The limitation was common to both ST and
|
||||||
MT wq albeit less severe on MT. Each wq maintained its own separate
|
MT wq albeit less severe on MT. Each wq maintained its own separate
|
||||||
worker pool. A MT wq could provide only one execution context per CPU
|
worker pool. An MT wq could provide only one execution context per CPU
|
||||||
while a ST wq one for the whole system. Work items had to compete for
|
while an ST wq one for the whole system. Work items had to compete for
|
||||||
those very limited execution contexts leading to various problems
|
those very limited execution contexts leading to various problems
|
||||||
including proneness to deadlocks around the single execution context.
|
including proneness to deadlocks around the single execution context.
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ Application Programming Interface (API)
|
||||||
|
|
||||||
``alloc_workqueue()`` allocates a wq. The original
|
``alloc_workqueue()`` allocates a wq. The original
|
||||||
``create_*workqueue()`` functions are deprecated and scheduled for
|
``create_*workqueue()`` functions are deprecated and scheduled for
|
||||||
removal. ``alloc_workqueue()`` takes three arguments - @``name``,
|
removal. ``alloc_workqueue()`` takes three arguments - ``@name``,
|
||||||
``@flags`` and ``@max_active``. ``@name`` is the name of the wq and
|
``@flags`` and ``@max_active``. ``@name`` is the name of the wq and
|
||||||
also used as the name of the rescuer thread if there is one.
|
also used as the name of the rescuer thread if there is one.
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ resources, scheduled and executed.
|
||||||
served by worker threads with elevated nice level.
|
served by worker threads with elevated nice level.
|
||||||
|
|
||||||
Note that normal and highpri worker-pools don't interact with
|
Note that normal and highpri worker-pools don't interact with
|
||||||
each other. Each maintain its separate pool of workers and
|
each other. Each maintains its separate pool of workers and
|
||||||
implements concurrency management among its workers.
|
implements concurrency management among its workers.
|
||||||
|
|
||||||
``WQ_CPU_INTENSIVE``
|
``WQ_CPU_INTENSIVE``
|
||||||
|
@ -249,8 +249,8 @@ unbound worker-pools and only one work item could be active at any given
|
||||||
time thus achieving the same ordering property as ST wq.
|
time thus achieving the same ordering property as ST wq.
|
||||||
|
|
||||||
In the current implementation the above configuration only guarantees
|
In the current implementation the above configuration only guarantees
|
||||||
ST behavior within a given NUMA node. Instead alloc_ordered_queue should
|
ST behavior within a given NUMA node. Instead ``alloc_ordered_queue()`` should
|
||||||
be used to achieve system wide ST behavior.
|
be used to achieve system-wide ST behavior.
|
||||||
|
|
||||||
|
|
||||||
Example Execution Scenarios
|
Example Execution Scenarios
|
||||||
|
|
|
@ -344,3 +344,4 @@ Version History
|
||||||
(wrong raid10_copies/raid10_format sequence)
|
(wrong raid10_copies/raid10_format sequence)
|
||||||
1.11.1 Add raid4/5/6 journal write-back support via journal_mode option
|
1.11.1 Add raid4/5/6 journal write-back support via journal_mode option
|
||||||
1.12.1 fix for MD deadlock between mddev_suspend() and md_write_start() available
|
1.12.1 fix for MD deadlock between mddev_suspend() and md_write_start() available
|
||||||
|
1.13.0 Fix dev_health status at end of "recover" (was 'a', now 'A')
|
||||||
|
|
|
@ -16,6 +16,10 @@ Optional properties:
|
||||||
- ams,tuning-capacitor-pf: Calibration tuning capacitor stepping
|
- ams,tuning-capacitor-pf: Calibration tuning capacitor stepping
|
||||||
value 0 - 120pF. This will require using the calibration data from
|
value 0 - 120pF. This will require using the calibration data from
|
||||||
the manufacturer.
|
the manufacturer.
|
||||||
|
- ams,nflwdth: Set the noise and watchdog threshold register on
|
||||||
|
startup. This will need to set according to the noise from the
|
||||||
|
MCU board, and possibly the local environment. Refer to the
|
||||||
|
datasheet for the threshold settings.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -27,4 +31,5 @@ as3935@0 {
|
||||||
interrupt-parent = <&gpio1>;
|
interrupt-parent = <&gpio1>;
|
||||||
interrupts = <16 1>;
|
interrupts = <16 1>;
|
||||||
ams,tuning-capacitor-pf = <80>;
|
ams,tuning-capacitor-pf = <80>;
|
||||||
|
ams,nflwdth = <0x44>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -99,7 +99,7 @@ Examples:
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
#msi-cells = <1>;
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x20000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,14 +124,14 @@ Examples:
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
#msi-cells = <1>;
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x20000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gic-its@2c400000 {
|
gic-its@2c400000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
#msi-cells = <1>;
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c400000 0 0x200000>;
|
reg = <0x0 0x2c400000 0 0x20000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
ppi-partitions {
|
ppi-partitions {
|
||||||
|
|
|
@ -16,11 +16,13 @@ Required Properties:
|
||||||
|
|
||||||
- clocks:
|
- clocks:
|
||||||
Array of clocks required for SDHC.
|
Array of clocks required for SDHC.
|
||||||
Require at least input clock for Xenon IP core.
|
Require at least input clock for Xenon IP core. For Armada AP806 and
|
||||||
|
CP110, the AXI clock is also mandatory.
|
||||||
|
|
||||||
- clock-names:
|
- clock-names:
|
||||||
Array of names corresponding to clocks property.
|
Array of names corresponding to clocks property.
|
||||||
The input clock for Xenon IP core should be named as "core".
|
The input clock for Xenon IP core should be named as "core".
|
||||||
|
The input clock for the AXI bus must be named as "axi".
|
||||||
|
|
||||||
- reg:
|
- reg:
|
||||||
* For "marvell,armada-3700-sdhci", two register areas.
|
* For "marvell,armada-3700-sdhci", two register areas.
|
||||||
|
@ -106,8 +108,8 @@ Example:
|
||||||
compatible = "marvell,armada-ap806-sdhci";
|
compatible = "marvell,armada-ap806-sdhci";
|
||||||
reg = <0xaa0000 0x1000>;
|
reg = <0xaa0000 0x1000>;
|
||||||
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>
|
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>
|
||||||
clocks = <&emmc_clk>;
|
clocks = <&emmc_clk>,<&axi_clk>;
|
||||||
clock-names = "core";
|
clock-names = "core", "axi";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
marvell,xenon-phy-slow-mode;
|
marvell,xenon-phy-slow-mode;
|
||||||
marvell,xenon-tun-count = <11>;
|
marvell,xenon-tun-count = <11>;
|
||||||
|
@ -126,8 +128,8 @@ Example:
|
||||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>
|
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>
|
||||||
vqmmc-supply = <&sd_vqmmc_regulator>;
|
vqmmc-supply = <&sd_vqmmc_regulator>;
|
||||||
vmmc-supply = <&sd_vmmc_regulator>;
|
vmmc-supply = <&sd_vmmc_regulator>;
|
||||||
clocks = <&sdclk>;
|
clocks = <&sdclk>, <&axi_clk>;
|
||||||
clock-names = "core";
|
clock-names = "core", "axi";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
marvell,xenon-tun-count = <9>;
|
marvell,xenon-tun-count = <9>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,8 +21,9 @@ Required properties:
|
||||||
- main controller clock (for both armada-375-pp2 and armada-7k-pp2)
|
- main controller clock (for both armada-375-pp2 and armada-7k-pp2)
|
||||||
- GOP clock (for both armada-375-pp2 and armada-7k-pp2)
|
- GOP clock (for both armada-375-pp2 and armada-7k-pp2)
|
||||||
- MG clock (only for armada-7k-pp2)
|
- MG clock (only for armada-7k-pp2)
|
||||||
- clock-names: names of used clocks, must be "pp_clk", "gop_clk" and
|
- AXI clock (only for armada-7k-pp2)
|
||||||
"mg_clk" (the latter only for armada-7k-pp2).
|
- clock-names: names of used clocks, must be "pp_clk", "gop_clk", "mg_clk"
|
||||||
|
and "axi_clk" (the 2 latter only for armada-7k-pp2).
|
||||||
|
|
||||||
The ethernet ports are represented by subnodes. At least one port is
|
The ethernet ports are represented by subnodes. At least one port is
|
||||||
required.
|
required.
|
||||||
|
@ -78,8 +79,9 @@ Example for marvell,armada-7k-pp2:
|
||||||
cpm_ethernet: ethernet@0 {
|
cpm_ethernet: ethernet@0 {
|
||||||
compatible = "marvell,armada-7k-pp22";
|
compatible = "marvell,armada-7k-pp22";
|
||||||
reg = <0x0 0x100000>, <0x129000 0xb000>;
|
reg = <0x0 0x100000>, <0x129000 0xb000>;
|
||||||
clocks = <&cpm_syscon0 1 3>, <&cpm_syscon0 1 9>, <&cpm_syscon0 1 5>;
|
clocks = <&cpm_syscon0 1 3>, <&cpm_syscon0 1 9>,
|
||||||
clock-names = "pp_clk", "gop_clk", "gp_clk";
|
<&cpm_syscon0 1 5>, <&cpm_syscon0 1 18>;
|
||||||
|
clock-names = "pp_clk", "gop_clk", "gp_clk", "axi_clk";
|
||||||
|
|
||||||
eth0: eth0 {
|
eth0: eth0 {
|
||||||
interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
|
|
@ -4,6 +4,7 @@ The device node has following properties.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: should be "rockchip,<name>-gamc"
|
- compatible: should be "rockchip,<name>-gamc"
|
||||||
|
"rockchip,rk3128-gmac": found on RK312x SoCs
|
||||||
"rockchip,rk3228-gmac": found on RK322x SoCs
|
"rockchip,rk3228-gmac": found on RK322x SoCs
|
||||||
"rockchip,rk3288-gmac": found on RK3288 SoCs
|
"rockchip,rk3288-gmac": found on RK3288 SoCs
|
||||||
"rockchip,rk3328-gmac": found on RK3328 SoCs
|
"rockchip,rk3328-gmac": found on RK3328 SoCs
|
||||||
|
|
28
Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
Normal file
28
Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
Binding for the Synopsys HSDK reset controller
|
||||||
|
|
||||||
|
This binding uses the common reset binding[1].
|
||||||
|
|
||||||
|
[1] Documentation/devicetree/bindings/reset/reset.txt
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: should be "snps,hsdk-reset".
|
||||||
|
- reg: should always contain 2 pairs address - length: first for reset
|
||||||
|
configuration register and second for corresponding SW reset and status bits
|
||||||
|
register.
|
||||||
|
- #reset-cells: from common reset binding; Should always be set to 1.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
reset: reset@880 {
|
||||||
|
compatible = "snps,hsdk-reset";
|
||||||
|
#reset-cells = <1>;
|
||||||
|
reg = <0x8A0 0x4>, <0xFF0 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
Specifying reset lines connected to IP modules:
|
||||||
|
ethernet@.... {
|
||||||
|
....
|
||||||
|
resets = <&reset HSDK_V1_ETH_RESET>;
|
||||||
|
....
|
||||||
|
};
|
||||||
|
|
||||||
|
The index could be found in <dt-bindings/reset/snps,hsdk-reset.h>
|
|
@ -41,6 +41,8 @@ Required properties:
|
||||||
- "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART.
|
- "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART.
|
||||||
- "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART.
|
- "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART.
|
||||||
- "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART.
|
- "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART.
|
||||||
|
- "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART.
|
||||||
|
- "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART.
|
||||||
- "renesas,scif-r8a77995" for R8A77995 (R-Car D3) SCIF compatible UART.
|
- "renesas,scif-r8a77995" for R8A77995 (R-Car D3) SCIF compatible UART.
|
||||||
- "renesas,hscif-r8a77995" for R8A77995 (R-Car D3) HSCIF compatible UART.
|
- "renesas,hscif-r8a77995" for R8A77995 (R-Car D3) HSCIF compatible UART.
|
||||||
- "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART.
|
- "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART.
|
||||||
|
|
|
@ -196,12 +196,13 @@ struct driver_attribute {
|
||||||
};
|
};
|
||||||
|
|
||||||
Device drivers can export attributes via their sysfs directories.
|
Device drivers can export attributes via their sysfs directories.
|
||||||
Drivers can declare attributes using a DRIVER_ATTR macro that works
|
Drivers can declare attributes using a DRIVER_ATTR_RW and DRIVER_ATTR_RO
|
||||||
identically to the DEVICE_ATTR macro.
|
macro that works identically to the DEVICE_ATTR_RW and DEVICE_ATTR_RO
|
||||||
|
macros.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
DRIVER_ATTR(debug,0644,show_debug,store_debug);
|
DRIVER_ATTR_RW(debug);
|
||||||
|
|
||||||
This is equivalent to declaring:
|
This is equivalent to declaring:
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,11 @@ path as another overlay mount and it may use a lower layer path that is
|
||||||
beneath or above the path of another overlay lower layer path.
|
beneath or above the path of another overlay lower layer path.
|
||||||
|
|
||||||
Using an upper layer path and/or a workdir path that are already used by
|
Using an upper layer path and/or a workdir path that are already used by
|
||||||
another overlay mount is not allowed and will fail with EBUSY. Using
|
another overlay mount is not allowed and may fail with EBUSY. Using
|
||||||
partially overlapping paths is not allowed but will not fail with EBUSY.
|
partially overlapping paths is not allowed but will not fail with EBUSY.
|
||||||
|
If files are accessed from two overlayfs mounts which share or overlap the
|
||||||
|
upper layer and/or workdir path the behavior of the overlay is undefined,
|
||||||
|
though it will not result in a crash or deadlock.
|
||||||
|
|
||||||
Mounting an overlay using an upper layer path, where the upper layer path
|
Mounting an overlay using an upper layer path, where the upper layer path
|
||||||
was previously used by another mounted overlay in combination with a
|
was previously used by another mounted overlay in combination with a
|
||||||
|
|
|
@ -366,7 +366,8 @@ struct driver_attribute {
|
||||||
|
|
||||||
Declaring:
|
Declaring:
|
||||||
|
|
||||||
DRIVER_ATTR(_name, _mode, _show, _store)
|
DRIVER_ATTR_RO(_name)
|
||||||
|
DRIVER_ATTR_RW(_name)
|
||||||
|
|
||||||
Creation/Removal:
|
Creation/Removal:
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ Supported adapters:
|
||||||
* Intel Gemini Lake (SOC)
|
* Intel Gemini Lake (SOC)
|
||||||
* Intel Cannon Lake-H (PCH)
|
* Intel Cannon Lake-H (PCH)
|
||||||
* Intel Cannon Lake-LP (PCH)
|
* Intel Cannon Lake-LP (PCH)
|
||||||
|
* Intel Cedar Fork (PCH)
|
||||||
Datasheets: Publicly available at the Intel website
|
Datasheets: Publicly available at the Intel website
|
||||||
|
|
||||||
On Intel Patsburg and later chipsets, both the normal host SMBus controller
|
On Intel Patsburg and later chipsets, both the normal host SMBus controller
|
||||||
|
|
|
@ -1108,14 +1108,6 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
ld
|
ld
|
||||||
Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
|
Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
|
||||||
|
|
||||||
objcopy
|
|
||||||
Copy binary. Uses OBJCOPYFLAGS usually specified in
|
|
||||||
arch/$(ARCH)/Makefile.
|
|
||||||
OBJCOPYFLAGS_$@ may be used to set additional options.
|
|
||||||
|
|
||||||
gzip
|
|
||||||
Compress target. Use maximum compression to compress target.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
#arch/x86/boot/Makefile
|
#arch/x86/boot/Makefile
|
||||||
LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
|
LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
|
||||||
|
@ -1139,6 +1131,19 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
resulting in the target file being recompiled for no
|
resulting in the target file being recompiled for no
|
||||||
obvious reason.
|
obvious reason.
|
||||||
|
|
||||||
|
objcopy
|
||||||
|
Copy binary. Uses OBJCOPYFLAGS usually specified in
|
||||||
|
arch/$(ARCH)/Makefile.
|
||||||
|
OBJCOPYFLAGS_$@ may be used to set additional options.
|
||||||
|
|
||||||
|
gzip
|
||||||
|
Compress target. Use maximum compression to compress target.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
#arch/x86/boot/compressed/Makefile
|
||||||
|
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
|
||||||
|
$(call if_changed,gzip)
|
||||||
|
|
||||||
dtc
|
dtc
|
||||||
Create flattened device tree blob object suitable for linking
|
Create flattened device tree blob object suitable for linking
|
||||||
into vmlinux. Device tree blobs linked into vmlinux are placed
|
into vmlinux. Device tree blobs linked into vmlinux are placed
|
||||||
|
@ -1219,7 +1224,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
that may be shared between individual architectures.
|
that may be shared between individual architectures.
|
||||||
The recommended approach how to use a generic header file is
|
The recommended approach how to use a generic header file is
|
||||||
to list the file in the Kbuild file.
|
to list the file in the Kbuild file.
|
||||||
See "7.3 generic-y" for further info on syntax etc.
|
See "7.2 generic-y" for further info on syntax etc.
|
||||||
|
|
||||||
--- 6.11 Post-link pass
|
--- 6.11 Post-link pass
|
||||||
|
|
||||||
|
@ -1254,13 +1259,13 @@ A Kbuild file may be defined under arch/<arch>/include/uapi/asm/ and
|
||||||
arch/<arch>/include/asm/ to list asm files coming from asm-generic.
|
arch/<arch>/include/asm/ to list asm files coming from asm-generic.
|
||||||
See subsequent chapter for the syntax of the Kbuild file.
|
See subsequent chapter for the syntax of the Kbuild file.
|
||||||
|
|
||||||
--- 7.1 no-export-headers
|
--- 7.1 no-export-headers
|
||||||
|
|
||||||
no-export-headers is essentially used by include/uapi/linux/Kbuild to
|
no-export-headers is essentially used by include/uapi/linux/Kbuild to
|
||||||
avoid exporting specific headers (e.g. kvm.h) on architectures that do
|
avoid exporting specific headers (e.g. kvm.h) on architectures that do
|
||||||
not support it. It should be avoided as much as possible.
|
not support it. It should be avoided as much as possible.
|
||||||
|
|
||||||
--- 7.2 generic-y
|
--- 7.2 generic-y
|
||||||
|
|
||||||
If an architecture uses a verbatim copy of a header from
|
If an architecture uses a verbatim copy of a header from
|
||||||
include/asm-generic then this is listed in the file
|
include/asm-generic then this is listed in the file
|
||||||
|
@ -1287,7 +1292,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||||
Example: termios.h
|
Example: termios.h
|
||||||
#include <asm-generic/termios.h>
|
#include <asm-generic/termios.h>
|
||||||
|
|
||||||
--- 7.3 generated-y
|
--- 7.3 generated-y
|
||||||
|
|
||||||
If an architecture generates other header files alongside generic-y
|
If an architecture generates other header files alongside generic-y
|
||||||
wrappers, generated-y specifies them.
|
wrappers, generated-y specifies them.
|
||||||
|
@ -1299,7 +1304,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||||
#arch/x86/include/asm/Kbuild
|
#arch/x86/include/asm/Kbuild
|
||||||
generated-y += syscalls_32.h
|
generated-y += syscalls_32.h
|
||||||
|
|
||||||
--- 7.5 mandatory-y
|
--- 7.4 mandatory-y
|
||||||
|
|
||||||
mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
|
mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
|
||||||
to define the minimum set of headers that must be exported in
|
to define the minimum set of headers that must be exported in
|
||||||
|
|
|
@ -2387,7 +2387,7 @@ broadcast: Like active-backup, there is not much advantage to this
|
||||||
and packet type ID), so in a "gatewayed" configuration, all
|
and packet type ID), so in a "gatewayed" configuration, all
|
||||||
outgoing traffic will generally use the same device. Incoming
|
outgoing traffic will generally use the same device. Incoming
|
||||||
traffic may also end up on a single device, but that is
|
traffic may also end up on a single device, but that is
|
||||||
dependent upon the balancing policy of the peer's 8023.ad
|
dependent upon the balancing policy of the peer's 802.3ad
|
||||||
implementation. In a "local" configuration, traffic will be
|
implementation. In a "local" configuration, traffic will be
|
||||||
distributed across the devices in the bond.
|
distributed across the devices in the bond.
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ Below are the essential guides that every developer should read.
|
||||||
submitting-patches
|
submitting-patches
|
||||||
coding-style
|
coding-style
|
||||||
email-clients
|
email-clients
|
||||||
|
kernel-enforcement-statement
|
||||||
|
|
||||||
Other guides to the community that are of interest to most developers are:
|
Other guides to the community that are of interest to most developers are:
|
||||||
|
|
||||||
|
|
147
Documentation/process/kernel-enforcement-statement.rst
Normal file
147
Documentation/process/kernel-enforcement-statement.rst
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
Linux Kernel Enforcement Statement
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
As developers of the Linux kernel, we have a keen interest in how our software
|
||||||
|
is used and how the license for our software is enforced. Compliance with the
|
||||||
|
reciprocal sharing obligations of GPL-2.0 is critical to the long-term
|
||||||
|
sustainability of our software and community.
|
||||||
|
|
||||||
|
Although there is a right to enforce the separate copyright interests in the
|
||||||
|
contributions made to our community, we share an interest in ensuring that
|
||||||
|
individual enforcement actions are conducted in a manner that benefits our
|
||||||
|
community and do not have an unintended negative impact on the health and
|
||||||
|
growth of our software ecosystem. In order to deter unhelpful enforcement
|
||||||
|
actions, we agree that it is in the best interests of our development
|
||||||
|
community to undertake the following commitment to users of the Linux kernel
|
||||||
|
on behalf of ourselves and any successors to our copyright interests:
|
||||||
|
|
||||||
|
Notwithstanding the termination provisions of the GPL-2.0, we agree that
|
||||||
|
it is in the best interests of our development community to adopt the
|
||||||
|
following provisions of GPL-3.0 as additional permissions under our
|
||||||
|
license with respect to any non-defensive assertion of rights under the
|
||||||
|
license.
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your license
|
||||||
|
from a particular copyright holder is reinstated (a) provisionally,
|
||||||
|
unless and until the copyright holder explicitly and finally
|
||||||
|
terminates your license, and (b) permanently, if the copyright holder
|
||||||
|
fails to notify you of the violation by some reasonable means prior to
|
||||||
|
60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Our intent in providing these assurances is to encourage more use of the
|
||||||
|
software. We want companies and individuals to use, modify and distribute
|
||||||
|
this software. We want to work with users in an open and transparent way to
|
||||||
|
eliminate any uncertainty about our expectations regarding compliance or
|
||||||
|
enforcement that might limit adoption of our software. We view legal action
|
||||||
|
as a last resort, to be initiated only when other community efforts have
|
||||||
|
failed to resolve the problem.
|
||||||
|
|
||||||
|
Finally, once a non-compliance issue is resolved, we hope the user will feel
|
||||||
|
welcome to join us in our efforts on this project. Working together, we will
|
||||||
|
be stronger.
|
||||||
|
|
||||||
|
Except where noted below, we speak only for ourselves, and not for any company
|
||||||
|
we might work for today, have in the past, or will in the future.
|
||||||
|
|
||||||
|
- Bjorn Andersson (Linaro)
|
||||||
|
- Andrea Arcangeli (Red Hat)
|
||||||
|
- Neil Armstrong
|
||||||
|
- Jens Axboe
|
||||||
|
- Pablo Neira Ayuso
|
||||||
|
- Khalid Aziz
|
||||||
|
- Ralf Baechle
|
||||||
|
- Felipe Balbi
|
||||||
|
- Arnd Bergmann
|
||||||
|
- Ard Biesheuvel
|
||||||
|
- Paolo Bonzini (Red Hat)
|
||||||
|
- Christian Borntraeger
|
||||||
|
- Mark Brown (Linaro)
|
||||||
|
- Paul Burton
|
||||||
|
- Javier Martinez Canillas
|
||||||
|
- Rob Clark
|
||||||
|
- Jonathan Corbet
|
||||||
|
- Vivien Didelot (Savoir-faire Linux)
|
||||||
|
- Hans de Goede (Red Hat)
|
||||||
|
- Mel Gorman (SUSE)
|
||||||
|
- Sven Eckelmann
|
||||||
|
- Alex Elder (Linaro)
|
||||||
|
- Fabio Estevam
|
||||||
|
- Larry Finger
|
||||||
|
- Bhumika Goyal
|
||||||
|
- Andy Gross
|
||||||
|
- Juergen Gross
|
||||||
|
- Shawn Guo
|
||||||
|
- Ulf Hansson
|
||||||
|
- Tejun Heo
|
||||||
|
- Rob Herring
|
||||||
|
- Masami Hiramatsu
|
||||||
|
- Michal Hocko
|
||||||
|
- Simon Horman
|
||||||
|
- Johan Hovold (Hovold Consulting AB)
|
||||||
|
- Christophe JAILLET
|
||||||
|
- Olof Johansson
|
||||||
|
- Lee Jones (Linaro)
|
||||||
|
- Heiner Kallweit
|
||||||
|
- Srinivas Kandagatla
|
||||||
|
- Jan Kara
|
||||||
|
- Shuah Khan (Samsung)
|
||||||
|
- David Kershner
|
||||||
|
- Jaegeuk Kim
|
||||||
|
- Namhyung Kim
|
||||||
|
- Colin Ian King
|
||||||
|
- Jeff Kirsher
|
||||||
|
- Greg Kroah-Hartman (Linux Foundation)
|
||||||
|
- Christian König
|
||||||
|
- Vinod Koul
|
||||||
|
- Krzysztof Kozlowski
|
||||||
|
- Viresh Kumar
|
||||||
|
- Aneesh Kumar K.V
|
||||||
|
- Julia Lawall
|
||||||
|
- Doug Ledford (Red Hat)
|
||||||
|
- Chuck Lever (Oracle)
|
||||||
|
- Daniel Lezcano
|
||||||
|
- Shaohua Li
|
||||||
|
- Xin Long (Red Hat)
|
||||||
|
- Tony Luck
|
||||||
|
- Mike Marshall
|
||||||
|
- Chris Mason
|
||||||
|
- Paul E. McKenney
|
||||||
|
- David S. Miller
|
||||||
|
- Ingo Molnar
|
||||||
|
- Kuninori Morimoto
|
||||||
|
- Borislav Petkov
|
||||||
|
- Jiri Pirko
|
||||||
|
- Josh Poimboeuf
|
||||||
|
- Sebastian Reichel (Collabora)
|
||||||
|
- Guenter Roeck
|
||||||
|
- Joerg Roedel
|
||||||
|
- Leon Romanovsky
|
||||||
|
- Steven Rostedt (VMware)
|
||||||
|
- Ivan Safonov
|
||||||
|
- Ivan Safonov
|
||||||
|
- Anna Schumaker
|
||||||
|
- Jes Sorensen
|
||||||
|
- K.Y. Srinivasan
|
||||||
|
- Heiko Stuebner
|
||||||
|
- Jiri Kosina (SUSE)
|
||||||
|
- Dmitry Torokhov
|
||||||
|
- Linus Torvalds
|
||||||
|
- Thierry Reding
|
||||||
|
- Rik van Riel
|
||||||
|
- Geert Uytterhoeven (Glider bvba)
|
||||||
|
- Daniel Vetter
|
||||||
|
- Linus Walleij
|
||||||
|
- Richard Weinberger
|
||||||
|
- Dan Williams
|
||||||
|
- Rafael J. Wysocki
|
||||||
|
- Arvind Yadav
|
||||||
|
- Masahiro Yamada
|
||||||
|
- Wei Yongjun
|
||||||
|
- Lv Zheng
|
33
MAINTAINERS
33
MAINTAINERS
|
@ -5265,7 +5265,8 @@ S: Maintained
|
||||||
F: drivers/iommu/exynos-iommu.c
|
F: drivers/iommu/exynos-iommu.c
|
||||||
|
|
||||||
EZchip NPS platform support
|
EZchip NPS platform support
|
||||||
M: Noam Camus <noamc@ezchip.com>
|
M: Elad Kanfi <eladkan@mellanox.com>
|
||||||
|
M: Vineet Gupta <vgupta@synopsys.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/arc/plat-eznps
|
F: arch/arc/plat-eznps
|
||||||
F: arch/arc/boot/dts/eznps.dts
|
F: arch/arc/boot/dts/eznps.dts
|
||||||
|
@ -5351,9 +5352,7 @@ M: "J. Bruce Fields" <bfields@fieldses.org>
|
||||||
L: linux-fsdevel@vger.kernel.org
|
L: linux-fsdevel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/fcntl.h
|
F: include/linux/fcntl.h
|
||||||
F: include/linux/fs.h
|
|
||||||
F: include/uapi/linux/fcntl.h
|
F: include/uapi/linux/fcntl.h
|
||||||
F: include/uapi/linux/fs.h
|
|
||||||
F: fs/fcntl.c
|
F: fs/fcntl.c
|
||||||
F: fs/locks.c
|
F: fs/locks.c
|
||||||
|
|
||||||
|
@ -5362,6 +5361,8 @@ M: Alexander Viro <viro@zeniv.linux.org.uk>
|
||||||
L: linux-fsdevel@vger.kernel.org
|
L: linux-fsdevel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: fs/*
|
F: fs/*
|
||||||
|
F: include/linux/fs.h
|
||||||
|
F: include/uapi/linux/fs.h
|
||||||
|
|
||||||
FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
||||||
M: Riku Voipio <riku.voipio@iki.fi>
|
M: Riku Voipio <riku.voipio@iki.fi>
|
||||||
|
@ -6745,7 +6746,7 @@ F: Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
|
||||||
F: drivers/auxdisplay/img-ascii-lcd.c
|
F: drivers/auxdisplay/img-ascii-lcd.c
|
||||||
|
|
||||||
IMGTEC IR DECODER DRIVER
|
IMGTEC IR DECODER DRIVER
|
||||||
M: James Hogan <james.hogan@imgtec.com>
|
M: James Hogan <jhogan@kernel.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/rc/img-ir/
|
F: drivers/media/rc/img-ir/
|
||||||
|
|
||||||
|
@ -7569,7 +7570,7 @@ F: arch/arm64/include/asm/kvm*
|
||||||
F: arch/arm64/kvm/
|
F: arch/arm64/kvm/
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
|
KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
|
||||||
M: James Hogan <james.hogan@imgtec.com>
|
M: James Hogan <jhogan@kernel.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@linux-mips.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/mips/include/uapi/asm/kvm*
|
F: arch/mips/include/uapi/asm/kvm*
|
||||||
|
@ -7577,7 +7578,7 @@ F: arch/mips/include/asm/kvm*
|
||||||
F: arch/mips/kvm/
|
F: arch/mips/kvm/
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE FOR POWERPC (KVM/powerpc)
|
KERNEL VIRTUAL MACHINE FOR POWERPC (KVM/powerpc)
|
||||||
M: Alexander Graf <agraf@suse.com>
|
M: Paul Mackerras <paulus@ozlabs.org>
|
||||||
L: kvm-ppc@vger.kernel.org
|
L: kvm-ppc@vger.kernel.org
|
||||||
W: http://www.linux-kvm.org/
|
W: http://www.linux-kvm.org/
|
||||||
T: git git://github.com/agraf/linux-2.6.git
|
T: git git://github.com/agraf/linux-2.6.git
|
||||||
|
@ -8271,6 +8272,12 @@ L: libertas-dev@lists.infradead.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: drivers/net/wireless/marvell/libertas/
|
F: drivers/net/wireless/marvell/libertas/
|
||||||
|
|
||||||
|
MARVELL MACCHIATOBIN SUPPORT
|
||||||
|
M: Russell King <rmk@armlinux.org.uk>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts
|
||||||
|
|
||||||
MARVELL MV643XX ETHERNET DRIVER
|
MARVELL MV643XX ETHERNET DRIVER
|
||||||
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
@ -8892,7 +8899,7 @@ F: Documentation/devicetree/bindings/media/meson-ao-cec.txt
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
|
||||||
METAG ARCHITECTURE
|
METAG ARCHITECTURE
|
||||||
M: James Hogan <james.hogan@imgtec.com>
|
M: James Hogan <jhogan@kernel.org>
|
||||||
L: linux-metag@vger.kernel.org
|
L: linux-metag@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag.git
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
|
@ -9213,7 +9220,6 @@ F: include/linux/isicom.h
|
||||||
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
|
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
|
||||||
M: Bin Liu <b-liu@ti.com>
|
M: Bin Liu <b-liu@ti.com>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/usb/musb/
|
F: drivers/usb/musb/
|
||||||
|
|
||||||
|
@ -9361,7 +9367,7 @@ NETWORK BLOCK DEVICE (NBD)
|
||||||
M: Josef Bacik <jbacik@fb.com>
|
M: Josef Bacik <jbacik@fb.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
L: linux-block@vger.kernel.org
|
L: linux-block@vger.kernel.org
|
||||||
L: nbd-general@lists.sourceforge.net
|
L: nbd@other.debian.org
|
||||||
F: Documentation/blockdev/nbd.txt
|
F: Documentation/blockdev/nbd.txt
|
||||||
F: drivers/block/nbd.c
|
F: drivers/block/nbd.c
|
||||||
F: include/uapi/linux/nbd.h
|
F: include/uapi/linux/nbd.h
|
||||||
|
@ -10180,7 +10186,6 @@ F: Documentation/parport*.txt
|
||||||
|
|
||||||
PARAVIRT_OPS INTERFACE
|
PARAVIRT_OPS INTERFACE
|
||||||
M: Juergen Gross <jgross@suse.com>
|
M: Juergen Gross <jgross@suse.com>
|
||||||
M: Chris Wright <chrisw@sous-sol.org>
|
|
||||||
M: Alok Kataria <akataria@vmware.com>
|
M: Alok Kataria <akataria@vmware.com>
|
||||||
M: Rusty Russell <rusty@rustcorp.com.au>
|
M: Rusty Russell <rusty@rustcorp.com.au>
|
||||||
L: virtualization@lists.linux-foundation.org
|
L: virtualization@lists.linux-foundation.org
|
||||||
|
@ -10560,6 +10565,8 @@ M: Peter Zijlstra <peterz@infradead.org>
|
||||||
M: Ingo Molnar <mingo@redhat.com>
|
M: Ingo Molnar <mingo@redhat.com>
|
||||||
M: Arnaldo Carvalho de Melo <acme@kernel.org>
|
M: Arnaldo Carvalho de Melo <acme@kernel.org>
|
||||||
R: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
R: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
|
R: Jiri Olsa <jolsa@redhat.com>
|
||||||
|
R: Namhyung Kim <namhyung@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -12938,9 +12945,9 @@ F: drivers/mmc/host/dw_mmc*
|
||||||
SYNOPSYS HSDK RESET CONTROLLER DRIVER
|
SYNOPSYS HSDK RESET CONTROLLER DRIVER
|
||||||
M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
|
M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/reset/reset-hsdk-v1.c
|
F: drivers/reset/reset-hsdk.c
|
||||||
F: include/dt-bindings/reset/snps,hsdk-v1-reset.h
|
F: include/dt-bindings/reset/snps,hsdk-reset.h
|
||||||
F: Documentation/devicetree/bindings/reset/snps,hsdk-v1-reset.txt
|
F: Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt
|
||||||
|
|
||||||
SYSTEM CONFIGURATION (SYSCON)
|
SYSTEM CONFIGURATION (SYSCON)
|
||||||
M: Lee Jones <lee.jones@linaro.org>
|
M: Lee Jones <lee.jones@linaro.org>
|
||||||
|
|
18
Makefile
18
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 14
|
PATCHLEVEL = 14
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc7
|
||||||
NAME = Fearless Coyote
|
NAME = Fearless Coyote
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -130,8 +130,8 @@ endif
|
||||||
ifneq ($(KBUILD_OUTPUT),)
|
ifneq ($(KBUILD_OUTPUT),)
|
||||||
# check that the output directory actually exists
|
# check that the output directory actually exists
|
||||||
saved-output := $(KBUILD_OUTPUT)
|
saved-output := $(KBUILD_OUTPUT)
|
||||||
$(shell [ -d $(KBUILD_OUTPUT) ] || mkdir -p $(KBUILD_OUTPUT))
|
KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
|
||||||
KBUILD_OUTPUT := $(realpath $(KBUILD_OUTPUT))
|
&& /bin/pwd)
|
||||||
$(if $(KBUILD_OUTPUT),, \
|
$(if $(KBUILD_OUTPUT),, \
|
||||||
$(error failed to create output directory "$(saved-output)"))
|
$(error failed to create output directory "$(saved-output)"))
|
||||||
|
|
||||||
|
@ -697,11 +697,11 @@ KBUILD_CFLAGS += $(stackp-flag)
|
||||||
|
|
||||||
ifeq ($(cc-name),clang)
|
ifeq ($(cc-name),clang)
|
||||||
ifneq ($(CROSS_COMPILE),)
|
ifneq ($(CROSS_COMPILE),)
|
||||||
CLANG_TARGET := -target $(notdir $(CROSS_COMPILE:%-=%))
|
CLANG_TARGET := --target=$(notdir $(CROSS_COMPILE:%-=%))
|
||||||
GCC_TOOLCHAIN := $(realpath $(dir $(shell which $(LD)))/..)
|
GCC_TOOLCHAIN := $(realpath $(dir $(shell which $(LD)))/..)
|
||||||
endif
|
endif
|
||||||
ifneq ($(GCC_TOOLCHAIN),)
|
ifneq ($(GCC_TOOLCHAIN),)
|
||||||
CLANG_GCC_TC := -gcc-toolchain $(GCC_TOOLCHAIN)
|
CLANG_GCC_TC := --gcc-toolchain=$(GCC_TOOLCHAIN)
|
||||||
endif
|
endif
|
||||||
KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
||||||
KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
||||||
|
@ -933,7 +933,11 @@ ifdef CONFIG_STACK_VALIDATION
|
||||||
ifeq ($(has_libelf),1)
|
ifeq ($(has_libelf),1)
|
||||||
objtool_target := tools/objtool FORCE
|
objtool_target := tools/objtool FORCE
|
||||||
else
|
else
|
||||||
$(warning "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
|
ifdef CONFIG_ORC_UNWINDER
|
||||||
|
$(error "Cannot generate ORC metadata for CONFIG_ORC_UNWINDER=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
|
||||||
|
else
|
||||||
|
$(warning "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel")
|
||||||
|
endif
|
||||||
SKIP_STACK_VALIDATION := 1
|
SKIP_STACK_VALIDATION := 1
|
||||||
export SKIP_STACK_VALIDATION
|
export SKIP_STACK_VALIDATION
|
||||||
endif
|
endif
|
||||||
|
@ -1395,7 +1399,7 @@ help:
|
||||||
@echo ' Build, install, and boot kernel before'
|
@echo ' Build, install, and boot kernel before'
|
||||||
@echo ' running kselftest on it'
|
@echo ' running kselftest on it'
|
||||||
@echo ' kselftest-clean - Remove all generated kselftest files'
|
@echo ' kselftest-clean - Remove all generated kselftest files'
|
||||||
@echo ' kselftest-merge - Merge all the config dependencies of kselftest to existed'
|
@echo ' kselftest-merge - Merge all the config dependencies of kselftest to existing'
|
||||||
@echo ' .config.'
|
@echo ' .config.'
|
||||||
@echo ''
|
@echo ''
|
||||||
@echo 'Userspace tools targets:'
|
@echo 'Userspace tools targets:'
|
||||||
|
|
|
@ -937,9 +937,6 @@ config STRICT_MODULE_RWX
|
||||||
and non-text memory will be made non-executable. This provides
|
and non-text memory will be made non-executable. This provides
|
||||||
protection against certain security exploits (e.g. writing to text)
|
protection against certain security exploits (e.g. writing to text)
|
||||||
|
|
||||||
config ARCH_WANT_RELAX_ORDER
|
|
||||||
bool
|
|
||||||
|
|
||||||
config ARCH_HAS_REFCOUNT
|
config ARCH_HAS_REFCOUNT
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/mm_types.h>
|
#include <linux/mm_types.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/compiler.h>
|
#include <asm/compiler.h>
|
||||||
|
|
|
@ -181,10 +181,10 @@ alcor_init_irq(void)
|
||||||
* comes in on. This makes interrupt processing much easier.
|
* comes in on. This makes interrupt processing much easier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
alcor_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
alcor_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[7][5] __initdata = {
|
static char irq_tab[7][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
/* note: IDSEL 17 is XLT only */
|
/* note: IDSEL 17 is XLT only */
|
||||||
{16+13, 16+13, 16+13, 16+13, 16+13}, /* IdSel 17, TULIP */
|
{16+13, 16+13, 16+13, 16+13, 16+13}, /* IdSel 17, TULIP */
|
||||||
|
|
|
@ -173,10 +173,10 @@ pc164_init_irq(void)
|
||||||
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
|
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int __init
|
static inline int
|
||||||
eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[5][5] __initdata = {
|
static char irq_tab[5][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J25 */
|
{16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J25 */
|
||||||
{16+1, 16+1, 16+6, 16+10, 16+14}, /* IdSel 7, slot 1, J26 */
|
{16+1, 16+1, 16+6, 16+10, 16+14}, /* IdSel 7, slot 1, J26 */
|
||||||
|
@ -203,10 +203,10 @@ eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
|
* because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int __init
|
static inline int
|
||||||
cabriolet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
cabriolet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[5][5] __initdata = {
|
static char irq_tab[5][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+2, 16+2, 16+7, 16+11, 16+15}, /* IdSel 5, slot 2, J21 */
|
{ 16+2, 16+2, 16+7, 16+11, 16+15}, /* IdSel 5, slot 2, J21 */
|
||||||
{ 16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J19 */
|
{ 16+0, 16+0, 16+5, 16+9, 16+13}, /* IdSel 6, slot 0, J19 */
|
||||||
|
@ -287,10 +287,10 @@ cia_cab_init_pci(void)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int __init
|
static inline int
|
||||||
alphapc164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
alphapc164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[7][5] __initdata = {
|
static char irq_tab[7][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+2, 16+2, 16+9, 16+13, 16+17}, /* IdSel 5, slot 2, J20 */
|
{ 16+2, 16+2, 16+9, 16+13, 16+17}, /* IdSel 5, slot 2, J20 */
|
||||||
{ 16+0, 16+0, 16+7, 16+11, 16+15}, /* IdSel 6, slot 0, J29 */
|
{ 16+0, 16+0, 16+7, 16+11, 16+15}, /* IdSel 6, slot 0, J29 */
|
||||||
|
|
|
@ -356,7 +356,7 @@ clipper_init_irq(void)
|
||||||
* 10 64 bit PCI option slot 3 (not bus 0)
|
* 10 64 bit PCI option slot 3 (not bus 0)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
isa_irq_fixup(const struct pci_dev *dev, int irq)
|
isa_irq_fixup(const struct pci_dev *dev, int irq)
|
||||||
{
|
{
|
||||||
u8 irq8;
|
u8 irq8;
|
||||||
|
@ -372,10 +372,10 @@ isa_irq_fixup(const struct pci_dev *dev, int irq)
|
||||||
return irq8 & 0xf;
|
return irq8 & 0xf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[6][5] __initdata = {
|
static char irq_tab[6][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 5 ISA Bridge */
|
{ -1, -1, -1, -1, -1}, /* IdSel 5 ISA Bridge */
|
||||||
{ 16+ 3, 16+ 3, 16+ 2, 16+ 2, 16+ 2}, /* IdSel 6 SCSI builtin*/
|
{ 16+ 3, 16+ 3, 16+ 2, 16+ 2, 16+ 2}, /* IdSel 6 SCSI builtin*/
|
||||||
|
@ -394,10 +394,10 @@ dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return isa_irq_fixup(dev, irq);
|
return isa_irq_fixup(dev, irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[13][5] __initdata = {
|
static char irq_tab[13][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 45, 45, 45, 45, 45}, /* IdSel 3 21143 PCI1 */
|
{ 45, 45, 45, 45, 45}, /* IdSel 3 21143 PCI1 */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 4 unused */
|
{ -1, -1, -1, -1, -1}, /* IdSel 4 unused */
|
||||||
|
@ -423,7 +423,7 @@ monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
monet_swizzle(struct pci_dev *dev, u8 *pinp)
|
monet_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
struct pci_controller *hose = dev->sysdata;
|
struct pci_controller *hose = dev->sysdata;
|
||||||
|
@ -456,10 +456,10 @@ monet_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
return slot;
|
return slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[13][5] __initdata = {
|
static char irq_tab[13][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 7 ISA Bridge */
|
{ -1, -1, -1, -1, -1}, /* IdSel 7 ISA Bridge */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 8 unused */
|
{ -1, -1, -1, -1, -1}, /* IdSel 8 unused */
|
||||||
|
@ -478,10 +478,10 @@ webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
clipper_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
clipper_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[7][5] __initdata = {
|
static char irq_tab[7][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+ 8, 16+ 8, 16+ 9, 16+10, 16+11}, /* IdSel 1 slot 1 */
|
{ 16+ 8, 16+ 8, 16+ 9, 16+10, 16+11}, /* IdSel 1 slot 1 */
|
||||||
{ 16+12, 16+12, 16+13, 16+14, 16+15}, /* IdSel 2 slot 2 */
|
{ 16+12, 16+12, 16+13, 16+14, 16+15}, /* IdSel 2 slot 2 */
|
||||||
|
|
|
@ -167,10 +167,10 @@ eb64p_init_irq(void)
|
||||||
* comes in on. This makes interrupt processing much easier.
|
* comes in on. This makes interrupt processing much easier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
eb64p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
eb64p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[5][5] __initdata = {
|
static char irq_tab[5][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{16+7, 16+7, 16+7, 16+7, 16+7}, /* IdSel 5, slot ?, ?? */
|
{16+7, 16+7, 16+7, 16+7, 16+7}, /* IdSel 5, slot ?, ?? */
|
||||||
{16+0, 16+0, 16+2, 16+4, 16+9}, /* IdSel 6, slot ?, ?? */
|
{16+0, 16+0, 16+2, 16+4, 16+9}, /* IdSel 6, slot ?, ?? */
|
||||||
|
|
|
@ -141,7 +141,7 @@ eiger_init_irq(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
u8 irq_orig;
|
u8 irq_orig;
|
||||||
|
@ -158,7 +158,7 @@ eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return irq_orig - 0x80;
|
return irq_orig - 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
eiger_swizzle(struct pci_dev *dev, u8 *pinp)
|
eiger_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
struct pci_controller *hose = dev->sysdata;
|
struct pci_controller *hose = dev->sysdata;
|
||||||
|
|
|
@ -149,10 +149,10 @@ miata_init_irq(void)
|
||||||
* comes in on. This makes interrupt processing much easier.
|
* comes in on. This makes interrupt processing much easier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
miata_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
miata_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[18][5] __initdata = {
|
static char irq_tab[18][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{16+ 8, 16+ 8, 16+ 8, 16+ 8, 16+ 8}, /* IdSel 14, DC21142 */
|
{16+ 8, 16+ 8, 16+ 8, 16+ 8, 16+ 8}, /* IdSel 14, DC21142 */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 15, EIDE */
|
{ -1, -1, -1, -1, -1}, /* IdSel 15, EIDE */
|
||||||
|
@ -196,7 +196,7 @@ miata_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return COMMON_TABLE_LOOKUP;
|
return COMMON_TABLE_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
miata_swizzle(struct pci_dev *dev, u8 *pinp)
|
miata_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int slot, pin = *pinp;
|
int slot, pin = *pinp;
|
||||||
|
|
|
@ -145,10 +145,10 @@ mikasa_init_irq(void)
|
||||||
* comes in on. This makes interrupt processing much easier.
|
* comes in on. This makes interrupt processing much easier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
mikasa_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
mikasa_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[8][5] __initdata = {
|
static char irq_tab[8][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{16+12, 16+12, 16+12, 16+12, 16+12}, /* IdSel 17, SCSI */
|
{16+12, 16+12, 16+12, 16+12, 16+12}, /* IdSel 17, SCSI */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 18, PCEB */
|
{ -1, -1, -1, -1, -1}, /* IdSel 18, PCEB */
|
||||||
|
|
|
@ -62,7 +62,7 @@ nautilus_init_irq(void)
|
||||||
common_init_isa_dma();
|
common_init_isa_dma();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
nautilus_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
nautilus_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
/* Preserve the IRQ set up by the console. */
|
/* Preserve the IRQ set up by the console. */
|
||||||
|
|
|
@ -193,10 +193,10 @@ noritake_init_irq(void)
|
||||||
* comes in on. This makes interrupt processing much easier.
|
* comes in on. This makes interrupt processing much easier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
noritake_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
noritake_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[15][5] __initdata = {
|
static char irq_tab[15][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
/* note: IDSELs 16, 17, and 25 are CORELLE only */
|
/* note: IDSELs 16, 17, and 25 are CORELLE only */
|
||||||
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* IdSel 16, QLOGIC */
|
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* IdSel 16, QLOGIC */
|
||||||
|
@ -221,7 +221,7 @@ noritake_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return COMMON_TABLE_LOOKUP;
|
return COMMON_TABLE_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
noritake_swizzle(struct pci_dev *dev, u8 *pinp)
|
noritake_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int slot, pin = *pinp;
|
int slot, pin = *pinp;
|
||||||
|
|
|
@ -221,10 +221,10 @@ rawhide_init_irq(void)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
rawhide_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
rawhide_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[5][5] __initdata = {
|
static char irq_tab[5][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+16, 16+16, 16+16, 16+16, 16+16}, /* IdSel 1 SCSI PCI 1 */
|
{ 16+16, 16+16, 16+16, 16+16, 16+16}, /* IdSel 1 SCSI PCI 1 */
|
||||||
{ 16+ 0, 16+ 0, 16+ 1, 16+ 2, 16+ 3}, /* IdSel 2 slot 2 */
|
{ 16+ 0, 16+ 0, 16+ 1, 16+ 2, 16+ 3}, /* IdSel 2 slot 2 */
|
||||||
|
|
|
@ -117,10 +117,10 @@ ruffian_kill_arch (int mode)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
ruffian_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
ruffian_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[11][5] __initdata = {
|
static char irq_tab[11][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{-1, -1, -1, -1, -1}, /* IdSel 13, 21052 */
|
{-1, -1, -1, -1, -1}, /* IdSel 13, 21052 */
|
||||||
{-1, -1, -1, -1, -1}, /* IdSel 14, SIO */
|
{-1, -1, -1, -1, -1}, /* IdSel 14, SIO */
|
||||||
|
@ -139,7 +139,7 @@ ruffian_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return COMMON_TABLE_LOOKUP;
|
return COMMON_TABLE_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
ruffian_swizzle(struct pci_dev *dev, u8 *pinp)
|
ruffian_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int slot, pin = *pinp;
|
int slot, pin = *pinp;
|
||||||
|
|
|
@ -142,7 +142,7 @@ rx164_init_irq(void)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
rx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
rx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -156,7 +156,7 @@ rx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{ 16+1, 16+1, 16+6, 16+11, 16+16}, /* IdSel 10, slot 4 */
|
{ 16+1, 16+1, 16+6, 16+11, 16+16}, /* IdSel 10, slot 4 */
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
static char irq_tab[6][5] __initdata = {
|
static char irq_tab[6][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+0, 16+0, 16+6, 16+11, 16+16}, /* IdSel 5, slot 0 */
|
{ 16+0, 16+0, 16+6, 16+11, 16+16}, /* IdSel 5, slot 0 */
|
||||||
{ 16+1, 16+1, 16+7, 16+12, 16+17}, /* IdSel 6, slot 1 */
|
{ 16+1, 16+1, 16+7, 16+12, 16+17}, /* IdSel 6, slot 1 */
|
||||||
|
|
|
@ -192,10 +192,10 @@ sable_init_irq(void)
|
||||||
* with the values in the irq swizzling tables above.
|
* with the values in the irq swizzling tables above.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
sable_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
sable_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[9][5] __initdata = {
|
static char irq_tab[9][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 32+0, 32+0, 32+0, 32+0, 32+0}, /* IdSel 0, TULIP */
|
{ 32+0, 32+0, 32+0, 32+0, 32+0}, /* IdSel 0, TULIP */
|
||||||
{ 32+1, 32+1, 32+1, 32+1, 32+1}, /* IdSel 1, SCSI */
|
{ 32+1, 32+1, 32+1, 32+1, 32+1}, /* IdSel 1, SCSI */
|
||||||
|
@ -374,10 +374,10 @@ lynx_init_irq(void)
|
||||||
* with the values in the irq swizzling tables above.
|
* with the values in the irq swizzling tables above.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
lynx_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
lynx_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[19][5] __initdata = {
|
static char irq_tab[19][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 13, PCEB */
|
{ -1, -1, -1, -1, -1}, /* IdSel 13, PCEB */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 14, PPB */
|
{ -1, -1, -1, -1, -1}, /* IdSel 14, PPB */
|
||||||
|
@ -404,7 +404,7 @@ lynx_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return COMMON_TABLE_LOOKUP;
|
return COMMON_TABLE_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
lynx_swizzle(struct pci_dev *dev, u8 *pinp)
|
lynx_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int slot, pin = *pinp;
|
int slot, pin = *pinp;
|
||||||
|
|
|
@ -144,7 +144,7 @@ sio_fixup_irq_levels(unsigned int level_bits)
|
||||||
outb((level_bits >> 8) & 0xff, 0x4d1);
|
outb((level_bits >> 8) & 0xff, 0x4d1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int __init
|
static inline int
|
||||||
noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -165,7 +165,7 @@ noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
* that they use the default INTA line, if they are interrupt
|
* that they use the default INTA line, if they are interrupt
|
||||||
* driven at all).
|
* driven at all).
|
||||||
*/
|
*/
|
||||||
static char irq_tab[][5] __initdata = {
|
static char irq_tab[][5] = {
|
||||||
/*INT A B C D */
|
/*INT A B C D */
|
||||||
{ 3, 3, 3, 3, 3}, /* idsel 6 (53c810) */
|
{ 3, 3, 3, 3, 3}, /* idsel 6 (53c810) */
|
||||||
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
|
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
|
||||||
|
@ -183,10 +183,10 @@ noname_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return irq >= 0 ? tmp : -1;
|
return irq >= 0 ? tmp : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int __init
|
static inline int
|
||||||
p2k_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
p2k_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[][5] __initdata = {
|
static char irq_tab[][5] = {
|
||||||
/*INT A B C D */
|
/*INT A B C D */
|
||||||
{ 0, 0, -1, -1, -1}, /* idsel 6 (53c810) */
|
{ 0, 0, -1, -1, -1}, /* idsel 6 (53c810) */
|
||||||
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
|
{-1, -1, -1, -1, -1}, /* idsel 7 (SIO: PCI/ISA bridge) */
|
||||||
|
|
|
@ -94,10 +94,10 @@ sx164_init_irq(void)
|
||||||
* 9 32 bit PCI option slot 3
|
* 9 32 bit PCI option slot 3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
sx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
sx164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[5][5] __initdata = {
|
static char irq_tab[5][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ 16+ 9, 16+ 9, 16+13, 16+17, 16+21}, /* IdSel 5 slot 2 J17 */
|
{ 16+ 9, 16+ 9, 16+13, 16+17, 16+21}, /* IdSel 5 slot 2 J17 */
|
||||||
{ 16+11, 16+11, 16+15, 16+19, 16+23}, /* IdSel 6 slot 0 J19 */
|
{ 16+11, 16+11, 16+15, 16+19, 16+23}, /* IdSel 6 slot 0 J19 */
|
||||||
|
|
|
@ -155,10 +155,10 @@ takara_init_irq(void)
|
||||||
* assign it whatever the hell IRQ we like and it doesn't matter.
|
* assign it whatever the hell IRQ we like and it doesn't matter.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
takara_map_irq_srm(const struct pci_dev *dev, u8 slot, u8 pin)
|
takara_map_irq_srm(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[15][5] __initdata = {
|
static char irq_tab[15][5] = {
|
||||||
{ 16+3, 16+3, 16+3, 16+3, 16+3}, /* slot 6 == device 3 */
|
{ 16+3, 16+3, 16+3, 16+3, 16+3}, /* slot 6 == device 3 */
|
||||||
{ 16+2, 16+2, 16+2, 16+2, 16+2}, /* slot 7 == device 2 */
|
{ 16+2, 16+2, 16+2, 16+2, 16+2}, /* slot 7 == device 2 */
|
||||||
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* slot 8 == device 1 */
|
{ 16+1, 16+1, 16+1, 16+1, 16+1}, /* slot 8 == device 1 */
|
||||||
|
@ -210,7 +210,7 @@ takara_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
return COMMON_TABLE_LOOKUP;
|
return COMMON_TABLE_LOOKUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 __init
|
static u8
|
||||||
takara_swizzle(struct pci_dev *dev, u8 *pinp)
|
takara_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int slot = PCI_SLOT(dev->devfn);
|
int slot = PCI_SLOT(dev->devfn);
|
||||||
|
|
|
@ -288,10 +288,10 @@ wildfire_device_interrupt(unsigned long vector)
|
||||||
* 7 64 bit PCI 1 option slot 7
|
* 7 64 bit PCI 1 option slot 7
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int __init
|
static int
|
||||||
wildfire_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
wildfire_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
{
|
{
|
||||||
static char irq_tab[8][5] __initdata = {
|
static char irq_tab[8][5] = {
|
||||||
/*INT INTA INTB INTC INTD */
|
/*INT INTA INTB INTC INTD */
|
||||||
{ -1, -1, -1, -1, -1}, /* IdSel 0 ISA Bridge */
|
{ -1, -1, -1, -1, -1}, /* IdSel 0 ISA Bridge */
|
||||||
{ 36, 36, 36+1, 36+2, 36+3}, /* IdSel 1 SCSI builtin */
|
{ 36, 36, 36+1, 36+2, 36+3}, /* IdSel 1 SCSI builtin */
|
||||||
|
|
|
@ -24,7 +24,7 @@ config ARC
|
||||||
select GENERIC_SMP_IDLE_THREAD
|
select GENERIC_SMP_IDLE_THREAD
|
||||||
select HAVE_ARCH_KGDB
|
select HAVE_ARCH_KGDB
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_FUTEX_CMPXCHG
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||||
select HAVE_IOREMAP_PROT
|
select HAVE_IOREMAP_PROT
|
||||||
select HAVE_KPROBES
|
select HAVE_KPROBES
|
||||||
select HAVE_KRETPROBES
|
select HAVE_KRETPROBES
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
#
|
#
|
||||||
|
|
||||||
UTS_MACHINE := arc
|
|
||||||
|
|
||||||
ifeq ($(CROSS_COMPILE),)
|
ifeq ($(CROSS_COMPILE),)
|
||||||
ifndef CONFIG_CPU_BIG_ENDIAN
|
ifndef CONFIG_CPU_BIG_ENDIAN
|
||||||
CROSS_COMPILE := arc-linux-
|
CROSS_COMPILE := arc-linux-
|
||||||
|
|
|
@ -44,7 +44,14 @@
|
||||||
|
|
||||||
mmcclk: mmcclk {
|
mmcclk: mmcclk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <50000000>;
|
/*
|
||||||
|
* DW sdio controller has external ciu clock divider
|
||||||
|
* controlled via register in SDIO IP. It divides
|
||||||
|
* sdio_ref_clk (which comes from CGU) by 16 for
|
||||||
|
* default. So default mmcclk clock (which comes
|
||||||
|
* to sdk_in) is 25000000 Hz.
|
||||||
|
*/
|
||||||
|
clock-frequency = <25000000>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
#include <dt-bindings/net/ti-dp83867.h>
|
#include <dt-bindings/net/ti-dp83867.h>
|
||||||
|
#include <dt-bindings/reset/snps,hsdk-reset.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "snps,hsdk";
|
model = "snps,hsdk";
|
||||||
|
@ -57,10 +58,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
core_clk: core-clk {
|
input_clk: input-clk {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <500000000>;
|
clock-frequency = <33333333>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu_intc: cpu-interrupt-controller {
|
cpu_intc: cpu-interrupt-controller {
|
||||||
|
@ -102,6 +103,19 @@
|
||||||
|
|
||||||
ranges = <0x00000000 0xf0000000 0x10000000>;
|
ranges = <0x00000000 0xf0000000 0x10000000>;
|
||||||
|
|
||||||
|
cgu_rst: reset-controller@8a0 {
|
||||||
|
compatible = "snps,hsdk-reset";
|
||||||
|
#reset-cells = <1>;
|
||||||
|
reg = <0x8A0 0x4>, <0xFF0 0x4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
core_clk: core-clk@0 {
|
||||||
|
compatible = "snps,hsdk-core-pll-clock";
|
||||||
|
reg = <0x00 0x10>, <0x14B8 0x4>;
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&input_clk>;
|
||||||
|
};
|
||||||
|
|
||||||
serial: serial@5000 {
|
serial: serial@5000 {
|
||||||
compatible = "snps,dw-apb-uart";
|
compatible = "snps,dw-apb-uart";
|
||||||
reg = <0x5000 0x100>;
|
reg = <0x5000 0x100>;
|
||||||
|
@ -120,7 +134,18 @@
|
||||||
|
|
||||||
mmcclk_ciu: mmcclk-ciu {
|
mmcclk_ciu: mmcclk-ciu {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <100000000>;
|
/*
|
||||||
|
* DW sdio controller has external ciu clock divider
|
||||||
|
* controlled via register in SDIO IP. Due to its
|
||||||
|
* unexpected default value (it should divide by 1
|
||||||
|
* but it divides by 8) SDIO IP uses wrong clock and
|
||||||
|
* works unstable (see STAR 9001204800)
|
||||||
|
* We switched to the minimum possible value of the
|
||||||
|
* divisor (div-by-2) in HSDK platform code.
|
||||||
|
* So add temporary fix and change clock frequency
|
||||||
|
* to 50000000 Hz until we fix dw sdio driver itself.
|
||||||
|
*/
|
||||||
|
clock-frequency = <50000000>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -141,6 +166,8 @@
|
||||||
clocks = <&gmacclk>;
|
clocks = <&gmacclk>;
|
||||||
clock-names = "stmmaceth";
|
clock-names = "stmmaceth";
|
||||||
phy-handle = <&phy0>;
|
phy-handle = <&phy0>;
|
||||||
|
resets = <&cgu_rst HSDK_ETH_RESET>;
|
||||||
|
reset-names = "stmmaceth";
|
||||||
|
|
||||||
mdio {
|
mdio {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
|
@ -105,7 +105,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -104,7 +104,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -107,7 +107,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -84,5 +84,5 @@ CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -72,7 +72,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -94,7 +94,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_DEBUG_SHIRQ=y
|
CONFIG_DEBUG_SHIRQ=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -98,7 +98,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_DEBUG_SHIRQ=y
|
CONFIG_DEBUG_SHIRQ=y
|
||||||
CONFIG_LOCKUP_DETECTOR=y
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
||||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
# CONFIG_DEBUG_PREEMPT is not set
|
# CONFIG_DEBUG_PREEMPT is not set
|
||||||
|
|
|
@ -98,6 +98,7 @@
|
||||||
|
|
||||||
/* Auxiliary registers */
|
/* Auxiliary registers */
|
||||||
#define AUX_IDENTITY 4
|
#define AUX_IDENTITY 4
|
||||||
|
#define AUX_EXEC_CTRL 8
|
||||||
#define AUX_INTR_VEC_BASE 0x25
|
#define AUX_INTR_VEC_BASE 0x25
|
||||||
#define AUX_VOL 0x5e
|
#define AUX_VOL 0x5e
|
||||||
|
|
||||||
|
@ -135,12 +136,12 @@ struct bcr_identity {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bcr_isa {
|
struct bcr_isa_arcv2 {
|
||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
unsigned int div_rem:4, pad2:4, ldd:1, unalign:1, atomic:1, be:1,
|
unsigned int div_rem:4, pad2:4, ldd:1, unalign:1, atomic:1, be:1,
|
||||||
pad1:11, atomic1:1, ver:8;
|
pad1:12, ver:8;
|
||||||
#else
|
#else
|
||||||
unsigned int ver:8, atomic1:1, pad1:11, be:1, atomic:1, unalign:1,
|
unsigned int ver:8, pad1:12, be:1, atomic:1, unalign:1,
|
||||||
ldd:1, pad2:4, div_rem:4;
|
ldd:1, pad2:4, div_rem:4;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -263,13 +264,13 @@ struct cpuinfo_arc {
|
||||||
struct cpuinfo_arc_mmu mmu;
|
struct cpuinfo_arc_mmu mmu;
|
||||||
struct cpuinfo_arc_bpu bpu;
|
struct cpuinfo_arc_bpu bpu;
|
||||||
struct bcr_identity core;
|
struct bcr_identity core;
|
||||||
struct bcr_isa isa;
|
struct bcr_isa_arcv2 isa;
|
||||||
const char *details, *name;
|
const char *details, *name;
|
||||||
unsigned int vec_base;
|
unsigned int vec_base;
|
||||||
struct cpuinfo_arc_ccm iccm, dccm;
|
struct cpuinfo_arc_ccm iccm, dccm;
|
||||||
struct {
|
struct {
|
||||||
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2,
|
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2,
|
||||||
fpu_sp:1, fpu_dp:1, pad2:6,
|
fpu_sp:1, fpu_dp:1, dual_iss_enb:1, dual_iss_exist:1, pad2:4,
|
||||||
debug:1, ap:1, smart:1, rtt:1, pad3:4,
|
debug:1, ap:1, smart:1, rtt:1, pad3:4,
|
||||||
timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4;
|
timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4;
|
||||||
} extn;
|
} extn;
|
||||||
|
|
|
@ -51,6 +51,7 @@ static const struct id_to_str arc_cpu_rel[] = {
|
||||||
{ 0x51, "R2.0" },
|
{ 0x51, "R2.0" },
|
||||||
{ 0x52, "R2.1" },
|
{ 0x52, "R2.1" },
|
||||||
{ 0x53, "R3.0" },
|
{ 0x53, "R3.0" },
|
||||||
|
{ 0x54, "R4.0" },
|
||||||
#endif
|
#endif
|
||||||
{ 0x00, NULL }
|
{ 0x00, NULL }
|
||||||
};
|
};
|
||||||
|
@ -62,6 +63,7 @@ static const struct id_to_str arc_cpu_nm[] = {
|
||||||
#else
|
#else
|
||||||
{ 0x40, "ARC EM" },
|
{ 0x40, "ARC EM" },
|
||||||
{ 0x50, "ARC HS38" },
|
{ 0x50, "ARC HS38" },
|
||||||
|
{ 0x54, "ARC HS48" },
|
||||||
#endif
|
#endif
|
||||||
{ 0x00, "Unknown" }
|
{ 0x00, "Unknown" }
|
||||||
};
|
};
|
||||||
|
@ -119,11 +121,11 @@ static void read_arc_build_cfg_regs(void)
|
||||||
struct bcr_generic bcr;
|
struct bcr_generic bcr;
|
||||||
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
||||||
const struct id_to_str *tbl;
|
const struct id_to_str *tbl;
|
||||||
|
struct bcr_isa_arcv2 isa;
|
||||||
|
|
||||||
FIX_PTR(cpu);
|
FIX_PTR(cpu);
|
||||||
|
|
||||||
READ_BCR(AUX_IDENTITY, cpu->core);
|
READ_BCR(AUX_IDENTITY, cpu->core);
|
||||||
READ_BCR(ARC_REG_ISA_CFG_BCR, cpu->isa);
|
|
||||||
|
|
||||||
for (tbl = &arc_cpu_rel[0]; tbl->id != 0; tbl++) {
|
for (tbl = &arc_cpu_rel[0]; tbl->id != 0; tbl++) {
|
||||||
if (cpu->core.family == tbl->id) {
|
if (cpu->core.family == tbl->id) {
|
||||||
|
@ -133,7 +135,7 @@ static void read_arc_build_cfg_regs(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (tbl = &arc_cpu_nm[0]; tbl->id != 0; tbl++) {
|
for (tbl = &arc_cpu_nm[0]; tbl->id != 0; tbl++) {
|
||||||
if ((cpu->core.family & 0xF0) == tbl->id)
|
if ((cpu->core.family & 0xF4) == tbl->id)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
cpu->name = tbl->str;
|
cpu->name = tbl->str;
|
||||||
|
@ -192,6 +194,14 @@ static void read_arc_build_cfg_regs(void)
|
||||||
cpu->bpu.full = bpu.ft;
|
cpu->bpu.full = bpu.ft;
|
||||||
cpu->bpu.num_cache = 256 << bpu.bce;
|
cpu->bpu.num_cache = 256 << bpu.bce;
|
||||||
cpu->bpu.num_pred = 2048 << bpu.pte;
|
cpu->bpu.num_pred = 2048 << bpu.pte;
|
||||||
|
|
||||||
|
if (cpu->core.family >= 0x54) {
|
||||||
|
unsigned int exec_ctrl;
|
||||||
|
|
||||||
|
READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
|
||||||
|
cpu->extn.dual_iss_exist = 1;
|
||||||
|
cpu->extn.dual_iss_enb = exec_ctrl & 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ_BCR(ARC_REG_AP_BCR, bcr);
|
READ_BCR(ARC_REG_AP_BCR, bcr);
|
||||||
|
@ -205,18 +215,25 @@ static void read_arc_build_cfg_regs(void)
|
||||||
|
|
||||||
cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt;
|
cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt;
|
||||||
|
|
||||||
|
READ_BCR(ARC_REG_ISA_CFG_BCR, isa);
|
||||||
|
|
||||||
/* some hacks for lack of feature BCR info in old ARC700 cores */
|
/* some hacks for lack of feature BCR info in old ARC700 cores */
|
||||||
if (is_isa_arcompact()) {
|
if (is_isa_arcompact()) {
|
||||||
if (!cpu->isa.ver) /* ISA BCR absent, use Kconfig info */
|
if (!isa.ver) /* ISA BCR absent, use Kconfig info */
|
||||||
cpu->isa.atomic = IS_ENABLED(CONFIG_ARC_HAS_LLSC);
|
cpu->isa.atomic = IS_ENABLED(CONFIG_ARC_HAS_LLSC);
|
||||||
else
|
else {
|
||||||
cpu->isa.atomic = cpu->isa.atomic1;
|
/* ARC700_BUILD only has 2 bits of isa info */
|
||||||
|
struct bcr_generic bcr = *(struct bcr_generic *)&isa;
|
||||||
|
cpu->isa.atomic = bcr.info & 1;
|
||||||
|
}
|
||||||
|
|
||||||
cpu->isa.be = IS_ENABLED(CONFIG_CPU_BIG_ENDIAN);
|
cpu->isa.be = IS_ENABLED(CONFIG_CPU_BIG_ENDIAN);
|
||||||
|
|
||||||
/* there's no direct way to distinguish 750 vs. 770 */
|
/* there's no direct way to distinguish 750 vs. 770 */
|
||||||
if (unlikely(cpu->core.family < 0x34 || cpu->mmu.ver < 3))
|
if (unlikely(cpu->core.family < 0x34 || cpu->mmu.ver < 3))
|
||||||
cpu->name = "ARC750";
|
cpu->name = "ARC750";
|
||||||
|
} else {
|
||||||
|
cpu->isa = isa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,10 +249,11 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
||||||
"\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
|
"\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
|
||||||
core->family, core->cpu_id, core->chip_id);
|
core->family, core->cpu_id, core->chip_id);
|
||||||
|
|
||||||
n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s\n",
|
n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n",
|
||||||
cpu_id, cpu->name, cpu->details,
|
cpu_id, cpu->name, cpu->details,
|
||||||
is_isa_arcompact() ? "ARCompact" : "ARCv2",
|
is_isa_arcompact() ? "ARCompact" : "ARCv2",
|
||||||
IS_AVAIL1(cpu->isa.be, "[Big-Endian]"));
|
IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
|
||||||
|
IS_AVAIL3(cpu->extn.dual_iss_exist, cpu->extn.dual_iss_enb, " Dual-Issue"));
|
||||||
|
|
||||||
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
|
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
|
||||||
IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
|
IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/irqdomain.h>
|
#include <linux/irqdomain.h>
|
||||||
|
#include <linux/export.h>
|
||||||
|
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/mach_desc.h>
|
#include <asm/mach_desc.h>
|
||||||
|
@ -30,6 +32,9 @@
|
||||||
#ifndef CONFIG_ARC_HAS_LLSC
|
#ifndef CONFIG_ARC_HAS_LLSC
|
||||||
arch_spinlock_t smp_atomic_ops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
|
arch_spinlock_t smp_atomic_ops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
|
||||||
arch_spinlock_t smp_bitops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
|
arch_spinlock_t smp_bitops_lock = __ARCH_SPIN_LOCK_UNLOCKED;
|
||||||
|
|
||||||
|
EXPORT_SYMBOL_GPL(smp_atomic_ops_lock);
|
||||||
|
EXPORT_SYMBOL_GPL(smp_bitops_lock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct plat_smp_ops __weak plat_smp_ops;
|
struct plat_smp_ops __weak plat_smp_ops;
|
||||||
|
|
|
@ -111,6 +111,13 @@ static void __init axs10x_early_init(void)
|
||||||
|
|
||||||
axs10x_enable_gpio_intc_wire();
|
axs10x_enable_gpio_intc_wire();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reset ethernet IP core.
|
||||||
|
* TODO: get rid of this quirk after axs10x reset driver (or simple
|
||||||
|
* reset driver) will be available in upstream.
|
||||||
|
*/
|
||||||
|
iowrite32((1 << 5), (void __iomem *) CREG_MB_SW_RESET);
|
||||||
|
|
||||||
scnprintf(mb, 32, "MainBoard v%d", mb_rev);
|
scnprintf(mb, 32, "MainBoard v%d", mb_rev);
|
||||||
axs10x_print_board_ver(CREG_MB_VER, mb);
|
axs10x_print_board_ver(CREG_MB_VER, mb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,3 +7,5 @@
|
||||||
|
|
||||||
menuconfig ARC_SOC_HSDK
|
menuconfig ARC_SOC_HSDK
|
||||||
bool "ARC HS Development Kit SOC"
|
bool "ARC HS Development Kit SOC"
|
||||||
|
select CLK_HSDK
|
||||||
|
select RESET_HSDK
|
||||||
|
|
|
@ -38,6 +38,46 @@ static void __init hsdk_init_per_cpu(unsigned int cpu)
|
||||||
#define CREG_PAE (CREG_BASE + 0x180)
|
#define CREG_PAE (CREG_BASE + 0x180)
|
||||||
#define CREG_PAE_UPDATE (CREG_BASE + 0x194)
|
#define CREG_PAE_UPDATE (CREG_BASE + 0x194)
|
||||||
|
|
||||||
|
#define CREG_CORE_IF_CLK_DIV (CREG_BASE + 0x4B8)
|
||||||
|
#define CREG_CORE_IF_CLK_DIV_2 0x1
|
||||||
|
#define CGU_BASE ARC_PERIPHERAL_BASE
|
||||||
|
#define CGU_PLL_STATUS (ARC_PERIPHERAL_BASE + 0x4)
|
||||||
|
#define CGU_PLL_CTRL (ARC_PERIPHERAL_BASE + 0x0)
|
||||||
|
#define CGU_PLL_STATUS_LOCK BIT(0)
|
||||||
|
#define CGU_PLL_STATUS_ERR BIT(1)
|
||||||
|
#define CGU_PLL_CTRL_1GHZ 0x3A10
|
||||||
|
#define HSDK_PLL_LOCK_TIMEOUT 500
|
||||||
|
|
||||||
|
#define HSDK_PLL_LOCKED() \
|
||||||
|
!!(ioread32((void __iomem *) CGU_PLL_STATUS) & CGU_PLL_STATUS_LOCK)
|
||||||
|
|
||||||
|
#define HSDK_PLL_ERR() \
|
||||||
|
!!(ioread32((void __iomem *) CGU_PLL_STATUS) & CGU_PLL_STATUS_ERR)
|
||||||
|
|
||||||
|
static void __init hsdk_set_cpu_freq_1ghz(void)
|
||||||
|
{
|
||||||
|
u32 timeout = HSDK_PLL_LOCK_TIMEOUT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* As we set cpu clock which exceeds 500MHz, the divider for the interface
|
||||||
|
* clock must be programmed to div-by-2.
|
||||||
|
*/
|
||||||
|
iowrite32(CREG_CORE_IF_CLK_DIV_2, (void __iomem *) CREG_CORE_IF_CLK_DIV);
|
||||||
|
|
||||||
|
/* Set cpu clock to 1GHz */
|
||||||
|
iowrite32(CGU_PLL_CTRL_1GHZ, (void __iomem *) CGU_PLL_CTRL);
|
||||||
|
|
||||||
|
while (!HSDK_PLL_LOCKED() && timeout--)
|
||||||
|
cpu_relax();
|
||||||
|
|
||||||
|
if (!HSDK_PLL_LOCKED() || HSDK_PLL_ERR())
|
||||||
|
pr_err("Failed to setup CPU frequency to 1GHz!");
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SDIO_BASE (ARC_PERIPHERAL_BASE + 0xA000)
|
||||||
|
#define SDIO_UHS_REG_EXT (SDIO_BASE + 0x108)
|
||||||
|
#define SDIO_UHS_REG_EXT_DIV_2 (2 << 30)
|
||||||
|
|
||||||
static void __init hsdk_init_early(void)
|
static void __init hsdk_init_early(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -52,6 +92,18 @@ static void __init hsdk_init_early(void)
|
||||||
|
|
||||||
/* Really apply settings made above */
|
/* Really apply settings made above */
|
||||||
writel(1, (void __iomem *) CREG_PAE_UPDATE);
|
writel(1, (void __iomem *) CREG_PAE_UPDATE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Switch SDIO external ciu clock divider from default div-by-8 to
|
||||||
|
* minimum possible div-by-2.
|
||||||
|
*/
|
||||||
|
iowrite32(SDIO_UHS_REG_EXT_DIV_2, (void __iomem *) SDIO_UHS_REG_EXT);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setup CPU frequency to 1GHz.
|
||||||
|
* TODO: remove it after smart hsdk pll driver will be introduced.
|
||||||
|
*/
|
||||||
|
hsdk_set_cpu_freq_1ghz();
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *hsdk_compat[] __initconst = {
|
static const char *hsdk_compat[] __initconst = {
|
||||||
|
|
|
@ -131,7 +131,7 @@ endif
|
||||||
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
||||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
||||||
|
|
||||||
CHECKFLAGS += -D__arm__
|
CHECKFLAGS += -D__arm__ -m32
|
||||||
|
|
||||||
#Default value
|
#Default value
|
||||||
head-y := arch/arm/kernel/head$(MMUEXT).o
|
head-y := arch/arm/kernel/head$(MMUEXT).o
|
||||||
|
|
|
@ -23,7 +23,11 @@ ENTRY(putc)
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
mov r0, #0x03 @ SYS_WRITEC
|
mov r0, #0x03 @ SYS_WRITEC
|
||||||
ARM( svc #0x123456 )
|
ARM( svc #0x123456 )
|
||||||
|
#ifdef CONFIG_CPU_V7M
|
||||||
|
THUMB( bkpt #0xab )
|
||||||
|
#else
|
||||||
THUMB( svc #0xab )
|
THUMB( svc #0xab )
|
||||||
|
#endif
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
.align 2
|
.align 2
|
||||||
1: .word _GLOBAL_OFFSET_TABLE_ - .
|
1: .word _GLOBAL_OFFSET_TABLE_ - .
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
phy1 = &usb1_phy;
|
phy1 = &usb1_phy;
|
||||||
ethernet0 = &cpsw_emac0;
|
ethernet0 = &cpsw_emac0;
|
||||||
ethernet1 = &cpsw_emac1;
|
ethernet1 = &cpsw_emac1;
|
||||||
|
spi0 = &spi0;
|
||||||
|
spi1 = &spi1;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus {
|
cpus {
|
||||||
|
|
|
@ -388,6 +388,7 @@
|
||||||
pinctrl-0 = <&cpsw_default>;
|
pinctrl-0 = <&cpsw_default>;
|
||||||
pinctrl-1 = <&cpsw_sleep>;
|
pinctrl-1 = <&cpsw_sleep>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
slaves = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&davinci_mdio {
|
&davinci_mdio {
|
||||||
|
@ -402,11 +403,6 @@
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
|
||||||
phy-mode = "rmii";
|
|
||||||
};
|
|
||||||
|
|
||||||
&phy_sel {
|
&phy_sel {
|
||||||
rmii-clock-ext;
|
rmii-clock-ext;
|
||||||
};
|
};
|
||||||
|
|
|
@ -178,7 +178,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0: i2c@11000 {
|
i2c0: i2c@11000 {
|
||||||
compatible = "marvell,mv64xxx-i2c";
|
compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
|
||||||
reg = <0x11000 0x20>;
|
reg = <0x11000 0x20>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -189,7 +189,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1: i2c@11100 {
|
i2c1: i2c@11100 {
|
||||||
compatible = "marvell,mv64xxx-i2c";
|
compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
|
||||||
reg = <0x11100 0x20>;
|
reg = <0x11100 0x20>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
|
@ -67,8 +67,8 @@
|
||||||
pinctrl-0 = <&pinctrl_macb0_default>;
|
pinctrl-0 = <&pinctrl_macb0_default>;
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
|
|
||||||
ethernet-phy@1 {
|
ethernet-phy@0 {
|
||||||
reg = <0x1>;
|
reg = <0x0>;
|
||||||
interrupt-parent = <&pioA>;
|
interrupt-parent = <&pioA>;
|
||||||
interrupts = <PIN_PD31 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <PIN_PD31 IRQ_TYPE_LEVEL_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
|
@ -67,7 +67,10 @@
|
||||||
|
|
||||||
usb1: ohci@00400000 {
|
usb1: ohci@00400000 {
|
||||||
num-ports = <3>;
|
num-ports = <3>;
|
||||||
atmel,vbus-gpio = <&pioA PIN_PA10 GPIO_ACTIVE_HIGH>;
|
atmel,vbus-gpio = <0 /* &pioA PIN_PD20 GPIO_ACTIVE_HIGH */
|
||||||
|
&pioA PIN_PA27 GPIO_ACTIVE_HIGH
|
||||||
|
0
|
||||||
|
>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usb_default>;
|
pinctrl-0 = <&pinctrl_usb_default>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@ -120,7 +123,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_mikrobus2_uart>;
|
pinctrl-0 = <&pinctrl_mikrobus2_uart>;
|
||||||
atmel,use-dma-rx;
|
atmel,use-dma-rx;
|
||||||
atmel-use-dma-tx;
|
atmel,use-dma-tx;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -178,7 +181,7 @@
|
||||||
uart4: serial@fc00c000 {
|
uart4: serial@fc00c000 {
|
||||||
atmel,use-dma-rx;
|
atmel,use-dma-rx;
|
||||||
atmel,use-dma-tx;
|
atmel,use-dma-tx;
|
||||||
pinctrl-name = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_mikrobus1_uart>;
|
pinctrl-0 = <&pinctrl_mikrobus1_uart>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -330,7 +333,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_led_gpio_default: led_gpio_default {
|
pinctrl_led_gpio_default: led_gpio_default {
|
||||||
pinmux = <PIN_PA27__GPIO>,
|
pinmux = <PIN_PA10__GPIO>,
|
||||||
<PIN_PB1__GPIO>,
|
<PIN_PB1__GPIO>,
|
||||||
<PIN_PA31__GPIO>;
|
<PIN_PA31__GPIO>;
|
||||||
bias-pull-up;
|
bias-pull-up;
|
||||||
|
@ -396,7 +399,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_usb_default: usb_default {
|
pinctrl_usb_default: usb_default {
|
||||||
pinmux = <PIN_PA10__GPIO>,
|
pinmux = <PIN_PA27__GPIO>,
|
||||||
<PIN_PD19__GPIO>;
|
<PIN_PD19__GPIO>;
|
||||||
bias-disable;
|
bias-disable;
|
||||||
};
|
};
|
||||||
|
@ -520,17 +523,17 @@
|
||||||
|
|
||||||
red {
|
red {
|
||||||
label = "red";
|
label = "red";
|
||||||
gpios = <&pioA PIN_PA27 GPIO_ACTIVE_LOW>;
|
gpios = <&pioA PIN_PA10 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
green {
|
green {
|
||||||
label = "green";
|
label = "green";
|
||||||
gpios = <&pioA PIN_PB1 GPIO_ACTIVE_LOW>;
|
gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
blue {
|
blue {
|
||||||
label = "blue";
|
label = "blue";
|
||||||
gpios = <&pioA PIN_PA31 GPIO_ACTIVE_LOW>;
|
gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -309,7 +309,7 @@
|
||||||
vddana-supply = <&vdd_3v3_lp_reg>;
|
vddana-supply = <&vdd_3v3_lp_reg>;
|
||||||
vref-supply = <&vdd_3v3_lp_reg>;
|
vref-supply = <&vdd_3v3_lp_reg>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_adc_default>;
|
pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -340,6 +340,20 @@
|
||||||
bias-disable;
|
bias-disable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The ADTRG pin can work on any edge type.
|
||||||
|
* In here it's being pulled up, so need to
|
||||||
|
* connect it to ground to get an edge e.g.
|
||||||
|
* Trigger can be configured on falling, rise
|
||||||
|
* or any edge, and the pull-up can be changed
|
||||||
|
* to pull-down or left floating according to
|
||||||
|
* needs.
|
||||||
|
*/
|
||||||
|
pinctrl_adtrg_default: adtrg_default {
|
||||||
|
pinmux = <PIN_PD31__ADTRG>;
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
pinctrl_charger_chglev: charger_chglev {
|
pinctrl_charger_chglev: charger_chglev {
|
||||||
pinmux = <PIN_PA12__GPIO>;
|
pinmux = <PIN_PA12__GPIO>;
|
||||||
bias-disable;
|
bias-disable;
|
||||||
|
|
|
@ -18,12 +18,9 @@
|
||||||
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
|
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
|
||||||
model = "Raspberry Pi Zero W";
|
model = "Raspberry Pi Zero W";
|
||||||
|
|
||||||
/* Needed by firmware to properly init UARTs */
|
chosen {
|
||||||
aliases {
|
/* 8250 auxiliary UART instead of pl011 */
|
||||||
uart0 = "/soc/serial@7e201000";
|
stdout-path = "serial1:115200n8";
|
||||||
uart1 = "/soc/serial@7e215040";
|
|
||||||
serial0 = "/soc/serial@7e201000";
|
|
||||||
serial1 = "/soc/serial@7e215040";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
|
|
|
@ -8,6 +8,11 @@
|
||||||
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
|
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
|
||||||
model = "Raspberry Pi 3 Model B";
|
model = "Raspberry Pi 3 Model B";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
/* 8250 auxiliary UART instead of pl011 */
|
||||||
|
stdout-path = "serial1:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
reg = <0 0x40000000>;
|
reg = <0 0x40000000>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,8 +20,13 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uart0;
|
||||||
|
serial1 = &uart1;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlyprintk console=ttyAMA0";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
thermal-zones {
|
thermal-zones {
|
||||||
|
|
|
@ -15,6 +15,13 @@
|
||||||
compatible = "ti,da850-evm", "ti,da850";
|
compatible = "ti,da850-evm", "ti,da850";
|
||||||
model = "DA850/AM1808/OMAP-L138 EVM";
|
model = "DA850/AM1808/OMAP-L138 EVM";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &serial0;
|
||||||
|
serial1 = &serial1;
|
||||||
|
serial2 = &serial2;
|
||||||
|
ethernet0 = ð0;
|
||||||
|
};
|
||||||
|
|
||||||
soc@1c00000 {
|
soc@1c00000 {
|
||||||
pmx_core: pinmux@14120 {
|
pmx_core: pinmux@14120 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -1817,6 +1817,8 @@
|
||||||
clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
|
clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
|
||||||
ti,bit-shift = <24>;
|
ti,bit-shift = <24>;
|
||||||
reg = <0x1868>;
|
reg = <0x1868>;
|
||||||
|
assigned-clocks = <&mcasp3_ahclkx_mux>;
|
||||||
|
assigned-clock-parents = <&abe_24m_fclk>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mcasp3_aux_gfclk_mux: mcasp3_aux_gfclk_mux@1868 {
|
mcasp3_aux_gfclk_mux: mcasp3_aux_gfclk_mux@1868 {
|
||||||
|
|
|
@ -145,11 +145,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
watchdog@41000000 {
|
watchdog@41000000 {
|
||||||
compatible = "cortina,gemini-watchdog";
|
compatible = "cortina,gemini-watchdog", "faraday,ftwdt010";
|
||||||
reg = <0x41000000 0x1000>;
|
reg = <0x41000000 0x1000>;
|
||||||
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
resets = <&syscon GEMINI_RESET_WDOG>;
|
resets = <&syscon GEMINI_RESET_WDOG>;
|
||||||
clocks = <&syscon GEMINI_CLK_APB>;
|
clocks = <&syscon GEMINI_CLK_APB>;
|
||||||
|
clock-names = "PCLK";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0: serial@42000000 {
|
uart0: serial@42000000 {
|
||||||
|
|
|
@ -144,10 +144,10 @@
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
interrupt-map-mask = <0 0 0 0x7>;
|
interrupt-map-mask = <0 0 0 0x7>;
|
||||||
interrupt-map = <0 0 0 1 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
|
interrupt-map = <0 0 0 1 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 2 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
|
<0 0 0 2 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 3 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
|
<0 0 0 3 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 4 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
|
<0 0 0 4 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks IMX7D_PCIE_CTRL_ROOT_CLK>,
|
clocks = <&clks IMX7D_PCIE_CTRL_ROOT_CLK>,
|
||||||
<&clks IMX7D_PLL_ENET_MAIN_100M_CLK>,
|
<&clks IMX7D_PLL_ENET_MAIN_100M_CLK>,
|
||||||
<&clks IMX7D_PCIE_PHY_ROOT_CLK>;
|
<&clks IMX7D_PCIE_PHY_ROOT_CLK>;
|
||||||
|
|
|
@ -87,9 +87,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
watchdog: watchdog@98500000 {
|
watchdog: watchdog@98500000 {
|
||||||
compatible = "moxa,moxart-watchdog";
|
compatible = "moxa,moxart-watchdog", "faraday,ftwdt010";
|
||||||
reg = <0x98500000 0x10>;
|
reg = <0x98500000 0x10>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
clock-names = "PCLK";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
sdhci: sdhci@98e00000 {
|
||||||
|
|
|
@ -144,15 +144,6 @@
|
||||||
io-channel-names = "temp", "bsi", "vbat";
|
io-channel-names = "temp", "bsi", "vbat";
|
||||||
};
|
};
|
||||||
|
|
||||||
rear_camera: camera@0 {
|
|
||||||
compatible = "linux,camera";
|
|
||||||
|
|
||||||
module {
|
|
||||||
model = "TCM8341MD";
|
|
||||||
sensor = <&cam1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pwm9: dmtimer-pwm {
|
pwm9: dmtimer-pwm {
|
||||||
compatible = "ti,omap-dmtimer-pwm";
|
compatible = "ti,omap-dmtimer-pwm";
|
||||||
#pwm-cells = <3>;
|
#pwm-cells = <3>;
|
||||||
|
@ -189,10 +180,8 @@
|
||||||
clock-lanes = <1>;
|
clock-lanes = <1>;
|
||||||
data-lanes = <0>;
|
data-lanes = <0>;
|
||||||
lane-polarity = <0 0>;
|
lane-polarity = <0 0>;
|
||||||
clock-inv = <0>;
|
|
||||||
/* Select strobe = <1> for back camera, <0> for front camera */
|
/* Select strobe = <1> for back camera, <0> for front camera */
|
||||||
strobe = <1>;
|
strobe = <1>;
|
||||||
crc = <0>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1430,6 +1430,7 @@
|
||||||
atmel,min-sample-rate-hz = <200000>;
|
atmel,min-sample-rate-hz = <200000>;
|
||||||
atmel,max-sample-rate-hz = <20000000>;
|
atmel,max-sample-rate-hz = <20000000>;
|
||||||
atmel,startup-time-ms = <4>;
|
atmel,startup-time-ms = <4>;
|
||||||
|
atmel,trigger-edge-type = <IRQ_TYPE_EDGE_RISING>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "stm32f429.dtsi"
|
#include "stm32f429.dtsi"
|
||||||
|
#include "stm32f429-pinctrl.dtsi"
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
@ -202,10 +203,8 @@
|
||||||
stmpe1600: stmpe1600@42 {
|
stmpe1600: stmpe1600@42 {
|
||||||
compatible = "st,stmpe1600";
|
compatible = "st,stmpe1600";
|
||||||
reg = <0x42>;
|
reg = <0x42>;
|
||||||
irq-gpio = <&gpioi 8 0>;
|
|
||||||
irq-trigger = <3>;
|
|
||||||
interrupts = <8 3>;
|
interrupts = <8 3>;
|
||||||
interrupt-parent = <&exti>;
|
interrupt-parent = <&gpioi>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
|
|
||||||
|
|
343
arch/arm/boot/dts/stm32f4-pinctrl.dtsi
Normal file
343
arch/arm/boot/dts/stm32f4-pinctrl.dtsi
Normal file
|
@ -0,0 +1,343 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
|
||||||
|
*
|
||||||
|
* This file is dual-licensed: you can use it either under the terms
|
||||||
|
* of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
* licensing only applies to this file, and not this project as a
|
||||||
|
* whole.
|
||||||
|
*
|
||||||
|
* a) This file is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* Or, alternatively,
|
||||||
|
*
|
||||||
|
* b) Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
|
||||||
|
#include <dt-bindings/mfd/stm32f4-rcc.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
soc {
|
||||||
|
pinctrl: pin-controller {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x40020000 0x3000>;
|
||||||
|
interrupt-parent = <&exti>;
|
||||||
|
st,syscfg = <&syscfg 0x8>;
|
||||||
|
pins-are-numbered;
|
||||||
|
|
||||||
|
gpioa: gpio@40020000 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x0 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)>;
|
||||||
|
st,bank-name = "GPIOA";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiob: gpio@40020400 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x400 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOB)>;
|
||||||
|
st,bank-name = "GPIOB";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioc: gpio@40020800 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x800 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOC)>;
|
||||||
|
st,bank-name = "GPIOC";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiod: gpio@40020c00 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0xc00 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOD)>;
|
||||||
|
st,bank-name = "GPIOD";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioe: gpio@40021000 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x1000 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOE)>;
|
||||||
|
st,bank-name = "GPIOE";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiof: gpio@40021400 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x1400 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOF)>;
|
||||||
|
st,bank-name = "GPIOF";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiog: gpio@40021800 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x1800 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOG)>;
|
||||||
|
st,bank-name = "GPIOG";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioh: gpio@40021c00 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x1c00 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOH)>;
|
||||||
|
st,bank-name = "GPIOH";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioi: gpio@40022000 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x2000 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOI)>;
|
||||||
|
st,bank-name = "GPIOI";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioj: gpio@40022400 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x2400 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOJ)>;
|
||||||
|
st,bank-name = "GPIOJ";
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiok: gpio@40022800 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x2800 0x400>;
|
||||||
|
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOK)>;
|
||||||
|
st,bank-name = "GPIOK";
|
||||||
|
};
|
||||||
|
|
||||||
|
usart1_pins_a: usart1@0 {
|
||||||
|
pins1 {
|
||||||
|
pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <0>;
|
||||||
|
};
|
||||||
|
pins2 {
|
||||||
|
pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
|
||||||
|
bias-disable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usart3_pins_a: usart3@0 {
|
||||||
|
pins1 {
|
||||||
|
pinmux = <STM32F429_PB10_FUNC_USART3_TX>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <0>;
|
||||||
|
};
|
||||||
|
pins2 {
|
||||||
|
pinmux = <STM32F429_PB11_FUNC_USART3_RX>;
|
||||||
|
bias-disable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usbotg_fs_pins_a: usbotg_fs@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PA10_FUNC_OTG_FS_ID>,
|
||||||
|
<STM32F429_PA11_FUNC_OTG_FS_DM>,
|
||||||
|
<STM32F429_PA12_FUNC_OTG_FS_DP>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usbotg_fs_pins_b: usbotg_fs@1 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PB12_FUNC_OTG_HS_ID>,
|
||||||
|
<STM32F429_PB14_FUNC_OTG_HS_DM>,
|
||||||
|
<STM32F429_PB15_FUNC_OTG_HS_DP>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usbotg_hs_pins_a: usbotg_hs@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>,
|
||||||
|
<STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>,
|
||||||
|
<STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>,
|
||||||
|
<STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>,
|
||||||
|
<STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>,
|
||||||
|
<STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>,
|
||||||
|
<STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>,
|
||||||
|
<STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>,
|
||||||
|
<STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>,
|
||||||
|
<STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>,
|
||||||
|
<STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>,
|
||||||
|
<STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ethernet_mii: mii@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>,
|
||||||
|
<STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>,
|
||||||
|
<STM32F429_PC2_FUNC_ETH_MII_TXD2>,
|
||||||
|
<STM32F429_PB8_FUNC_ETH_MII_TXD3>,
|
||||||
|
<STM32F429_PC3_FUNC_ETH_MII_TX_CLK>,
|
||||||
|
<STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>,
|
||||||
|
<STM32F429_PA2_FUNC_ETH_MDIO>,
|
||||||
|
<STM32F429_PC1_FUNC_ETH_MDC>,
|
||||||
|
<STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>,
|
||||||
|
<STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>,
|
||||||
|
<STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>,
|
||||||
|
<STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>,
|
||||||
|
<STM32F429_PH6_FUNC_ETH_MII_RXD2>,
|
||||||
|
<STM32F429_PH7_FUNC_ETH_MII_RXD3>;
|
||||||
|
slew-rate = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
adc3_in8_pin: adc@200 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PF10_FUNC_ANALOG>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pwm1_pins: pwm@1 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PA8_FUNC_TIM1_CH1>,
|
||||||
|
<STM32F429_PB13_FUNC_TIM1_CH1N>,
|
||||||
|
<STM32F429_PB12_FUNC_TIM1_BKIN>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pwm3_pins: pwm@3 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PB4_FUNC_TIM3_CH1>,
|
||||||
|
<STM32F429_PB5_FUNC_TIM3_CH2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c1_pins: i2c1@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PB9_FUNC_I2C1_SDA>,
|
||||||
|
<STM32F429_PB6_FUNC_I2C1_SCL>;
|
||||||
|
bias-disable;
|
||||||
|
drive-open-drain;
|
||||||
|
slew-rate = <3>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ltdc_pins: ltdc@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PI12_FUNC_LCD_HSYNC>,
|
||||||
|
<STM32F429_PI13_FUNC_LCD_VSYNC>,
|
||||||
|
<STM32F429_PI14_FUNC_LCD_CLK>,
|
||||||
|
<STM32F429_PI15_FUNC_LCD_R0>,
|
||||||
|
<STM32F429_PJ0_FUNC_LCD_R1>,
|
||||||
|
<STM32F429_PJ1_FUNC_LCD_R2>,
|
||||||
|
<STM32F429_PJ2_FUNC_LCD_R3>,
|
||||||
|
<STM32F429_PJ3_FUNC_LCD_R4>,
|
||||||
|
<STM32F429_PJ4_FUNC_LCD_R5>,
|
||||||
|
<STM32F429_PJ5_FUNC_LCD_R6>,
|
||||||
|
<STM32F429_PJ6_FUNC_LCD_R7>,
|
||||||
|
<STM32F429_PJ7_FUNC_LCD_G0>,
|
||||||
|
<STM32F429_PJ8_FUNC_LCD_G1>,
|
||||||
|
<STM32F429_PJ9_FUNC_LCD_G2>,
|
||||||
|
<STM32F429_PJ10_FUNC_LCD_G3>,
|
||||||
|
<STM32F429_PJ11_FUNC_LCD_G4>,
|
||||||
|
<STM32F429_PJ12_FUNC_LCD_B0>,
|
||||||
|
<STM32F429_PJ13_FUNC_LCD_B1>,
|
||||||
|
<STM32F429_PJ14_FUNC_LCD_B2>,
|
||||||
|
<STM32F429_PJ15_FUNC_LCD_B3>,
|
||||||
|
<STM32F429_PK0_FUNC_LCD_G5>,
|
||||||
|
<STM32F429_PK1_FUNC_LCD_G6>,
|
||||||
|
<STM32F429_PK2_FUNC_LCD_G7>,
|
||||||
|
<STM32F429_PK3_FUNC_LCD_B4>,
|
||||||
|
<STM32F429_PK4_FUNC_LCD_B5>,
|
||||||
|
<STM32F429_PK5_FUNC_LCD_B6>,
|
||||||
|
<STM32F429_PK6_FUNC_LCD_B7>,
|
||||||
|
<STM32F429_PK7_FUNC_LCD_DE>;
|
||||||
|
slew-rate = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
dcmi_pins: dcmi@0 {
|
||||||
|
pins {
|
||||||
|
pinmux = <STM32F429_PA4_FUNC_DCMI_HSYNC>,
|
||||||
|
<STM32F429_PB7_FUNC_DCMI_VSYNC>,
|
||||||
|
<STM32F429_PA6_FUNC_DCMI_PIXCLK>,
|
||||||
|
<STM32F429_PC6_FUNC_DCMI_D0>,
|
||||||
|
<STM32F429_PC7_FUNC_DCMI_D1>,
|
||||||
|
<STM32F429_PC8_FUNC_DCMI_D2>,
|
||||||
|
<STM32F429_PC9_FUNC_DCMI_D3>,
|
||||||
|
<STM32F429_PC11_FUNC_DCMI_D4>,
|
||||||
|
<STM32F429_PD3_FUNC_DCMI_D5>,
|
||||||
|
<STM32F429_PB8_FUNC_DCMI_D6>,
|
||||||
|
<STM32F429_PE6_FUNC_DCMI_D7>,
|
||||||
|
<STM32F429_PC10_FUNC_DCMI_D8>,
|
||||||
|
<STM32F429_PC12_FUNC_DCMI_D9>,
|
||||||
|
<STM32F429_PD6_FUNC_DCMI_D10>,
|
||||||
|
<STM32F429_PD2_FUNC_DCMI_D11>;
|
||||||
|
bias-disable;
|
||||||
|
drive-push-pull;
|
||||||
|
slew-rate = <3>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -47,6 +47,7 @@
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "stm32f429.dtsi"
|
#include "stm32f429.dtsi"
|
||||||
|
#include "stm32f429-pinctrl.dtsi"
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
|
95
arch/arm/boot/dts/stm32f429-pinctrl.dtsi
Normal file
95
arch/arm/boot/dts/stm32f429-pinctrl.dtsi
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
|
||||||
|
*
|
||||||
|
* This file is dual-licensed: you can use it either under the terms
|
||||||
|
* of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
* licensing only applies to this file, and not this project as a
|
||||||
|
* whole.
|
||||||
|
*
|
||||||
|
* a) This file is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* Or, alternatively,
|
||||||
|
*
|
||||||
|
* b) Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stm32f4-pinctrl.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
soc {
|
||||||
|
pinctrl: pin-controller {
|
||||||
|
compatible = "st,stm32f429-pinctrl";
|
||||||
|
|
||||||
|
gpioa: gpio@40020000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 0 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiob: gpio@40020400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 16 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioc: gpio@40020800 {
|
||||||
|
gpio-ranges = <&pinctrl 0 32 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiod: gpio@40020c00 {
|
||||||
|
gpio-ranges = <&pinctrl 0 48 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioe: gpio@40021000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 64 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiof: gpio@40021400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 80 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiog: gpio@40021800 {
|
||||||
|
gpio-ranges = <&pinctrl 0 96 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioh: gpio@40021c00 {
|
||||||
|
gpio-ranges = <&pinctrl 0 112 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioi: gpio@40022000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 128 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioj: gpio@40022400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 144 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiok: gpio@40022800 {
|
||||||
|
gpio-ranges = <&pinctrl 0 160 8>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -47,7 +47,6 @@
|
||||||
|
|
||||||
#include "skeleton.dtsi"
|
#include "skeleton.dtsi"
|
||||||
#include "armv7-m.dtsi"
|
#include "armv7-m.dtsi"
|
||||||
#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
|
|
||||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||||
#include <dt-bindings/mfd/stm32f4-rcc.h>
|
#include <dt-bindings/mfd/stm32f4-rcc.h>
|
||||||
|
|
||||||
|
@ -591,302 +590,6 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl: pin-controller {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
compatible = "st,stm32f429-pinctrl";
|
|
||||||
ranges = <0 0x40020000 0x3000>;
|
|
||||||
interrupt-parent = <&exti>;
|
|
||||||
st,syscfg = <&syscfg 0x8>;
|
|
||||||
pins-are-numbered;
|
|
||||||
|
|
||||||
gpioa: gpio@40020000 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x0 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)>;
|
|
||||||
st,bank-name = "GPIOA";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiob: gpio@40020400 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x400 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOB)>;
|
|
||||||
st,bank-name = "GPIOB";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpioc: gpio@40020800 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x800 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOC)>;
|
|
||||||
st,bank-name = "GPIOC";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiod: gpio@40020c00 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0xc00 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOD)>;
|
|
||||||
st,bank-name = "GPIOD";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpioe: gpio@40021000 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x1000 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOE)>;
|
|
||||||
st,bank-name = "GPIOE";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiof: gpio@40021400 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x1400 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOF)>;
|
|
||||||
st,bank-name = "GPIOF";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiog: gpio@40021800 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x1800 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOG)>;
|
|
||||||
st,bank-name = "GPIOG";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpioh: gpio@40021c00 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x1c00 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOH)>;
|
|
||||||
st,bank-name = "GPIOH";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpioi: gpio@40022000 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x2000 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOI)>;
|
|
||||||
st,bank-name = "GPIOI";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpioj: gpio@40022400 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x2400 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOJ)>;
|
|
||||||
st,bank-name = "GPIOJ";
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiok: gpio@40022800 {
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <2>;
|
|
||||||
reg = <0x2800 0x400>;
|
|
||||||
clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOK)>;
|
|
||||||
st,bank-name = "GPIOK";
|
|
||||||
};
|
|
||||||
|
|
||||||
usart1_pins_a: usart1@0 {
|
|
||||||
pins1 {
|
|
||||||
pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <0>;
|
|
||||||
};
|
|
||||||
pins2 {
|
|
||||||
pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
|
|
||||||
bias-disable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
usart3_pins_a: usart3@0 {
|
|
||||||
pins1 {
|
|
||||||
pinmux = <STM32F429_PB10_FUNC_USART3_TX>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <0>;
|
|
||||||
};
|
|
||||||
pins2 {
|
|
||||||
pinmux = <STM32F429_PB11_FUNC_USART3_RX>;
|
|
||||||
bias-disable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
usbotg_fs_pins_a: usbotg_fs@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PA10_FUNC_OTG_FS_ID>,
|
|
||||||
<STM32F429_PA11_FUNC_OTG_FS_DM>,
|
|
||||||
<STM32F429_PA12_FUNC_OTG_FS_DP>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
usbotg_fs_pins_b: usbotg_fs@1 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PB12_FUNC_OTG_HS_ID>,
|
|
||||||
<STM32F429_PB14_FUNC_OTG_HS_DM>,
|
|
||||||
<STM32F429_PB15_FUNC_OTG_HS_DP>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
usbotg_hs_pins_a: usbotg_hs@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>,
|
|
||||||
<STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>,
|
|
||||||
<STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>,
|
|
||||||
<STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>,
|
|
||||||
<STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>,
|
|
||||||
<STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>,
|
|
||||||
<STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>,
|
|
||||||
<STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>,
|
|
||||||
<STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>,
|
|
||||||
<STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>,
|
|
||||||
<STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>,
|
|
||||||
<STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
ethernet_mii: mii@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>,
|
|
||||||
<STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>,
|
|
||||||
<STM32F429_PC2_FUNC_ETH_MII_TXD2>,
|
|
||||||
<STM32F429_PB8_FUNC_ETH_MII_TXD3>,
|
|
||||||
<STM32F429_PC3_FUNC_ETH_MII_TX_CLK>,
|
|
||||||
<STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>,
|
|
||||||
<STM32F429_PA2_FUNC_ETH_MDIO>,
|
|
||||||
<STM32F429_PC1_FUNC_ETH_MDC>,
|
|
||||||
<STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>,
|
|
||||||
<STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>,
|
|
||||||
<STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>,
|
|
||||||
<STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>,
|
|
||||||
<STM32F429_PH6_FUNC_ETH_MII_RXD2>,
|
|
||||||
<STM32F429_PH7_FUNC_ETH_MII_RXD3>;
|
|
||||||
slew-rate = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
adc3_in8_pin: adc@200 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PF10_FUNC_ANALOG>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pwm1_pins: pwm@1 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PA8_FUNC_TIM1_CH1>,
|
|
||||||
<STM32F429_PB13_FUNC_TIM1_CH1N>,
|
|
||||||
<STM32F429_PB12_FUNC_TIM1_BKIN>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pwm3_pins: pwm@3 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PB4_FUNC_TIM3_CH1>,
|
|
||||||
<STM32F429_PB5_FUNC_TIM3_CH2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1_pins: i2c1@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PB9_FUNC_I2C1_SDA>,
|
|
||||||
<STM32F429_PB6_FUNC_I2C1_SCL>;
|
|
||||||
bias-disable;
|
|
||||||
drive-open-drain;
|
|
||||||
slew-rate = <3>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
ltdc_pins: ltdc@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PI12_FUNC_LCD_HSYNC>,
|
|
||||||
<STM32F429_PI13_FUNC_LCD_VSYNC>,
|
|
||||||
<STM32F429_PI14_FUNC_LCD_CLK>,
|
|
||||||
<STM32F429_PI15_FUNC_LCD_R0>,
|
|
||||||
<STM32F429_PJ0_FUNC_LCD_R1>,
|
|
||||||
<STM32F429_PJ1_FUNC_LCD_R2>,
|
|
||||||
<STM32F429_PJ2_FUNC_LCD_R3>,
|
|
||||||
<STM32F429_PJ3_FUNC_LCD_R4>,
|
|
||||||
<STM32F429_PJ4_FUNC_LCD_R5>,
|
|
||||||
<STM32F429_PJ5_FUNC_LCD_R6>,
|
|
||||||
<STM32F429_PJ6_FUNC_LCD_R7>,
|
|
||||||
<STM32F429_PJ7_FUNC_LCD_G0>,
|
|
||||||
<STM32F429_PJ8_FUNC_LCD_G1>,
|
|
||||||
<STM32F429_PJ9_FUNC_LCD_G2>,
|
|
||||||
<STM32F429_PJ10_FUNC_LCD_G3>,
|
|
||||||
<STM32F429_PJ11_FUNC_LCD_G4>,
|
|
||||||
<STM32F429_PJ12_FUNC_LCD_B0>,
|
|
||||||
<STM32F429_PJ13_FUNC_LCD_B1>,
|
|
||||||
<STM32F429_PJ14_FUNC_LCD_B2>,
|
|
||||||
<STM32F429_PJ15_FUNC_LCD_B3>,
|
|
||||||
<STM32F429_PK0_FUNC_LCD_G5>,
|
|
||||||
<STM32F429_PK1_FUNC_LCD_G6>,
|
|
||||||
<STM32F429_PK2_FUNC_LCD_G7>,
|
|
||||||
<STM32F429_PK3_FUNC_LCD_B4>,
|
|
||||||
<STM32F429_PK4_FUNC_LCD_B5>,
|
|
||||||
<STM32F429_PK5_FUNC_LCD_B6>,
|
|
||||||
<STM32F429_PK6_FUNC_LCD_B7>,
|
|
||||||
<STM32F429_PK7_FUNC_LCD_DE>;
|
|
||||||
slew-rate = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dcmi_pins: dcmi@0 {
|
|
||||||
pins {
|
|
||||||
pinmux = <STM32F429_PA4_FUNC_DCMI_HSYNC>,
|
|
||||||
<STM32F429_PB7_FUNC_DCMI_VSYNC>,
|
|
||||||
<STM32F429_PA6_FUNC_DCMI_PIXCLK>,
|
|
||||||
<STM32F429_PC6_FUNC_DCMI_D0>,
|
|
||||||
<STM32F429_PC7_FUNC_DCMI_D1>,
|
|
||||||
<STM32F429_PC8_FUNC_DCMI_D2>,
|
|
||||||
<STM32F429_PC9_FUNC_DCMI_D3>,
|
|
||||||
<STM32F429_PC11_FUNC_DCMI_D4>,
|
|
||||||
<STM32F429_PD3_FUNC_DCMI_D5>,
|
|
||||||
<STM32F429_PB8_FUNC_DCMI_D6>,
|
|
||||||
<STM32F429_PE6_FUNC_DCMI_D7>,
|
|
||||||
<STM32F429_PC10_FUNC_DCMI_D8>,
|
|
||||||
<STM32F429_PC12_FUNC_DCMI_D9>,
|
|
||||||
<STM32F429_PD6_FUNC_DCMI_D10>,
|
|
||||||
<STM32F429_PD2_FUNC_DCMI_D11>;
|
|
||||||
bias-disable;
|
|
||||||
drive-push-pull;
|
|
||||||
slew-rate = <3>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
crc: crc@40023000 {
|
crc: crc@40023000 {
|
||||||
compatible = "st,stm32f4-crc";
|
compatible = "st,stm32f4-crc";
|
||||||
reg = <0x40023000 0x400>;
|
reg = <0x40023000 0x400>;
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "stm32f429.dtsi"
|
#include "stm32f429.dtsi"
|
||||||
|
#include "stm32f469-pinctrl.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "STMicroelectronics STM32F469i-DISCO board";
|
model = "STMicroelectronics STM32F469i-DISCO board";
|
||||||
|
|
96
arch/arm/boot/dts/stm32f469-pinctrl.dtsi
Normal file
96
arch/arm/boot/dts/stm32f469-pinctrl.dtsi
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
|
||||||
|
*
|
||||||
|
* This file is dual-licensed: you can use it either under the terms
|
||||||
|
* of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
* licensing only applies to this file, and not this project as a
|
||||||
|
* whole.
|
||||||
|
*
|
||||||
|
* a) This file is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* Or, alternatively,
|
||||||
|
*
|
||||||
|
* b) Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stm32f4-pinctrl.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
soc {
|
||||||
|
pinctrl: pin-controller {
|
||||||
|
compatible = "st,stm32f469-pinctrl";
|
||||||
|
|
||||||
|
gpioa: gpio@40020000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 0 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiob: gpio@40020400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 16 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioc: gpio@40020800 {
|
||||||
|
gpio-ranges = <&pinctrl 0 32 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiod: gpio@40020c00 {
|
||||||
|
gpio-ranges = <&pinctrl 0 48 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioe: gpio@40021000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 64 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiof: gpio@40021400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 80 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiog: gpio@40021800 {
|
||||||
|
gpio-ranges = <&pinctrl 0 96 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioh: gpio@40021c00 {
|
||||||
|
gpio-ranges = <&pinctrl 0 112 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioi: gpio@40022000 {
|
||||||
|
gpio-ranges = <&pinctrl 0 128 16>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpioj: gpio@40022400 {
|
||||||
|
gpio-ranges = <&pinctrl 0 144 6>,
|
||||||
|
<&pinctrl 12 156 4>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpiok: gpio@40022800 {
|
||||||
|
gpio-ranges = <&pinctrl 3 163 5>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -311,8 +311,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
|
||||||
tcon1_in_drc1: endpoint@0 {
|
tcon1_in_drc1: endpoint@1 {
|
||||||
reg = <0>;
|
reg = <1>;
|
||||||
remote-endpoint = <&drc1_out_tcon1>;
|
remote-endpoint = <&drc1_out_tcon1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1012,8 +1012,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
|
|
||||||
be1_out_drc1: endpoint@0 {
|
be1_out_drc1: endpoint@1 {
|
||||||
reg = <0>;
|
reg = <1>;
|
||||||
remote-endpoint = <&drc1_in_be1>;
|
remote-endpoint = <&drc1_in_be1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1042,8 +1042,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
|
||||||
drc1_in_be1: endpoint@0 {
|
drc1_in_be1: endpoint@1 {
|
||||||
reg = <0>;
|
reg = <1>;
|
||||||
remote-endpoint = <&be1_out_drc1>;
|
remote-endpoint = <&be1_out_drc1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1053,8 +1053,8 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
|
|
||||||
drc1_out_tcon1: endpoint@0 {
|
drc1_out_tcon1: endpoint@1 {
|
||||||
reg = <0>;
|
reg = <1>;
|
||||||
remote-endpoint = <&tcon1_in_drc1>;
|
remote-endpoint = <&tcon1_in_drc1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,6 +32,7 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
# CONFIG_SCSI_LOWLEVEL is not set
|
# CONFIG_SCSI_LOWLEVEL is not set
|
||||||
CONFIG_ATA=y
|
CONFIG_ATA=y
|
||||||
|
CONFIG_PATA_FTIDE010=y
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
CONFIG_KEYBOARD_GPIO=y
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
|
@ -55,8 +56,8 @@ CONFIG_LEDS_GPIO=y
|
||||||
CONFIG_LEDS_TRIGGERS=y
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_GEMINI=y
|
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_AMBA_PL08X=y
|
||||||
# CONFIG_DNOTIFY is not set
|
# CONFIG_DNOTIFY is not set
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_TMPFS_POSIX_ACL=y
|
CONFIG_TMPFS_POSIX_ACL=y
|
||||||
|
|
|
@ -471,7 +471,7 @@ CONFIG_LCD_PLATFORM=m
|
||||||
CONFIG_LCD_TOSA=m
|
CONFIG_LCD_TOSA=m
|
||||||
CONFIG_BACKLIGHT_PWM=m
|
CONFIG_BACKLIGHT_PWM=m
|
||||||
CONFIG_BACKLIGHT_TOSA=m
|
CONFIG_BACKLIGHT_TOSA=m
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=m
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
|
|
|
@ -113,7 +113,7 @@ CONFIG_FB_PXA_PARAMETERS=y
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
CONFIG_BACKLIGHT_PWM=m
|
CONFIG_BACKLIGHT_PWM=m
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=m
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
CONFIG_SND=m
|
CONFIG_SND=m
|
||||||
|
|
|
@ -112,7 +112,7 @@ CONFIG_FB_PXA=m
|
||||||
CONFIG_FB_PXA_PARAMETERS=y
|
CONFIG_FB_PXA_PARAMETERS=y
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=m
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_SOUND=m
|
CONFIG_SOUND=m
|
||||||
CONFIG_SND=m
|
CONFIG_SND=m
|
||||||
|
|
|
@ -115,7 +115,11 @@ ENTRY(printascii)
|
||||||
mov r1, r0
|
mov r1, r0
|
||||||
mov r0, #0x04 @ SYS_WRITE0
|
mov r0, #0x04 @ SYS_WRITE0
|
||||||
ARM( svc #0x123456 )
|
ARM( svc #0x123456 )
|
||||||
|
#ifdef CONFIG_CPU_V7M
|
||||||
|
THUMB( bkpt #0xab )
|
||||||
|
#else
|
||||||
THUMB( svc #0xab )
|
THUMB( svc #0xab )
|
||||||
|
#endif
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(printascii)
|
ENDPROC(printascii)
|
||||||
|
|
||||||
|
@ -124,7 +128,11 @@ ENTRY(printch)
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
mov r0, #0x03 @ SYS_WRITEC
|
mov r0, #0x03 @ SYS_WRITEC
|
||||||
ARM( svc #0x123456 )
|
ARM( svc #0x123456 )
|
||||||
|
#ifdef CONFIG_CPU_V7M
|
||||||
|
THUMB( bkpt #0xab )
|
||||||
|
#else
|
||||||
THUMB( svc #0xab )
|
THUMB( svc #0xab )
|
||||||
|
#endif
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(printch)
|
ENDPROC(printch)
|
||||||
|
|
||||||
|
|
|
@ -533,8 +533,8 @@ static void __init at91_pm_backup_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
pm_bu->suspended = 0;
|
pm_bu->suspended = 0;
|
||||||
pm_bu->canary = virt_to_phys(&canary);
|
pm_bu->canary = __pa_symbol(&canary);
|
||||||
pm_bu->resume = virt_to_phys(cpu_resume);
|
pm_bu->resume = __pa_symbol(cpu_resume);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -58,10 +58,10 @@ void omap_hsmmc_late_init(struct omap2_hsmmc_info *c)
|
||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
if (omap_hsmmc_done != 1)
|
if (omap_hsmmc_done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
omap_hsmmc_done++;
|
omap_hsmmc_done = 1;
|
||||||
|
|
||||||
for (; c->mmc; c++) {
|
for (; c->mmc; c++) {
|
||||||
pdev = c->pdev;
|
pdev = c->pdev;
|
||||||
|
|
|
@ -839,6 +839,7 @@ static struct omap_hwmod dra7xx_gpio1_hwmod = {
|
||||||
.name = "gpio1",
|
.name = "gpio1",
|
||||||
.class = &dra7xx_gpio_hwmod_class,
|
.class = &dra7xx_gpio_hwmod_class,
|
||||||
.clkdm_name = "wkupaon_clkdm",
|
.clkdm_name = "wkupaon_clkdm",
|
||||||
|
.flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
||||||
.main_clk = "wkupaon_iclk_mux",
|
.main_clk = "wkupaon_iclk_mux",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
.omap4 = {
|
.omap4 = {
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
|
|
||||||
#include "db8500-regs.h"
|
#include "db8500-regs.h"
|
||||||
|
#include "pm_domains.h"
|
||||||
|
|
||||||
static int __init ux500_l2x0_unlock(void)
|
static int __init ux500_l2x0_unlock(void)
|
||||||
{
|
{
|
||||||
|
@ -157,6 +158,9 @@ static const struct of_device_id u8500_local_bus_nodes[] = {
|
||||||
|
|
||||||
static void __init u8500_init_machine(void)
|
static void __init u8500_init_machine(void)
|
||||||
{
|
{
|
||||||
|
/* Initialize ux500 power domains */
|
||||||
|
ux500_pm_domains_init();
|
||||||
|
|
||||||
/* automatically probe child nodes of dbx5x0 devices */
|
/* automatically probe child nodes of dbx5x0 devices */
|
||||||
if (of_machine_is_compatible("st-ericsson,u8540"))
|
if (of_machine_is_compatible("st-ericsson,u8540"))
|
||||||
of_platform_populate(NULL, u8500_local_bus_nodes,
|
of_platform_populate(NULL, u8500_local_bus_nodes,
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
|
|
||||||
#include "db8500-regs.h"
|
#include "db8500-regs.h"
|
||||||
#include "pm_domains.h"
|
|
||||||
|
|
||||||
/* ARM WFI Standby signal register */
|
/* ARM WFI Standby signal register */
|
||||||
#define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130)
|
#define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130)
|
||||||
|
@ -203,7 +202,4 @@ void __init ux500_pm_init(u32 phy_base, u32 size)
|
||||||
|
|
||||||
/* Set up ux500 suspend callbacks. */
|
/* Set up ux500 suspend callbacks. */
|
||||||
suspend_set_ops(UX500_SUSPEND_OPS);
|
suspend_set_ops(UX500_SUSPEND_OPS);
|
||||||
|
|
||||||
/* Initialize ux500 power domains */
|
|
||||||
ux500_pm_domains_init();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,6 +344,11 @@ void __init arm_mm_memblock_reserve(void)
|
||||||
* reserved here.
|
* reserved here.
|
||||||
*/
|
*/
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
|
* In any case, always ensure address 0 is never used as many things
|
||||||
|
* get very confused if 0 is returned as a legitimate address.
|
||||||
|
*/
|
||||||
|
memblock_reserve(0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init adjust_lowmem_bounds(void)
|
void __init adjust_lowmem_bounds(void)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/rwlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
|
|
|
@ -61,13 +61,6 @@
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_vcc3v3: vcc3v3 {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "vcc3v3";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&ehci0 {
|
&ehci0 {
|
||||||
|
@ -91,7 +84,7 @@
|
||||||
&mmc0 {
|
&mmc0 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc0_pins>;
|
pinctrl-0 = <&mmc0_pins>;
|
||||||
vmmc-supply = <®_vcc3v3>;
|
vmmc-supply = <®_dcdc1>;
|
||||||
cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
|
||||||
cd-inverted;
|
cd-inverted;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue