Linux 4.2-rc6
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJVx7AKAAoJEHm+PkMAQRiGYEsH+gJVBVZzR93+KQkL/qoItUOg 2D3JX3dDxov+vKXQ4MlfA1bDVtpNu0q4cs5kLeT0lIEzw9sXXNc1H2Kvkm1StMPy Y6Z8xr7N4mJx1EpyWtZ8Hrs/TXGtfszn2gRa3/pG74ND77euuabe/jMCyEAZWtBB E2sGFy17AtQleuJ5C3ksYHEJdAc0373CZX66SmICOBKZ5J4ZNg4Z7RFWdW+SYLPB Zt6vxZtGWAJjNIZGPlSjcO2dRaxVGoeGnfZPJFlzyzkaAJAkCksi2JVGuUjqzZnc dieiPyUxN/9MNMX8FPW9sF9DwjK3WyPg6qCvCoZ5mfGH6Kch8aph0rXTragy96I= =8Qyy -----END PGP SIGNATURE----- Merge tag 'v4.2-rc6' into asoc-topology Linux 4.2-rc6
This commit is contained in:
commit
d033de5cee
5
.mailmap
5
.mailmap
|
@ -116,6 +116,7 @@ Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
|
||||||
Simon Kelley <simon@thekelleys.org.uk>
|
Simon Kelley <simon@thekelleys.org.uk>
|
||||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||||
Stephen Hemminger <shemminger@osdl.org>
|
Stephen Hemminger <shemminger@osdl.org>
|
||||||
|
Sudeep Holla <sudeep.holla@arm.com> Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
|
||||||
Sumit Semwal <sumit.semwal@ti.com>
|
Sumit Semwal <sumit.semwal@ti.com>
|
||||||
Tejun Heo <htejun@gmail.com>
|
Tejun Heo <htejun@gmail.com>
|
||||||
Thomas Graf <tgraf@suug.ch>
|
Thomas Graf <tgraf@suug.ch>
|
||||||
|
@ -125,7 +126,9 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
||||||
Uwe Kleine-König <ukl@pengutronix.de>
|
Uwe Kleine-König <ukl@pengutronix.de>
|
||||||
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
||||||
Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
||||||
Viresh Kumar <viresh.linux@gmail.com> <viresh.kumar@st.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
|
||||||
|
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
|
||||||
|
Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
|
||||||
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
||||||
Yusuke Goda <goda.yusuke@renesas.com>
|
Yusuke Goda <goda.yusuke@renesas.com>
|
||||||
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
||||||
|
|
|
@ -1234,10 +1234,8 @@ Description:
|
||||||
object is near the sensor, usually be observing
|
object is near the sensor, usually be observing
|
||||||
reflectivity of infrared or ultrasound emitted.
|
reflectivity of infrared or ultrasound emitted.
|
||||||
Often these sensors are unit less and as such conversion
|
Often these sensors are unit less and as such conversion
|
||||||
to SI units is not possible. Where it is, the units should
|
to SI units is not possible. Higher proximity measurements
|
||||||
be meters. If such a conversion is not possible, the reported
|
indicate closer objects, and vice versa.
|
||||||
values should behave in the same way as a distance, i.e. lower
|
|
||||||
values indicate something is closer to the sensor.
|
|
||||||
|
|
||||||
What: /sys/.../iio:deviceX/in_illuminance_input
|
What: /sys/.../iio:deviceX/in_illuminance_input
|
||||||
What: /sys/.../iio:deviceX/in_illuminance_raw
|
What: /sys/.../iio:deviceX/in_illuminance_raw
|
||||||
|
|
|
@ -3383,7 +3383,7 @@ void intel_crt_init(struct drm_device *dev)
|
||||||
<td valign="top" >TBD</td>
|
<td valign="top" >TBD</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" valign="top" >omap</td>
|
<td valign="top" >omap</td>
|
||||||
<td valign="top" >Generic</td>
|
<td valign="top" >Generic</td>
|
||||||
<td valign="top" >“zorder”</td>
|
<td valign="top" >“zorder”</td>
|
||||||
<td valign="top" >RANGE</td>
|
<td valign="top" >RANGE</td>
|
||||||
|
|
|
@ -60,4 +60,4 @@ Introduction
|
||||||
Document Author
|
Document Author
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Viresh Kumar <viresh.linux@gmail.com>, (c) 2010-2012 ST Microelectronics
|
Viresh Kumar <vireshk@kernel.org>, (c) 2010-2012 ST Microelectronics
|
||||||
|
|
|
@ -36,7 +36,7 @@ SunXi family
|
||||||
+ User Manual
|
+ User Manual
|
||||||
http://dl.linux-sunxi.org/A20/A20%20User%20Manual%202013-03-22.pdf
|
http://dl.linux-sunxi.org/A20/A20%20User%20Manual%202013-03-22.pdf
|
||||||
|
|
||||||
- Allwinner A23
|
- Allwinner A23 (sun8i)
|
||||||
+ Datasheet
|
+ Datasheet
|
||||||
http://dl.linux-sunxi.org/A23/A23%20Datasheet%20V1.0%2020130830.pdf
|
http://dl.linux-sunxi.org/A23/A23%20Datasheet%20V1.0%2020130830.pdf
|
||||||
+ User Manual
|
+ User Manual
|
||||||
|
@ -55,7 +55,23 @@ SunXi family
|
||||||
+ User Manual
|
+ User Manual
|
||||||
http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20User%20Manual%20%20V1.0%2020130322.pdf
|
http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20User%20Manual%20%20V1.0%2020130322.pdf
|
||||||
|
|
||||||
|
- Allwinner A33 (sun8i)
|
||||||
|
+ Datasheet
|
||||||
|
http://dl.linux-sunxi.org/A33/A33%20Datasheet%20release%201.1.pdf
|
||||||
|
+ User Manual
|
||||||
|
http://dl.linux-sunxi.org/A33/A33%20user%20manual%20release%201.1.pdf
|
||||||
|
|
||||||
|
- Allwinner H3 (sun8i)
|
||||||
|
+ Datasheet
|
||||||
|
http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf
|
||||||
|
|
||||||
* Quad ARM Cortex-A15, Quad ARM Cortex-A7 based SoCs
|
* Quad ARM Cortex-A15, Quad ARM Cortex-A7 based SoCs
|
||||||
- Allwinner A80
|
- Allwinner A80
|
||||||
+ Datasheet
|
+ Datasheet
|
||||||
http://dl.linux-sunxi.org/A80/A80_Datasheet_Revision_1.0_0404.pdf
|
http://dl.linux-sunxi.org/A80/A80_Datasheet_Revision_1.0_0404.pdf
|
||||||
|
|
||||||
|
* Octa ARM Cortex-A7 based SoCs
|
||||||
|
- Allwinner A83T
|
||||||
|
+ Not Supported
|
||||||
|
+ Datasheet
|
||||||
|
http://dl.linux-sunxi.org/A83T/A83T_datasheet_Revision_1.1.pdf
|
||||||
|
|
|
@ -258,6 +258,12 @@ cache metadata mode : ro if read-only, rw if read-write
|
||||||
no further I/O will be permitted and the status will just
|
no further I/O will be permitted and the status will just
|
||||||
contain the string 'Fail'. The userspace recovery tools
|
contain the string 'Fail'. The userspace recovery tools
|
||||||
should then be used.
|
should then be used.
|
||||||
|
needs_check : 'needs_check' if set, '-' if not set
|
||||||
|
A metadata operation has failed, resulting in the needs_check
|
||||||
|
flag being set in the metadata's superblock. The metadata
|
||||||
|
device must be deactivated and checked/repaired before the
|
||||||
|
cache can be made fully operational again. '-' indicates
|
||||||
|
needs_check is not set.
|
||||||
|
|
||||||
Messages
|
Messages
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -296,7 +296,7 @@ ii) Status
|
||||||
underlying device. When this is enabled when loading the table,
|
underlying device. When this is enabled when loading the table,
|
||||||
it can get disabled if the underlying device doesn't support it.
|
it can get disabled if the underlying device doesn't support it.
|
||||||
|
|
||||||
ro|rw
|
ro|rw|out_of_data_space
|
||||||
If the pool encounters certain types of device failures it will
|
If the pool encounters certain types of device failures it will
|
||||||
drop into a read-only metadata mode in which no changes to
|
drop into a read-only metadata mode in which no changes to
|
||||||
the pool metadata (like allocating new blocks) are permitted.
|
the pool metadata (like allocating new blocks) are permitted.
|
||||||
|
@ -314,6 +314,13 @@ ii) Status
|
||||||
module parameter can be used to change this timeout -- it
|
module parameter can be used to change this timeout -- it
|
||||||
defaults to 60 seconds but may be disabled using a value of 0.
|
defaults to 60 seconds but may be disabled using a value of 0.
|
||||||
|
|
||||||
|
needs_check
|
||||||
|
A metadata operation has failed, resulting in the needs_check
|
||||||
|
flag being set in the metadata's superblock. The metadata
|
||||||
|
device must be deactivated and checked/repaired before the
|
||||||
|
thin-pool can be made fully operational again. '-' indicates
|
||||||
|
needs_check is not set.
|
||||||
|
|
||||||
iii) Messages
|
iii) Messages
|
||||||
|
|
||||||
create_thin <dev id>
|
create_thin <dev id>
|
||||||
|
|
|
@ -9,4 +9,6 @@ using one of the following compatible strings:
|
||||||
allwinner,sun6i-a31
|
allwinner,sun6i-a31
|
||||||
allwinner,sun7i-a20
|
allwinner,sun7i-a20
|
||||||
allwinner,sun8i-a23
|
allwinner,sun8i-a23
|
||||||
|
allwinner,sun8i-a33
|
||||||
|
allwinner,sun8i-h3
|
||||||
allwinner,sun9i-a80
|
allwinner,sun9i-a80
|
||||||
|
|
|
@ -35,7 +35,7 @@ Example:
|
||||||
device_type = "dma";
|
device_type = "dma";
|
||||||
reg = <0x0 0x1f270000 0x0 0x10000>,
|
reg = <0x0 0x1f270000 0x0 0x10000>,
|
||||||
<0x0 0x1f200000 0x0 0x10000>,
|
<0x0 0x1f200000 0x0 0x10000>,
|
||||||
<0x0 0x1b008000 0x0 0x2000>,
|
<0x0 0x1b000000 0x0 0x400000>,
|
||||||
<0x0 0x1054a000 0x0 0x100>;
|
<0x0 0x1054a000 0x0 0x100>;
|
||||||
interrupts = <0x0 0x82 0x4>,
|
interrupts = <0x0 0x82 0x4>,
|
||||||
<0x0 0xb8 0x4>,
|
<0x0 0xb8 0x4>,
|
||||||
|
|
|
@ -65,8 +65,10 @@ Optional properties:
|
||||||
- edid: verbatim EDID data block describing attached display.
|
- edid: verbatim EDID data block describing attached display.
|
||||||
- ddc: phandle describing the i2c bus handling the display data
|
- ddc: phandle describing the i2c bus handling the display data
|
||||||
channel
|
channel
|
||||||
- port: A port node with endpoint definitions as defined in
|
- port@[0-1]: Port nodes with endpoint definitions as defined in
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||||
|
Port 0 is the input port connected to the IPU display interface,
|
||||||
|
port 1 is the output port connected to a panel.
|
||||||
|
|
||||||
example:
|
example:
|
||||||
|
|
||||||
|
@ -75,9 +77,29 @@ display@di0 {
|
||||||
edid = [edid-data];
|
edid = [edid-data];
|
||||||
interface-pix-fmt = "rgb24";
|
interface-pix-fmt = "rgb24";
|
||||||
|
|
||||||
port {
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
display_in: endpoint {
|
display_in: endpoint {
|
||||||
remote-endpoint = <&ipu_di0_disp0>;
|
remote-endpoint = <&ipu_di0_disp0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
display_out: endpoint {
|
||||||
|
remote-endpoint = <&panel_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
panel {
|
||||||
|
...
|
||||||
|
|
||||||
|
port {
|
||||||
|
panel_in: endpoint {
|
||||||
|
remote-endpoint = <&display_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -35,3 +35,6 @@ the PCIe specification.
|
||||||
|
|
||||||
NOTE: this only applies to the SMMU itself, not
|
NOTE: this only applies to the SMMU itself, not
|
||||||
masters connected upstream of the SMMU.
|
masters connected upstream of the SMMU.
|
||||||
|
|
||||||
|
- hisilicon,broken-prefetch-cmd
|
||||||
|
: Avoid sending CMD_PREFETCH_* commands to the SMMU.
|
||||||
|
|
|
@ -8,6 +8,7 @@ of the EMIF IP and memory parts attached to it.
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be of the form "ti,emif-<ip-rev>" where <ip-rev>
|
- compatible : Should be of the form "ti,emif-<ip-rev>" where <ip-rev>
|
||||||
is the IP revision of the specific EMIF instance.
|
is the IP revision of the specific EMIF instance.
|
||||||
|
For am437x should be ti,emif-am4372.
|
||||||
|
|
||||||
- phy-type : <u32> indicating the DDR phy type. Following are the
|
- phy-type : <u32> indicating the DDR phy type. Following are the
|
||||||
allowed values
|
allowed values
|
||||||
|
|
|
@ -17,7 +17,6 @@ Required properties:
|
||||||
"fsl,imx6sx-usdhc"
|
"fsl,imx6sx-usdhc"
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- fsl,cd-controller : Indicate to use controller internal card detection
|
|
||||||
- fsl,wp-controller : Indicate to use controller internal write protection
|
- fsl,wp-controller : Indicate to use controller internal write protection
|
||||||
- fsl,delay-line : Specify the number of delay cells for override mode.
|
- fsl,delay-line : Specify the number of delay cells for override mode.
|
||||||
This is used to set the clock delay for DLL(Delay Line) on override mode
|
This is used to set the clock delay for DLL(Delay Line) on override mode
|
||||||
|
@ -35,7 +34,6 @@ esdhc@70004000 {
|
||||||
compatible = "fsl,imx51-esdhc";
|
compatible = "fsl,imx51-esdhc";
|
||||||
reg = <0x70004000 0x4000>;
|
reg = <0x70004000 0x4000>;
|
||||||
interrupts = <1>;
|
interrupts = <1>;
|
||||||
fsl,cd-controller;
|
|
||||||
fsl,wp-controller;
|
fsl,wp-controller;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,9 @@ Optional properties:
|
||||||
- id: If there are multiple instance of the same type, in order to
|
- id: If there are multiple instance of the same type, in order to
|
||||||
differentiate between each instance "id" can be used (e.g., multi-lane PCIe
|
differentiate between each instance "id" can be used (e.g., multi-lane PCIe
|
||||||
PHY). If "id" is not provided, it is set to default value of '1'.
|
PHY). If "id" is not provided, it is set to default value of '1'.
|
||||||
|
- syscon-pllreset: Handle to system control region that contains the
|
||||||
|
CTRL_CORE_SMA_SW_0 register and register offset to the CTRL_CORE_SMA_SW_0
|
||||||
|
register that contains the SATA_PLL_SOFT_RESET bit. Only valid for sata_phy.
|
||||||
|
|
||||||
This is usually a subnode of ocp2scp to which it is connected.
|
This is usually a subnode of ocp2scp to which it is connected.
|
||||||
|
|
||||||
|
@ -100,3 +103,16 @@ usb3phy@4a084400 {
|
||||||
"sysclk",
|
"sysclk",
|
||||||
"refclk";
|
"refclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sata_phy: phy@4A096000 {
|
||||||
|
compatible = "ti,phy-pipe3-sata";
|
||||||
|
reg = <0x4A096000 0x80>, /* phy_rx */
|
||||||
|
<0x4A096400 0x64>, /* phy_tx */
|
||||||
|
<0x4A096800 0x40>; /* pll_ctrl */
|
||||||
|
reg-names = "phy_rx", "phy_tx", "pll_ctrl";
|
||||||
|
ctrl-module = <&omap_control_sata>;
|
||||||
|
clocks = <&sys_clkin1>, <&sata_ref_clk>;
|
||||||
|
clock-names = "sysclk", "refclk";
|
||||||
|
syscon-pllreset = <&scm_conf 0x3fc>;
|
||||||
|
#phy-cells = <0>;
|
||||||
|
};
|
||||||
|
|
|
@ -3,11 +3,13 @@ MT8173 with MAX98090 CODEC
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : "mediatek,mt8173-max98090"
|
- compatible : "mediatek,mt8173-max98090"
|
||||||
- mediatek,audio-codec: the phandle of the MAX98090 audio codec
|
- mediatek,audio-codec: the phandle of the MAX98090 audio codec
|
||||||
|
- mediatek,platform: the phandle of MT8173 ASoC platform
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
compatible = "mediatek,mt8173-max98090";
|
compatible = "mediatek,mt8173-max98090";
|
||||||
mediatek,audio-codec = <&max98090>;
|
mediatek,audio-codec = <&max98090>;
|
||||||
|
mediatek,platform = <&afe>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,13 @@ MT8173 with RT5650 RT5676 CODECS
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : "mediatek,mt8173-rt5650-rt5676"
|
- compatible : "mediatek,mt8173-rt5650-rt5676"
|
||||||
- mediatek,audio-codec: the phandles of rt5650 and rt5676 codecs
|
- mediatek,audio-codec: the phandles of rt5650 and rt5676 codecs
|
||||||
|
- mediatek,platform: the phandle of MT8173 ASoC platform
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
compatible = "mediatek,mt8173-rt5650-rt5676";
|
compatible = "mediatek,mt8173-rt5650-rt5676";
|
||||||
mediatek,audio-codec = <&rt5650 &rt5676>;
|
mediatek,audio-codec = <&rt5650 &rt5676>;
|
||||||
|
mediatek,platform = <&afe>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ Binding for Qualcomm Atheros AR7xxx/AR9xxx SPI controller
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: has to be "qca,<soc-type>-spi", "qca,ar7100-spi" as fallback.
|
- compatible: has to be "qca,<soc-type>-spi", "qca,ar7100-spi" as fallback.
|
||||||
- reg: Base address and size of the controllers memory area
|
- reg: Base address and size of the controllers memory area
|
||||||
- clocks: phandle to the AHB clock.
|
- clocks: phandle of the AHB clock.
|
||||||
- clock-names: has to be "ahb".
|
- clock-names: has to be "ahb".
|
||||||
- #address-cells: <1>, as required by generic SPI binding.
|
- #address-cells: <1>, as required by generic SPI binding.
|
||||||
- #size-cells: <0>, also as required by generic SPI binding.
|
- #size-cells: <0>, also as required by generic SPI binding.
|
||||||
|
@ -12,9 +12,9 @@ Child nodes as per the generic SPI binding.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
spi@1F000000 {
|
spi@1f000000 {
|
||||||
compatible = "qca,ar9132-spi", "qca,ar7100-spi";
|
compatible = "qca,ar9132-spi", "qca,ar7100-spi";
|
||||||
reg = <0x1F000000 0x10>;
|
reg = <0x1f000000 0x10>;
|
||||||
|
|
||||||
clocks = <&pll 2>;
|
clocks = <&pll 2>;
|
||||||
clock-names = "ahb";
|
clock-names = "ahb";
|
||||||
|
|
|
@ -35,11 +35,11 @@ temp1_input Local temperature (1/1000 degree,
|
||||||
temp[2-9]_input CPU temperatures (1/1000 degree,
|
temp[2-9]_input CPU temperatures (1/1000 degree,
|
||||||
0.125 degree resolution)
|
0.125 degree resolution)
|
||||||
|
|
||||||
fan[1-4]_mode R/W, 0/1 for manual or SmartFan mode
|
pwm[1-4]_enable R/W, 1/2 for manual or SmartFan mode
|
||||||
Setting SmartFan mode is supported only if it has been
|
Setting SmartFan mode is supported only if it has been
|
||||||
previously configured by BIOS (or configuration EEPROM)
|
previously configured by BIOS (or configuration EEPROM)
|
||||||
|
|
||||||
fan[1-4]_pwm R/O in SmartFan mode, R/W in manual control mode
|
pwm[1-4] R/O in SmartFan mode, R/W in manual control mode
|
||||||
|
|
||||||
The driver checks sensor control registers and does not export the sensors
|
The driver checks sensor control registers and does not export the sensors
|
||||||
that are not enabled. Anyway, a sensor that is enabled may actually be not
|
that are not enabled. Anyway, a sensor that is enabled may actually be not
|
||||||
|
|
|
@ -119,8 +119,10 @@ ALPS Absolute Mode - Protocol Version 2
|
||||||
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
||||||
|
|
||||||
Protocol Version 2 DualPoint devices send standard PS/2 mouse packets for
|
Protocol Version 2 DualPoint devices send standard PS/2 mouse packets for
|
||||||
the DualPoint Stick. For non interleaved dualpoint devices the pointingstick
|
the DualPoint Stick. The M, R and L bits signal the combined status of both
|
||||||
buttons get reported separately in the PSM, PSR and PSL bits.
|
the pointingstick and touchpad buttons, except for Dell dualpoint devices
|
||||||
|
where the pointingstick buttons get reported separately in the PSM, PSR
|
||||||
|
and PSL bits.
|
||||||
|
|
||||||
Dualpoint device -- interleaved packet format
|
Dualpoint device -- interleaved packet format
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
|
@ -952,6 +952,14 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
|
$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
|
||||||
mode) if this option is supported by $(AR).
|
mode) if this option is supported by $(AR).
|
||||||
|
|
||||||
|
ARCH_CPPFLAGS, ARCH_AFLAGS, ARCH_CFLAGS Overrides the kbuild defaults
|
||||||
|
|
||||||
|
These variables are appended to the KBUILD_CPPFLAGS,
|
||||||
|
KBUILD_AFLAGS, and KBUILD_CFLAGS, respectively, after the
|
||||||
|
top-level Makefile has set any other flags. This provides a
|
||||||
|
means for an architecture to override the defaults.
|
||||||
|
|
||||||
|
|
||||||
--- 6.2 Add prerequisites to archheaders:
|
--- 6.2 Add prerequisites to archheaders:
|
||||||
|
|
||||||
The archheaders: rule is used to generate header files that
|
The archheaders: rule is used to generate header files that
|
||||||
|
|
|
@ -410,8 +410,17 @@ Documentation/usb/persist.txt.
|
||||||
|
|
||||||
Q: Can I suspend-to-disk using a swap partition under LVM?
|
Q: Can I suspend-to-disk using a swap partition under LVM?
|
||||||
|
|
||||||
A: No. You can suspend successfully, but you'll not be able to
|
A: Yes and No. You can suspend successfully, but the kernel will not be able
|
||||||
resume. uswsusp should be able to work with LVM. See suspend.sf.net.
|
to resume on its own. You need an initramfs that can recognize the resume
|
||||||
|
situation, activate the logical volume containing the swap volume (but not
|
||||||
|
touch any filesystems!), and eventually call
|
||||||
|
|
||||||
|
echo -n "$major:$minor" > /sys/power/resume
|
||||||
|
|
||||||
|
where $major and $minor are the respective major and minor device numbers of
|
||||||
|
the swap volume.
|
||||||
|
|
||||||
|
uswsusp works with LVM, too. See http://suspend.sourceforge.net/
|
||||||
|
|
||||||
Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were
|
Q: I upgraded the kernel from 2.6.15 to 2.6.16. Both kernels were
|
||||||
compiled with the similar configuration files. Anyway I found that
|
compiled with the similar configuration files. Anyway I found that
|
||||||
|
|
|
@ -199,7 +199,8 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
||||||
buf += "#include <linux/string.h>\n"
|
buf += "#include <linux/string.h>\n"
|
||||||
buf += "#include <linux/configfs.h>\n"
|
buf += "#include <linux/configfs.h>\n"
|
||||||
buf += "#include <linux/ctype.h>\n"
|
buf += "#include <linux/ctype.h>\n"
|
||||||
buf += "#include <asm/unaligned.h>\n\n"
|
buf += "#include <asm/unaligned.h>\n"
|
||||||
|
buf += "#include <scsi/scsi_proto.h>\n\n"
|
||||||
buf += "#include <target/target_core_base.h>\n"
|
buf += "#include <target/target_core_base.h>\n"
|
||||||
buf += "#include <target/target_core_fabric.h>\n"
|
buf += "#include <target/target_core_fabric.h>\n"
|
||||||
buf += "#include <target/target_core_fabric_configfs.h>\n"
|
buf += "#include <target/target_core_fabric_configfs.h>\n"
|
||||||
|
@ -230,8 +231,14 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
||||||
buf += " }\n"
|
buf += " }\n"
|
||||||
buf += " tpg->" + fabric_mod_port + " = " + fabric_mod_port + ";\n"
|
buf += " tpg->" + fabric_mod_port + " = " + fabric_mod_port + ";\n"
|
||||||
buf += " tpg->" + fabric_mod_port + "_tpgt = tpgt;\n\n"
|
buf += " tpg->" + fabric_mod_port + "_tpgt = tpgt;\n\n"
|
||||||
buf += " ret = core_tpg_register(&" + fabric_mod_name + "_ops, wwn,\n"
|
|
||||||
buf += " &tpg->se_tpg, SCSI_PROTOCOL_SAS);\n"
|
if proto_ident == "FC":
|
||||||
|
buf += " ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);\n"
|
||||||
|
elif proto_ident == "SAS":
|
||||||
|
buf += " ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_SAS);\n"
|
||||||
|
elif proto_ident == "iSCSI":
|
||||||
|
buf += " ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_ISCSI);\n"
|
||||||
|
|
||||||
buf += " if (ret < 0) {\n"
|
buf += " if (ret < 0) {\n"
|
||||||
buf += " kfree(tpg);\n"
|
buf += " kfree(tpg);\n"
|
||||||
buf += " return NULL;\n"
|
buf += " return NULL;\n"
|
||||||
|
@ -292,7 +299,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
||||||
|
|
||||||
buf += "static const struct target_core_fabric_ops " + fabric_mod_name + "_ops = {\n"
|
buf += "static const struct target_core_fabric_ops " + fabric_mod_name + "_ops = {\n"
|
||||||
buf += " .module = THIS_MODULE,\n"
|
buf += " .module = THIS_MODULE,\n"
|
||||||
buf += " .name = " + fabric_mod_name + ",\n"
|
buf += " .name = \"" + fabric_mod_name + "\",\n"
|
||||||
buf += " .get_fabric_name = " + fabric_mod_name + "_get_fabric_name,\n"
|
buf += " .get_fabric_name = " + fabric_mod_name + "_get_fabric_name,\n"
|
||||||
buf += " .tpg_get_wwn = " + fabric_mod_name + "_get_fabric_wwn,\n"
|
buf += " .tpg_get_wwn = " + fabric_mod_name + "_get_fabric_wwn,\n"
|
||||||
buf += " .tpg_get_tag = " + fabric_mod_name + "_get_tag,\n"
|
buf += " .tpg_get_tag = " + fabric_mod_name + "_get_tag,\n"
|
||||||
|
@ -322,17 +329,17 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
||||||
buf += " .fabric_make_tpg = " + fabric_mod_name + "_make_tpg,\n"
|
buf += " .fabric_make_tpg = " + fabric_mod_name + "_make_tpg,\n"
|
||||||
buf += " .fabric_drop_tpg = " + fabric_mod_name + "_drop_tpg,\n"
|
buf += " .fabric_drop_tpg = " + fabric_mod_name + "_drop_tpg,\n"
|
||||||
buf += "\n"
|
buf += "\n"
|
||||||
buf += " .tfc_wwn_attrs = " + fabric_mod_name + "_wwn_attrs;\n"
|
buf += " .tfc_wwn_attrs = " + fabric_mod_name + "_wwn_attrs,\n"
|
||||||
buf += "};\n\n"
|
buf += "};\n\n"
|
||||||
|
|
||||||
buf += "static int __init " + fabric_mod_name + "_init(void)\n"
|
buf += "static int __init " + fabric_mod_name + "_init(void)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
buf += " return target_register_template(" + fabric_mod_name + "_ops);\n"
|
buf += " return target_register_template(&" + fabric_mod_name + "_ops);\n"
|
||||||
buf += "};\n\n"
|
buf += "};\n\n"
|
||||||
|
|
||||||
buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
|
buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
buf += " target_unregister_template(" + fabric_mod_name + "_ops);\n"
|
buf += " target_unregister_template(&" + fabric_mod_name + "_ops);\n"
|
||||||
buf += "};\n\n"
|
buf += "};\n\n"
|
||||||
|
|
||||||
buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
|
buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
|
||||||
|
|
158
MAINTAINERS
158
MAINTAINERS
|
@ -361,11 +361,11 @@ S: Supported
|
||||||
F: drivers/input/touchscreen/ad7879.c
|
F: drivers/input/touchscreen/ad7879.c
|
||||||
|
|
||||||
ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
|
ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ADM1025 HARDWARE MONITOR DRIVER
|
ADM1025 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/adm1025
|
F: Documentation/hwmon/adm1025
|
||||||
|
@ -430,7 +430,7 @@ S: Maintained
|
||||||
F: drivers/macintosh/therm_adt746x.c
|
F: drivers/macintosh/therm_adt746x.c
|
||||||
|
|
||||||
ADT7475 HARDWARE MONITOR DRIVER
|
ADT7475 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/adt7475
|
F: Documentation/hwmon/adt7475
|
||||||
|
@ -445,7 +445,7 @@ F: drivers/input/misc/adxl34x.c
|
||||||
|
|
||||||
ADVANSYS SCSI DRIVER
|
ADVANSYS SCSI DRIVER
|
||||||
M: Matthew Wilcox <matthew@wil.cx>
|
M: Matthew Wilcox <matthew@wil.cx>
|
||||||
M: Hannes Reinecke <hare@suse.de>
|
M: Hannes Reinecke <hare@suse.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/scsi/advansys.txt
|
F: Documentation/scsi/advansys.txt
|
||||||
|
@ -506,7 +506,7 @@ F: drivers/scsi/aha152x*
|
||||||
F: drivers/scsi/pcmcia/aha152x*
|
F: drivers/scsi/pcmcia/aha152x*
|
||||||
|
|
||||||
AIC7XXX / AIC79XX SCSI DRIVER
|
AIC7XXX / AIC79XX SCSI DRIVER
|
||||||
M: Hannes Reinecke <hare@suse.de>
|
M: Hannes Reinecke <hare@suse.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/scsi/aic7xxx/
|
F: drivers/scsi/aic7xxx/
|
||||||
|
@ -746,7 +746,7 @@ S: Maintained
|
||||||
F: sound/aoa/
|
F: sound/aoa/
|
||||||
|
|
||||||
APM DRIVER
|
APM DRIVER
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
S: Odd fixes
|
S: Odd fixes
|
||||||
F: arch/x86/kernel/apm_32.c
|
F: arch/x86/kernel/apm_32.c
|
||||||
F: include/linux/apm_bios.h
|
F: include/linux/apm_bios.h
|
||||||
|
@ -1001,6 +1001,7 @@ ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
|
||||||
M: Baruch Siach <baruch@tkos.co.il>
|
M: Baruch Siach <baruch@tkos.co.il>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/boot/dts/cx92755*
|
||||||
N: digicolor
|
N: digicolor
|
||||||
|
|
||||||
ARM/EBSA110 MACHINE SUPPORT
|
ARM/EBSA110 MACHINE SUPPORT
|
||||||
|
@ -1324,7 +1325,7 @@ F: arch/arm/mach-pxa/include/mach/palmtc.h
|
||||||
F: arch/arm/mach-pxa/palmtc.c
|
F: arch/arm/mach-pxa/palmtc.c
|
||||||
|
|
||||||
ARM/PALM TREO SUPPORT
|
ARM/PALM TREO SUPPORT
|
||||||
M: Tomas Cech <sleep_walker@suse.cz>
|
M: Tomas Cech <sleep_walker@suse.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
W: http://hackndev.com
|
W: http://hackndev.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -1614,6 +1615,7 @@ M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/boot/dts/vexpress*
|
F: arch/arm/boot/dts/vexpress*
|
||||||
|
F: arch/arm64/boot/dts/arm/vexpress*
|
||||||
F: arch/arm/mach-vexpress/
|
F: arch/arm/mach-vexpress/
|
||||||
F: */*/vexpress*
|
F: */*/vexpress*
|
||||||
F: */*/*/vexpress*
|
F: */*/*/vexpress*
|
||||||
|
@ -2404,7 +2406,7 @@ F: drivers/gpio/gpio-bt8xx.c
|
||||||
BTRFS FILE SYSTEM
|
BTRFS FILE SYSTEM
|
||||||
M: Chris Mason <clm@fb.com>
|
M: Chris Mason <clm@fb.com>
|
||||||
M: Josef Bacik <jbacik@fb.com>
|
M: Josef Bacik <jbacik@fb.com>
|
||||||
M: David Sterba <dsterba@suse.cz>
|
M: David Sterba <dsterba@suse.com>
|
||||||
L: linux-btrfs@vger.kernel.org
|
L: linux-btrfs@vger.kernel.org
|
||||||
W: http://btrfs.wiki.kernel.org/
|
W: http://btrfs.wiki.kernel.org/
|
||||||
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
||||||
|
@ -2562,19 +2564,31 @@ F: arch/powerpc/include/uapi/asm/spu*.h
|
||||||
F: arch/powerpc/oprofile/*cell*
|
F: arch/powerpc/oprofile/*cell*
|
||||||
F: arch/powerpc/platforms/cell/
|
F: arch/powerpc/platforms/cell/
|
||||||
|
|
||||||
CEPH DISTRIBUTED FILE SYSTEM CLIENT
|
CEPH COMMON CODE (LIBCEPH)
|
||||||
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
M: "Yan, Zheng" <zyan@redhat.com>
|
M: "Yan, Zheng" <zyan@redhat.com>
|
||||||
M: Sage Weil <sage@redhat.com>
|
M: Sage Weil <sage@redhat.com>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
||||||
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/filesystems/ceph.txt
|
|
||||||
F: fs/ceph/
|
|
||||||
F: net/ceph/
|
F: net/ceph/
|
||||||
F: include/linux/ceph/
|
F: include/linux/ceph/
|
||||||
F: include/linux/crush/
|
F: include/linux/crush/
|
||||||
|
|
||||||
|
CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
|
||||||
|
M: "Yan, Zheng" <zyan@redhat.com>
|
||||||
|
M: Sage Weil <sage@redhat.com>
|
||||||
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
|
L: ceph-devel@vger.kernel.org
|
||||||
|
W: http://ceph.com/
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
||||||
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
|
S: Supported
|
||||||
|
F: Documentation/filesystems/ceph.txt
|
||||||
|
F: fs/ceph/
|
||||||
|
|
||||||
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
|
@ -2735,7 +2749,7 @@ COCCINELLE/Semantic Patches (SmPL)
|
||||||
M: Julia Lawall <Julia.Lawall@lip6.fr>
|
M: Julia Lawall <Julia.Lawall@lip6.fr>
|
||||||
M: Gilles Muller <Gilles.Muller@lip6.fr>
|
M: Gilles Muller <Gilles.Muller@lip6.fr>
|
||||||
M: Nicolas Palix <nicolas.palix@imag.fr>
|
M: Nicolas Palix <nicolas.palix@imag.fr>
|
||||||
M: Michal Marek <mmarek@suse.cz>
|
M: Michal Marek <mmarek@suse.com>
|
||||||
L: cocci@systeme.lip6.fr (moderated for non-subscribers)
|
L: cocci@systeme.lip6.fr (moderated for non-subscribers)
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
|
||||||
W: http://coccinelle.lip6.fr/
|
W: http://coccinelle.lip6.fr/
|
||||||
|
@ -2851,7 +2865,7 @@ F: kernel/cpuset.c
|
||||||
|
|
||||||
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
|
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
|
||||||
M: Johannes Weiner <hannes@cmpxchg.org>
|
M: Johannes Weiner <hannes@cmpxchg.org>
|
||||||
M: Michal Hocko <mhocko@suse.cz>
|
M: Michal Hocko <mhocko@kernel.org>
|
||||||
L: cgroups@vger.kernel.org
|
L: cgroups@vger.kernel.org
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -2932,7 +2946,7 @@ F: arch/x86/kernel/cpuid.c
|
||||||
F: arch/x86/kernel/msr.c
|
F: arch/x86/kernel/msr.c
|
||||||
|
|
||||||
CPU POWER MONITORING SUBSYSTEM
|
CPU POWER MONITORING SUBSYSTEM
|
||||||
M: Thomas Renninger <trenn@suse.de>
|
M: Thomas Renninger <trenn@suse.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: tools/power/cpupower/
|
F: tools/power/cpupower/
|
||||||
|
@ -3162,7 +3176,7 @@ F: Documentation/networking/dmfe.txt
|
||||||
F: drivers/net/ethernet/dec/tulip/dmfe.c
|
F: drivers/net/ethernet/dec/tulip/dmfe.c
|
||||||
|
|
||||||
DC390/AM53C974 SCSI driver
|
DC390/AM53C974 SCSI driver
|
||||||
M: Hannes Reinecke <hare@suse.de>
|
M: Hannes Reinecke <hare@suse.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/scsi/am53c974.c
|
F: drivers/scsi/am53c974.c
|
||||||
|
@ -3366,7 +3380,7 @@ W: http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
DISKQUOTA
|
DISKQUOTA
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/filesystems/quota.txt
|
F: Documentation/filesystems/quota.txt
|
||||||
F: fs/quota/
|
F: fs/quota/
|
||||||
|
@ -3422,7 +3436,7 @@ F: Documentation/hwmon/dme1737
|
||||||
F: drivers/hwmon/dme1737.c
|
F: drivers/hwmon/dme1737.c
|
||||||
|
|
||||||
DMI/SMBIOS SUPPORT
|
DMI/SMBIOS SUPPORT
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
|
T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
|
||||||
F: Documentation/ABI/testing/sysfs-firmware-dmi-tables
|
F: Documentation/ABI/testing/sysfs-firmware-dmi-tables
|
||||||
|
@ -4038,7 +4052,7 @@ F: drivers/of/of_mdio.c
|
||||||
F: drivers/of/of_net.c
|
F: drivers/of/of_net.c
|
||||||
|
|
||||||
EXT2 FILE SYSTEM
|
EXT2 FILE SYSTEM
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.com>
|
||||||
L: linux-ext4@vger.kernel.org
|
L: linux-ext4@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/filesystems/ext2.txt
|
F: Documentation/filesystems/ext2.txt
|
||||||
|
@ -4046,7 +4060,7 @@ F: fs/ext2/
|
||||||
F: include/linux/ext2*
|
F: include/linux/ext2*
|
||||||
|
|
||||||
EXT3 FILE SYSTEM
|
EXT3 FILE SYSTEM
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.com>
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Andreas Dilger <adilger.kernel@dilger.ca>
|
M: Andreas Dilger <adilger.kernel@dilger.ca>
|
||||||
L: linux-ext4@vger.kernel.org
|
L: linux-ext4@vger.kernel.org
|
||||||
|
@ -4096,7 +4110,7 @@ F: drivers/video/fbdev/exynos/exynos_mipi*
|
||||||
F: include/video/exynos_mipi*
|
F: include/video/exynos_mipi*
|
||||||
|
|
||||||
F71805F HARDWARE MONITORING DRIVER
|
F71805F HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/f71805f
|
F: Documentation/hwmon/f71805f
|
||||||
|
@ -4231,7 +4245,7 @@ S: Maintained
|
||||||
F: drivers/block/rsxx/
|
F: drivers/block/rsxx/
|
||||||
|
|
||||||
FLOPPY DRIVER
|
FLOPPY DRIVER
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
|
||||||
S: Odd fixes
|
S: Odd fixes
|
||||||
F: drivers/block/floppy.c
|
F: drivers/block/floppy.c
|
||||||
|
@ -4652,7 +4666,7 @@ F: drivers/media/usb/stk1160/
|
||||||
|
|
||||||
H8/300 ARCHITECTURE
|
H8/300 ARCHITECTURE
|
||||||
M: Yoshinori Sato <ysato@users.sourceforge.jp>
|
M: Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||||
L: uclinux-h8-devel@lists.sourceforge.jp
|
L: uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers)
|
||||||
W: http://uclinux-h8.sourceforge.jp
|
W: http://uclinux-h8.sourceforge.jp
|
||||||
T: git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
|
T: git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -4699,7 +4713,7 @@ S: Maintained
|
||||||
F: drivers/media/usb/hackrf/
|
F: drivers/media/usb/hackrf/
|
||||||
|
|
||||||
HARDWARE MONITORING
|
HARDWARE MONITORING
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
W: http://www.lm-sensors.org/
|
W: http://www.lm-sensors.org/
|
||||||
|
@ -4802,7 +4816,7 @@ F: include/linux/pm.h
|
||||||
F: arch/*/include/asm/suspend*.h
|
F: arch/*/include/asm/suspend*.h
|
||||||
|
|
||||||
HID CORE LAYER
|
HID CORE LAYER
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -4811,7 +4825,7 @@ F: include/linux/hid*
|
||||||
F: include/uapi/linux/hid*
|
F: include/uapi/linux/hid*
|
||||||
|
|
||||||
HID SENSOR HUB DRIVERS
|
HID SENSOR HUB DRIVERS
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
M: Jonathan Cameron <jic23@kernel.org>
|
M: Jonathan Cameron <jic23@kernel.org>
|
||||||
M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
|
M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
|
@ -4945,7 +4959,7 @@ F: include/linux/hyperv.h
|
||||||
F: tools/hv/
|
F: tools/hv/
|
||||||
|
|
||||||
I2C OVER PARALLEL PORT
|
I2C OVER PARALLEL PORT
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/i2c/busses/i2c-parport
|
F: Documentation/i2c/busses/i2c-parport
|
||||||
|
@ -4954,7 +4968,7 @@ F: drivers/i2c/busses/i2c-parport.c
|
||||||
F: drivers/i2c/busses/i2c-parport-light.c
|
F: drivers/i2c/busses/i2c-parport-light.c
|
||||||
|
|
||||||
I2C/SMBUS CONTROLLER DRIVERS FOR PC
|
I2C/SMBUS CONTROLLER DRIVERS FOR PC
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/i2c/busses/i2c-ali1535
|
F: Documentation/i2c/busses/i2c-ali1535
|
||||||
|
@ -4995,7 +5009,7 @@ F: drivers/i2c/busses/i2c-ismt.c
|
||||||
F: Documentation/i2c/busses/i2c-ismt
|
F: Documentation/i2c/busses/i2c-ismt
|
||||||
|
|
||||||
I2C/SMBUS STUB DRIVER
|
I2C/SMBUS STUB DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/i2c/i2c-stub.c
|
F: drivers/i2c/i2c-stub.c
|
||||||
|
@ -5022,7 +5036,7 @@ L: linux-acpi@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
I2C-TAOS-EVM DRIVER
|
I2C-TAOS-EVM DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/i2c/busses/i2c-taos-evm
|
F: Documentation/i2c/busses/i2c-taos-evm
|
||||||
|
@ -5551,8 +5565,8 @@ F: include/uapi/linux/ip_vs.h
|
||||||
F: net/netfilter/ipvs/
|
F: net/netfilter/ipvs/
|
||||||
|
|
||||||
IPWIRELESS DRIVER
|
IPWIRELESS DRIVER
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
M: David Sterba <dsterba@suse.cz>
|
M: David Sterba <dsterba@suse.com>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/tty/ipwireless/
|
F: drivers/tty/ipwireless/
|
||||||
|
|
||||||
|
@ -5586,6 +5600,7 @@ F: kernel/irq/
|
||||||
IRQCHIP DRIVERS
|
IRQCHIP DRIVERS
|
||||||
M: Thomas Gleixner <tglx@linutronix.de>
|
M: Thomas Gleixner <tglx@linutronix.de>
|
||||||
M: Jason Cooper <jason@lakedaemon.net>
|
M: Jason Cooper <jason@lakedaemon.net>
|
||||||
|
M: Marc Zyngier <marc.zyngier@arm.com>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
||||||
|
@ -5594,11 +5609,14 @@ F: Documentation/devicetree/bindings/interrupt-controller/
|
||||||
F: drivers/irqchip/
|
F: drivers/irqchip/
|
||||||
|
|
||||||
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
|
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
|
||||||
M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
M: Jiang Liu <jiang.liu@linux.intel.com>
|
||||||
|
M: Marc Zyngier <marc.zyngier@arm.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
||||||
F: Documentation/IRQ-domain.txt
|
F: Documentation/IRQ-domain.txt
|
||||||
F: include/linux/irqdomain.h
|
F: include/linux/irqdomain.h
|
||||||
F: kernel/irq/irqdomain.c
|
F: kernel/irq/irqdomain.c
|
||||||
|
F: kernel/irq/msi.c
|
||||||
|
|
||||||
ISAPNP
|
ISAPNP
|
||||||
M: Jaroslav Kysela <perex@perex.cz>
|
M: Jaroslav Kysela <perex@perex.cz>
|
||||||
|
@ -5672,7 +5690,7 @@ S: Maintained
|
||||||
F: drivers/isdn/hardware/eicon/
|
F: drivers/isdn/hardware/eicon/
|
||||||
|
|
||||||
IT87 HARDWARE MONITORING DRIVER
|
IT87 HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/it87
|
F: Documentation/hwmon/it87
|
||||||
|
@ -5739,7 +5757,7 @@ F: include/uapi/linux/jffs2.h
|
||||||
|
|
||||||
JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
|
JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.com>
|
||||||
L: linux-ext4@vger.kernel.org
|
L: linux-ext4@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: fs/jbd/
|
F: fs/jbd/
|
||||||
|
@ -5803,7 +5821,7 @@ S: Maintained
|
||||||
F: fs/autofs4/
|
F: fs/autofs4/
|
||||||
|
|
||||||
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
||||||
M: Michal Marek <mmarek@suse.cz>
|
M: Michal Marek <mmarek@suse.com>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
|
||||||
L: linux-kbuild@vger.kernel.org
|
L: linux-kbuild@vger.kernel.org
|
||||||
|
@ -5867,7 +5885,7 @@ F: arch/x86/include/asm/svm.h
|
||||||
F: arch/x86/kvm/svm.c
|
F: arch/x86/kvm/svm.c
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
|
KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
|
||||||
M: Alexander Graf <agraf@suse.de>
|
M: Alexander Graf <agraf@suse.com>
|
||||||
L: kvm-ppc@vger.kernel.org
|
L: kvm-ppc@vger.kernel.org
|
||||||
W: http://kvm.qumranet.com
|
W: http://kvm.qumranet.com
|
||||||
T: git git://github.com/agraf/linux-2.6.git
|
T: git git://github.com/agraf/linux-2.6.git
|
||||||
|
@ -5885,7 +5903,6 @@ S: Supported
|
||||||
F: Documentation/s390/kvm.txt
|
F: Documentation/s390/kvm.txt
|
||||||
F: arch/s390/include/asm/kvm*
|
F: arch/s390/include/asm/kvm*
|
||||||
F: arch/s390/kvm/
|
F: arch/s390/kvm/
|
||||||
F: drivers/s390/kvm/
|
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE (KVM) FOR ARM
|
KERNEL VIRTUAL MACHINE (KVM) FOR ARM
|
||||||
M: Christoffer Dall <christoffer.dall@linaro.org>
|
M: Christoffer Dall <christoffer.dall@linaro.org>
|
||||||
|
@ -6024,7 +6041,7 @@ F: drivers/leds/
|
||||||
F: include/linux/leds.h
|
F: include/linux/leds.h
|
||||||
|
|
||||||
LEGACY EEPROM DRIVER
|
LEGACY EEPROM DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/misc-devices/eeprom
|
F: Documentation/misc-devices/eeprom
|
||||||
F: drivers/misc/eeprom/eeprom.c
|
F: drivers/misc/eeprom/eeprom.c
|
||||||
|
@ -6077,7 +6094,7 @@ F: include/linux/ata.h
|
||||||
F: include/linux/libata.h
|
F: include/linux/libata.h
|
||||||
|
|
||||||
LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
|
LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: linux-ide@vger.kernel.org
|
L: linux-ide@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -6147,6 +6164,7 @@ L: linux-nvdimm@lists.01.org
|
||||||
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/nvdimm/pmem.c
|
F: drivers/nvdimm/pmem.c
|
||||||
|
F: include/linux/pmem.h
|
||||||
|
|
||||||
LINUX FOR IBM pSERIES (RS/6000)
|
LINUX FOR IBM pSERIES (RS/6000)
|
||||||
M: Paul Mackerras <paulus@au.ibm.com>
|
M: Paul Mackerras <paulus@au.ibm.com>
|
||||||
|
@ -6161,7 +6179,7 @@ M: Michael Ellerman <mpe@ellerman.id.au>
|
||||||
W: http://www.penguinppc.org/
|
W: http://www.penguinppc.org/
|
||||||
L: linuxppc-dev@lists.ozlabs.org
|
L: linuxppc-dev@lists.ozlabs.org
|
||||||
Q: http://patchwork.ozlabs.org/project/linuxppc-dev/list/
|
Q: http://patchwork.ozlabs.org/project/linuxppc-dev/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/powerpc/
|
F: Documentation/powerpc/
|
||||||
F: arch/powerpc/
|
F: arch/powerpc/
|
||||||
|
@ -6237,8 +6255,8 @@ F: drivers/platform/x86/hp_accel.c
|
||||||
LIVE PATCHING
|
LIVE PATCHING
|
||||||
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
M: Seth Jennings <sjenning@redhat.com>
|
M: Seth Jennings <sjenning@redhat.com>
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
M: Vojtech Pavlik <vojtech@suse.cz>
|
M: Vojtech Pavlik <vojtech@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/livepatch/
|
F: kernel/livepatch/
|
||||||
F: include/linux/livepatch.h
|
F: include/linux/livepatch.h
|
||||||
|
@ -6264,21 +6282,21 @@ S: Maintained
|
||||||
F: drivers/hwmon/lm73.c
|
F: drivers/hwmon/lm73.c
|
||||||
|
|
||||||
LM78 HARDWARE MONITOR DRIVER
|
LM78 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/lm78
|
F: Documentation/hwmon/lm78
|
||||||
F: drivers/hwmon/lm78.c
|
F: drivers/hwmon/lm78.c
|
||||||
|
|
||||||
LM83 HARDWARE MONITOR DRIVER
|
LM83 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/lm83
|
F: Documentation/hwmon/lm83
|
||||||
F: drivers/hwmon/lm83.c
|
F: drivers/hwmon/lm83.c
|
||||||
|
|
||||||
LM90 HARDWARE MONITOR DRIVER
|
LM90 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/lm90
|
F: Documentation/hwmon/lm90
|
||||||
|
@ -6824,6 +6842,12 @@ T: git git://linuxtv.org/anttip/media_tree.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/usb/msi2500/
|
F: drivers/media/usb/msi2500/
|
||||||
|
|
||||||
|
MSYSTEMS DISKONCHIP G3 MTD DRIVER
|
||||||
|
M: Robert Jarzmik <robert.jarzmik@free.fr>
|
||||||
|
L: linux-mtd@lists.infradead.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/mtd/devices/docg3*
|
||||||
|
|
||||||
MT9M032 APTINA SENSOR DRIVER
|
MT9M032 APTINA SENSOR DRIVER
|
||||||
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
@ -7005,6 +7029,7 @@ F: include/uapi/linux/netfilter/
|
||||||
F: net/*/netfilter.c
|
F: net/*/netfilter.c
|
||||||
F: net/*/netfilter/
|
F: net/*/netfilter/
|
||||||
F: net/netfilter/
|
F: net/netfilter/
|
||||||
|
F: net/bridge/br_netfilter*.c
|
||||||
|
|
||||||
NETLABEL
|
NETLABEL
|
||||||
M: Paul Moore <paul@paul-moore.com>
|
M: Paul Moore <paul@paul-moore.com>
|
||||||
|
@ -7704,7 +7729,7 @@ S: Maintained
|
||||||
F: drivers/char/pc8736x_gpio.c
|
F: drivers/char/pc8736x_gpio.c
|
||||||
|
|
||||||
PC87427 HARDWARE MONITORING DRIVER
|
PC87427 HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/pc87427
|
F: Documentation/hwmon/pc87427
|
||||||
|
@ -7981,7 +8006,7 @@ S: Maintained
|
||||||
F: drivers/pinctrl/samsung/
|
F: drivers/pinctrl/samsung/
|
||||||
|
|
||||||
PIN CONTROLLER - ST SPEAR
|
PIN CONTROLLER - ST SPEAR
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: spear-devel@list.st.com
|
L: spear-devel@list.st.com
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
|
@ -7989,7 +8014,7 @@ S: Maintained
|
||||||
F: drivers/pinctrl/spear/
|
F: drivers/pinctrl/spear/
|
||||||
|
|
||||||
PKTCDVD DRIVER
|
PKTCDVD DRIVER
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/block/pktcdvd.c
|
F: drivers/block/pktcdvd.c
|
||||||
F: include/linux/pktcdvd.h
|
F: include/linux/pktcdvd.h
|
||||||
|
@ -8366,10 +8391,12 @@ RADOS BLOCK DEVICE (RBD)
|
||||||
M: Ilya Dryomov <idryomov@gmail.com>
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
M: Sage Weil <sage@redhat.com>
|
M: Sage Weil <sage@redhat.com>
|
||||||
M: Alex Elder <elder@kernel.org>
|
M: Alex Elder <elder@kernel.org>
|
||||||
M: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
||||||
|
T: git git://github.com/ceph/ceph-client.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
F: Documentation/ABI/testing/sysfs-bus-rbd
|
||||||
F: drivers/block/rbd.c
|
F: drivers/block/rbd.c
|
||||||
F: drivers/block/rbd_types.h
|
F: drivers/block/rbd_types.h
|
||||||
|
|
||||||
|
@ -8878,7 +8905,7 @@ S: Maintained
|
||||||
F: drivers/tty/serial/
|
F: drivers/tty/serial/
|
||||||
|
|
||||||
SYNOPSYS DESIGNWARE DMAC DRIVER
|
SYNOPSYS DESIGNWARE DMAC DRIVER
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/dma/dw.h
|
F: include/linux/dma/dw.h
|
||||||
|
@ -9045,7 +9072,7 @@ S: Maintained
|
||||||
F: drivers/mmc/host/sdhci-s3c*
|
F: drivers/mmc/host/sdhci-s3c*
|
||||||
|
|
||||||
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
|
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: spear-devel@list.st.com
|
L: spear-devel@list.st.com
|
||||||
L: linux-mmc@vger.kernel.org
|
L: linux-mmc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -9407,7 +9434,7 @@ F: Documentation/hwmon/sch5627
|
||||||
F: drivers/hwmon/sch5627.c
|
F: drivers/hwmon/sch5627.c
|
||||||
|
|
||||||
SMSC47B397 HARDWARE MONITOR DRIVER
|
SMSC47B397 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/smsc47b397
|
F: Documentation/hwmon/smsc47b397
|
||||||
|
@ -9456,7 +9483,7 @@ S: Supported
|
||||||
F: drivers/media/pci/solo6x10/
|
F: drivers/media/pci/solo6x10/
|
||||||
|
|
||||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||||
M: Neil Brown <neilb@suse.de>
|
M: Neil Brown <neilb@suse.com>
|
||||||
L: linux-raid@vger.kernel.org
|
L: linux-raid@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/md/
|
F: drivers/md/
|
||||||
|
@ -9499,7 +9526,7 @@ F: drivers/memstick/core/ms_block.*
|
||||||
|
|
||||||
SOUND
|
SOUND
|
||||||
M: Jaroslav Kysela <perex@perex.cz>
|
M: Jaroslav Kysela <perex@perex.cz>
|
||||||
M: Takashi Iwai <tiwai@suse.de>
|
M: Takashi Iwai <tiwai@suse.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
W: http://www.alsa-project.org/
|
W: http://www.alsa-project.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
|
||||||
|
@ -9583,7 +9610,7 @@ S: Maintained
|
||||||
F: include/linux/compiler.h
|
F: include/linux/compiler.h
|
||||||
|
|
||||||
SPEAR PLATFORM SUPPORT
|
SPEAR PLATFORM SUPPORT
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
|
M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
|
||||||
L: spear-devel@list.st.com
|
L: spear-devel@list.st.com
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
@ -9592,7 +9619,7 @@ S: Maintained
|
||||||
F: arch/arm/mach-spear/
|
F: arch/arm/mach-spear/
|
||||||
|
|
||||||
SPEAR CLOCK FRAMEWORK SUPPORT
|
SPEAR CLOCK FRAMEWORK SUPPORT
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: spear-devel@list.st.com
|
L: spear-devel@list.st.com
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
|
@ -10382,7 +10409,7 @@ K: ^Subject:.*(?i)trivial
|
||||||
|
|
||||||
TTY LAYER
|
TTY LAYER
|
||||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
M: Jiri Slaby <jslaby@suse.cz>
|
M: Jiri Slaby <jslaby@suse.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
|
||||||
F: Documentation/serial/
|
F: Documentation/serial/
|
||||||
|
@ -10456,7 +10483,7 @@ F: arch/m68k/*/*_no.*
|
||||||
F: arch/m68k/include/asm/*_no.*
|
F: arch/m68k/include/asm/*_no.*
|
||||||
|
|
||||||
UDF FILESYSTEM
|
UDF FILESYSTEM
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/filesystems/udf.txt
|
F: Documentation/filesystems/udf.txt
|
||||||
F: fs/udf/
|
F: fs/udf/
|
||||||
|
@ -10599,7 +10626,7 @@ F: drivers/usb/gadget/
|
||||||
F: include/linux/usb/gadget*
|
F: include/linux/usb/gadget*
|
||||||
|
|
||||||
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
|
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
|
||||||
M: Jiri Kosina <jkosina@suse.cz>
|
M: Jiri Kosina <jkosina@suse.com>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -10724,7 +10751,7 @@ S: Maintained
|
||||||
F: drivers/usb/host/uhci*
|
F: drivers/usb/host/uhci*
|
||||||
|
|
||||||
USB "USBNET" DRIVER FRAMEWORK
|
USB "USBNET" DRIVER FRAMEWORK
|
||||||
M: Oliver Neukum <oneukum@suse.de>
|
M: Oliver Neukum <oneukum@suse.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
W: http://www.linux-usb.org/usbnet
|
W: http://www.linux-usb.org/usbnet
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -10878,6 +10905,15 @@ F: drivers/block/virtio_blk.c
|
||||||
F: include/linux/virtio_*.h
|
F: include/linux/virtio_*.h
|
||||||
F: include/uapi/linux/virtio_*.h
|
F: include/uapi/linux/virtio_*.h
|
||||||
|
|
||||||
|
VIRTIO DRIVERS FOR S390
|
||||||
|
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
|
M: Cornelia Huck <cornelia.huck@de.ibm.com>
|
||||||
|
L: linux-s390@vger.kernel.org
|
||||||
|
L: virtualization@lists.linux-foundation.org
|
||||||
|
L: kvm@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/s390/virtio/
|
||||||
|
|
||||||
VIRTIO GPU DRIVER
|
VIRTIO GPU DRIVER
|
||||||
M: David Airlie <airlied@linux.ie>
|
M: David Airlie <airlied@linux.ie>
|
||||||
M: Gerd Hoffmann <kraxel@redhat.com>
|
M: Gerd Hoffmann <kraxel@redhat.com>
|
||||||
|
@ -11051,7 +11087,7 @@ F: Documentation/hwmon/w83793
|
||||||
F: drivers/hwmon/w83793.c
|
F: drivers/hwmon/w83793.c
|
||||||
|
|
||||||
W83795 HARDWARE MONITORING DRIVER
|
W83795 HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.de>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/w83795.c
|
F: drivers/hwmon/w83795.c
|
||||||
|
|
20
Makefile
20
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 2
|
PATCHLEVEL = 2
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc6
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Hurr durr I'ma sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -597,6 +597,11 @@ endif # $(dot-config)
|
||||||
# Defaults to vmlinux, but the arch makefile usually adds further targets
|
# Defaults to vmlinux, but the arch makefile usually adds further targets
|
||||||
all: vmlinux
|
all: vmlinux
|
||||||
|
|
||||||
|
# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
|
||||||
|
# values of the respective KBUILD_* variables
|
||||||
|
ARCH_CPPFLAGS :=
|
||||||
|
ARCH_AFLAGS :=
|
||||||
|
ARCH_CFLAGS :=
|
||||||
include arch/$(SRCARCH)/Makefile
|
include arch/$(SRCARCH)/Makefile
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
|
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
|
||||||
|
@ -780,10 +785,11 @@ endif
|
||||||
include scripts/Makefile.kasan
|
include scripts/Makefile.kasan
|
||||||
include scripts/Makefile.extrawarn
|
include scripts/Makefile.extrawarn
|
||||||
|
|
||||||
# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
|
# Add any arch overrides and user supplied CPPFLAGS, AFLAGS and CFLAGS as the
|
||||||
KBUILD_CPPFLAGS += $(KCPPFLAGS)
|
# last assignments
|
||||||
KBUILD_AFLAGS += $(KAFLAGS)
|
KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS)
|
||||||
KBUILD_CFLAGS += $(KCFLAGS)
|
KBUILD_AFLAGS += $(ARCH_AFLAGS) $(KAFLAGS)
|
||||||
|
KBUILD_CFLAGS += $(ARCH_CFLAGS) $(KCFLAGS)
|
||||||
|
|
||||||
# Use --build-id when available.
|
# Use --build-id when available.
|
||||||
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
|
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
|
||||||
|
@ -847,10 +853,10 @@ export mod_strip_cmd
|
||||||
mod_compress_cmd = true
|
mod_compress_cmd = true
|
||||||
ifdef CONFIG_MODULE_COMPRESS
|
ifdef CONFIG_MODULE_COMPRESS
|
||||||
ifdef CONFIG_MODULE_COMPRESS_GZIP
|
ifdef CONFIG_MODULE_COMPRESS_GZIP
|
||||||
mod_compress_cmd = gzip -n
|
mod_compress_cmd = gzip -n -f
|
||||||
endif # CONFIG_MODULE_COMPRESS_GZIP
|
endif # CONFIG_MODULE_COMPRESS_GZIP
|
||||||
ifdef CONFIG_MODULE_COMPRESS_XZ
|
ifdef CONFIG_MODULE_COMPRESS_XZ
|
||||||
mod_compress_cmd = xz
|
mod_compress_cmd = xz -f
|
||||||
endif # CONFIG_MODULE_COMPRESS_XZ
|
endif # CONFIG_MODULE_COMPRESS_XZ
|
||||||
endif # CONFIG_MODULE_COMPRESS
|
endif # CONFIG_MODULE_COMPRESS
|
||||||
export mod_compress_cmd
|
export mod_compress_cmd
|
||||||
|
|
|
@ -221,6 +221,10 @@ config ARCH_TASK_STRUCT_ALLOCATOR
|
||||||
config ARCH_THREAD_INFO_ALLOCATOR
|
config ARCH_THREAD_INFO_ALLOCATOR
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
# Select if arch wants to size task_struct dynamically via arch_task_struct_size:
|
||||||
|
config ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
||||||
|
bool
|
||||||
|
|
||||||
config HAVE_REGS_AND_STACK_ACCESS_API
|
config HAVE_REGS_AND_STACK_ACCESS_API
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -5,6 +5,7 @@ generic-y += cputime.h
|
||||||
generic-y += exec.h
|
generic-y += exec.h
|
||||||
generic-y += irq_work.h
|
generic-y += irq_work.h
|
||||||
generic-y += mcs_spinlock.h
|
generic-y += mcs_spinlock.h
|
||||||
|
generic-y += mm-arch-hooks.h
|
||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += sections.h
|
generic-y += sections.h
|
||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Architecture specific mm hooks
|
|
||||||
*
|
|
||||||
* Copyright (C) 2015, IBM Corporation
|
|
||||||
* Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
|
||||||
* published by the Free Software Foundation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_ALPHA_MM_ARCH_HOOKS_H
|
|
||||||
#define _ASM_ALPHA_MM_ARCH_HOOKS_H
|
|
||||||
|
|
||||||
#endif /* _ASM_ALPHA_MM_ARCH_HOOKS_H */
|
|
|
@ -115,6 +115,7 @@ if ISA_ARCOMPACT
|
||||||
|
|
||||||
config ARC_CPU_750D
|
config ARC_CPU_750D
|
||||||
bool "ARC750D"
|
bool "ARC750D"
|
||||||
|
select ARC_CANT_LLSC
|
||||||
help
|
help
|
||||||
Support for ARC750 core
|
Support for ARC750 core
|
||||||
|
|
||||||
|
@ -312,11 +313,11 @@ config ARC_PAGE_SIZE_8K
|
||||||
|
|
||||||
config ARC_PAGE_SIZE_16K
|
config ARC_PAGE_SIZE_16K
|
||||||
bool "16KB"
|
bool "16KB"
|
||||||
depends on ARC_MMU_V3
|
depends on ARC_MMU_V3 || ARC_MMU_V4
|
||||||
|
|
||||||
config ARC_PAGE_SIZE_4K
|
config ARC_PAGE_SIZE_4K
|
||||||
bool "4KB"
|
bool "4KB"
|
||||||
depends on ARC_MMU_V3
|
depends on ARC_MMU_V3 || ARC_MMU_V4
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
@ -362,7 +363,12 @@ config ARC_CANT_LLSC
|
||||||
config ARC_HAS_LLSC
|
config ARC_HAS_LLSC
|
||||||
bool "Insn: LLOCK/SCOND (efficient atomic ops)"
|
bool "Insn: LLOCK/SCOND (efficient atomic ops)"
|
||||||
default y
|
default y
|
||||||
depends on !ARC_CPU_750D && !ARC_CANT_LLSC
|
depends on !ARC_CANT_LLSC
|
||||||
|
|
||||||
|
config ARC_STAR_9000923308
|
||||||
|
bool "Workaround for llock/scond livelock"
|
||||||
|
default y
|
||||||
|
depends on ISA_ARCV2 && SMP && ARC_HAS_LLSC
|
||||||
|
|
||||||
config ARC_HAS_SWAPE
|
config ARC_HAS_SWAPE
|
||||||
bool "Insn: SWAPE (endian-swap)"
|
bool "Insn: SWAPE (endian-swap)"
|
||||||
|
@ -378,6 +384,10 @@ config ARC_HAS_LL64
|
||||||
dest operands with 2 possible source operands.
|
dest operands with 2 possible source operands.
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config ARC_HAS_DIV_REM
|
||||||
|
bool "Insn: div, divu, rem, remu"
|
||||||
|
default y
|
||||||
|
|
||||||
config ARC_HAS_RTC
|
config ARC_HAS_RTC
|
||||||
bool "Local 64-bit r/o cycle counter"
|
bool "Local 64-bit r/o cycle counter"
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -36,8 +36,16 @@ cflags-$(atleast_gcc44) += -fsection-anchors
|
||||||
cflags-$(CONFIG_ARC_HAS_LLSC) += -mlock
|
cflags-$(CONFIG_ARC_HAS_LLSC) += -mlock
|
||||||
cflags-$(CONFIG_ARC_HAS_SWAPE) += -mswape
|
cflags-$(CONFIG_ARC_HAS_SWAPE) += -mswape
|
||||||
|
|
||||||
|
ifdef CONFIG_ISA_ARCV2
|
||||||
|
|
||||||
ifndef CONFIG_ARC_HAS_LL64
|
ifndef CONFIG_ARC_HAS_LL64
|
||||||
cflags-$(CONFIG_ISA_ARCV2) += -mno-ll64
|
cflags-y += -mno-ll64
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifndef CONFIG_ARC_HAS_DIV_REM
|
||||||
|
cflags-y += -mno-div-rem
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables
|
cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables
|
||||||
|
@ -49,7 +57,8 @@ endif
|
||||||
|
|
||||||
ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
# Generic build system uses -O2, we want -O3
|
# Generic build system uses -O2, we want -O3
|
||||||
cflags-y += -O3
|
# Note: No need to add to cflags-y as that happens anyways
|
||||||
|
ARCH_CFLAGS += -O3
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# small data is default for elf32 tool-chain. If not usable, disable it
|
# small data is default for elf32 tool-chain. If not usable, disable it
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <75000000>;
|
clock-frequency = <90000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <75000000>;
|
clock-frequency = <90000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ generic-y += kvm_para.h
|
||||||
generic-y += local.h
|
generic-y += local.h
|
||||||
generic-y += local64.h
|
generic-y += local64.h
|
||||||
generic-y += mcs_spinlock.h
|
generic-y += mcs_spinlock.h
|
||||||
|
generic-y += mm-arch-hooks.h
|
||||||
generic-y += mman.h
|
generic-y += mman.h
|
||||||
generic-y += msgbuf.h
|
generic-y += msgbuf.h
|
||||||
generic-y += param.h
|
generic-y += param.h
|
||||||
|
|
|
@ -89,11 +89,10 @@
|
||||||
#define ECR_C_BIT_DTLB_LD_MISS 8
|
#define ECR_C_BIT_DTLB_LD_MISS 8
|
||||||
#define ECR_C_BIT_DTLB_ST_MISS 9
|
#define ECR_C_BIT_DTLB_ST_MISS 9
|
||||||
|
|
||||||
|
|
||||||
/* Auxiliary registers */
|
/* Auxiliary registers */
|
||||||
#define AUX_IDENTITY 4
|
#define AUX_IDENTITY 4
|
||||||
#define AUX_INTR_VEC_BASE 0x25
|
#define AUX_INTR_VEC_BASE 0x25
|
||||||
|
#define AUX_NON_VOL 0x5e
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Floating Pt Registers
|
* Floating Pt Registers
|
||||||
|
@ -240,9 +239,9 @@ struct bcr_extn_xymem {
|
||||||
|
|
||||||
struct bcr_perip {
|
struct bcr_perip {
|
||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
unsigned int start:8, pad2:8, sz:8, pad:8;
|
unsigned int start:8, pad2:8, sz:8, ver:8;
|
||||||
#else
|
#else
|
||||||
unsigned int pad:8, sz:8, pad2:8, start:8;
|
unsigned int ver:8, sz:8, pad2:8, start:8;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,33 +23,60 @@
|
||||||
|
|
||||||
#define atomic_set(v, i) (((v)->counter) = (i))
|
#define atomic_set(v, i) (((v)->counter) = (i))
|
||||||
|
|
||||||
#ifdef CONFIG_ISA_ARCV2
|
#ifdef CONFIG_ARC_STAR_9000923308
|
||||||
#define PREFETCHW " prefetchw [%1] \n"
|
|
||||||
#else
|
#define SCOND_FAIL_RETRY_VAR_DEF \
|
||||||
#define PREFETCHW
|
unsigned int delay = 1, tmp; \
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_ASM \
|
||||||
|
" bz 4f \n" \
|
||||||
|
" ; --- scond fail delay --- \n" \
|
||||||
|
" mov %[tmp], %[delay] \n" /* tmp = delay */ \
|
||||||
|
"2: brne.d %[tmp], 0, 2b \n" /* while (tmp != 0) */ \
|
||||||
|
" sub %[tmp], %[tmp], 1 \n" /* tmp-- */ \
|
||||||
|
" rol %[delay], %[delay] \n" /* delay *= 2 */ \
|
||||||
|
" b 1b \n" /* start over */ \
|
||||||
|
"4: ; --- success --- \n" \
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_VARS \
|
||||||
|
,[delay] "+&r" (delay),[tmp] "=&r" (tmp) \
|
||||||
|
|
||||||
|
#else /* !CONFIG_ARC_STAR_9000923308 */
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_VAR_DEF
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_ASM \
|
||||||
|
" bnz 1b \n" \
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_VARS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ATOMIC_OP(op, c_op, asm_op) \
|
#define ATOMIC_OP(op, c_op, asm_op) \
|
||||||
static inline void atomic_##op(int i, atomic_t *v) \
|
static inline void atomic_##op(int i, atomic_t *v) \
|
||||||
{ \
|
{ \
|
||||||
unsigned int temp; \
|
unsigned int val; \
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF \
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: \n" \
|
"1: llock %[val], [%[ctr]] \n" \
|
||||||
PREFETCHW \
|
" " #asm_op " %[val], %[val], %[i] \n" \
|
||||||
" llock %0, [%1] \n" \
|
" scond %[val], [%[ctr]] \n" \
|
||||||
" " #asm_op " %0, %0, %2 \n" \
|
" \n" \
|
||||||
" scond %0, [%1] \n" \
|
SCOND_FAIL_RETRY_ASM \
|
||||||
" bnz 1b \n" \
|
\
|
||||||
: "=&r"(temp) /* Early clobber, to prevent reg reuse */ \
|
: [val] "=&r" (val) /* Early clobber to prevent reg reuse */ \
|
||||||
: "r"(&v->counter), "ir"(i) \
|
SCOND_FAIL_RETRY_VARS \
|
||||||
|
: [ctr] "r" (&v->counter), /* Not "m": llock only supports reg direct addr mode */ \
|
||||||
|
[i] "ir" (i) \
|
||||||
: "cc"); \
|
: "cc"); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
|
#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
|
||||||
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
||||||
{ \
|
{ \
|
||||||
unsigned int temp; \
|
unsigned int val; \
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF \
|
||||||
\
|
\
|
||||||
/* \
|
/* \
|
||||||
* Explicit full memory barrier needed before/after as \
|
* Explicit full memory barrier needed before/after as \
|
||||||
|
@ -58,19 +85,21 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
|
||||||
smp_mb(); \
|
smp_mb(); \
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: \n" \
|
"1: llock %[val], [%[ctr]] \n" \
|
||||||
PREFETCHW \
|
" " #asm_op " %[val], %[val], %[i] \n" \
|
||||||
" llock %0, [%1] \n" \
|
" scond %[val], [%[ctr]] \n" \
|
||||||
" " #asm_op " %0, %0, %2 \n" \
|
" \n" \
|
||||||
" scond %0, [%1] \n" \
|
SCOND_FAIL_RETRY_ASM \
|
||||||
" bnz 1b \n" \
|
\
|
||||||
: "=&r"(temp) \
|
: [val] "=&r" (val) \
|
||||||
: "r"(&v->counter), "ir"(i) \
|
SCOND_FAIL_RETRY_VARS \
|
||||||
|
: [ctr] "r" (&v->counter), \
|
||||||
|
[i] "ir" (i) \
|
||||||
: "cc"); \
|
: "cc"); \
|
||||||
\
|
\
|
||||||
smp_mb(); \
|
smp_mb(); \
|
||||||
\
|
\
|
||||||
return temp; \
|
return val; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* !CONFIG_ARC_HAS_LLSC */
|
#else /* !CONFIG_ARC_HAS_LLSC */
|
||||||
|
@ -150,6 +179,9 @@ ATOMIC_OP(and, &=, and)
|
||||||
#undef ATOMIC_OPS
|
#undef ATOMIC_OPS
|
||||||
#undef ATOMIC_OP_RETURN
|
#undef ATOMIC_OP_RETURN
|
||||||
#undef ATOMIC_OP
|
#undef ATOMIC_OP
|
||||||
|
#undef SCOND_FAIL_RETRY_VAR_DEF
|
||||||
|
#undef SCOND_FAIL_RETRY_ASM
|
||||||
|
#undef SCOND_FAIL_RETRY_VARS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __atomic_add_unless - add unless the number is a given value
|
* __atomic_add_unless - add unless the number is a given value
|
||||||
|
|
|
@ -50,8 +50,7 @@ static inline void op##_bit(unsigned long nr, volatile unsigned long *m)\
|
||||||
* done for const @nr, but no code is generated due to gcc \
|
* done for const @nr, but no code is generated due to gcc \
|
||||||
* const prop. \
|
* const prop. \
|
||||||
*/ \
|
*/ \
|
||||||
if (__builtin_constant_p(nr)) \
|
nr &= 0x1f; \
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: llock %0, [%1] \n" \
|
"1: llock %0, [%1] \n" \
|
||||||
|
@ -82,8 +81,7 @@ static inline int test_and_##op##_bit(unsigned long nr, volatile unsigned long *
|
||||||
\
|
\
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
if (__builtin_constant_p(nr)) \
|
nr &= 0x1f; \
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
\
|
||||||
/* \
|
/* \
|
||||||
* Explicit full memory barrier needed before/after as \
|
* Explicit full memory barrier needed before/after as \
|
||||||
|
@ -129,16 +127,13 @@ static inline void op##_bit(unsigned long nr, volatile unsigned long *m)\
|
||||||
unsigned long temp, flags; \
|
unsigned long temp, flags; \
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
if (__builtin_constant_p(nr)) \
|
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
|
||||||
/* \
|
/* \
|
||||||
* spin lock/unlock provide the needed smp_mb() before/after \
|
* spin lock/unlock provide the needed smp_mb() before/after \
|
||||||
*/ \
|
*/ \
|
||||||
bitops_lock(flags); \
|
bitops_lock(flags); \
|
||||||
\
|
\
|
||||||
temp = *m; \
|
temp = *m; \
|
||||||
*m = temp c_op (1UL << nr); \
|
*m = temp c_op (1UL << (nr & 0x1f)); \
|
||||||
\
|
\
|
||||||
bitops_unlock(flags); \
|
bitops_unlock(flags); \
|
||||||
}
|
}
|
||||||
|
@ -149,17 +144,14 @@ static inline int test_and_##op##_bit(unsigned long nr, volatile unsigned long *
|
||||||
unsigned long old, flags; \
|
unsigned long old, flags; \
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
if (__builtin_constant_p(nr)) \
|
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
|
||||||
bitops_lock(flags); \
|
bitops_lock(flags); \
|
||||||
\
|
\
|
||||||
old = *m; \
|
old = *m; \
|
||||||
*m = old c_op (1 << nr); \
|
*m = old c_op (1UL << (nr & 0x1f)); \
|
||||||
\
|
\
|
||||||
bitops_unlock(flags); \
|
bitops_unlock(flags); \
|
||||||
\
|
\
|
||||||
return (old & (1 << nr)) != 0; \
|
return (old & (1UL << (nr & 0x1f))) != 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_ARC_HAS_LLSC */
|
#endif /* CONFIG_ARC_HAS_LLSC */
|
||||||
|
@ -174,11 +166,8 @@ static inline void __##op##_bit(unsigned long nr, volatile unsigned long *m) \
|
||||||
unsigned long temp; \
|
unsigned long temp; \
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
if (__builtin_constant_p(nr)) \
|
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
|
||||||
temp = *m; \
|
temp = *m; \
|
||||||
*m = temp c_op (1UL << nr); \
|
*m = temp c_op (1UL << (nr & 0x1f)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define __TEST_N_BIT_OP(op, c_op, asm_op) \
|
#define __TEST_N_BIT_OP(op, c_op, asm_op) \
|
||||||
|
@ -187,13 +176,10 @@ static inline int __test_and_##op##_bit(unsigned long nr, volatile unsigned long
|
||||||
unsigned long old; \
|
unsigned long old; \
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
if (__builtin_constant_p(nr)) \
|
|
||||||
nr &= 0x1f; \
|
|
||||||
\
|
|
||||||
old = *m; \
|
old = *m; \
|
||||||
*m = old c_op (1 << nr); \
|
*m = old c_op (1UL << (nr & 0x1f)); \
|
||||||
\
|
\
|
||||||
return (old & (1 << nr)) != 0; \
|
return (old & (1UL << (nr & 0x1f))) != 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BIT_OPS(op, c_op, asm_op) \
|
#define BIT_OPS(op, c_op, asm_op) \
|
||||||
|
@ -224,10 +210,7 @@ test_bit(unsigned int nr, const volatile unsigned long *addr)
|
||||||
|
|
||||||
addr += nr >> 5;
|
addr += nr >> 5;
|
||||||
|
|
||||||
if (__builtin_constant_p(nr))
|
mask = 1UL << (nr & 0x1f);
|
||||||
nr &= 0x1f;
|
|
||||||
|
|
||||||
mask = 1 << nr;
|
|
||||||
|
|
||||||
return ((mask & *addr) != 0);
|
return ((mask & *addr) != 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,15 @@
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_HAS_LLSC
|
||||||
|
|
||||||
#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
|
#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: ld %1, [%2] \n" \
|
"1: llock %1, [%2] \n" \
|
||||||
insn "\n" \
|
insn "\n" \
|
||||||
"2: st %0, [%2] \n" \
|
"2: scond %0, [%2] \n" \
|
||||||
|
" bnz 1b \n" \
|
||||||
" mov %0, 0 \n" \
|
" mov %0, 0 \n" \
|
||||||
"3: \n" \
|
"3: \n" \
|
||||||
" .section .fixup,\"ax\" \n" \
|
" .section .fixup,\"ax\" \n" \
|
||||||
|
@ -39,6 +42,33 @@
|
||||||
: "r" (uaddr), "r" (oparg), "ir" (-EFAULT) \
|
: "r" (uaddr), "r" (oparg), "ir" (-EFAULT) \
|
||||||
: "cc", "memory")
|
: "cc", "memory")
|
||||||
|
|
||||||
|
#else /* !CONFIG_ARC_HAS_LLSC */
|
||||||
|
|
||||||
|
#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
|
||||||
|
\
|
||||||
|
__asm__ __volatile__( \
|
||||||
|
"1: ld %1, [%2] \n" \
|
||||||
|
insn "\n" \
|
||||||
|
"2: st %0, [%2] \n" \
|
||||||
|
" mov %0, 0 \n" \
|
||||||
|
"3: \n" \
|
||||||
|
" .section .fixup,\"ax\" \n" \
|
||||||
|
" .align 4 \n" \
|
||||||
|
"4: mov %0, %4 \n" \
|
||||||
|
" b 3b \n" \
|
||||||
|
" .previous \n" \
|
||||||
|
" .section __ex_table,\"a\" \n" \
|
||||||
|
" .align 4 \n" \
|
||||||
|
" .word 1b, 4b \n" \
|
||||||
|
" .word 2b, 4b \n" \
|
||||||
|
" .previous \n" \
|
||||||
|
\
|
||||||
|
: "=&r" (ret), "=&r" (oldval) \
|
||||||
|
: "r" (uaddr), "r" (oparg), "ir" (-EFAULT) \
|
||||||
|
: "cc", "memory")
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
|
static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
|
||||||
{
|
{
|
||||||
int op = (encoded_op >> 28) & 7;
|
int op = (encoded_op >> 28) & 7;
|
||||||
|
@ -123,11 +153,17 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval,
|
||||||
|
|
||||||
pagefault_disable();
|
pagefault_disable();
|
||||||
|
|
||||||
/* TBD : can use llock/scond */
|
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
"1: ld %0, [%3] \n"
|
#ifdef CONFIG_ARC_HAS_LLSC
|
||||||
" brne %0, %1, 3f \n"
|
"1: llock %0, [%3] \n"
|
||||||
"2: st %2, [%3] \n"
|
" brne %0, %1, 3f \n"
|
||||||
|
"2: scond %2, [%3] \n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
#else
|
||||||
|
"1: ld %0, [%3] \n"
|
||||||
|
" brne %0, %1, 3f \n"
|
||||||
|
"2: st %2, [%3] \n"
|
||||||
|
#endif
|
||||||
"3: \n"
|
"3: \n"
|
||||||
" .section .fixup,\"ax\" \n"
|
" .section .fixup,\"ax\" \n"
|
||||||
"4: mov %0, %4 \n"
|
"4: mov %0, %4 \n"
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Architecture specific mm hooks
|
|
||||||
*
|
|
||||||
* Copyright (C) 2015, IBM Corporation
|
|
||||||
* Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
|
||||||
* published by the Free Software Foundation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_ARC_MM_ARCH_HOOKS_H
|
|
||||||
#define _ASM_ARC_MM_ARCH_HOOKS_H
|
|
||||||
|
|
||||||
#endif /* _ASM_ARC_MM_ARCH_HOOKS_H */
|
|
|
@ -20,20 +20,20 @@
|
||||||
struct pt_regs {
|
struct pt_regs {
|
||||||
|
|
||||||
/* Real registers */
|
/* Real registers */
|
||||||
long bta; /* bta_l1, bta_l2, erbta */
|
unsigned long bta; /* bta_l1, bta_l2, erbta */
|
||||||
|
|
||||||
long lp_start, lp_end, lp_count;
|
unsigned long lp_start, lp_end, lp_count;
|
||||||
|
|
||||||
long status32; /* status32_l1, status32_l2, erstatus */
|
unsigned long status32; /* status32_l1, status32_l2, erstatus */
|
||||||
long ret; /* ilink1, ilink2 or eret */
|
unsigned long ret; /* ilink1, ilink2 or eret */
|
||||||
long blink;
|
unsigned long blink;
|
||||||
long fp;
|
unsigned long fp;
|
||||||
long r26; /* gp */
|
unsigned long r26; /* gp */
|
||||||
|
|
||||||
long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
|
unsigned long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
|
||||||
|
|
||||||
long sp; /* user/kernel sp depending on where we came from */
|
unsigned long sp; /* User/Kernel depending on where we came from */
|
||||||
long orig_r0;
|
unsigned long orig_r0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To distinguish bet excp, syscall, irq
|
* To distinguish bet excp, syscall, irq
|
||||||
|
@ -55,13 +55,13 @@ struct pt_regs {
|
||||||
unsigned long event;
|
unsigned long event;
|
||||||
};
|
};
|
||||||
|
|
||||||
long user_r25;
|
unsigned long user_r25;
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
|
|
||||||
struct pt_regs {
|
struct pt_regs {
|
||||||
|
|
||||||
long orig_r0;
|
unsigned long orig_r0;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
|
@ -76,26 +76,26 @@ struct pt_regs {
|
||||||
unsigned long event;
|
unsigned long event;
|
||||||
};
|
};
|
||||||
|
|
||||||
long bta; /* bta_l1, bta_l2, erbta */
|
unsigned long bta; /* bta_l1, bta_l2, erbta */
|
||||||
|
|
||||||
long user_r25;
|
unsigned long user_r25;
|
||||||
|
|
||||||
long r26; /* gp */
|
unsigned long r26; /* gp */
|
||||||
long fp;
|
unsigned long fp;
|
||||||
long sp; /* user/kernel sp depending on where we came from */
|
unsigned long sp; /* user/kernel sp depending on where we came from */
|
||||||
|
|
||||||
long r12;
|
unsigned long r12;
|
||||||
|
|
||||||
/*------- Below list auto saved by h/w -----------*/
|
/*------- Below list auto saved by h/w -----------*/
|
||||||
long r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11;
|
unsigned long r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11;
|
||||||
|
|
||||||
long blink;
|
unsigned long blink;
|
||||||
long lp_end, lp_start, lp_count;
|
unsigned long lp_end, lp_start, lp_count;
|
||||||
|
|
||||||
long ei, ldi, jli;
|
unsigned long ei, ldi, jli;
|
||||||
|
|
||||||
long ret;
|
unsigned long ret;
|
||||||
long status32;
|
unsigned long status32;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -103,7 +103,7 @@ struct pt_regs {
|
||||||
/* Callee saved registers - need to be saved only when you are scheduled out */
|
/* Callee saved registers - need to be saved only when you are scheduled out */
|
||||||
|
|
||||||
struct callee_regs {
|
struct callee_regs {
|
||||||
long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
|
unsigned long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define instruction_pointer(regs) ((regs)->ret)
|
#define instruction_pointer(regs) ((regs)->ret)
|
||||||
|
@ -142,7 +142,7 @@ struct callee_regs {
|
||||||
|
|
||||||
static inline long regs_return_value(struct pt_regs *regs)
|
static inline long regs_return_value(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
return regs->r0;
|
return (long)regs->r0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
|
@ -18,9 +18,518 @@
|
||||||
#define arch_spin_unlock_wait(x) \
|
#define arch_spin_unlock_wait(x) \
|
||||||
do { while (arch_spin_is_locked(x)) cpu_relax(); } while (0)
|
do { while (arch_spin_is_locked(x)) cpu_relax(); } while (0)
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_HAS_LLSC
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A normal LLOCK/SCOND based system, w/o need for livelock workaround
|
||||||
|
*/
|
||||||
|
#ifndef CONFIG_ARC_STAR_9000923308
|
||||||
|
|
||||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
unsigned int tmp = __ARCH_SPIN_LOCK_LOCKED__;
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[slock]] \n"
|
||||||
|
" breq %[val], %[LOCKED], 1b \n" /* spin while LOCKED */
|
||||||
|
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [slock] "r" (&(lock->slock)),
|
||||||
|
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[slock]] \n"
|
||||||
|
" breq %[val], %[LOCKED], 4f \n" /* already LOCKED, just bail */
|
||||||
|
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
||||||
|
" bnz 1b \n"
|
||||||
|
" mov %[got_it], 1 \n"
|
||||||
|
"4: \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
: [slock] "r" (&(lock->slock)),
|
||||||
|
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
lock->slock = __ARCH_SPIN_LOCK_UNLOCKED__;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read-write spinlocks, allowing multiple readers but only one writer.
|
||||||
|
* Unfair locking as Writers could be starved indefinitely by Reader(s)
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline void arch_read_lock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* zero means writer holds the lock exclusively, deny Reader.
|
||||||
|
* Otherwise grant lock to first/subseq reader
|
||||||
|
*
|
||||||
|
* if (rw->counter > 0) {
|
||||||
|
* rw->counter--;
|
||||||
|
* ret = 1;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brls %[val], %[WR_LOCKED], 1b\n" /* <= 0: spin while write locked */
|
||||||
|
" sub %[val], %[val], 1 \n" /* reader lock */
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brls %[val], %[WR_LOCKED], 4f\n" /* <= 0: already write locked, bail */
|
||||||
|
" sub %[val], %[val], 1 \n" /* counter-- */
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n" /* retry if collided with someone */
|
||||||
|
" mov %[got_it], 1 \n"
|
||||||
|
" \n"
|
||||||
|
"4: ; --- done --- \n"
|
||||||
|
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_write_lock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If reader(s) hold lock (lock < __ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
* deny writer. Otherwise if unlocked grant to writer
|
||||||
|
* Hence the claim that Linux rwlocks are unfair to writers.
|
||||||
|
* (can be starved for an indefinite time by readers).
|
||||||
|
*
|
||||||
|
* if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) {
|
||||||
|
* rw->counter = 0;
|
||||||
|
* ret = 1;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brne %[val], %[UNLOCKED], 1b \n" /* while !UNLOCKED spin */
|
||||||
|
" mov %[val], %[WR_LOCKED] \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_write_trylock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brne %[val], %[UNLOCKED], 4f \n" /* !UNLOCKED, bail */
|
||||||
|
" mov %[val], %[WR_LOCKED] \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n" /* retry if collided with someone */
|
||||||
|
" mov %[got_it], 1 \n"
|
||||||
|
" \n"
|
||||||
|
"4: ; --- done --- \n"
|
||||||
|
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_read_unlock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rw->counter++;
|
||||||
|
*/
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" add %[val], %[val], 1 \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [rwlock] "r" (&(rw->counter))
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_write_unlock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
rw->counter = __ARCH_RW_LOCK_UNLOCKED__;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* CONFIG_ARC_STAR_9000923308 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HS38x4 could get into a LLOCK/SCOND livelock in case of multiple overlapping
|
||||||
|
* coherency transactions in the SCU. The exclusive line state keeps rotating
|
||||||
|
* among contenting cores leading to a never ending cycle. So break the cycle
|
||||||
|
* by deferring the retry of failed exclusive access (SCOND). The actual delay
|
||||||
|
* needed is function of number of contending cores as well as the unrelated
|
||||||
|
* coherency traffic from other cores. To keep the code simple, start off with
|
||||||
|
* small delay of 1 which would suffice most cases and in case of contention
|
||||||
|
* double the delay. Eventually the delay is sufficient such that the coherency
|
||||||
|
* pipeline is drained, thus a subsequent exclusive access would succeed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_VAR_DEF \
|
||||||
|
unsigned int delay, tmp; \
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_ASM \
|
||||||
|
" ; --- scond fail delay --- \n" \
|
||||||
|
" mov %[tmp], %[delay] \n" /* tmp = delay */ \
|
||||||
|
"2: brne.d %[tmp], 0, 2b \n" /* while (tmp != 0) */ \
|
||||||
|
" sub %[tmp], %[tmp], 1 \n" /* tmp-- */ \
|
||||||
|
" rol %[delay], %[delay] \n" /* delay *= 2 */ \
|
||||||
|
" b 1b \n" /* start over */ \
|
||||||
|
" \n" \
|
||||||
|
"4: ; --- done --- \n" \
|
||||||
|
|
||||||
|
#define SCOND_FAIL_RETRY_VARS \
|
||||||
|
,[delay] "=&r" (delay), [tmp] "=&r" (tmp) \
|
||||||
|
|
||||||
|
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[slock]] \n"
|
||||||
|
" breq %[val], %[LOCKED], 0b \n" /* spin while LOCKED */
|
||||||
|
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
||||||
|
" bz 4f \n" /* done */
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [slock] "r" (&(lock->slock)),
|
||||||
|
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[slock]] \n"
|
||||||
|
" breq %[val], %[LOCKED], 4f \n" /* already LOCKED, just bail */
|
||||||
|
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
||||||
|
" bz.d 4f \n"
|
||||||
|
" mov.z %[got_it], 1 \n" /* got it */
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [slock] "r" (&(lock->slock)),
|
||||||
|
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
lock->slock = __ARCH_SPIN_LOCK_UNLOCKED__;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read-write spinlocks, allowing multiple readers but only one writer.
|
||||||
|
* Unfair locking as Writers could be starved indefinitely by Reader(s)
|
||||||
|
*/
|
||||||
|
|
||||||
|
static inline void arch_read_lock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* zero means writer holds the lock exclusively, deny Reader.
|
||||||
|
* Otherwise grant lock to first/subseq reader
|
||||||
|
*
|
||||||
|
* if (rw->counter > 0) {
|
||||||
|
* rw->counter--;
|
||||||
|
* ret = 1;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brls %[val], %[WR_LOCKED], 0b\n" /* <= 0: spin while write locked */
|
||||||
|
" sub %[val], %[val], 1 \n" /* reader lock */
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bz 4f \n" /* done */
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brls %[val], %[WR_LOCKED], 4f\n" /* <= 0: already write locked, bail */
|
||||||
|
" sub %[val], %[val], 1 \n" /* counter-- */
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bz.d 4f \n"
|
||||||
|
" mov.z %[got_it], 1 \n" /* got it */
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_write_lock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If reader(s) hold lock (lock < __ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
* deny writer. Otherwise if unlocked grant to writer
|
||||||
|
* Hence the claim that Linux rwlocks are unfair to writers.
|
||||||
|
* (can be starved for an indefinite time by readers).
|
||||||
|
*
|
||||||
|
* if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) {
|
||||||
|
* rw->counter = 0;
|
||||||
|
* ret = 1;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brne %[val], %[UNLOCKED], 0b \n" /* while !UNLOCKED spin */
|
||||||
|
" mov %[val], %[WR_LOCKED] \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bz 4f \n"
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
|
static inline int arch_write_trylock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val, got_it = 0;
|
||||||
|
SCOND_FAIL_RETRY_VAR_DEF;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"0: mov %[delay], 1 \n"
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" brne %[val], %[UNLOCKED], 4f \n" /* !UNLOCKED, bail */
|
||||||
|
" mov %[val], %[WR_LOCKED] \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bz.d 4f \n"
|
||||||
|
" mov.z %[got_it], 1 \n" /* got it */
|
||||||
|
" \n"
|
||||||
|
SCOND_FAIL_RETRY_ASM
|
||||||
|
|
||||||
|
: [val] "=&r" (val),
|
||||||
|
[got_it] "+&r" (got_it)
|
||||||
|
SCOND_FAIL_RETRY_VARS
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
||||||
|
[WR_LOCKED] "ir" (0)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
return got_it;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_read_unlock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rw->counter++;
|
||||||
|
*/
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" add %[val], %[val], 1 \n"
|
||||||
|
" scond %[val], [%[rwlock]] \n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [rwlock] "r" (&(rw->counter))
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arch_write_unlock(arch_rwlock_t *rw)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* rw->counter = __ARCH_RW_LOCK_UNLOCKED__;
|
||||||
|
*/
|
||||||
|
__asm__ __volatile__(
|
||||||
|
"1: llock %[val], [%[rwlock]] \n"
|
||||||
|
" scond %[UNLOCKED], [%[rwlock]]\n"
|
||||||
|
" bnz 1b \n"
|
||||||
|
" \n"
|
||||||
|
: [val] "=&r" (val)
|
||||||
|
: [rwlock] "r" (&(rw->counter)),
|
||||||
|
[UNLOCKED] "r" (__ARCH_RW_LOCK_UNLOCKED__)
|
||||||
|
: "memory", "cc");
|
||||||
|
|
||||||
|
smp_mb();
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef SCOND_FAIL_RETRY_VAR_DEF
|
||||||
|
#undef SCOND_FAIL_RETRY_ASM
|
||||||
|
#undef SCOND_FAIL_RETRY_VARS
|
||||||
|
|
||||||
|
#endif /* CONFIG_ARC_STAR_9000923308 */
|
||||||
|
|
||||||
|
#else /* !CONFIG_ARC_HAS_LLSC */
|
||||||
|
|
||||||
|
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
|
{
|
||||||
|
unsigned int val = __ARCH_SPIN_LOCK_LOCKED__;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This smp_mb() is technically superfluous, we only need the one
|
* This smp_mb() is technically superfluous, we only need the one
|
||||||
|
@ -33,7 +542,7 @@ static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
"1: ex %0, [%1] \n"
|
"1: ex %0, [%1] \n"
|
||||||
" breq %0, %2, 1b \n"
|
" breq %0, %2, 1b \n"
|
||||||
: "+&r" (tmp)
|
: "+&r" (val)
|
||||||
: "r"(&(lock->slock)), "ir"(__ARCH_SPIN_LOCK_LOCKED__)
|
: "r"(&(lock->slock)), "ir"(__ARCH_SPIN_LOCK_LOCKED__)
|
||||||
: "memory");
|
: "memory");
|
||||||
|
|
||||||
|
@ -48,26 +557,27 @@ static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
smp_mb();
|
smp_mb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 1 - lock taken successfully */
|
||||||
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
unsigned int tmp = __ARCH_SPIN_LOCK_LOCKED__;
|
unsigned int val = __ARCH_SPIN_LOCK_LOCKED__;
|
||||||
|
|
||||||
smp_mb();
|
smp_mb();
|
||||||
|
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
"1: ex %0, [%1] \n"
|
"1: ex %0, [%1] \n"
|
||||||
: "+r" (tmp)
|
: "+r" (val)
|
||||||
: "r"(&(lock->slock))
|
: "r"(&(lock->slock))
|
||||||
: "memory");
|
: "memory");
|
||||||
|
|
||||||
smp_mb();
|
smp_mb();
|
||||||
|
|
||||||
return (tmp == __ARCH_SPIN_LOCK_UNLOCKED__);
|
return (val == __ARCH_SPIN_LOCK_UNLOCKED__);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
unsigned int tmp = __ARCH_SPIN_LOCK_UNLOCKED__;
|
unsigned int val = __ARCH_SPIN_LOCK_UNLOCKED__;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* RELEASE barrier: given the instructions avail on ARCv2, full barrier
|
* RELEASE barrier: given the instructions avail on ARCv2, full barrier
|
||||||
|
@ -77,7 +587,7 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||||
|
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
" ex %0, [%1] \n"
|
" ex %0, [%1] \n"
|
||||||
: "+r" (tmp)
|
: "+r" (val)
|
||||||
: "r"(&(lock->slock))
|
: "r"(&(lock->slock))
|
||||||
: "memory");
|
: "memory");
|
||||||
|
|
||||||
|
@ -90,19 +600,12 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read-write spinlocks, allowing multiple readers but only one writer.
|
* Read-write spinlocks, allowing multiple readers but only one writer.
|
||||||
|
* Unfair locking as Writers could be starved indefinitely by Reader(s)
|
||||||
*
|
*
|
||||||
* The spinlock itself is contained in @counter and access to it is
|
* The spinlock itself is contained in @counter and access to it is
|
||||||
* serialized with @lock_mutex.
|
* serialized with @lock_mutex.
|
||||||
*
|
|
||||||
* Unfair locking as Writers could be starved indefinitely by Reader(s)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Would read_trylock() succeed? */
|
|
||||||
#define arch_read_can_lock(x) ((x)->counter > 0)
|
|
||||||
|
|
||||||
/* Would write_trylock() succeed? */
|
|
||||||
#define arch_write_can_lock(x) ((x)->counter == __ARCH_RW_LOCK_UNLOCKED__)
|
|
||||||
|
|
||||||
/* 1 - lock taken successfully */
|
/* 1 - lock taken successfully */
|
||||||
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
||||||
{
|
{
|
||||||
|
@ -173,6 +676,11 @@ static inline void arch_write_unlock(arch_rwlock_t *rw)
|
||||||
arch_spin_unlock(&(rw->lock_mutex));
|
arch_spin_unlock(&(rw->lock_mutex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define arch_read_can_lock(x) ((x)->counter > 0)
|
||||||
|
#define arch_write_can_lock(x) ((x)->counter == __ARCH_RW_LOCK_UNLOCKED__)
|
||||||
|
|
||||||
#define arch_read_lock_flags(lock, flags) arch_read_lock(lock)
|
#define arch_read_lock_flags(lock, flags) arch_read_lock(lock)
|
||||||
#define arch_write_lock_flags(lock, flags) arch_write_lock(lock)
|
#define arch_write_lock_flags(lock, flags) arch_write_lock(lock)
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,9 @@ typedef struct {
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
volatile unsigned int counter;
|
volatile unsigned int counter;
|
||||||
|
#ifndef CONFIG_ARC_HAS_LLSC
|
||||||
arch_spinlock_t lock_mutex;
|
arch_spinlock_t lock_mutex;
|
||||||
|
#endif
|
||||||
} arch_rwlock_t;
|
} arch_rwlock_t;
|
||||||
|
|
||||||
#define __ARCH_RW_LOCK_UNLOCKED__ 0x01000000
|
#define __ARCH_RW_LOCK_UNLOCKED__ 0x01000000
|
||||||
|
|
|
@ -32,20 +32,20 @@
|
||||||
*/
|
*/
|
||||||
struct user_regs_struct {
|
struct user_regs_struct {
|
||||||
|
|
||||||
long pad;
|
unsigned long pad;
|
||||||
struct {
|
struct {
|
||||||
long bta, lp_start, lp_end, lp_count;
|
unsigned long bta, lp_start, lp_end, lp_count;
|
||||||
long status32, ret, blink, fp, gp;
|
unsigned long status32, ret, blink, fp, gp;
|
||||||
long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
|
unsigned long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
|
||||||
long sp;
|
unsigned long sp;
|
||||||
} scratch;
|
} scratch;
|
||||||
long pad2;
|
unsigned long pad2;
|
||||||
struct {
|
struct {
|
||||||
long r25, r24, r23, r22, r21, r20;
|
unsigned long r25, r24, r23, r22, r21, r20;
|
||||||
long r19, r18, r17, r16, r15, r14, r13;
|
unsigned long r19, r18, r17, r16, r15, r14, r13;
|
||||||
} callee;
|
} callee;
|
||||||
long efa; /* break pt addr, for break points in delay slots */
|
unsigned long efa; /* break pt addr, for break points in delay slots */
|
||||||
long stop_pc; /* give dbg stop_pc after ensuring brkpt trap */
|
unsigned long stop_pc; /* give dbg stop_pc after ensuring brkpt trap */
|
||||||
};
|
};
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/irqdomain.h>
|
#include <linux/irqdomain.h>
|
||||||
#include <linux/irqchip.h>
|
#include <linux/irqchip.h>
|
||||||
#include "../../drivers/irqchip/irqchip.h"
|
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/irqdomain.h>
|
#include <linux/irqdomain.h>
|
||||||
#include <linux/irqchip.h>
|
#include <linux/irqchip.h>
|
||||||
#include "../../drivers/irqchip/irqchip.h"
|
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -175,7 +175,6 @@ void mcip_init_early_smp(void)
|
||||||
#include <linux/irqchip.h>
|
#include <linux/irqchip.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
#include "../../drivers/irqchip/irqchip.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the DEST for @cmn_irq to @cpu_mask (1 bit per core)
|
* Set the DEST for @cmn_irq to @cpu_mask (1 bit per core)
|
||||||
|
@ -218,11 +217,28 @@ static void idu_irq_unmask(struct irq_data *data)
|
||||||
raw_spin_unlock_irqrestore(&mcip_lock, flags);
|
raw_spin_unlock_irqrestore(&mcip_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
static int
|
static int
|
||||||
idu_irq_set_affinity(struct irq_data *d, const struct cpumask *cpumask, bool f)
|
idu_irq_set_affinity(struct irq_data *data, const struct cpumask *cpumask,
|
||||||
|
bool force)
|
||||||
{
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
cpumask_t online;
|
||||||
|
|
||||||
|
/* errout if no online cpu per @cpumask */
|
||||||
|
if (!cpumask_and(&online, cpumask, cpu_online_mask))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
raw_spin_lock_irqsave(&mcip_lock, flags);
|
||||||
|
|
||||||
|
idu_set_dest(data->hwirq, cpumask_bits(&online)[0]);
|
||||||
|
idu_set_mode(data->hwirq, IDU_M_TRIG_LEVEL, IDU_M_DISTRI_RR);
|
||||||
|
|
||||||
|
raw_spin_unlock_irqrestore(&mcip_lock, flags);
|
||||||
|
|
||||||
return IRQ_SET_MASK_OK;
|
return IRQ_SET_MASK_OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct irq_chip idu_irq_chip = {
|
static struct irq_chip idu_irq_chip = {
|
||||||
.name = "MCIP IDU Intc",
|
.name = "MCIP IDU Intc",
|
||||||
|
@ -330,8 +346,7 @@ idu_of_init(struct device_node *intc, struct device_node *parent)
|
||||||
if (!i)
|
if (!i)
|
||||||
idu_first_irq = irq;
|
idu_first_irq = irq;
|
||||||
|
|
||||||
irq_set_handler_data(irq, domain);
|
irq_set_chained_handler_and_data(irq, idu_cascade_isr, domain);
|
||||||
irq_set_chained_handler(irq, idu_cascade_isr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__mcip_cmd(CMD_IDU_ENABLE, 0);
|
__mcip_cmd(CMD_IDU_ENABLE, 0);
|
||||||
|
|
|
@ -47,6 +47,7 @@ static void read_arc_build_cfg_regs(void)
|
||||||
struct bcr_perip uncached_space;
|
struct bcr_perip uncached_space;
|
||||||
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()];
|
||||||
|
unsigned long perip_space;
|
||||||
FIX_PTR(cpu);
|
FIX_PTR(cpu);
|
||||||
|
|
||||||
READ_BCR(AUX_IDENTITY, cpu->core);
|
READ_BCR(AUX_IDENTITY, cpu->core);
|
||||||
|
@ -56,7 +57,12 @@ static void read_arc_build_cfg_regs(void)
|
||||||
cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE);
|
cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE);
|
||||||
|
|
||||||
READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space);
|
READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space);
|
||||||
BUG_ON((uncached_space.start << 24) != ARC_UNCACHED_ADDR_SPACE);
|
if (uncached_space.ver < 3)
|
||||||
|
perip_space = uncached_space.start << 24;
|
||||||
|
else
|
||||||
|
perip_space = read_aux_reg(AUX_NON_VOL) & 0xF0000000;
|
||||||
|
|
||||||
|
BUG_ON(perip_space != ARC_UNCACHED_ADDR_SPACE);
|
||||||
|
|
||||||
READ_BCR(ARC_REG_MUL_BCR, cpu->extn_mpy);
|
READ_BCR(ARC_REG_MUL_BCR, cpu->extn_mpy);
|
||||||
|
|
||||||
|
@ -142,17 +148,22 @@ static void read_arc_build_cfg_regs(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct cpuinfo_data arc_cpu_tbl[] = {
|
static const struct cpuinfo_data arc_cpu_tbl[] = {
|
||||||
|
#ifdef CONFIG_ISA_ARCOMPACT
|
||||||
{ {0x20, "ARC 600" }, 0x2F},
|
{ {0x20, "ARC 600" }, 0x2F},
|
||||||
{ {0x30, "ARC 700" }, 0x33},
|
{ {0x30, "ARC 700" }, 0x33},
|
||||||
{ {0x34, "ARC 700 R4.10"}, 0x34},
|
{ {0x34, "ARC 700 R4.10"}, 0x34},
|
||||||
{ {0x35, "ARC 700 R4.11"}, 0x35},
|
{ {0x35, "ARC 700 R4.11"}, 0x35},
|
||||||
{ {0x50, "ARC HS38" }, 0x51},
|
#else
|
||||||
|
{ {0x50, "ARC HS38 R2.0"}, 0x51},
|
||||||
|
{ {0x52, "ARC HS38 R2.1"}, 0x52},
|
||||||
|
#endif
|
||||||
{ {0x00, NULL } }
|
{ {0x00, NULL } }
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IS_AVAIL1(v, str) ((v) ? str : "")
|
#define IS_AVAIL1(v, s) ((v) ? s : "")
|
||||||
#define IS_USED(cfg) (IS_ENABLED(cfg) ? "" : "(not used) ")
|
#define IS_USED_RUN(v) ((v) ? "" : "(not used) ")
|
||||||
#define IS_AVAIL2(v, str, cfg) IS_AVAIL1(v, str), IS_AVAIL1(v, IS_USED(cfg))
|
#define IS_USED_CFG(cfg) IS_USED_RUN(IS_ENABLED(cfg))
|
||||||
|
#define IS_AVAIL2(v, s, cfg) IS_AVAIL1(v, s), IS_AVAIL1(v, IS_USED_CFG(cfg))
|
||||||
|
|
||||||
static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
||||||
{
|
{
|
||||||
|
@ -226,7 +237,7 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
||||||
n += scnprintf(buf + n, len - n, "mpy[opt %d] ", opt);
|
n += scnprintf(buf + n, len - n, "mpy[opt %d] ", opt);
|
||||||
}
|
}
|
||||||
n += scnprintf(buf + n, len - n, "%s",
|
n += scnprintf(buf + n, len - n, "%s",
|
||||||
IS_USED(CONFIG_ARC_HAS_HW_MPY));
|
IS_USED_CFG(CONFIG_ARC_HAS_HW_MPY));
|
||||||
}
|
}
|
||||||
|
|
||||||
n += scnprintf(buf + n, len - n, "%s%s%s%s%s%s%s%s\n",
|
n += scnprintf(buf + n, len - n, "%s%s%s%s%s%s%s%s\n",
|
||||||
|
@ -325,6 +336,10 @@ static void arc_chk_core_config(void)
|
||||||
pr_warn("CONFIG_ARC_FPU_SAVE_RESTORE needed for working apps\n");
|
pr_warn("CONFIG_ARC_FPU_SAVE_RESTORE needed for working apps\n");
|
||||||
else if (!cpu->extn.fpu_dp && fpu_enabled)
|
else if (!cpu->extn.fpu_dp && fpu_enabled)
|
||||||
panic("FPU non-existent, disable CONFIG_ARC_FPU_SAVE_RESTORE\n");
|
panic("FPU non-existent, disable CONFIG_ARC_FPU_SAVE_RESTORE\n");
|
||||||
|
|
||||||
|
if (is_isa_arcv2() && IS_ENABLED(CONFIG_SMP) && cpu->isa.atomic &&
|
||||||
|
!IS_ENABLED(CONFIG_ARC_STAR_9000923308))
|
||||||
|
panic("llock/scond livelock workaround missing\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -203,34 +203,24 @@ static int arc_clkevent_set_next_event(unsigned long delta,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arc_clkevent_set_mode(enum clock_event_mode mode,
|
static int arc_clkevent_set_periodic(struct clock_event_device *dev)
|
||||||
struct clock_event_device *dev)
|
|
||||||
{
|
{
|
||||||
switch (mode) {
|
/*
|
||||||
case CLOCK_EVT_MODE_PERIODIC:
|
* At X Hz, 1 sec = 1000ms -> X cycles;
|
||||||
/*
|
* 10ms -> X / 100 cycles
|
||||||
* At X Hz, 1 sec = 1000ms -> X cycles;
|
*/
|
||||||
* 10ms -> X / 100 cycles
|
arc_timer_event_setup(arc_get_core_freq() / HZ);
|
||||||
*/
|
return 0;
|
||||||
arc_timer_event_setup(arc_get_core_freq() / HZ);
|
|
||||||
break;
|
|
||||||
case CLOCK_EVT_MODE_ONESHOT:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEFINE_PER_CPU(struct clock_event_device, arc_clockevent_device) = {
|
static DEFINE_PER_CPU(struct clock_event_device, arc_clockevent_device) = {
|
||||||
.name = "ARC Timer0",
|
.name = "ARC Timer0",
|
||||||
.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
|
.features = CLOCK_EVT_FEAT_ONESHOT |
|
||||||
.mode = CLOCK_EVT_MODE_UNUSED,
|
CLOCK_EVT_FEAT_PERIODIC,
|
||||||
.rating = 300,
|
.rating = 300,
|
||||||
.irq = TIMER0_IRQ, /* hardwired, no need for resources */
|
.irq = TIMER0_IRQ, /* hardwired, no need for resources */
|
||||||
.set_next_event = arc_clkevent_set_next_event,
|
.set_next_event = arc_clkevent_set_next_event,
|
||||||
.set_mode = arc_clkevent_set_mode,
|
.set_state_periodic = arc_clkevent_set_periodic,
|
||||||
};
|
};
|
||||||
|
|
||||||
static irqreturn_t timer_irq_handler(int irq, void *dev_id)
|
static irqreturn_t timer_irq_handler(int irq, void *dev_id)
|
||||||
|
@ -240,7 +230,7 @@ static irqreturn_t timer_irq_handler(int irq, void *dev_id)
|
||||||
* irq_set_chip_and_handler() asked for handle_percpu_devid_irq()
|
* irq_set_chip_and_handler() asked for handle_percpu_devid_irq()
|
||||||
*/
|
*/
|
||||||
struct clock_event_device *evt = this_cpu_ptr(&arc_clockevent_device);
|
struct clock_event_device *evt = this_cpu_ptr(&arc_clockevent_device);
|
||||||
int irq_reenable = evt->mode == CLOCK_EVT_MODE_PERIODIC;
|
int irq_reenable = clockevent_state_periodic(evt);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Any write to CTRL reg ACks the interrupt, we rewrite the
|
* Any write to CTRL reg ACks the interrupt, we rewrite the
|
||||||
|
|
|
@ -58,7 +58,6 @@ static void show_callee_regs(struct callee_regs *cregs)
|
||||||
|
|
||||||
static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
|
static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
|
||||||
{
|
{
|
||||||
struct path path;
|
|
||||||
char *path_nm = NULL;
|
char *path_nm = NULL;
|
||||||
struct mm_struct *mm;
|
struct mm_struct *mm;
|
||||||
struct file *exe_file;
|
struct file *exe_file;
|
||||||
|
|
|
@ -206,7 +206,7 @@ unalignedOffby3:
|
||||||
ld.ab r6, [r1, 4]
|
ld.ab r6, [r1, 4]
|
||||||
prefetch [r1, 28] ;Prefetch the next read location
|
prefetch [r1, 28] ;Prefetch the next read location
|
||||||
ld.ab r8, [r1,4]
|
ld.ab r8, [r1,4]
|
||||||
prefetch [r3, 32] ;Prefetch the next write location
|
prefetchw [r3, 32] ;Prefetch the next write location
|
||||||
|
|
||||||
SHIFT_1 (r7, r6, 8)
|
SHIFT_1 (r7, r6, 8)
|
||||||
or r7, r7, r5
|
or r7, r7, r5
|
||||||
|
|
|
@ -10,12 +10,6 @@
|
||||||
|
|
||||||
#undef PREALLOC_NOT_AVAIL
|
#undef PREALLOC_NOT_AVAIL
|
||||||
|
|
||||||
#ifdef PREALLOC_NOT_AVAIL
|
|
||||||
#define PREWRITE(A,B) prefetchw [(A),(B)]
|
|
||||||
#else
|
|
||||||
#define PREWRITE(A,B) prealloc [(A),(B)]
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
prefetchw [r0] ; Prefetch the write location
|
prefetchw [r0] ; Prefetch the write location
|
||||||
mov.f 0, r2
|
mov.f 0, r2
|
||||||
|
@ -51,9 +45,15 @@ ENTRY(memset)
|
||||||
|
|
||||||
;;; Convert len to Dwords, unfold x8
|
;;; Convert len to Dwords, unfold x8
|
||||||
lsr.f lp_count, lp_count, 6
|
lsr.f lp_count, lp_count, 6
|
||||||
|
|
||||||
lpnz @.Lset64bytes
|
lpnz @.Lset64bytes
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
PREWRITE(r3, 64) ;Prefetch the next write location
|
#ifdef PREALLOC_NOT_AVAIL
|
||||||
|
prefetchw [r3, 64] ;Prefetch the next write location
|
||||||
|
#else
|
||||||
|
prealloc [r3, 64]
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ARC_HAS_LL64
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
|
@ -62,16 +62,45 @@ ENTRY(memset)
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
|
#else
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
#endif
|
||||||
.Lset64bytes:
|
.Lset64bytes:
|
||||||
|
|
||||||
lsr.f lp_count, r2, 5 ;Last remaining max 124 bytes
|
lsr.f lp_count, r2, 5 ;Last remaining max 124 bytes
|
||||||
lpnz .Lset32bytes
|
lpnz .Lset32bytes
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
prefetchw [r3, 32] ;Prefetch the next write location
|
prefetchw [r3, 32] ;Prefetch the next write location
|
||||||
|
#ifdef CONFIG_ARC_HAS_LL64
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
std.ab r4, [r3, 8]
|
std.ab r4, [r3, 8]
|
||||||
|
#else
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
st.ab r4, [r3, 4]
|
||||||
|
#endif
|
||||||
.Lset32bytes:
|
.Lset32bytes:
|
||||||
|
|
||||||
and.f lp_count, r2, 0x1F ;Last remaining 31 bytes
|
and.f lp_count, r2, 0x1F ;Last remaining 31 bytes
|
||||||
|
|
|
@ -468,10 +468,18 @@ static void __ic_line_inv_vaddr(unsigned long paddr, unsigned long vaddr,
|
||||||
noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
|
noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ISA_ARCV2
|
#ifdef CONFIG_ISA_ARCV2
|
||||||
|
/*
|
||||||
|
* SLC is shared between all cores and concurrent aux operations from
|
||||||
|
* multiple cores need to be serialized using a spinlock
|
||||||
|
* A concurrent operation can be silently ignored and/or the old/new
|
||||||
|
* operation can remain incomplete forever (lockup in SLC_CTRL_BUSY loop
|
||||||
|
* below)
|
||||||
|
*/
|
||||||
|
static DEFINE_SPINLOCK(lock);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int ctrl;
|
unsigned int ctrl;
|
||||||
|
|
||||||
local_irq_save(flags);
|
spin_lock_irqsave(&lock, flags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The Region Flush operation is specified by CTRL.RGN_OP[11..9]
|
* The Region Flush operation is specified by CTRL.RGN_OP[11..9]
|
||||||
|
@ -504,7 +512,7 @@ noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
|
||||||
|
|
||||||
while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY);
|
while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY);
|
||||||
|
|
||||||
local_irq_restore(flags);
|
spin_unlock_irqrestore(&lock, flags);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,8 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
|
||||||
|
|
||||||
/* This is kernel Virtual address (0x7000_0000 based) */
|
/* This is kernel Virtual address (0x7000_0000 based) */
|
||||||
kvaddr = ioremap_nocache((unsigned long)paddr, size);
|
kvaddr = ioremap_nocache((unsigned long)paddr, size);
|
||||||
if (kvaddr != NULL)
|
if (kvaddr == NULL)
|
||||||
memset(kvaddr, 0, size);
|
return NULL;
|
||||||
|
|
||||||
/* This is bus address, platform dependent */
|
/* This is bus address, platform dependent */
|
||||||
*dma_handle = (dma_addr_t)paddr;
|
*dma_handle = (dma_addr_t)paddr;
|
||||||
|
|
|
@ -389,6 +389,21 @@ axs103_set_freq(unsigned int id, unsigned int fd, unsigned int od)
|
||||||
|
|
||||||
static void __init axs103_early_init(void)
|
static void __init axs103_early_init(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* AXS103 configurations for SMP/QUAD configurations share device tree
|
||||||
|
* which defaults to 90 MHz. However recent failures of Quad config
|
||||||
|
* revealed P&R timing violations so clamp it down to safe 50 MHz
|
||||||
|
* Instead of duplicating defconfig/DT for SMP/QUAD, add a small hack
|
||||||
|
*
|
||||||
|
* This hack is really hacky as of now. Fix it properly by getting the
|
||||||
|
* number of cores as return value of platform's early SMP callback
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_ARC_MCIP
|
||||||
|
unsigned int num_cores = (read_aux_reg(ARC_REG_MCIP_BCR) >> 16) & 0x3F;
|
||||||
|
if (num_cores > 2)
|
||||||
|
arc_set_core_freq(50 * 1000000);
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (arc_get_core_freq()/1000000) {
|
switch (arc_get_core_freq()/1000000) {
|
||||||
case 33:
|
case 33:
|
||||||
axs103_set_freq(1, 1, 1);
|
axs103_set_freq(1, 1, 1);
|
||||||
|
|
|
@ -1693,6 +1693,12 @@ config HIGHMEM
|
||||||
config HIGHPTE
|
config HIGHPTE
|
||||||
bool "Allocate 2nd-level pagetables from highmem"
|
bool "Allocate 2nd-level pagetables from highmem"
|
||||||
depends on HIGHMEM
|
depends on HIGHMEM
|
||||||
|
help
|
||||||
|
The VM uses one page of physical memory for each page table.
|
||||||
|
For systems with a lot of processes, this can use a lot of
|
||||||
|
precious low memory, eventually leading to low memory being
|
||||||
|
consumed by page tables. Setting this option will allow
|
||||||
|
user-space 2nd level page tables to reside in high memory.
|
||||||
|
|
||||||
config HW_PERF_EVENTS
|
config HW_PERF_EVENTS
|
||||||
bool "Enable hardware performance counter support for perf events"
|
bool "Enable hardware performance counter support for perf events"
|
||||||
|
|
|
@ -1635,7 +1635,7 @@ config PID_IN_CONTEXTIDR
|
||||||
|
|
||||||
config DEBUG_SET_MODULE_RONX
|
config DEBUG_SET_MODULE_RONX
|
||||||
bool "Set loadable kernel module data as NX and text as RO"
|
bool "Set loadable kernel module data as NX and text as RO"
|
||||||
depends on MODULES
|
depends on MODULES && MMU
|
||||||
---help---
|
---help---
|
||||||
This option helps catch unintended modifications to loadable
|
This option helps catch unintended modifications to loadable
|
||||||
kernel module's text and read-only data. It also prevents execution
|
kernel module's text and read-only data. It also prevents execution
|
||||||
|
|
|
@ -80,3 +80,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&rtc {
|
||||||
|
system-power-controller;
|
||||||
|
};
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
audio_codec: tlv320aic3106@1b {
|
audio_codec: tlv320aic3106@1b {
|
||||||
compatible = "ti,tlv320aic3106";
|
compatible = "ti,tlv320aic3106";
|
||||||
reg = <0x1b>;
|
reg = <0x1b>;
|
||||||
|
ai3x-micbias-vg = <0x2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
accel: lis331dlh@1d {
|
accel: lis331dlh@1d {
|
||||||
|
@ -153,7 +154,7 @@
|
||||||
ti,audio-routing =
|
ti,audio-routing =
|
||||||
"Headphone Jack", "HPLOUT",
|
"Headphone Jack", "HPLOUT",
|
||||||
"Headphone Jack", "HPROUT",
|
"Headphone Jack", "HPROUT",
|
||||||
"LINE1L", "Line In";
|
"MIC3L", "Mic3L Switch";
|
||||||
};
|
};
|
||||||
|
|
||||||
&mcasp0 {
|
&mcasp0 {
|
||||||
|
@ -438,41 +439,50 @@
|
||||||
regulators {
|
regulators {
|
||||||
dcdc1_reg: regulator@0 {
|
dcdc1_reg: regulator@0 {
|
||||||
/* VDD_1V8 system supply */
|
/* VDD_1V8 system supply */
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
dcdc2_reg: regulator@1 {
|
dcdc2_reg: regulator@1 {
|
||||||
/* VDD_CORE voltage limits 0.95V - 1.26V with +/-4% tolerance */
|
/* VDD_CORE voltage limits 0.95V - 1.26V with +/-4% tolerance */
|
||||||
regulator-name = "vdd_core";
|
regulator-name = "vdd_core";
|
||||||
regulator-min-microvolt = <925000>;
|
regulator-min-microvolt = <925000>;
|
||||||
regulator-max-microvolt = <1325000>;
|
regulator-max-microvolt = <1150000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
dcdc3_reg: regulator@2 {
|
dcdc3_reg: regulator@2 {
|
||||||
/* VDD_MPU voltage limits 0.95V - 1.1V with +/-4% tolerance */
|
/* VDD_MPU voltage limits 0.95V - 1.1V with +/-4% tolerance */
|
||||||
regulator-name = "vdd_mpu";
|
regulator-name = "vdd_mpu";
|
||||||
regulator-min-microvolt = <925000>;
|
regulator-min-microvolt = <925000>;
|
||||||
regulator-max-microvolt = <1150000>;
|
regulator-max-microvolt = <1325000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo1_reg: regulator@3 {
|
ldo1_reg: regulator@3 {
|
||||||
/* VRTC 1.8V always-on supply */
|
/* VRTC 1.8V always-on supply */
|
||||||
|
regulator-name = "vrtc,vdds";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo2_reg: regulator@4 {
|
ldo2_reg: regulator@4 {
|
||||||
/* 3.3V rail */
|
/* 3.3V rail */
|
||||||
|
regulator-name = "vdd_3v3aux";
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo3_reg: regulator@5 {
|
ldo3_reg: regulator@5 {
|
||||||
/* VDD_3V3A 3.3V rail */
|
/* VDD_3V3A 3.3V rail */
|
||||||
|
regulator-name = "vdd_3v3a";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo4_reg: regulator@6 {
|
ldo4_reg: regulator@6 {
|
||||||
/* VDD_3V3B 3.3V rail */
|
/* VDD_3V3B 3.3V rail */
|
||||||
|
regulator-name = "vdd_3v3b";
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -132,6 +132,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
emif: emif@4c000000 {
|
||||||
|
compatible = "ti,emif-am4372";
|
||||||
|
reg = <0x4c000000 0x1000000>;
|
||||||
|
ti,hwmods = "emif";
|
||||||
|
};
|
||||||
|
|
||||||
edma: edma@49000000 {
|
edma: edma@49000000 {
|
||||||
compatible = "ti,edma3";
|
compatible = "ti,edma3";
|
||||||
ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
|
ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
|
||||||
|
@ -941,6 +947,7 @@
|
||||||
ti,hwmods = "dss_rfbi";
|
ti,hwmods = "dss_rfbi";
|
||||||
clocks = <&disp_clk>;
|
clocks = <&disp_clk>;
|
||||||
clock-names = "fck";
|
clock-names = "fck";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -605,6 +605,10 @@
|
||||||
phy-supply = <&ldousb_reg>;
|
phy-supply = <&ldousb_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usb2_phy2 {
|
||||||
|
phy-supply = <&ldousb_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&usb1 {
|
&usb1 {
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -22,6 +22,7 @@
|
||||||
MATRIX_KEY(0x00, 0x02, KEY_F1)
|
MATRIX_KEY(0x00, 0x02, KEY_F1)
|
||||||
MATRIX_KEY(0x00, 0x03, KEY_B)
|
MATRIX_KEY(0x00, 0x03, KEY_B)
|
||||||
MATRIX_KEY(0x00, 0x04, KEY_F10)
|
MATRIX_KEY(0x00, 0x04, KEY_F10)
|
||||||
|
MATRIX_KEY(0x00, 0x05, KEY_RO)
|
||||||
MATRIX_KEY(0x00, 0x06, KEY_N)
|
MATRIX_KEY(0x00, 0x06, KEY_N)
|
||||||
MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
|
MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
|
||||||
MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
|
MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
|
||||||
|
@ -34,6 +35,7 @@
|
||||||
MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
|
MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
|
||||||
MATRIX_KEY(0x01, 0x09, KEY_F9)
|
MATRIX_KEY(0x01, 0x09, KEY_F9)
|
||||||
MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
|
MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
|
||||||
|
MATRIX_KEY(0x01, 0x0c, KEY_HENKAN)
|
||||||
|
|
||||||
MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
|
MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
|
||||||
MATRIX_KEY(0x02, 0x01, KEY_TAB)
|
MATRIX_KEY(0x02, 0x01, KEY_TAB)
|
||||||
|
@ -45,6 +47,7 @@
|
||||||
MATRIX_KEY(0x02, 0x07, KEY_102ND)
|
MATRIX_KEY(0x02, 0x07, KEY_102ND)
|
||||||
MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
|
MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
|
||||||
MATRIX_KEY(0x02, 0x09, KEY_F8)
|
MATRIX_KEY(0x02, 0x09, KEY_F8)
|
||||||
|
MATRIX_KEY(0x02, 0x0a, KEY_YEN)
|
||||||
|
|
||||||
MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
|
MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
|
||||||
MATRIX_KEY(0x03, 0x02, KEY_F2)
|
MATRIX_KEY(0x03, 0x02, KEY_F2)
|
||||||
|
@ -53,6 +56,7 @@
|
||||||
MATRIX_KEY(0x03, 0x06, KEY_6)
|
MATRIX_KEY(0x03, 0x06, KEY_6)
|
||||||
MATRIX_KEY(0x03, 0x08, KEY_MINUS)
|
MATRIX_KEY(0x03, 0x08, KEY_MINUS)
|
||||||
MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
|
MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
|
||||||
|
MATRIX_KEY(0x03, 0x0c, KEY_MUHENKAN)
|
||||||
|
|
||||||
MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
|
MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
|
||||||
MATRIX_KEY(0x04, 0x01, KEY_A)
|
MATRIX_KEY(0x04, 0x01, KEY_A)
|
||||||
|
|
|
@ -686,7 +686,8 @@
|
||||||
|
|
||||||
&dcan1 {
|
&dcan1 {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
pinctrl-names = "default", "sleep";
|
pinctrl-names = "default", "sleep", "active";
|
||||||
pinctrl-0 = <&dcan1_pins_default>;
|
pinctrl-0 = <&dcan1_pins_sleep>;
|
||||||
pinctrl-1 = <&dcan1_pins_sleep>;
|
pinctrl-1 = <&dcan1_pins_sleep>;
|
||||||
|
pinctrl-2 = <&dcan1_pins_default>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1140,6 +1140,7 @@
|
||||||
ctrl-module = <&omap_control_sata>;
|
ctrl-module = <&omap_control_sata>;
|
||||||
clocks = <&sys_clkin1>, <&sata_ref_clk>;
|
clocks = <&sys_clkin1>, <&sata_ref_clk>;
|
||||||
clock-names = "sysclk", "refclk";
|
clock-names = "sysclk", "refclk";
|
||||||
|
syscon-pllreset = <&scm_conf 0x3fc>;
|
||||||
#phy-cells = <0>;
|
#phy-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -587,9 +587,10 @@
|
||||||
|
|
||||||
&dcan1 {
|
&dcan1 {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
pinctrl-names = "default", "sleep";
|
pinctrl-names = "default", "sleep", "active";
|
||||||
pinctrl-0 = <&dcan1_pins_default>;
|
pinctrl-0 = <&dcan1_pins_sleep>;
|
||||||
pinctrl-1 = <&dcan1_pins_sleep>;
|
pinctrl-1 = <&dcan1_pins_sleep>;
|
||||||
|
pinctrl-2 = <&dcan1_pins_default>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&qspi {
|
&qspi {
|
||||||
|
|
|
@ -138,8 +138,8 @@
|
||||||
|
|
||||||
mipi_phy: video-phy@10020710 {
|
mipi_phy: video-phy@10020710 {
|
||||||
compatible = "samsung,s5pv210-mipi-video-phy";
|
compatible = "samsung,s5pv210-mipi-video-phy";
|
||||||
reg = <0x10020710 8>;
|
|
||||||
#phy-cells = <1>;
|
#phy-cells = <1>;
|
||||||
|
syscon = <&pmu_system_controller>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pd_cam: cam-power-domain@10023C00 {
|
pd_cam: cam-power-domain@10023C00 {
|
||||||
|
|
|
@ -127,6 +127,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck1_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&fimd {
|
&fimd {
|
||||||
pinctrl-0 = <&lcd_en &lcd_clk &lcd_data24 &pwm0_out>;
|
pinctrl-0 = <&lcd_en &lcd_clk &lcd_data24 &pwm0_out>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
|
@ -188,6 +188,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&varm_breg>;
|
||||||
|
};
|
||||||
|
|
||||||
&dsi_0 {
|
&dsi_0 {
|
||||||
vddcore-supply = <&vusb_reg>;
|
vddcore-supply = <&vusb_reg>;
|
||||||
vddio-supply = <&vmipi_reg>;
|
vddio-supply = <&vmipi_reg>;
|
||||||
|
|
|
@ -548,6 +548,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&vdd_arm_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&pinctrl_1 {
|
&pinctrl_1 {
|
||||||
hdmi_hpd: hdmi-hpd {
|
hdmi_hpd: hdmi-hpd {
|
||||||
samsung,pins = "gpx3-7";
|
samsung,pins = "gpx3-7";
|
||||||
|
|
|
@ -40,6 +40,18 @@
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0x900>;
|
reg = <0x900>;
|
||||||
|
clocks = <&clock CLK_ARM_CLK>;
|
||||||
|
clock-names = "cpu";
|
||||||
|
clock-latency = <160000>;
|
||||||
|
|
||||||
|
operating-points = <
|
||||||
|
1200000 1250000
|
||||||
|
1000000 1150000
|
||||||
|
800000 1075000
|
||||||
|
500000 975000
|
||||||
|
400000 975000
|
||||||
|
200000 950000
|
||||||
|
>;
|
||||||
cooling-min-level = <4>;
|
cooling-min-level = <4>;
|
||||||
cooling-max-level = <2>;
|
cooling-max-level = <2>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
|
|
|
@ -468,6 +468,7 @@
|
||||||
interrupts = <36 37 38 39 40 41 42 43 44>;
|
interrupts = <36 37 38 39 40 41 42 43 44>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
clocks = <&clks 26>;
|
clocks = <&clks 26>;
|
||||||
|
#io-channel-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spdif@80054000 {
|
spdif@80054000 {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
#include "imx25.dtsi"
|
#include "imx25.dtsi"
|
||||||
|
|
||||||
|
@ -114,8 +115,8 @@
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
cd-gpios = <&gpio2 1 0>;
|
cd-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 0 0>;
|
wp-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt1: timer@10003000 {
|
gpt1: timer@10003000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x10003000 0x1000>;
|
reg = <0x10003000 0x1000>;
|
||||||
interrupts = <26>;
|
interrupts = <26>;
|
||||||
clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt2: timer@10004000 {
|
gpt2: timer@10004000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x10004000 0x1000>;
|
reg = <0x10004000 0x1000>;
|
||||||
interrupts = <25>;
|
interrupts = <25>;
|
||||||
clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
|
||||||
|
@ -126,7 +126,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt3: timer@10005000 {
|
gpt3: timer@10005000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x10005000 0x1000>;
|
reg = <0x10005000 0x1000>;
|
||||||
interrupts = <24>;
|
interrupts = <24>;
|
||||||
clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
|
||||||
|
@ -376,7 +376,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt4: timer@10019000 {
|
gpt4: timer@10019000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x10019000 0x1000>;
|
reg = <0x10019000 0x1000>;
|
||||||
interrupts = <4>;
|
interrupts = <4>;
|
||||||
clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
|
||||||
|
@ -385,7 +385,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt5: timer@1001a000 {
|
gpt5: timer@1001a000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x1001a000 0x1000>;
|
reg = <0x1001a000 0x1000>;
|
||||||
interrupts = <3>;
|
interrupts = <3>;
|
||||||
clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
|
||||||
|
@ -436,7 +436,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt6: timer@1001f000 {
|
gpt6: timer@1001f000 {
|
||||||
compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
|
compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
|
||||||
reg = <0x1001f000 0x1000>;
|
reg = <0x1001f000 0x1000>;
|
||||||
interrupts = <2>;
|
interrupts = <2>;
|
||||||
clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,
|
||||||
|
|
|
@ -286,8 +286,8 @@
|
||||||
can1: can@53fe4000 {
|
can1: can@53fe4000 {
|
||||||
compatible = "fsl,imx35-flexcan", "fsl,p1010-flexcan";
|
compatible = "fsl,imx35-flexcan", "fsl,p1010-flexcan";
|
||||||
reg = <0x53fe4000 0x1000>;
|
reg = <0x53fe4000 0x1000>;
|
||||||
clocks = <&clks 33>;
|
clocks = <&clks 33>, <&clks 33>;
|
||||||
clock-names = "ipg";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <43>;
|
interrupts = <43>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -295,8 +295,8 @@
|
||||||
can2: can@53fe8000 {
|
can2: can@53fe8000 {
|
||||||
compatible = "fsl,imx35-flexcan", "fsl,p1010-flexcan";
|
compatible = "fsl,imx35-flexcan", "fsl,p1010-flexcan";
|
||||||
reg = <0x53fe8000 0x1000>;
|
reg = <0x53fe8000 0x1000>;
|
||||||
clocks = <&clks 34>;
|
clocks = <&clks 34>, <&clks 34>;
|
||||||
clock-names = "ipg";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <44>;
|
interrupts = <44>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
cd-gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -103,8 +103,8 @@
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
cd-gpios = <&gpio1 1 0>;
|
cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 9 0>;
|
wp-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
cd-gpios = <&gpio1 1 0>;
|
cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 9 0>;
|
wp-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,8 @@
|
||||||
&esdhc3 {
|
&esdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc3>;
|
pinctrl-0 = <&pinctrl_esdhc3>;
|
||||||
cd-gpios = <&gpio3 11 0>;
|
cd-gpios = <&gpio3 11 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio3 12 0>;
|
wp-gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -295,9 +295,10 @@
|
||||||
&tve {
|
&tve {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_vga_sync>;
|
pinctrl-0 = <&pinctrl_vga_sync>;
|
||||||
|
ddc-i2c-bus = <&i2c2>;
|
||||||
fsl,tve-mode = "vga";
|
fsl,tve-mode = "vga";
|
||||||
fsl,hsync-pin = <4>;
|
fsl,hsync-pin = <7>; /* IPU DI1 PIN7 via EIM_OE */
|
||||||
fsl,vsync-pin = <6>;
|
fsl,vsync-pin = <8>; /* IPU DI1 PIN8 via EIM_RW */
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,8 @@
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
cd-gpios = <&gpio3 13 0>;
|
cd-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio4 11 0>;
|
wp-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,8 @@
|
||||||
pinctrl-0 = <&pinctrl_esdhc2>,
|
pinctrl-0 = <&pinctrl_esdhc2>,
|
||||||
<&pinctrl_esdhc2_cdwp>;
|
<&pinctrl_esdhc2_cdwp>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
wp-gpios = <&gpio1 2 0>;
|
wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
cd-gpios = <&gpio1 4 0>;
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -183,7 +183,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&esdhc1 {
|
&esdhc1 {
|
||||||
cd-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
|
||||||
fsl,wp-controller;
|
fsl,wp-controller;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc1>;
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
|
@ -191,7 +191,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&esdhc2 {
|
&esdhc2 {
|
||||||
cd-gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
|
||||||
fsl,wp-controller;
|
fsl,wp-controller;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc2>;
|
pinctrl-0 = <&pinctrl_esdhc2>;
|
||||||
|
|
|
@ -119,8 +119,8 @@
|
||||||
&esdhc2 {
|
&esdhc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_esdhc2>;
|
pinctrl-0 = <&pinctrl_esdhc2>;
|
||||||
cd-gpios = <&gpio3 25 0>;
|
cd-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 19 0>;
|
wp-gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -305,8 +305,8 @@
|
||||||
&usdhc2 {
|
&usdhc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
cd-gpios = <&gpio1 4 0>;
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 2 0>;
|
wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -314,8 +314,8 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 0>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio7 1 0>;
|
wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include "imx6q.dtsi"
|
#include "imx6q.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@ -196,8 +197,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
cd-gpios = <&gpio6 11 0>;
|
cd-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio6 14 0>;
|
wp-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3
|
pinctrl-0 = <&pinctrl_usdhc3
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include "imx6q.dtsi"
|
#include "imx6q.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@ -161,7 +162,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio6 11 0>;
|
cd-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -251,7 +251,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -260,7 +260,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -173,7 +173,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
cd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
cd-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio4 8 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -392,7 +392,7 @@
|
||||||
&usdhc1 {
|
&usdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||||
cd-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -400,7 +400,7 @@
|
||||||
&usdhc2 {
|
&usdhc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
cd-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
|
wp-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -258,6 +258,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>;
|
pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
cd-gpios = <&gpio1 4 0>;
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
regulators {
|
regulators {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
|
@ -181,7 +183,7 @@
|
||||||
&usdhc2 { /* module slot */
|
&usdhc2 { /* module slot */
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
cd-gpios = <&gpio2 2 0>;
|
cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,7 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -324,7 +324,7 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -417,7 +417,7 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -299,6 +299,6 @@
|
||||||
&pinctrl_hummingboard_usdhc2
|
&pinctrl_hummingboard_usdhc2
|
||||||
>;
|
>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
cd-gpios = <&gpio1 4 0>;
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -453,7 +453,7 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 0>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -461,7 +461,7 @@
|
||||||
&usdhc4 {
|
&usdhc4 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc4>;
|
pinctrl-0 = <&pinctrl_usdhc4>;
|
||||||
cd-gpios = <&gpio2 6 0>;
|
cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -409,8 +409,8 @@
|
||||||
&usdhc2 {
|
&usdhc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
cd-gpios = <&gpio1 4 0>;
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 2 0>;
|
wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3
|
pinctrl-0 = <&pinctrl_usdhc3
|
||||||
&pinctrl_usdhc3_cdwp>;
|
&pinctrl_usdhc3_cdwp>;
|
||||||
cd-gpios = <&gpio1 27 0>;
|
cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 29 0>;
|
wp-gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -342,7 +342,7 @@
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
|
wp-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -351,6 +351,6 @@
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
|
wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -467,8 +467,8 @@
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
|
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
|
||||||
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
||||||
cd-gpios = <&gpio6 15 0>;
|
cd-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio1 13 0>;
|
wp-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -448,8 +448,8 @@
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio7 0 0>;
|
cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio7 1 0>;
|
wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -457,7 +457,7 @@
|
||||||
&usdhc4 {
|
&usdhc4 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc4>;
|
pinctrl-0 = <&pinctrl_usdhc4>;
|
||||||
cd-gpios = <&gpio2 6 0>;
|
cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <®_3p3v>;
|
vmmc-supply = <®_3p3v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -562,8 +562,8 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cd-gpios = <&gpio2 2 0>;
|
cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 3 0>;
|
wp-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -571,8 +571,8 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cd-gpios = <&gpio2 0 0>;
|
cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio2 1 0>;
|
wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -680,7 +680,7 @@
|
||||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
cd-gpios = <&gpio7 2 0>;
|
cd-gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
|
||||||
fsl,wp-controller;
|
fsl,wp-controller;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -690,7 +690,7 @@
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
cd-gpios = <&gpio7 3 0>;
|
cd-gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
|
||||||
fsl,wp-controller;
|
fsl,wp-controller;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
regulators {
|
regulators {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
|
@ -250,13 +252,13 @@
|
||||||
&usdhc1 {
|
&usdhc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||||
cd-gpios = <&gpio1 2 0>;
|
cd-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usdhc3 {
|
&usdhc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||||
cd-gpios = <&gpio3 9 0>;
|
cd-gpios = <&gpio3 9 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue