mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 18:09:56 +00:00
Compare commits
123 Commits
raspberryp
...
rpi-4.4.y_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9faebbe763 | ||
|
|
9ebd23d0d6 | ||
|
|
1b2b2852a1 | ||
|
|
e8eb77737d | ||
|
|
cc06454a1e | ||
|
|
023918f2e1 | ||
|
|
ac7df4ae8d | ||
|
|
7fab9b21e8 | ||
|
|
ad1f00d816 | ||
|
|
620a9d4ee3 | ||
|
|
6b35288a11 | ||
|
|
4e0e14692d | ||
|
|
05afaaa4dd | ||
|
|
6422bafd14 | ||
|
|
e2849fbfe4 | ||
|
|
507592d755 | ||
|
|
1be1568e56 | ||
|
|
5b2848eb75 | ||
|
|
068540e13f | ||
|
|
d34ca1148c | ||
|
|
79ae9990cf | ||
|
|
badbf92edf | ||
|
|
41db721d52 | ||
|
|
0e476c9ecf | ||
|
|
415042d1da | ||
|
|
c9a59da6e7 | ||
|
|
28919fc00d | ||
|
|
e8446bbedb | ||
|
|
437b9dcefb | ||
|
|
7bbacf8203 | ||
|
|
d3d5b43018 | ||
|
|
76ee4b7e9f | ||
|
|
56592fd576 | ||
|
|
9ae652dc81 | ||
|
|
dd1b1b1546 | ||
|
|
5082e1acb2 | ||
|
|
e1438f9562 | ||
|
|
cbd271da90 | ||
|
|
12ed567687 | ||
|
|
d534702fb3 | ||
|
|
79e343ef25 | ||
|
|
c2f7616103 | ||
|
|
df7dc1fb9b | ||
|
|
3d4be7df94 | ||
|
|
ddfe39c8a9 | ||
|
|
e0ed1c3216 | ||
|
|
dd16a2cfa5 | ||
|
|
b3bda227d5 | ||
|
|
a20a026b9f | ||
|
|
4af2cecf2a | ||
|
|
a3bea9a4b1 | ||
|
|
c1048e71dd | ||
|
|
39fb5c4f15 | ||
|
|
ed47a8feec | ||
|
|
226b904307 | ||
|
|
be5c43c5c1 | ||
|
|
f7b2b02ea4 | ||
|
|
3dc2824fae | ||
|
|
b2d7484f2f | ||
|
|
e94bc6cf78 | ||
|
|
0d5fc8a3d0 | ||
|
|
e6190dc325 | ||
|
|
93015dc470 | ||
|
|
488b4f79ea | ||
|
|
e206874282 | ||
|
|
867106b1a5 | ||
|
|
c7dd7eb507 | ||
|
|
bdfea11c7e | ||
|
|
71353d5186 | ||
|
|
0e9006d877 | ||
|
|
f0fdfa22e9 | ||
|
|
a937e28752 | ||
|
|
12351479fe | ||
|
|
45c3b495d6 | ||
|
|
1338dd4bdb | ||
|
|
b7b2884283 | ||
|
|
1076dfc03d | ||
|
|
3dff4a73ee | ||
|
|
9719f5e37a | ||
|
|
6989c11dfa | ||
|
|
f5244cd4e4 | ||
|
|
d061f25545 | ||
|
|
4b816d828f | ||
|
|
628ac56421 | ||
|
|
c0dec6e58b | ||
|
|
74b4d7fb9f | ||
|
|
38aba70cbe | ||
|
|
cba6efda07 | ||
|
|
5032acc5f2 | ||
|
|
39228cc850 | ||
|
|
543484cb5a | ||
|
|
ef6ae61d5a | ||
|
|
9431f7866c | ||
|
|
4ee52c5dc8 | ||
|
|
45b5f6954e | ||
|
|
73644ed43f | ||
|
|
f2b8f65f29 | ||
|
|
189baf7660 | ||
|
|
8ad957e866 | ||
|
|
28e77e1a31 | ||
|
|
beda5586ef | ||
|
|
cb7d1d4664 | ||
|
|
5be6054802 | ||
|
|
16c4463eac | ||
|
|
ba7f4ebd24 | ||
|
|
c1429003b0 | ||
|
|
ccce163feb | ||
|
|
c58c685f75 | ||
|
|
ef041d1d9a | ||
|
|
11d4f3b520 | ||
|
|
c75394eff6 | ||
|
|
91f81406c2 | ||
|
|
a533be518f | ||
|
|
b0dca0a200 | ||
|
|
9bc9352084 | ||
|
|
edb71c377a | ||
|
|
b446c0613e | ||
|
|
4a60564f7a | ||
|
|
32c94360dd | ||
|
|
09b89dd4e1 | ||
|
|
1080f40d03 | ||
|
|
16af2003a8 | ||
|
|
b3ee605a6d |
@@ -1,4 +1,4 @@
|
|||||||
What /sys/bus/iio/devices/iio:deviceX/in_proximity_input
|
What /sys/bus/iio/devices/iio:deviceX/in_proximity_raw
|
||||||
Date: March 2014
|
Date: March 2014
|
||||||
KernelVersion: 3.15
|
KernelVersion: 3.15
|
||||||
Contact: Matt Ranostay <mranostay@gmail.com>
|
Contact: Matt Ranostay <mranostay@gmail.com>
|
||||||
|
|||||||
@@ -134,21 +134,19 @@ Description:
|
|||||||
enabled for the device. Developer can write y/Y/1 or n/N/0 to
|
enabled for the device. Developer can write y/Y/1 or n/N/0 to
|
||||||
the file to enable/disable the feature.
|
the file to enable/disable the feature.
|
||||||
|
|
||||||
What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1
|
What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm
|
||||||
/sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2
|
Date: June 2015
|
||||||
Date: November 2015
|
|
||||||
Contact: Kevin Strasser <kevin.strasser@linux.intel.com>
|
Contact: Kevin Strasser <kevin.strasser@linux.intel.com>
|
||||||
Lu Baolu <baolu.lu@linux.intel.com>
|
|
||||||
Description:
|
Description:
|
||||||
If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged
|
If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged
|
||||||
in to a xHCI host which supports link PM, it will check if U1
|
in to a xHCI host which supports link PM, it will check if U1
|
||||||
and U2 exit latencies have been set in the BOS descriptor; if
|
and U2 exit latencies have been set in the BOS descriptor; if
|
||||||
the check is passed and the host supports USB3 hardware LPM,
|
the check is is passed and the host supports USB3 hardware LPM,
|
||||||
USB3 hardware LPM will be enabled for the device and the USB
|
USB3 hardware LPM will be enabled for the device and the USB
|
||||||
device directory will contain two files named
|
device directory will contain a file named
|
||||||
power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These
|
power/usb3_hardware_lpm. The file holds a string value (enable
|
||||||
files hold a string value (enable or disable) indicating whether
|
or disable) indicating whether or not USB3 hardware LPM is
|
||||||
or not USB3 hardware LPM U1 or U2 is enabled for the device.
|
enabled for the device.
|
||||||
|
|
||||||
What: /sys/bus/usb/devices/.../removable
|
What: /sys/bus/usb/devices/.../removable
|
||||||
Date: February 2012
|
Date: February 2012
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ Optional properties:
|
|||||||
during suspend.
|
during suspend.
|
||||||
- ti,no-reset-on-init: When present, the module should not be reset at init
|
- ti,no-reset-on-init: When present, the module should not be reset at init
|
||||||
- ti,no-idle-on-init: When present, the module should not be idled at init
|
- ti,no-idle-on-init: When present, the module should not be idled at init
|
||||||
- ti,no-idle: When present, the module is never allowed to idle.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|||||||
@@ -30,10 +30,6 @@ Optional properties:
|
|||||||
- target-supply : regulator for SATA target power
|
- target-supply : regulator for SATA target power
|
||||||
- phys : reference to the SATA PHY node
|
- phys : reference to the SATA PHY node
|
||||||
- phy-names : must be "sata-phy"
|
- phy-names : must be "sata-phy"
|
||||||
- ports-implemented : Mask that indicates which ports that the HBA supports
|
|
||||||
are available for software to use. Useful if PORTS_IMPL
|
|
||||||
is not programmed by the BIOS, which is true with
|
|
||||||
some embedded SOC's.
|
|
||||||
|
|
||||||
Required properties when using sub-nodes:
|
Required properties when using sub-nodes:
|
||||||
- #address-cells : number of cells to encode an address
|
- #address-cells : number of cells to encode an address
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
Broadcom BCM2835 auxiliary peripheral support
|
|
||||||
|
|
||||||
This binding uses the common clock binding:
|
|
||||||
Documentation/devicetree/bindings/clock/clock-bindings.txt
|
|
||||||
|
|
||||||
The auxiliary peripherals (UART, SPI1, and SPI2) have a small register
|
|
||||||
area controlling clock gating to the peripherals, and providing an IRQ
|
|
||||||
status register.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Should be "brcm,bcm2835-aux"
|
|
||||||
- #clock-cells: Should be <1>. The permitted clock-specifier values can be
|
|
||||||
found in include/dt-bindings/clock/bcm2835-aux.h
|
|
||||||
- reg: Specifies base physical address and size of the registers
|
|
||||||
- clocks: The parent clock phandle
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
clocks: cprman@7e101000 {
|
|
||||||
compatible = "brcm,bcm2835-cprman";
|
|
||||||
#clock-cells = <1>;
|
|
||||||
reg = <0x7e101000 0x2000>;
|
|
||||||
clocks = <&clk_osc>;
|
|
||||||
};
|
|
||||||
|
|
||||||
aux: aux@0x7e215004 {
|
|
||||||
compatible = "brcm,bcm2835-aux";
|
|
||||||
#clock-cells = <1>;
|
|
||||||
reg = <0x7e215000 0x8>;
|
|
||||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
|
||||||
};
|
|
||||||
@@ -16,17 +16,7 @@ Required properties:
|
|||||||
- #clock-cells: Should be <1>. The permitted clock-specifier values can be
|
- #clock-cells: Should be <1>. The permitted clock-specifier values can be
|
||||||
found in include/dt-bindings/clock/bcm2835.h
|
found in include/dt-bindings/clock/bcm2835.h
|
||||||
- reg: Specifies base physical address and size of the registers
|
- reg: Specifies base physical address and size of the registers
|
||||||
- clocks: phandles to the parent clocks used as input to the module, in
|
- clocks: The external oscillator clock phandle
|
||||||
the following order:
|
|
||||||
|
|
||||||
- External oscillator
|
|
||||||
- DSI1 byte clock
|
|
||||||
- DSI1 DDR2 clock
|
|
||||||
- DSI1 DDR clock
|
|
||||||
|
|
||||||
Only external oscillator is required. The DSI clocks may
|
|
||||||
not be present, in which case their children will be
|
|
||||||
unusable.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ clocks and IDs.
|
|||||||
csi_sel 79
|
csi_sel 79
|
||||||
iim_gate 80
|
iim_gate 80
|
||||||
gpu2d_gate 81
|
gpu2d_gate 81
|
||||||
ckli_gate 82
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|||||||
@@ -35,22 +35,6 @@ Optional properties for HDMI:
|
|||||||
as an interrupt/status bit in the HDMI controller
|
as an interrupt/status bit in the HDMI controller
|
||||||
itself). See bindings/pinctrl/brcm,bcm2835-gpio.txt
|
itself). See bindings/pinctrl/brcm,bcm2835-gpio.txt
|
||||||
|
|
||||||
Required properties for DPI:
|
|
||||||
- compatible: Should be "brcm,bcm2835-dpi"
|
|
||||||
- reg: Physical base address and length of the registers
|
|
||||||
- clocks: a) core: The core clock the unit runs on
|
|
||||||
b) pixel: The pixel clock that feeds the pixelvalve
|
|
||||||
- port: Port node with a single endpoint connecting to the panel
|
|
||||||
device, as defined in [1]
|
|
||||||
|
|
||||||
Required properties for V3D:
|
|
||||||
- compatible: Should be "brcm,bcm2835-v3d"
|
|
||||||
- reg: Physical base address and length of the V3D's registers
|
|
||||||
- interrupts: The interrupt number
|
|
||||||
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
|
|
||||||
|
|
||||||
[1] Documentation/devicetree/bindings/media/video-interfaces.txt
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
pixelvalve@7e807000 {
|
pixelvalve@7e807000 {
|
||||||
compatible = "brcm,bcm2835-pixelvalve2";
|
compatible = "brcm,bcm2835-pixelvalve2";
|
||||||
@@ -76,38 +60,6 @@ hdmi: hdmi@7e902000 {
|
|||||||
clock-names = "pixel", "hdmi";
|
clock-names = "pixel", "hdmi";
|
||||||
};
|
};
|
||||||
|
|
||||||
dpi: dpi@7e208000 {
|
|
||||||
compatible = "brcm,bcm2835-dpi";
|
|
||||||
reg = <0x7e208000 0x8c>;
|
|
||||||
clocks = <&clocks BCM2835_CLOCK_VPU>,
|
|
||||||
<&clocks BCM2835_CLOCK_DPI>;
|
|
||||||
clock-names = "core", "pixel";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
dpi_out: endpoint@0 {
|
|
||||||
remote-endpoint = <&panel_in>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
v3d: v3d@7ec00000 {
|
|
||||||
compatible = "brcm,bcm2835-v3d";
|
|
||||||
reg = <0x7ec00000 0x1000>;
|
|
||||||
interrupts = <1 10>;
|
|
||||||
};
|
|
||||||
|
|
||||||
vc4: gpu {
|
vc4: gpu {
|
||||||
compatible = "brcm,bcm2835-vc4";
|
compatible = "brcm,bcm2835-vc4";
|
||||||
};
|
};
|
||||||
|
|
||||||
panel: panel {
|
|
||||||
compatible = "ontat,yx700wv03", "simple-panel";
|
|
||||||
|
|
||||||
port {
|
|
||||||
panel_in: endpoint {
|
|
||||||
remote-endpoint = <&dpi_out>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
On Tat Industrial Company 7" DPI TFT panel.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: should be "ontat,yx700wv03"
|
|
||||||
|
|
||||||
This binding is compatible with the simple-panel binding, which is specified
|
|
||||||
in simple-panel.txt in this directory.
|
|
||||||
@@ -22,7 +22,8 @@ Required properties:
|
|||||||
Optional properties:
|
Optional properties:
|
||||||
- ti,hwmods: Name of the hwmods associated to the eDMA CC
|
- ti,hwmods: Name of the hwmods associated to the eDMA CC
|
||||||
- ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow
|
- ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow
|
||||||
these channels will be SW triggered channels. See example.
|
these channels will be SW triggered channels. The list must
|
||||||
|
contain 16 bits numbers, see example.
|
||||||
- ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by
|
- ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by
|
||||||
the driver, they are allocated to be used by for example the
|
the driver, they are allocated to be used by for example the
|
||||||
DSP. See example.
|
DSP. See example.
|
||||||
@@ -55,9 +56,10 @@ edma: edma@49000000 {
|
|||||||
ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 7>, <&edma_tptc2 0>;
|
ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 7>, <&edma_tptc2 0>;
|
||||||
|
|
||||||
/* Channel 20 and 21 is allocated for memcpy */
|
/* Channel 20 and 21 is allocated for memcpy */
|
||||||
ti,edma-memcpy-channels = <20 21>;
|
ti,edma-memcpy-channels = /bits/ 16 <20 21>;
|
||||||
/* The following PaRAM slots are reserved: 35-44 and 100-109 */
|
/* The following PaRAM slots are reserved: 35-45 and 100-110 */
|
||||||
ti,edma-reserved-slot-ranges = <35 10>, <100 10>;
|
ti,edma-reserved-slot-ranges = /bits/ 16 <35 10>,
|
||||||
|
/bits/ 16 <100 10>;
|
||||||
};
|
};
|
||||||
|
|
||||||
edma_tptc0: tptc@49800000 {
|
edma_tptc0: tptc@49800000 {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Each key is represented as a sub-node of "allwinner,sun4i-a10-lradc-keys":
|
|||||||
Required subnode-properties:
|
Required subnode-properties:
|
||||||
- label: Descriptive name of the key.
|
- label: Descriptive name of the key.
|
||||||
- linux,code: Keycode to emit.
|
- linux,code: Keycode to emit.
|
||||||
- channel: Channel this key is attached to, must be 0 or 1.
|
- channel: Channel this key is attached to, mut be 0 or 1.
|
||||||
- voltage: Voltage in µV at lradc input when this key is pressed.
|
- voltage: Voltage in µV at lradc input when this key is pressed.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ used for what purposes, but which don't use an on-flash partition table such
|
|||||||
as RedBoot.
|
as RedBoot.
|
||||||
|
|
||||||
The partition table should be a subnode of the mtd node and should be named
|
The partition table should be a subnode of the mtd node and should be named
|
||||||
'partitions'. This node should have the following property:
|
'partitions'. Partitions are defined in subnodes of the partitions node.
|
||||||
- compatible : (required) must be "fixed-partitions"
|
|
||||||
Partitions are then defined in subnodes of the partitions node.
|
|
||||||
|
|
||||||
For backwards compatibility partitions as direct subnodes of the mtd device are
|
For backwards compatibility partitions as direct subnodes of the mtd device are
|
||||||
supported. This use is discouraged.
|
supported. This use is discouraged.
|
||||||
@@ -38,7 +36,6 @@ Examples:
|
|||||||
|
|
||||||
flash@0 {
|
flash@0 {
|
||||||
partitions {
|
partitions {
|
||||||
compatible = "fixed-partitions";
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
@@ -56,7 +53,6 @@ flash@0 {
|
|||||||
|
|
||||||
flash@1 {
|
flash@1 {
|
||||||
partitions {
|
partitions {
|
||||||
compatible = "fixed-partitions";
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
@@ -70,7 +66,6 @@ flash@1 {
|
|||||||
|
|
||||||
flash@2 {
|
flash@2 {
|
||||||
partitions {
|
partitions {
|
||||||
compatible = "fixed-partitions";
|
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
|||||||
@@ -40,18 +40,18 @@ Optional properties:
|
|||||||
|
|
||||||
Slave Properties:
|
Slave Properties:
|
||||||
Required properties:
|
Required properties:
|
||||||
|
- phy_id : Specifies slave phy id
|
||||||
- phy-mode : See ethernet.txt file in the same directory
|
- phy-mode : See ethernet.txt file in the same directory
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- dual_emac_res_vlan : Specifies VID to be used to segregate the ports
|
- dual_emac_res_vlan : Specifies VID to be used to segregate the ports
|
||||||
- mac-address : See ethernet.txt file in the same directory
|
- mac-address : See ethernet.txt file in the same directory
|
||||||
- phy_id : Specifies slave phy id
|
|
||||||
- phy-handle : See ethernet.txt file in the same directory
|
- phy-handle : See ethernet.txt file in the same directory
|
||||||
|
|
||||||
Slave sub-nodes:
|
Slave sub-nodes:
|
||||||
- fixed-link : See fixed-link.txt file in the same directory
|
- fixed-link : See fixed-link.txt file in the same directory
|
||||||
Either the property phy_id, or the sub-node
|
Either the properties phy_id and phy-mode,
|
||||||
fixed-link can be specified
|
or the sub-node fixed-link can be specified
|
||||||
|
|
||||||
Note: "ti,hwmods" field is used to fetch the base address and irq
|
Note: "ti,hwmods" field is used to fetch the base address and irq
|
||||||
resources from TI, omap hwmod data base during device registration.
|
resources from TI, omap hwmod data base during device registration.
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
* Microchip ENC28J60
|
|
||||||
|
|
||||||
This is a standalone 10 MBit ethernet controller with SPI interface.
|
|
||||||
|
|
||||||
For each device connected to a SPI bus, define a child node within
|
|
||||||
the SPI master node.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Should be "microchip,enc28j60"
|
|
||||||
- reg: Specify the SPI chip select the ENC28J60 is wired to
|
|
||||||
- interrupt-parent: Specify the phandle of the source interrupt, see interrupt
|
|
||||||
binding documentation for details. Usually this is the GPIO bank
|
|
||||||
the interrupt line is wired to.
|
|
||||||
- interrupts: Specify the interrupt index within the interrupt controller (referred
|
|
||||||
to above in interrupt-parent) and interrupt type. The ENC28J60 natively
|
|
||||||
generates falling edge interrupts, however, additional board logic
|
|
||||||
might invert the signal.
|
|
||||||
- pinctrl-names: List of assigned state names, see pinctrl binding documentation.
|
|
||||||
- pinctrl-0: List of phandles to configure the GPIO pin used as interrupt line,
|
|
||||||
see also generic and your platform specific pinctrl binding
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- spi-max-frequency: Maximum frequency of the SPI bus when accessing the ENC28J60.
|
|
||||||
According to the ENC28J80 datasheet, the chip allows a maximum of 20 MHz, however,
|
|
||||||
board designs may need to limit this value.
|
|
||||||
- local-mac-address: See ethernet.txt in the same directory.
|
|
||||||
|
|
||||||
|
|
||||||
Example (for NXP i.MX28 with pin control stuff for GPIO irq):
|
|
||||||
|
|
||||||
ssp2: ssp@80014000 {
|
|
||||||
compatible = "fsl,imx28-spi";
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&spi2_pins_b &spi2_sck_cfg>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
enc28j60: ethernet@0 {
|
|
||||||
compatible = "microchip,enc28j60";
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&enc28j60_pins>;
|
|
||||||
reg = <0>;
|
|
||||||
interrupt-parent = <&gpio3>;
|
|
||||||
interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
|
|
||||||
spi-max-frequency = <12000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pinctrl@80018000 {
|
|
||||||
enc28j60_pins: enc28j60_pins@0 {
|
|
||||||
reg = <0>;
|
|
||||||
fsl,pinmux-ids = <
|
|
||||||
MX28_PAD_AUART0_RTS__GPIO_3_3 /* Interrupt */
|
|
||||||
>;
|
|
||||||
fsl,drive-strength = <MXS_DRIVE_4mA>;
|
|
||||||
fsl,voltage = <MXS_VOLTAGE_HIGH>;
|
|
||||||
fsl,pull-up = <MXS_PULL_DISABLE>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -134,12 +134,12 @@ mfio80 ddr_debug, mips_trace_data, mips_debug
|
|||||||
mfio81 dreq0, mips_trace_data, eth_debug
|
mfio81 dreq0, mips_trace_data, eth_debug
|
||||||
mfio82 dreq1, mips_trace_data, eth_debug
|
mfio82 dreq1, mips_trace_data, eth_debug
|
||||||
mfio83 mips_pll_lock, mips_trace_data, usb_debug
|
mfio83 mips_pll_lock, mips_trace_data, usb_debug
|
||||||
mfio84 audio_pll_lock, mips_trace_data, usb_debug
|
mfio84 sys_pll_lock, mips_trace_data, usb_debug
|
||||||
mfio85 rpu_v_pll_lock, mips_trace_data, sdhost_debug
|
mfio85 wifi_pll_lock, mips_trace_data, sdhost_debug
|
||||||
mfio86 rpu_l_pll_lock, mips_trace_data, sdhost_debug
|
mfio86 bt_pll_lock, mips_trace_data, sdhost_debug
|
||||||
mfio87 sys_pll_lock, dreq2, socif_debug
|
mfio87 rpu_v_pll_lock, dreq2, socif_debug
|
||||||
mfio88 wifi_pll_lock, dreq3, socif_debug
|
mfio88 rpu_l_pll_lock, dreq3, socif_debug
|
||||||
mfio89 bt_pll_lock, dreq4, dreq5
|
mfio89 audio_pll_lock, dreq4, dreq5
|
||||||
tck
|
tck
|
||||||
trstn
|
trstn
|
||||||
tdi
|
tdi
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
Howto use the configfs overlay interface.
|
|
||||||
|
|
||||||
A device-tree configfs entry is created in /config/device-tree/overlays
|
|
||||||
and and it is manipulated using standard file system I/O.
|
|
||||||
Note that this is a debug level interface, for use by developers and
|
|
||||||
not necessarily something accessed by normal users due to the
|
|
||||||
security implications of having direct access to the kernel's device tree.
|
|
||||||
|
|
||||||
* To create an overlay you mkdir the directory:
|
|
||||||
|
|
||||||
# mkdir /config/device-tree/overlays/foo
|
|
||||||
|
|
||||||
* Either you echo the overlay firmware file to the path property file.
|
|
||||||
|
|
||||||
# echo foo.dtbo >/config/device-tree/overlays/foo/path
|
|
||||||
|
|
||||||
* Or you cat the contents of the overlay to the dtbo file
|
|
||||||
|
|
||||||
# cat foo.dtbo >/config/device-tree/overlays/foo/dtbo
|
|
||||||
|
|
||||||
The overlay file will be applied, and devices will be created/destroyed
|
|
||||||
as required.
|
|
||||||
|
|
||||||
To remove it simply rmdir the directory.
|
|
||||||
|
|
||||||
# rmdir /config/device-tree/overlays/foo
|
|
||||||
|
|
||||||
The rationalle of the dual interface (firmware & direct copy) is that each is
|
|
||||||
better suited to different use patterns. The firmware interface is what's
|
|
||||||
intended to be used by hardware managers in the kernel, while the copy interface
|
|
||||||
make sense for developers (since it avoids problems with namespaces).
|
|
||||||
@@ -51,27 +51,15 @@ configfs tree is always there, whether mounted on /config or not.
|
|||||||
An item is created via mkdir(2). The item's attributes will also
|
An item is created via mkdir(2). The item's attributes will also
|
||||||
appear at this time. readdir(3) can determine what the attributes are,
|
appear at this time. readdir(3) can determine what the attributes are,
|
||||||
read(2) can query their default values, and write(2) can store new
|
read(2) can query their default values, and write(2) can store new
|
||||||
values. Don't mix more than one attribute in one attribute file.
|
values. Like sysfs, attributes should be ASCII text files, preferably
|
||||||
|
with only one value per file. The same efficiency caveats from sysfs
|
||||||
|
apply. Don't mix more than one attribute in one attribute file.
|
||||||
|
|
||||||
There are two types of configfs attributes:
|
Like sysfs, configfs expects write(2) to store the entire buffer at
|
||||||
|
once. When writing to configfs attributes, userspace processes should
|
||||||
* Normal attributes, which similar to sysfs attributes, are small ASCII text
|
first read the entire file, modify the portions they wish to change, and
|
||||||
files, with a maximum size of one page (PAGE_SIZE, 4096 on i386). Preferably
|
then write the entire buffer back. Attribute files have a maximum size
|
||||||
only one value per file should be used, and the same caveats from sysfs apply.
|
of one page (PAGE_SIZE, 4096 on i386).
|
||||||
Configfs expects write(2) to store the entire buffer at once. When writing to
|
|
||||||
normal configfs attributes, userspace processes should first read the entire
|
|
||||||
file, modify the portions they wish to change, and then write the entire
|
|
||||||
buffer back.
|
|
||||||
|
|
||||||
* Binary attributes, which are somewhat similar to sysfs binary attributes,
|
|
||||||
but with a few slight changes to semantics. The PAGE_SIZE limitation does not
|
|
||||||
apply, but the whole binary item must fit in single kernel vmalloc'ed buffer.
|
|
||||||
The write(2) calls from user space are buffered, and the attributes'
|
|
||||||
write_bin_attribute method will be invoked on the final close, therefore it is
|
|
||||||
imperative for user-space to check the return code of close(2) in order to
|
|
||||||
verify that the operation finished successfully.
|
|
||||||
To avoid a malicious user OOMing the kernel, there's a per-binary attribute
|
|
||||||
maximum buffer value.
|
|
||||||
|
|
||||||
When an item needs to be destroyed, remove it with rmdir(2). An
|
When an item needs to be destroyed, remove it with rmdir(2). An
|
||||||
item cannot be destroyed if any other item has a link to it (via
|
item cannot be destroyed if any other item has a link to it (via
|
||||||
@@ -183,7 +171,6 @@ among other things. For that, it needs a type.
|
|||||||
struct configfs_item_operations *ct_item_ops;
|
struct configfs_item_operations *ct_item_ops;
|
||||||
struct configfs_group_operations *ct_group_ops;
|
struct configfs_group_operations *ct_group_ops;
|
||||||
struct configfs_attribute **ct_attrs;
|
struct configfs_attribute **ct_attrs;
|
||||||
struct configfs_bin_attribute **ct_bin_attrs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
The most basic function of a config_item_type is to define what
|
The most basic function of a config_item_type is to define what
|
||||||
@@ -214,32 +201,6 @@ be called whenever userspace asks for a read(2) on the attribute. If an
|
|||||||
attribute is writable and provides a ->store method, that method will be
|
attribute is writable and provides a ->store method, that method will be
|
||||||
be called whenever userspace asks for a write(2) on the attribute.
|
be called whenever userspace asks for a write(2) on the attribute.
|
||||||
|
|
||||||
[struct configfs_bin_attribute]
|
|
||||||
|
|
||||||
struct configfs_attribute {
|
|
||||||
struct configfs_attribute cb_attr;
|
|
||||||
void *cb_private;
|
|
||||||
size_t cb_max_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
The binary attribute is used when the one needs to use binary blob to
|
|
||||||
appear as the contents of a file in the item's configfs directory.
|
|
||||||
To do so add the binary attribute to the NULL-terminated array
|
|
||||||
config_item_type->ct_bin_attrs, and the item appears in configfs, the
|
|
||||||
attribute file will appear with the configfs_bin_attribute->cb_attr.ca_name
|
|
||||||
filename. configfs_bin_attribute->cb_attr.ca_mode specifies the file
|
|
||||||
permissions.
|
|
||||||
The cb_private member is provided for use by the driver, while the
|
|
||||||
cb_max_size member specifies the maximum amount of vmalloc buffer
|
|
||||||
to be used.
|
|
||||||
|
|
||||||
If binary attribute is readable and the config_item provides a
|
|
||||||
ct_item_ops->read_bin_attribute() method, that method will be called
|
|
||||||
whenever userspace asks for a read(2) on the attribute. The converse
|
|
||||||
will happen for write(2). The reads/writes are bufferred so only a
|
|
||||||
single read/write will occur; the attributes' need not concern itself
|
|
||||||
with it.
|
|
||||||
|
|
||||||
[struct config_group]
|
[struct config_group]
|
||||||
|
|
||||||
A config_item cannot live in a vacuum. The only way one can be created
|
A config_item cannot live in a vacuum. The only way one can be created
|
||||||
|
|||||||
@@ -14,10 +14,3 @@ filesystem.
|
|||||||
efivarfs is typically mounted like this,
|
efivarfs is typically mounted like this,
|
||||||
|
|
||||||
mount -t efivarfs none /sys/firmware/efi/efivars
|
mount -t efivarfs none /sys/firmware/efi/efivars
|
||||||
|
|
||||||
Due to the presence of numerous firmware bugs where removing non-standard
|
|
||||||
UEFI variables causes the system firmware to fail to POST, efivarfs
|
|
||||||
files that are not well-known standardized variables are created
|
|
||||||
as immutable files. This doesn't prevent removal - "chattr -i" will work -
|
|
||||||
but it does prevent this kind of failure from being accomplished
|
|
||||||
accidentally.
|
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ address perms offset dev inode pathname
|
|||||||
a7cb1000-a7cb2000 ---p 00000000 00:00 0
|
a7cb1000-a7cb2000 ---p 00000000 00:00 0
|
||||||
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
|
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
|
||||||
a7eb2000-a7eb3000 ---p 00000000 00:00 0
|
a7eb2000-a7eb3000 ---p 00000000 00:00 0
|
||||||
a7eb3000-a7ed5000 rw-p 00000000 00:00 0
|
a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack:1001]
|
||||||
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
|
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
|
||||||
a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
|
a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
|
||||||
a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
|
a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
|
||||||
@@ -378,6 +378,7 @@ is not associated with a file:
|
|||||||
|
|
||||||
[heap] = the heap of the program
|
[heap] = the heap of the program
|
||||||
[stack] = the stack of the main process
|
[stack] = the stack of the main process
|
||||||
|
[stack:1001] = the stack of the thread with tid 1001
|
||||||
[vdso] = the "virtual dynamic shared object",
|
[vdso] = the "virtual dynamic shared object",
|
||||||
the kernel system call handler
|
the kernel system call handler
|
||||||
|
|
||||||
@@ -385,8 +386,10 @@ is not associated with a file:
|
|||||||
|
|
||||||
The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
|
The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
|
||||||
of the individual tasks of a process. In this file you will see a mapping marked
|
of the individual tasks of a process. In this file you will see a mapping marked
|
||||||
as [stack] if that task sees it as a stack. Hence, for the example above, the
|
as [stack] if that task sees it as a stack. This is a key difference from the
|
||||||
task-level map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
|
content of /proc/PID/maps, where you will see all mappings that are being used
|
||||||
|
as stack by all of those tasks. Hence, for the example above, the task-level
|
||||||
|
map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
|
||||||
|
|
||||||
08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
|
08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
|
||||||
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
|
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
|
||||||
|
|||||||
@@ -3928,8 +3928,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
sector if the number is odd);
|
sector if the number is odd);
|
||||||
i = IGNORE_DEVICE (don't bind to this
|
i = IGNORE_DEVICE (don't bind to this
|
||||||
device);
|
device);
|
||||||
j = NO_REPORT_LUNS (don't use report luns
|
|
||||||
command, uas only);
|
|
||||||
l = NOT_LOCKABLE (don't try to lock and
|
l = NOT_LOCKABLE (don't try to lock and
|
||||||
unlock ejectable media);
|
unlock ejectable media);
|
||||||
m = MAX_SECTORS_64 (don't transfer more
|
m = MAX_SECTORS_64 (don't transfer more
|
||||||
|
|||||||
@@ -271,9 +271,3 @@ Since the private key is used to sign modules, viruses and malware could use
|
|||||||
the private key to sign modules and compromise the operating system. The
|
the private key to sign modules and compromise the operating system. The
|
||||||
private key must be either destroyed or moved to a secure location and not kept
|
private key must be either destroyed or moved to a secure location and not kept
|
||||||
in the root node of the kernel source tree.
|
in the root node of the kernel source tree.
|
||||||
|
|
||||||
If you use the same private key to sign modules for multiple kernel
|
|
||||||
configurations, you must ensure that the module version information is
|
|
||||||
sufficient to prevent loading a module into a different kernel. Either
|
|
||||||
set CONFIG_MODVERSIONS=y or ensure that each configuration has a different
|
|
||||||
kernel release string by changing EXTRAVERSION or CONFIG_LOCALVERSION.
|
|
||||||
|
|||||||
@@ -181,3 +181,17 @@ For general information, go to the Intel support website at:
|
|||||||
If an issue is identified with the released source code on the supported
|
If an issue is identified with the released source code on the supported
|
||||||
kernel with a supported adapter, email the specific information related to the
|
kernel with a supported adapter, email the specific information related to the
|
||||||
issue to e1000-devel@lists.sourceforge.net.
|
issue to e1000-devel@lists.sourceforge.net.
|
||||||
|
|
||||||
|
|
||||||
|
License
|
||||||
|
=======
|
||||||
|
|
||||||
|
This software program is released under the terms of a license agreement
|
||||||
|
between you ('Licensee') and Intel. Do not use or load this software or any
|
||||||
|
associated materials (collectively, the 'Software') until you have carefully
|
||||||
|
read the full terms and conditions of the file COPYING located in this software
|
||||||
|
package. By loading or using the Software, you agree to the terms of this
|
||||||
|
Agreement. If you do not agree with the terms of this Agreement, do not install
|
||||||
|
or use the Software.
|
||||||
|
|
||||||
|
* Other names and brands may be claimed as the property of others.
|
||||||
|
|||||||
@@ -263,23 +263,19 @@ scmd->allowed.
|
|||||||
|
|
||||||
3. scmd recovered
|
3. scmd recovered
|
||||||
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
|
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
|
||||||
|
- shost->host_failed--
|
||||||
- clear scmd->eh_eflags
|
- clear scmd->eh_eflags
|
||||||
- scsi_setup_cmd_retry()
|
- scsi_setup_cmd_retry()
|
||||||
- move from local eh_work_q to local eh_done_q
|
- move from local eh_work_q to local eh_done_q
|
||||||
LOCKING: none
|
LOCKING: none
|
||||||
CONCURRENCY: at most one thread per separate eh_work_q to
|
|
||||||
keep queue manipulation lockless
|
|
||||||
|
|
||||||
4. EH completes
|
4. EH completes
|
||||||
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
|
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
|
||||||
layer of failure. May be called concurrently but must have
|
layer of failure.
|
||||||
a no more than one thread per separate eh_work_q to
|
|
||||||
manipulate the queue locklessly
|
|
||||||
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
|
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
|
||||||
- if retry is necessary, scmd is requeued using
|
- if retry is necessary, scmd is requeued using
|
||||||
scsi_queue_insert()
|
scsi_queue_insert()
|
||||||
- otherwise, scsi_finish_command() is invoked for scmd
|
- otherwise, scsi_finish_command() is invoked for scmd
|
||||||
- zero shost->host_failed
|
|
||||||
LOCKING: queue or finish function performs appropriate locking
|
LOCKING: queue or finish function performs appropriate locking
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -213,6 +213,9 @@ TTY_IO_ERROR If set, causes all subsequent userspace read/write
|
|||||||
|
|
||||||
TTY_OTHER_CLOSED Device is a pty and the other side has closed.
|
TTY_OTHER_CLOSED Device is a pty and the other side has closed.
|
||||||
|
|
||||||
|
TTY_OTHER_DONE Device is a pty and the other side has closed and
|
||||||
|
all pending input processing has been completed.
|
||||||
|
|
||||||
TTY_NO_WRITE_SPLIT Prevent driver from splitting up writes into
|
TTY_NO_WRITE_SPLIT Prevent driver from splitting up writes into
|
||||||
smaller chunks.
|
smaller chunks.
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,6 @@ Currently, these files are in /proc/sys/fs:
|
|||||||
- nr_open
|
- nr_open
|
||||||
- overflowuid
|
- overflowuid
|
||||||
- overflowgid
|
- overflowgid
|
||||||
- pipe-user-pages-hard
|
|
||||||
- pipe-user-pages-soft
|
|
||||||
- protected_hardlinks
|
- protected_hardlinks
|
||||||
- protected_symlinks
|
- protected_symlinks
|
||||||
- suid_dumpable
|
- suid_dumpable
|
||||||
@@ -161,27 +159,6 @@ The default is 65534.
|
|||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
pipe-user-pages-hard:
|
|
||||||
|
|
||||||
Maximum total number of pages a non-privileged user may allocate for pipes.
|
|
||||||
Once this limit is reached, no new pipes may be allocated until usage goes
|
|
||||||
below the limit again. When set to 0, no limit is applied, which is the default
|
|
||||||
setting.
|
|
||||||
|
|
||||||
==============================================================
|
|
||||||
|
|
||||||
pipe-user-pages-soft:
|
|
||||||
|
|
||||||
Maximum total number of pages a non-privileged user may allocate for pipes
|
|
||||||
before the pipe size gets limited to a single page. Once this limit is reached,
|
|
||||||
new pipes will be limited to a single page in size for this user in order to
|
|
||||||
limit total memory usage, and trying to increase them using fcntl() will be
|
|
||||||
denied until usage goes below the limit again. The default value allows to
|
|
||||||
allocate up to 1024 pipes at their default size. When set to 0, no limit is
|
|
||||||
applied.
|
|
||||||
|
|
||||||
==============================================================
|
|
||||||
|
|
||||||
protected_hardlinks:
|
protected_hardlinks:
|
||||||
|
|
||||||
A long-standing class of security issues is the hardlink-based
|
A long-standing class of security issues is the hardlink-based
|
||||||
|
|||||||
@@ -537,18 +537,17 @@ relevant attribute files are usb2_hardware_lpm and usb3_hardware_lpm.
|
|||||||
can write y/Y/1 or n/N/0 to the file to enable/disable
|
can write y/Y/1 or n/N/0 to the file to enable/disable
|
||||||
USB2 hardware LPM manually. This is for test purpose mainly.
|
USB2 hardware LPM manually. This is for test purpose mainly.
|
||||||
|
|
||||||
power/usb3_hardware_lpm_u1
|
power/usb3_hardware_lpm
|
||||||
power/usb3_hardware_lpm_u2
|
|
||||||
|
|
||||||
When a USB 3.0 lpm-capable device is plugged in to a
|
When a USB 3.0 lpm-capable device is plugged in to a
|
||||||
xHCI host which supports link PM, it will check if U1
|
xHCI host which supports link PM, it will check if U1
|
||||||
and U2 exit latencies have been set in the BOS
|
and U2 exit latencies have been set in the BOS
|
||||||
descriptor; if the check is is passed and the host
|
descriptor; if the check is is passed and the host
|
||||||
supports USB3 hardware LPM, USB3 hardware LPM will be
|
supports USB3 hardware LPM, USB3 hardware LPM will be
|
||||||
enabled for the device and these files will be created.
|
enabled for the device and this file will be created.
|
||||||
The files hold a string value (enable or disable)
|
The file holds a string value (enable or disable)
|
||||||
indicating whether or not USB3 hardware LPM U1 or U2
|
indicating whether or not USB3 hardware LPM is
|
||||||
is enabled for the device.
|
enabled for the device.
|
||||||
|
|
||||||
USB Port Power Control
|
USB Port Power Control
|
||||||
----------------------
|
----------------------
|
||||||
|
|||||||
@@ -358,8 +358,7 @@ In the first case there are two additional complications:
|
|||||||
- if CR4.SMEP is enabled: since we've turned the page into a kernel page,
|
- if CR4.SMEP is enabled: since we've turned the page into a kernel page,
|
||||||
the kernel may now execute it. We handle this by also setting spte.nx.
|
the kernel may now execute it. We handle this by also setting spte.nx.
|
||||||
If we get a user fetch or read fault, we'll change spte.u=1 and
|
If we get a user fetch or read fault, we'll change spte.u=1 and
|
||||||
spte.nx=gpte.nx back. For this to work, KVM forces EFER.NX to 1 when
|
spte.nx=gpte.nx back.
|
||||||
shadow paging is in use.
|
|
||||||
- if CR4.SMAP is disabled: since the page has been changed to a kernel
|
- if CR4.SMAP is disabled: since the page has been changed to a kernel
|
||||||
page, it can not be reused when CR4.SMAP is enabled. We set
|
page, it can not be reused when CR4.SMAP is enabled. We set
|
||||||
CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note,
|
CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note,
|
||||||
|
|||||||
@@ -196,35 +196,3 @@ Another, more verbose way of getting PAT related debug messages is with
|
|||||||
"debugpat" boot parameter. With this parameter, various debug messages are
|
"debugpat" boot parameter. With this parameter, various debug messages are
|
||||||
printed to dmesg log.
|
printed to dmesg log.
|
||||||
|
|
||||||
PAT Initialization
|
|
||||||
------------------
|
|
||||||
|
|
||||||
The following table describes how PAT is initialized under various
|
|
||||||
configurations. The PAT MSR must be updated by Linux in order to support WC
|
|
||||||
and WT attributes. Otherwise, the PAT MSR has the value programmed in it
|
|
||||||
by the firmware. Note, Xen enables WC attribute in the PAT MSR for guests.
|
|
||||||
|
|
||||||
MTRR PAT Call Sequence PAT State PAT MSR
|
|
||||||
=========================================================
|
|
||||||
E E MTRR -> PAT init Enabled OS
|
|
||||||
E D MTRR -> PAT init Disabled -
|
|
||||||
D E MTRR -> PAT disable Disabled BIOS
|
|
||||||
D D MTRR -> PAT disable Disabled -
|
|
||||||
- np/E PAT -> PAT disable Disabled BIOS
|
|
||||||
- np/D PAT -> PAT disable Disabled -
|
|
||||||
E !P/E MTRR -> PAT init Disabled BIOS
|
|
||||||
D !P/E MTRR -> PAT disable Disabled BIOS
|
|
||||||
!M !P/E MTRR stub -> PAT disable Disabled BIOS
|
|
||||||
|
|
||||||
Legend
|
|
||||||
------------------------------------------------
|
|
||||||
E Feature enabled in CPU
|
|
||||||
D Feature disabled/unsupported in CPU
|
|
||||||
np "nopat" boot option specified
|
|
||||||
!P CONFIG_X86_PAT option unset
|
|
||||||
!M CONFIG_MTRR option unset
|
|
||||||
Enabled PAT state set to enabled
|
|
||||||
Disabled PAT state set to disabled
|
|
||||||
OS PAT initializes PAT MSR with OS setting
|
|
||||||
BIOS PAT keeps PAT MSR with BIOS setting
|
|
||||||
|
|
||||||
|
|||||||
121
MAINTAINERS
121
MAINTAINERS
@@ -230,13 +230,13 @@ F: kernel/sys_ni.c
|
|||||||
|
|
||||||
ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
|
ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
|
||||||
M: Hans de Goede <hdegoede@redhat.com>
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/abituguru.c
|
F: drivers/hwmon/abituguru.c
|
||||||
|
|
||||||
ABIT UGURU 3 HARDWARE MONITOR DRIVER
|
ABIT UGURU 3 HARDWARE MONITOR DRIVER
|
||||||
M: Alistair John Strachan <alistair@devzero.co.uk>
|
M: Alistair John Strachan <alistair@devzero.co.uk>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/abituguru3.c
|
F: drivers/hwmon/abituguru3.c
|
||||||
|
|
||||||
@@ -373,14 +373,14 @@ S: Maintained
|
|||||||
|
|
||||||
ADM1025 HARDWARE MONITOR DRIVER
|
ADM1025 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/adm1025
|
F: Documentation/hwmon/adm1025
|
||||||
F: drivers/hwmon/adm1025.c
|
F: drivers/hwmon/adm1025.c
|
||||||
|
|
||||||
ADM1029 HARDWARE MONITOR DRIVER
|
ADM1029 HARDWARE MONITOR DRIVER
|
||||||
M: Corentin Labbe <clabbe.montjoie@gmail.com>
|
M: Corentin Labbe <clabbe.montjoie@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/adm1029.c
|
F: drivers/hwmon/adm1029.c
|
||||||
|
|
||||||
@@ -425,7 +425,7 @@ F: drivers/video/backlight/adp8860_bl.c
|
|||||||
|
|
||||||
ADS1015 HARDWARE MONITOR DRIVER
|
ADS1015 HARDWARE MONITOR DRIVER
|
||||||
M: Dirk Eibach <eibach@gdsys.de>
|
M: Dirk Eibach <eibach@gdsys.de>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/ads1015
|
F: Documentation/hwmon/ads1015
|
||||||
F: drivers/hwmon/ads1015.c
|
F: drivers/hwmon/ads1015.c
|
||||||
@@ -438,7 +438,7 @@ F: drivers/macintosh/therm_adt746x.c
|
|||||||
|
|
||||||
ADT7475 HARDWARE MONITOR DRIVER
|
ADT7475 HARDWARE MONITOR DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/adt7475
|
F: Documentation/hwmon/adt7475
|
||||||
F: drivers/hwmon/adt7475.c
|
F: drivers/hwmon/adt7475.c
|
||||||
@@ -615,7 +615,7 @@ F: include/linux/ccp.h
|
|||||||
|
|
||||||
AMD FAM15H PROCESSOR POWER MONITORING DRIVER
|
AMD FAM15H PROCESSOR POWER MONITORING DRIVER
|
||||||
M: Andreas Herrmann <herrmann.der.user@googlemail.com>
|
M: Andreas Herrmann <herrmann.der.user@googlemail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/fam15h_power
|
F: Documentation/hwmon/fam15h_power
|
||||||
F: drivers/hwmon/fam15h_power.c
|
F: drivers/hwmon/fam15h_power.c
|
||||||
@@ -779,7 +779,7 @@ F: drivers/input/mouse/bcm5974.c
|
|||||||
|
|
||||||
APPLE SMC DRIVER
|
APPLE SMC DRIVER
|
||||||
M: Henrik Rydberg <rydberg@bitmath.org>
|
M: Henrik Rydberg <rydberg@bitmath.org>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Odd fixes
|
S: Odd fixes
|
||||||
F: drivers/hwmon/applesmc.c
|
F: drivers/hwmon/applesmc.c
|
||||||
|
|
||||||
@@ -1777,7 +1777,7 @@ F: include/media/as3645a.h
|
|||||||
|
|
||||||
ASC7621 HARDWARE MONITOR DRIVER
|
ASC7621 HARDWARE MONITOR DRIVER
|
||||||
M: George Joseph <george.joseph@fairview5.com>
|
M: George Joseph <george.joseph@fairview5.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/asc7621
|
F: Documentation/hwmon/asc7621
|
||||||
F: drivers/hwmon/asc7621.c
|
F: drivers/hwmon/asc7621.c
|
||||||
@@ -1864,7 +1864,7 @@ F: drivers/net/wireless/ath/carl9170/
|
|||||||
|
|
||||||
ATK0110 HWMON DRIVER
|
ATK0110 HWMON DRIVER
|
||||||
M: Luca Tettamanti <kronos.it@gmail.com>
|
M: Luca Tettamanti <kronos.it@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/asus_atk0110.c
|
F: drivers/hwmon/asus_atk0110.c
|
||||||
|
|
||||||
@@ -2984,7 +2984,7 @@ F: mm/swap_cgroup.c
|
|||||||
|
|
||||||
CORETEMP HARDWARE MONITORING DRIVER
|
CORETEMP HARDWARE MONITORING DRIVER
|
||||||
M: Fenghua Yu <fenghua.yu@intel.com>
|
M: Fenghua Yu <fenghua.yu@intel.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/coretemp
|
F: Documentation/hwmon/coretemp
|
||||||
F: drivers/hwmon/coretemp.c
|
F: drivers/hwmon/coretemp.c
|
||||||
@@ -3549,7 +3549,7 @@ T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
|||||||
|
|
||||||
DME1737 HARDWARE MONITOR DRIVER
|
DME1737 HARDWARE MONITOR DRIVER
|
||||||
M: Juerg Haefliger <juergh@gmail.com>
|
M: Juerg Haefliger <juergh@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/dme1737
|
F: Documentation/hwmon/dme1737
|
||||||
F: drivers/hwmon/dme1737.c
|
F: drivers/hwmon/dme1737.c
|
||||||
@@ -4097,8 +4097,8 @@ F: Documentation/efi-stub.txt
|
|||||||
F: arch/ia64/kernel/efi.c
|
F: arch/ia64/kernel/efi.c
|
||||||
F: arch/x86/boot/compressed/eboot.[ch]
|
F: arch/x86/boot/compressed/eboot.[ch]
|
||||||
F: arch/x86/include/asm/efi.h
|
F: arch/x86/include/asm/efi.h
|
||||||
F: arch/x86/platform/efi/
|
F: arch/x86/platform/efi/*
|
||||||
F: drivers/firmware/efi/
|
F: drivers/firmware/efi/*
|
||||||
F: include/linux/efi*.h
|
F: include/linux/efi*.h
|
||||||
|
|
||||||
EFI VARIABLE FILESYSTEM
|
EFI VARIABLE FILESYSTEM
|
||||||
@@ -4262,7 +4262,7 @@ F: include/video/exynos_mipi*
|
|||||||
|
|
||||||
F71805F HARDWARE MONITORING DRIVER
|
F71805F HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/f71805f
|
F: Documentation/hwmon/f71805f
|
||||||
F: drivers/hwmon/f71805f.c
|
F: drivers/hwmon/f71805f.c
|
||||||
@@ -4341,7 +4341,7 @@ F: fs/*
|
|||||||
|
|
||||||
FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
||||||
M: Riku Voipio <riku.voipio@iki.fi>
|
M: Riku Voipio <riku.voipio@iki.fi>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/f75375s.c
|
F: drivers/hwmon/f75375s.c
|
||||||
F: include/linux/f75375s.h
|
F: include/linux/f75375s.h
|
||||||
@@ -4883,8 +4883,8 @@ F: drivers/media/usb/hackrf/
|
|||||||
HARDWARE MONITORING
|
HARDWARE MONITORING
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
W: http://hwmon.wiki.kernel.org/
|
W: http://www.lm-sensors.org/
|
||||||
T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/
|
T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -5393,7 +5393,7 @@ F: drivers/usb/atm/ueagle-atm.c
|
|||||||
|
|
||||||
INA209 HARDWARE MONITOR DRIVER
|
INA209 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/ina209
|
F: Documentation/hwmon/ina209
|
||||||
F: Documentation/devicetree/bindings/i2c/ina209.txt
|
F: Documentation/devicetree/bindings/i2c/ina209.txt
|
||||||
@@ -5401,7 +5401,7 @@ F: drivers/hwmon/ina209.c
|
|||||||
|
|
||||||
INA2XX HARDWARE MONITOR DRIVER
|
INA2XX HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/ina2xx
|
F: Documentation/hwmon/ina2xx
|
||||||
F: drivers/hwmon/ina2xx.c
|
F: drivers/hwmon/ina2xx.c
|
||||||
@@ -5578,7 +5578,7 @@ R: Jesse Brandeburg <jesse.brandeburg@intel.com>
|
|||||||
R: Shannon Nelson <shannon.nelson@intel.com>
|
R: Shannon Nelson <shannon.nelson@intel.com>
|
||||||
R: Carolyn Wyborny <carolyn.wyborny@intel.com>
|
R: Carolyn Wyborny <carolyn.wyborny@intel.com>
|
||||||
R: Don Skidmore <donald.c.skidmore@intel.com>
|
R: Don Skidmore <donald.c.skidmore@intel.com>
|
||||||
R: Bruce Allan <bruce.w.allan@intel.com>
|
R: Matthew Vick <matthew.vick@intel.com>
|
||||||
R: John Ronciak <john.ronciak@intel.com>
|
R: John Ronciak <john.ronciak@intel.com>
|
||||||
R: Mitch Williams <mitch.a.williams@intel.com>
|
R: Mitch Williams <mitch.a.williams@intel.com>
|
||||||
L: intel-wired-lan@lists.osuosl.org
|
L: intel-wired-lan@lists.osuosl.org
|
||||||
@@ -5884,7 +5884,7 @@ F: drivers/isdn/hardware/eicon/
|
|||||||
|
|
||||||
IT87 HARDWARE MONITORING DRIVER
|
IT87 HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/it87
|
F: Documentation/hwmon/it87
|
||||||
F: drivers/hwmon/it87.c
|
F: drivers/hwmon/it87.c
|
||||||
@@ -5920,7 +5920,7 @@ F: drivers/media/dvb-frontends/ix2505v*
|
|||||||
|
|
||||||
JC42.4 TEMPERATURE SENSOR DRIVER
|
JC42.4 TEMPERATURE SENSOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/jc42.c
|
F: drivers/hwmon/jc42.c
|
||||||
F: Documentation/hwmon/jc42
|
F: Documentation/hwmon/jc42
|
||||||
@@ -5970,14 +5970,14 @@ F: drivers/tty/serial/jsm/
|
|||||||
|
|
||||||
K10TEMP HARDWARE MONITORING DRIVER
|
K10TEMP HARDWARE MONITORING DRIVER
|
||||||
M: Clemens Ladisch <clemens@ladisch.de>
|
M: Clemens Ladisch <clemens@ladisch.de>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/k10temp
|
F: Documentation/hwmon/k10temp
|
||||||
F: drivers/hwmon/k10temp.c
|
F: drivers/hwmon/k10temp.c
|
||||||
|
|
||||||
K8TEMP HARDWARE MONITORING DRIVER
|
K8TEMP HARDWARE MONITORING DRIVER
|
||||||
M: Rudolf Marek <r.marek@assembler.cz>
|
M: Rudolf Marek <r.marek@assembler.cz>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/k8temp
|
F: Documentation/hwmon/k8temp
|
||||||
F: drivers/hwmon/k8temp.c
|
F: drivers/hwmon/k8temp.c
|
||||||
@@ -6485,27 +6485,27 @@ F: net/llc/
|
|||||||
|
|
||||||
LM73 HARDWARE MONITOR DRIVER
|
LM73 HARDWARE MONITOR DRIVER
|
||||||
M: Guillaume Ligneul <guillaume.ligneul@gmail.com>
|
M: Guillaume Ligneul <guillaume.ligneul@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
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.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.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.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.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.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/lm90
|
F: Documentation/hwmon/lm90
|
||||||
F: Documentation/devicetree/bindings/hwmon/lm90.txt
|
F: Documentation/devicetree/bindings/hwmon/lm90.txt
|
||||||
@@ -6513,7 +6513,7 @@ F: drivers/hwmon/lm90.c
|
|||||||
|
|
||||||
LM95234 HARDWARE MONITOR DRIVER
|
LM95234 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/lm95234
|
F: Documentation/hwmon/lm95234
|
||||||
F: drivers/hwmon/lm95234.c
|
F: drivers/hwmon/lm95234.c
|
||||||
@@ -6580,7 +6580,7 @@ F: drivers/scsi/sym53c8xx_2/
|
|||||||
|
|
||||||
LTC4261 HARDWARE MONITOR DRIVER
|
LTC4261 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/ltc4261
|
F: Documentation/hwmon/ltc4261
|
||||||
F: drivers/hwmon/ltc4261.c
|
F: drivers/hwmon/ltc4261.c
|
||||||
@@ -6749,28 +6749,28 @@ F: include/uapi/linux/matroxfb.h
|
|||||||
|
|
||||||
MAX16065 HARDWARE MONITOR DRIVER
|
MAX16065 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/max16065
|
F: Documentation/hwmon/max16065
|
||||||
F: drivers/hwmon/max16065.c
|
F: drivers/hwmon/max16065.c
|
||||||
|
|
||||||
MAX20751 HARDWARE MONITOR DRIVER
|
MAX20751 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/max20751
|
F: Documentation/hwmon/max20751
|
||||||
F: drivers/hwmon/max20751.c
|
F: drivers/hwmon/max20751.c
|
||||||
|
|
||||||
MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
||||||
M: "Hans J. Koch" <hjk@hansjkoch.de>
|
M: "Hans J. Koch" <hjk@hansjkoch.de>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/max6650
|
F: Documentation/hwmon/max6650
|
||||||
F: drivers/hwmon/max6650.c
|
F: drivers/hwmon/max6650.c
|
||||||
|
|
||||||
MAX6697 HARDWARE MONITOR DRIVER
|
MAX6697 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/max6697
|
F: Documentation/hwmon/max6697
|
||||||
F: Documentation/devicetree/bindings/i2c/max6697.txt
|
F: Documentation/devicetree/bindings/i2c/max6697.txt
|
||||||
@@ -7303,7 +7303,7 @@ F: drivers/scsi/NCR_D700.*
|
|||||||
|
|
||||||
NCT6775 HARDWARE MONITOR DRIVER
|
NCT6775 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/nct6775
|
F: Documentation/hwmon/nct6775
|
||||||
F: drivers/hwmon/nct6775.c
|
F: drivers/hwmon/nct6775.c
|
||||||
@@ -8064,7 +8064,7 @@ F: drivers/video/logo/logo_parisc*
|
|||||||
|
|
||||||
PC87360 HARDWARE MONITORING DRIVER
|
PC87360 HARDWARE MONITORING DRIVER
|
||||||
M: Jim Cromie <jim.cromie@gmail.com>
|
M: Jim Cromie <jim.cromie@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/pc87360
|
F: Documentation/hwmon/pc87360
|
||||||
F: drivers/hwmon/pc87360.c
|
F: drivers/hwmon/pc87360.c
|
||||||
@@ -8076,7 +8076,7 @@ F: drivers/char/pc8736x_gpio.c
|
|||||||
|
|
||||||
PC87427 HARDWARE MONITORING DRIVER
|
PC87427 HARDWARE MONITORING DRIVER
|
||||||
M: Jean Delvare <jdelvare@suse.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/pc87427
|
F: Documentation/hwmon/pc87427
|
||||||
F: drivers/hwmon/pc87427.c
|
F: drivers/hwmon/pc87427.c
|
||||||
@@ -8380,14 +8380,6 @@ L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/pinctrl/samsung/
|
F: drivers/pinctrl/samsung/
|
||||||
|
|
||||||
PIN CONTROLLER - SINGLE
|
|
||||||
M: Tony Lindgren <tony@atomide.com>
|
|
||||||
M: Haojian Zhuang <haojian.zhuang@linaro.org>
|
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|
||||||
L: linux-omap@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/pinctrl/pinctrl-single.c
|
|
||||||
|
|
||||||
PIN CONTROLLER - ST SPEAR
|
PIN CONTROLLER - ST SPEAR
|
||||||
M: Viresh Kumar <vireshk@kernel.org>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: spear-devel@list.st.com
|
L: spear-devel@list.st.com
|
||||||
@@ -8415,8 +8407,8 @@ F: drivers/rtc/rtc-puv3.c
|
|||||||
|
|
||||||
PMBUS HARDWARE MONITORING DRIVERS
|
PMBUS HARDWARE MONITORING DRIVERS
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
W: http://hwmon.wiki.kernel.org/
|
W: http://www.lm-sensors.org/
|
||||||
W: http://www.roeck-us.net/linux/drivers/
|
W: http://www.roeck-us.net/linux/drivers/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -8610,7 +8602,7 @@ F: drivers/media/usb/pwc/*
|
|||||||
|
|
||||||
PWM FAN DRIVER
|
PWM FAN DRIVER
|
||||||
M: Kamil Debski <k.debski@samsung.com>
|
M: Kamil Debski <k.debski@samsung.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt
|
F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt
|
||||||
F: Documentation/hwmon/pwm-fan
|
F: Documentation/hwmon/pwm-fan
|
||||||
@@ -8954,13 +8946,6 @@ F: drivers/rpmsg/
|
|||||||
F: Documentation/rpmsg.txt
|
F: Documentation/rpmsg.txt
|
||||||
F: include/linux/rpmsg.h
|
F: include/linux/rpmsg.h
|
||||||
|
|
||||||
RENESAS ETHERNET DRIVERS
|
|
||||||
R: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
|
|
||||||
L: netdev@vger.kernel.org
|
|
||||||
L: linux-sh@vger.kernel.org
|
|
||||||
F: drivers/net/ethernet/renesas/
|
|
||||||
F: include/linux/sh_eth.h
|
|
||||||
|
|
||||||
RESET CONTROLLER FRAMEWORK
|
RESET CONTROLLER FRAMEWORK
|
||||||
M: Philipp Zabel <p.zabel@pengutronix.de>
|
M: Philipp Zabel <p.zabel@pengutronix.de>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -9882,28 +9867,28 @@ F: Documentation/devicetree/bindings/media/i2c/nokia,smia.txt
|
|||||||
|
|
||||||
SMM665 HARDWARE MONITOR DRIVER
|
SMM665 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/smm665
|
F: Documentation/hwmon/smm665
|
||||||
F: drivers/hwmon/smm665.c
|
F: drivers/hwmon/smm665.c
|
||||||
|
|
||||||
SMSC EMC2103 HARDWARE MONITOR DRIVER
|
SMSC EMC2103 HARDWARE MONITOR DRIVER
|
||||||
M: Steve Glendinning <steve.glendinning@shawell.net>
|
M: Steve Glendinning <steve.glendinning@shawell.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/emc2103
|
F: Documentation/hwmon/emc2103
|
||||||
F: drivers/hwmon/emc2103.c
|
F: drivers/hwmon/emc2103.c
|
||||||
|
|
||||||
SMSC SCH5627 HARDWARE MONITOR DRIVER
|
SMSC SCH5627 HARDWARE MONITOR DRIVER
|
||||||
M: Hans de Goede <hdegoede@redhat.com>
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/hwmon/sch5627
|
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.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/smsc47b397
|
F: Documentation/hwmon/smsc47b397
|
||||||
F: drivers/hwmon/smsc47b397.c
|
F: drivers/hwmon/smsc47b397.c
|
||||||
@@ -10289,11 +10274,9 @@ S: Maintained
|
|||||||
F: drivers/net/ethernet/dlink/sundance.c
|
F: drivers/net/ethernet/dlink/sundance.c
|
||||||
|
|
||||||
SUPERH
|
SUPERH
|
||||||
M: Yoshinori Sato <ysato@users.sourceforge.jp>
|
|
||||||
M: Rich Felker <dalias@libc.org>
|
|
||||||
L: linux-sh@vger.kernel.org
|
L: linux-sh@vger.kernel.org
|
||||||
Q: http://patchwork.kernel.org/project/linux-sh/list/
|
Q: http://patchwork.kernel.org/project/linux-sh/list/
|
||||||
S: Maintained
|
S: Orphan
|
||||||
F: Documentation/sh/
|
F: Documentation/sh/
|
||||||
F: arch/sh/
|
F: arch/sh/
|
||||||
F: drivers/sh/
|
F: drivers/sh/
|
||||||
@@ -10830,7 +10813,7 @@ F: include/linux/mmc/sh_mobile_sdhi.h
|
|||||||
|
|
||||||
TMP401 HARDWARE MONITOR DRIVER
|
TMP401 HARDWARE MONITOR DRIVER
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/tmp401
|
F: Documentation/hwmon/tmp401
|
||||||
F: drivers/hwmon/tmp401.c
|
F: drivers/hwmon/tmp401.c
|
||||||
@@ -11564,14 +11547,14 @@ F: Documentation/networking/vrf.txt
|
|||||||
|
|
||||||
VT1211 HARDWARE MONITOR DRIVER
|
VT1211 HARDWARE MONITOR DRIVER
|
||||||
M: Juerg Haefliger <juergh@gmail.com>
|
M: Juerg Haefliger <juergh@gmail.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/vt1211
|
F: Documentation/hwmon/vt1211
|
||||||
F: drivers/hwmon/vt1211.c
|
F: drivers/hwmon/vt1211.c
|
||||||
|
|
||||||
VT8231 HARDWARE MONITOR DRIVER
|
VT8231 HARDWARE MONITOR DRIVER
|
||||||
M: Roger Lucas <vt8231@hiddenengine.co.uk>
|
M: Roger Lucas <vt8231@hiddenengine.co.uk>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/vt8231.c
|
F: drivers/hwmon/vt8231.c
|
||||||
|
|
||||||
@@ -11590,21 +11573,21 @@ F: drivers/w1/
|
|||||||
|
|
||||||
W83791D HARDWARE MONITORING DRIVER
|
W83791D HARDWARE MONITORING DRIVER
|
||||||
M: Marc Hulsman <m.hulsman@tudelft.nl>
|
M: Marc Hulsman <m.hulsman@tudelft.nl>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/w83791d
|
F: Documentation/hwmon/w83791d
|
||||||
F: drivers/hwmon/w83791d.c
|
F: drivers/hwmon/w83791d.c
|
||||||
|
|
||||||
W83793 HARDWARE MONITORING DRIVER
|
W83793 HARDWARE MONITORING DRIVER
|
||||||
M: Rudolf Marek <r.marek@assembler.cz>
|
M: Rudolf Marek <r.marek@assembler.cz>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/w83793
|
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.com>
|
M: Jean Delvare <jdelvare@suse.com>
|
||||||
L: linux-hwmon@vger.kernel.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/w83795.c
|
F: drivers/hwmon/w83795.c
|
||||||
|
|
||||||
|
|||||||
11
Makefile
11
Makefile
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 4
|
PATCHLEVEL = 4
|
||||||
SUBLEVEL = 21
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION =
|
EXTRAVERSION = -rc5
|
||||||
NAME = Blurry Fish Butt
|
NAME = Blurry Fish Butt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@@ -364,7 +364,7 @@ AFLAGS_MODULE =
|
|||||||
LDFLAGS_MODULE =
|
LDFLAGS_MODULE =
|
||||||
CFLAGS_KERNEL =
|
CFLAGS_KERNEL =
|
||||||
AFLAGS_KERNEL =
|
AFLAGS_KERNEL =
|
||||||
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im
|
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
|
||||||
|
|
||||||
|
|
||||||
# Use USERINCLUDE when you must reference the UAPI directories only.
|
# Use USERINCLUDE when you must reference the UAPI directories only.
|
||||||
@@ -682,10 +682,9 @@ KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
|
|||||||
KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
|
KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
|
||||||
else
|
else
|
||||||
|
|
||||||
# These warnings generated too much noise in a regular build.
|
# This warning generated too much noise in a regular build.
|
||||||
# Use make W=1 to enable them (see scripts/Makefile.build)
|
# Use make W=1 to enable this warning (see scripts/Makefile.build)
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_FRAME_POINTER
|
ifdef CONFIG_FRAME_POINTER
|
||||||
|
|||||||
@@ -387,7 +387,7 @@ config ARC_HAS_LLSC
|
|||||||
|
|
||||||
config ARC_STAR_9000923308
|
config ARC_STAR_9000923308
|
||||||
bool "Workaround for llock/scond livelock"
|
bool "Workaround for llock/scond livelock"
|
||||||
default n
|
default y
|
||||||
depends on ISA_ARCV2 && SMP && ARC_HAS_LLSC
|
depends on ISA_ARCV2 && SMP && ARC_HAS_LLSC
|
||||||
|
|
||||||
config ARC_HAS_SWAPE
|
config ARC_HAS_SWAPE
|
||||||
@@ -445,7 +445,6 @@ config LINUX_LINK_BASE
|
|||||||
However some customers have peripherals mapped at this addr, so
|
However some customers have peripherals mapped at this addr, so
|
||||||
Linux needs to be scooted a bit.
|
Linux needs to be scooted a bit.
|
||||||
If you don't know what the above means, leave this setting alone.
|
If you don't know what the above means, leave this setting alone.
|
||||||
This needs to match memory start address specified in Device Tree
|
|
||||||
|
|
||||||
config HIGHMEM
|
config HIGHMEM
|
||||||
bool "High Memory Support"
|
bool "High Memory Support"
|
||||||
|
|||||||
@@ -18,20 +18,6 @@ cflags-y += -fno-common -pipe -fno-builtin -D__linux__
|
|||||||
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
||||||
cflags-$(CONFIG_ISA_ARCV2) += -mcpu=archs
|
cflags-$(CONFIG_ISA_ARCV2) += -mcpu=archs
|
||||||
|
|
||||||
is_700 = $(shell $(CC) -dM -E - < /dev/null | grep -q "ARC700" && echo 1 || echo 0)
|
|
||||||
|
|
||||||
ifdef CONFIG_ISA_ARCOMPACT
|
|
||||||
ifeq ($(is_700), 0)
|
|
||||||
$(error Toolchain not configured for ARCompact builds)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_ISA_ARCV2
|
|
||||||
ifeq ($(is_700), 1)
|
|
||||||
$(error Toolchain not configured for ARCv2 builds)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_ARC_CURR_IN_REG
|
ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
# For a global register defintion, make sure it gets passed to every file
|
# For a global register defintion, make sure it gets passed to every file
|
||||||
# We had a customer reported bug where some code built in kernel was NOT using
|
# We had a customer reported bug where some code built in kernel was NOT using
|
||||||
@@ -62,6 +48,8 @@ endif
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables
|
||||||
|
|
||||||
# By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
|
# By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
|
||||||
ifeq ($(atleast_gcc48),y)
|
ifeq ($(atleast_gcc48),y)
|
||||||
cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2
|
cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2
|
||||||
@@ -93,7 +81,7 @@ endif
|
|||||||
LIBGCC := $(shell $(CC) $(cflags-y) --print-libgcc-file-name)
|
LIBGCC := $(shell $(CC) $(cflags-y) --print-libgcc-file-name)
|
||||||
|
|
||||||
# Modules with short calls might break for calls into builtin-kernel
|
# Modules with short calls might break for calls into builtin-kernel
|
||||||
KBUILD_CFLAGS_MODULE += -mlong-calls -mno-millicode
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
|
||||||
# Finally dump eveything into kernel build system
|
# Finally dump eveything into kernel build system
|
||||||
KBUILD_CFLAGS += $(cflags-y)
|
KBUILD_CFLAGS += $(cflags-y)
|
||||||
|
|||||||
@@ -46,7 +46,6 @@
|
|||||||
snps,pbl = < 32 >;
|
snps,pbl = < 32 >;
|
||||||
clocks = <&apbclk>;
|
clocks = <&apbclk>;
|
||||||
clock-names = "stmmaceth";
|
clock-names = "stmmaceth";
|
||||||
max-speed = <100>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ehci@0x40000 {
|
ehci@0x40000 {
|
||||||
|
|||||||
@@ -17,8 +17,7 @@
|
|||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
/* CONFIG_LINUX_LINK_BASE needs to match low mem start */
|
reg = <0x0 0x80000000 0x0 0x40000000 /* 1 GB low mem */
|
||||||
reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MB low mem */
|
|
||||||
0x1 0x00000000 0x0 0x40000000>; /* 1 GB highmem */
|
0x1 0x00000000 0x0 0x40000000>; /* 1 GB highmem */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -374,6 +374,12 @@ static inline int is_isa_arcompact(void)
|
|||||||
return IS_ENABLED(CONFIG_ISA_ARCOMPACT);
|
return IS_ENABLED(CONFIG_ISA_ARCOMPACT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_ISA_ARCOMPACT) && !defined(_CPU_DEFAULT_A7)
|
||||||
|
#error "Toolchain not configured for ARCompact builds"
|
||||||
|
#elif defined(CONFIG_ISA_ARCV2) && !defined(_CPU_DEFAULT_HS)
|
||||||
|
#error "Toolchain not configured for ARCv2 builds"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ASEMBLY__ */
|
#endif /* __ASEMBLY__ */
|
||||||
|
|
||||||
#endif /* _ASM_ARC_ARCREGS_H */
|
#endif /* _ASM_ARC_ARCREGS_H */
|
||||||
|
|||||||
@@ -35,6 +35,21 @@ static inline void op##_bit(unsigned long nr, volatile unsigned long *m)\
|
|||||||
\
|
\
|
||||||
m += nr >> 5; \
|
m += nr >> 5; \
|
||||||
\
|
\
|
||||||
|
/* \
|
||||||
|
* ARC ISA micro-optimization: \
|
||||||
|
* \
|
||||||
|
* Instructions dealing with bitpos only consider lower 5 bits \
|
||||||
|
* e.g (x << 33) is handled like (x << 1) by ASL instruction \
|
||||||
|
* (mem pointer still needs adjustment to point to next word) \
|
||||||
|
* \
|
||||||
|
* Hence the masking to clamp @nr arg can be elided in general. \
|
||||||
|
* \
|
||||||
|
* However if @nr is a constant (above assumed in a register), \
|
||||||
|
* and greater than 31, gcc can optimize away (x << 33) to 0, \
|
||||||
|
* as overflow, given the 32-bit ISA. Thus masking needs to be \
|
||||||
|
* done for const @nr, but no code is generated due to gcc \
|
||||||
|
* const prop. \
|
||||||
|
*/ \
|
||||||
nr &= 0x1f; \
|
nr &= 0x1f; \
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
|
|||||||
@@ -62,7 +62,9 @@ extern int ioc_exists;
|
|||||||
#define ARC_REG_IC_IVIC 0x10
|
#define ARC_REG_IC_IVIC 0x10
|
||||||
#define ARC_REG_IC_CTRL 0x11
|
#define ARC_REG_IC_CTRL 0x11
|
||||||
#define ARC_REG_IC_IVIL 0x19
|
#define ARC_REG_IC_IVIL 0x19
|
||||||
|
#if defined(CONFIG_ARC_MMU_V3) || defined(CONFIG_ARC_MMU_V4)
|
||||||
#define ARC_REG_IC_PTAG 0x1E
|
#define ARC_REG_IC_PTAG 0x1E
|
||||||
|
#endif
|
||||||
#define ARC_REG_IC_PTAG_HI 0x1F
|
#define ARC_REG_IC_PTAG_HI 0x1F
|
||||||
|
|
||||||
/* Bit val in IC_CTRL */
|
/* Bit val in IC_CTRL */
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_ARC_CURR_IN_REG
|
#ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
; Retrieve orig r25 and save it with rest of callee_regs
|
; Retrieve orig r25 and save it with rest of callee_regs
|
||||||
ld r12, [r12, PT_user_r25]
|
ld.as r12, [r12, PT_user_r25]
|
||||||
PUSH r12
|
PUSH r12
|
||||||
#else
|
#else
|
||||||
PUSH r25
|
PUSH r25
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
|
|
||||||
; SP is back to start of pt_regs
|
; SP is back to start of pt_regs
|
||||||
#ifdef CONFIG_ARC_CURR_IN_REG
|
#ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
st r12, [sp, PT_user_r25]
|
st.as r12, [sp, PT_user_r25]
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,6 @@
|
|||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ISA_ARCV2
|
|
||||||
#include <asm/barrier.h>
|
|
||||||
#define __iormb() rmb()
|
|
||||||
#define __iowmb() wmb()
|
|
||||||
#else
|
|
||||||
#define __iormb() do { } while (0)
|
|
||||||
#define __iowmb() do { } while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern void __iomem *ioremap(unsigned long physaddr, unsigned long size);
|
extern void __iomem *ioremap(unsigned long physaddr, unsigned long size);
|
||||||
extern void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
|
extern void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
|
||||||
unsigned long flags);
|
unsigned long flags);
|
||||||
@@ -31,15 +22,6 @@ extern void iounmap(const void __iomem *addr);
|
|||||||
#define ioremap_wc(phy, sz) ioremap(phy, sz)
|
#define ioremap_wc(phy, sz) ioremap(phy, sz)
|
||||||
#define ioremap_wt(phy, sz) ioremap(phy, sz)
|
#define ioremap_wt(phy, sz) ioremap(phy, sz)
|
||||||
|
|
||||||
/*
|
|
||||||
* io{read,write}{16,32}be() macros
|
|
||||||
*/
|
|
||||||
#define ioread16be(p) ({ u16 __v = be16_to_cpu((__force __be16)__raw_readw(p)); __iormb(); __v; })
|
|
||||||
#define ioread32be(p) ({ u32 __v = be32_to_cpu((__force __be32)__raw_readl(p)); __iormb(); __v; })
|
|
||||||
|
|
||||||
#define iowrite16be(v,p) ({ __iowmb(); __raw_writew((__force u16)cpu_to_be16(v), p); })
|
|
||||||
#define iowrite32be(v,p) ({ __iowmb(); __raw_writel((__force u32)cpu_to_be32(v), p); })
|
|
||||||
|
|
||||||
/* Change struct page to physical address */
|
/* Change struct page to physical address */
|
||||||
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
|
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
|
||||||
|
|
||||||
@@ -117,6 +99,15 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_ISA_ARCV2
|
||||||
|
#include <asm/barrier.h>
|
||||||
|
#define __iormb() rmb()
|
||||||
|
#define __iowmb() wmb()
|
||||||
|
#else
|
||||||
|
#define __iormb() do { } while (0)
|
||||||
|
#define __iowmb() do { } while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MMIO can also get buffered/optimized in micro-arch, so barriers needed
|
* MMIO can also get buffered/optimized in micro-arch, so barriers needed
|
||||||
* Based on ARM model for the typical use case
|
* Based on ARM model for the typical use case
|
||||||
@@ -138,23 +129,15 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
|
|||||||
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
|
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Relaxed API for drivers which can handle barrier ordering themselves
|
* Relaxed API for drivers which can handle any ordering themselves
|
||||||
*
|
|
||||||
* Also these are defined to perform little endian accesses.
|
|
||||||
* To provide the typical device register semantics of fixed endian,
|
|
||||||
* swap the byte order for Big Endian
|
|
||||||
*
|
|
||||||
* http://lkml.kernel.org/r/201603100845.30602.arnd@arndb.de
|
|
||||||
*/
|
*/
|
||||||
#define readb_relaxed(c) __raw_readb(c)
|
#define readb_relaxed(c) __raw_readb(c)
|
||||||
#define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \
|
#define readw_relaxed(c) __raw_readw(c)
|
||||||
__raw_readw(c)); __r; })
|
#define readl_relaxed(c) __raw_readl(c)
|
||||||
#define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \
|
|
||||||
__raw_readl(c)); __r; })
|
|
||||||
|
|
||||||
#define writeb_relaxed(v,c) __raw_writeb(v,c)
|
#define writeb_relaxed(v,c) __raw_writeb(v,c)
|
||||||
#define writew_relaxed(v,c) __raw_writew((__force u16) cpu_to_le16(v),c)
|
#define writew_relaxed(v,c) __raw_writew(v,c)
|
||||||
#define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
|
#define writel_relaxed(v,c) __raw_writel(v,c)
|
||||||
|
|
||||||
#include <asm-generic/io.h>
|
#include <asm-generic/io.h>
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
#define AUX_IRQ_CTRL 0x00E
|
#define AUX_IRQ_CTRL 0x00E
|
||||||
#define AUX_IRQ_ACT 0x043 /* Active Intr across all levels */
|
#define AUX_IRQ_ACT 0x043 /* Active Intr across all levels */
|
||||||
#define AUX_IRQ_LVL_PEND 0x200 /* Pending Intr across all levels */
|
#define AUX_IRQ_LVL_PEND 0x200 /* Pending Intr across all levels */
|
||||||
#define AUX_IRQ_HINT 0x201 /* For generating Soft Interrupts */
|
|
||||||
#define AUX_IRQ_PRIORITY 0x206
|
#define AUX_IRQ_PRIORITY 0x206
|
||||||
#define ICAUSE 0x40a
|
#define ICAUSE 0x40a
|
||||||
#define AUX_IRQ_SELECT 0x40b
|
#define AUX_IRQ_SELECT 0x40b
|
||||||
@@ -113,16 +112,6 @@ static inline int arch_irqs_disabled(void)
|
|||||||
return arch_irqs_disabled_flags(arch_local_save_flags());
|
return arch_irqs_disabled_flags(arch_local_save_flags());
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arc_softirq_trigger(int irq)
|
|
||||||
{
|
|
||||||
write_aux_reg(AUX_IRQ_HINT, irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void arc_softirq_clear(int irq)
|
|
||||||
{
|
|
||||||
write_aux_reg(AUX_IRQ_HINT, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
.macro IRQ_DISABLE scratch
|
.macro IRQ_DISABLE scratch
|
||||||
|
|||||||
@@ -188,10 +188,10 @@ static inline int arch_irqs_disabled(void)
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro IRQ_ENABLE scratch
|
.macro IRQ_ENABLE scratch
|
||||||
TRACE_ASM_IRQ_ENABLE
|
|
||||||
lr \scratch, [status32]
|
lr \scratch, [status32]
|
||||||
or \scratch, \scratch, (STATUS_E1_MASK | STATUS_E2_MASK)
|
or \scratch, \scratch, (STATUS_E1_MASK | STATUS_E2_MASK)
|
||||||
flag \scratch
|
flag \scratch
|
||||||
|
TRACE_ASM_IRQ_ENABLE
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
* @dt_compat: Array of device tree 'compatible' strings
|
* @dt_compat: Array of device tree 'compatible' strings
|
||||||
* (XXX: although only 1st entry is looked at)
|
* (XXX: although only 1st entry is looked at)
|
||||||
* @init_early: Very early callback [called from setup_arch()]
|
* @init_early: Very early callback [called from setup_arch()]
|
||||||
* @init_per_cpu: for each CPU as it is coming up (SMP as well as UP)
|
* @init_cpu_smp: for each CPU as it is coming up (SMP as well as UP)
|
||||||
* [(M):init_IRQ(), (o):start_kernel_secondary()]
|
* [(M):init_IRQ(), (o):start_kernel_secondary()]
|
||||||
* @init_machine: arch initcall level callback (e.g. populate static
|
* @init_machine: arch initcall level callback (e.g. populate static
|
||||||
* platform devices or parse Devicetree)
|
* platform devices or parse Devicetree)
|
||||||
@@ -35,7 +35,7 @@ struct machine_desc {
|
|||||||
const char **dt_compat;
|
const char **dt_compat;
|
||||||
void (*init_early)(void);
|
void (*init_early)(void);
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
void (*init_per_cpu)(unsigned int);
|
void (*init_cpu_smp)(unsigned int);
|
||||||
#endif
|
#endif
|
||||||
void (*init_machine)(void);
|
void (*init_machine)(void);
|
||||||
void (*init_late)(void);
|
void (*init_late)(void);
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
#define ___DEF (_PAGE_PRESENT | _PAGE_CACHEABLE)
|
#define ___DEF (_PAGE_PRESENT | _PAGE_CACHEABLE)
|
||||||
|
|
||||||
/* Set of bits not changed in pte_modify */
|
/* Set of bits not changed in pte_modify */
|
||||||
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_SPECIAL)
|
#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
|
||||||
|
|
||||||
/* More Abbrevaited helpers */
|
/* More Abbrevaited helpers */
|
||||||
#define PAGE_U_NONE __pgprot(___DEF)
|
#define PAGE_U_NONE __pgprot(___DEF)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ extern int smp_ipi_irq_setup(int cpu, int irq);
|
|||||||
* @init_early_smp: A SMP specific h/w block can init itself
|
* @init_early_smp: A SMP specific h/w block can init itself
|
||||||
* Could be common across platforms so not covered by
|
* Could be common across platforms so not covered by
|
||||||
* mach_desc->init_early()
|
* mach_desc->init_early()
|
||||||
* @init_per_cpu: Called for each core so SMP h/w block driver can do
|
* @init_irq_cpu: Called for each core so SMP h/w block driver can do
|
||||||
* any needed setup per cpu (e.g. IPI request)
|
* any needed setup per cpu (e.g. IPI request)
|
||||||
* @cpu_kick: For Master to kickstart a cpu (optionally at a PC)
|
* @cpu_kick: For Master to kickstart a cpu (optionally at a PC)
|
||||||
* @ipi_send: To send IPI to a @cpu
|
* @ipi_send: To send IPI to a @cpu
|
||||||
@@ -57,7 +57,7 @@ extern int smp_ipi_irq_setup(int cpu, int irq);
|
|||||||
struct plat_smp_ops {
|
struct plat_smp_ops {
|
||||||
const char *info;
|
const char *info;
|
||||||
void (*init_early_smp)(void);
|
void (*init_early_smp)(void);
|
||||||
void (*init_per_cpu)(int cpu);
|
void (*init_irq_cpu)(int cpu);
|
||||||
void (*cpu_kick)(int cpu, unsigned long pc);
|
void (*cpu_kick)(int cpu, unsigned long pc);
|
||||||
void (*ipi_send)(int cpu);
|
void (*ipi_send)(int cpu);
|
||||||
void (*ipi_clear)(int irq);
|
void (*ipi_clear)(int irq);
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ struct unwind_frame_info {
|
|||||||
|
|
||||||
extern int arc_unwind(struct unwind_frame_info *frame);
|
extern int arc_unwind(struct unwind_frame_info *frame);
|
||||||
extern void arc_unwind_init(void);
|
extern void arc_unwind_init(void);
|
||||||
|
extern void arc_unwind_setup(void);
|
||||||
extern void *unwind_add_table(struct module *module, const void *table_start,
|
extern void *unwind_add_table(struct module *module, const void *table_start,
|
||||||
unsigned long table_size);
|
unsigned long table_size);
|
||||||
extern void unwind_remove_table(void *handle, int init_only);
|
extern void unwind_remove_table(void *handle, int init_only);
|
||||||
@@ -151,6 +152,9 @@ static inline void arc_unwind_init(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void arc_unwind_setup(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#define unwind_add_table(a, b, c)
|
#define unwind_add_table(a, b, c)
|
||||||
#define unwind_remove_table(a, b)
|
#define unwind_remove_table(a, b)
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,11 @@ VECTOR reserved ; Reserved slots
|
|||||||
VECTOR handle_interrupt ; (16) Timer0
|
VECTOR handle_interrupt ; (16) Timer0
|
||||||
VECTOR handle_interrupt ; unused (Timer1)
|
VECTOR handle_interrupt ; unused (Timer1)
|
||||||
VECTOR handle_interrupt ; unused (WDT)
|
VECTOR handle_interrupt ; unused (WDT)
|
||||||
VECTOR handle_interrupt ; (19) Inter core Interrupt (IPI)
|
VECTOR handle_interrupt ; (19) ICI (inter core interrupt)
|
||||||
VECTOR handle_interrupt ; (20) perf Interrupt
|
VECTOR handle_interrupt
|
||||||
VECTOR handle_interrupt ; (21) Software Triggered Intr (Self IPI)
|
VECTOR handle_interrupt
|
||||||
VECTOR handle_interrupt ; unused
|
VECTOR handle_interrupt
|
||||||
VECTOR handle_interrupt ; (23) unused
|
VECTOR handle_interrupt ; (23) End of fixed IRQs
|
||||||
# End of fixed IRQs
|
|
||||||
|
|
||||||
.rept CONFIG_ARC_NUMBER_OF_INTERRUPTS - 8
|
.rept CONFIG_ARC_NUMBER_OF_INTERRUPTS - 8
|
||||||
VECTOR handle_interrupt
|
VECTOR handle_interrupt
|
||||||
@@ -212,11 +211,7 @@ debug_marker_syscall:
|
|||||||
; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig
|
; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig
|
||||||
; entry was via Exception in DS which got preempted in kernel).
|
; entry was via Exception in DS which got preempted in kernel).
|
||||||
;
|
;
|
||||||
; IRQ RTIE won't reliably restore DE bit and/or BTA, needs workaround
|
; IRQ RTIE won't reliably restore DE bit and/or BTA, needs handling
|
||||||
;
|
|
||||||
; Solution is return from Intr w/o any delay slot quirks into a kernel trampoline
|
|
||||||
; and from pure kernel mode return to delay slot which handles DS bit/BTA correctly
|
|
||||||
|
|
||||||
.Lintr_ret_to_delay_slot:
|
.Lintr_ret_to_delay_slot:
|
||||||
debug_marker_ds:
|
debug_marker_ds:
|
||||||
|
|
||||||
@@ -227,23 +222,18 @@ debug_marker_ds:
|
|||||||
ld r2, [sp, PT_ret]
|
ld r2, [sp, PT_ret]
|
||||||
ld r3, [sp, PT_status32]
|
ld r3, [sp, PT_status32]
|
||||||
|
|
||||||
; STAT32 for Int return created from scratch
|
|
||||||
; (No delay dlot, disable Further intr in trampoline)
|
|
||||||
|
|
||||||
bic r0, r3, STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK|STATUS_L_MASK
|
bic r0, r3, STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK|STATUS_L_MASK
|
||||||
st r0, [sp, PT_status32]
|
st r0, [sp, PT_status32]
|
||||||
|
|
||||||
mov r1, .Lintr_ret_to_delay_slot_2
|
mov r1, .Lintr_ret_to_delay_slot_2
|
||||||
st r1, [sp, PT_ret]
|
st r1, [sp, PT_ret]
|
||||||
|
|
||||||
; Orig exception PC/STAT32 safekept @orig_r0 and @event stack slots
|
|
||||||
st r2, [sp, 0]
|
st r2, [sp, 0]
|
||||||
st r3, [sp, 4]
|
st r3, [sp, 4]
|
||||||
|
|
||||||
b .Lisr_ret_fast_path
|
b .Lisr_ret_fast_path
|
||||||
|
|
||||||
.Lintr_ret_to_delay_slot_2:
|
.Lintr_ret_to_delay_slot_2:
|
||||||
; Trampoline to restore orig exception PC/STAT32/BTA/AUX_USER_SP
|
|
||||||
sub sp, sp, SZ_PT_REGS
|
sub sp, sp, SZ_PT_REGS
|
||||||
st r9, [sp, -4]
|
st r9, [sp, -4]
|
||||||
|
|
||||||
@@ -253,19 +243,11 @@ debug_marker_ds:
|
|||||||
ld r9, [sp, 4]
|
ld r9, [sp, 4]
|
||||||
sr r9, [erstatus]
|
sr r9, [erstatus]
|
||||||
|
|
||||||
; restore AUX_USER_SP if returning to U mode
|
|
||||||
bbit0 r9, STATUS_U_BIT, 1f
|
|
||||||
ld r9, [sp, PT_sp]
|
|
||||||
sr r9, [AUX_USER_SP]
|
|
||||||
|
|
||||||
1:
|
|
||||||
ld r9, [sp, 8]
|
ld r9, [sp, 8]
|
||||||
sr r9, [erbta]
|
sr r9, [erbta]
|
||||||
|
|
||||||
ld r9, [sp, -4]
|
ld r9, [sp, -4]
|
||||||
add sp, sp, SZ_PT_REGS
|
add sp, sp, SZ_PT_REGS
|
||||||
|
|
||||||
; return from pure kernel mode to delay slot
|
|
||||||
rtie
|
rtie
|
||||||
|
|
||||||
END(ret_from_exception)
|
END(ret_from_exception)
|
||||||
|
|||||||
@@ -106,21 +106,10 @@ static struct irq_chip arcv2_irq_chip = {
|
|||||||
static int arcv2_irq_map(struct irq_domain *d, unsigned int irq,
|
static int arcv2_irq_map(struct irq_domain *d, unsigned int irq,
|
||||||
irq_hw_number_t hw)
|
irq_hw_number_t hw)
|
||||||
{
|
{
|
||||||
/*
|
if (irq == TIMER0_IRQ || irq == IPI_IRQ)
|
||||||
* core intc IRQs [16, 23]:
|
|
||||||
* Statically assigned always private-per-core (Timers, WDT, IPI, PCT)
|
|
||||||
*/
|
|
||||||
if (hw < 24) {
|
|
||||||
/*
|
|
||||||
* A subsequent request_percpu_irq() fails if percpu_devid is
|
|
||||||
* not set. That in turns sets NOAUTOEN, meaning each core needs
|
|
||||||
* to call enable_percpu_irq()
|
|
||||||
*/
|
|
||||||
irq_set_percpu_devid(irq);
|
|
||||||
irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_percpu_irq);
|
irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_percpu_irq);
|
||||||
} else {
|
else
|
||||||
irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_level_irq);
|
irq_set_chip_and_handler(irq, &arcv2_irq_chip, handle_level_irq);
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ void __init init_IRQ(void)
|
|||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
/* a SMP H/w block could do IPI IRQ request here */
|
/* a SMP H/w block could do IPI IRQ request here */
|
||||||
if (plat_smp_ops.init_per_cpu)
|
if (plat_smp_ops.init_irq_cpu)
|
||||||
plat_smp_ops.init_per_cpu(smp_processor_id());
|
plat_smp_ops.init_irq_cpu(smp_processor_id());
|
||||||
|
|
||||||
if (machine_desc->init_per_cpu)
|
if (machine_desc->init_cpu_smp)
|
||||||
machine_desc->init_per_cpu(smp_processor_id());
|
machine_desc->init_cpu_smp(smp_processor_id());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,18 +51,6 @@ void arch_do_IRQ(unsigned int irq, struct pt_regs *regs)
|
|||||||
set_irq_regs(old_regs);
|
set_irq_regs(old_regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* API called for requesting percpu interrupts - called by each CPU
|
|
||||||
* - For boot CPU, actually request the IRQ with genirq core + enables
|
|
||||||
* - For subsequent callers only enable called locally
|
|
||||||
*
|
|
||||||
* Relies on being called by boot cpu first (i.e. request called ahead) of
|
|
||||||
* any enable as expected by genirq. Hence Suitable only for TIMER, IPI
|
|
||||||
* which are guaranteed to be setup on boot core first.
|
|
||||||
* Late probed peripherals such as perf can't use this as there no guarantee
|
|
||||||
* of being called on boot CPU first.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void arc_request_percpu_irq(int irq, int cpu,
|
void arc_request_percpu_irq(int irq, int cpu,
|
||||||
irqreturn_t (*isr)(int irq, void *dev),
|
irqreturn_t (*isr)(int irq, void *dev),
|
||||||
const char *irq_nm,
|
const char *irq_nm,
|
||||||
@@ -72,17 +60,14 @@ void arc_request_percpu_irq(int irq, int cpu,
|
|||||||
if (!cpu) {
|
if (!cpu) {
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
#ifdef CONFIG_ISA_ARCOMPACT
|
|
||||||
/*
|
/*
|
||||||
* A subsequent request_percpu_irq() fails if percpu_devid is
|
* These 2 calls are essential to making percpu IRQ APIs work
|
||||||
* not set. That in turns sets NOAUTOEN, meaning each core needs
|
* Ideally these details could be hidden in irq chip map function
|
||||||
* to call enable_percpu_irq()
|
* but the issue is IPIs IRQs being static (non-DT) and platform
|
||||||
*
|
* specific, so we can't identify them there.
|
||||||
* For ARCv2, this is done in irq map function since we know
|
|
||||||
* which irqs are strictly per cpu
|
|
||||||
*/
|
*/
|
||||||
irq_set_percpu_devid(irq);
|
irq_set_percpu_devid(irq);
|
||||||
#endif
|
irq_modify_status(irq, IRQ_NOAUTOEN, 0); /* @irq, @clr, @set */
|
||||||
|
|
||||||
rc = request_percpu_irq(irq, isr, irq_nm, percpu_dev);
|
rc = request_percpu_irq(irq, isr, irq_nm, percpu_dev);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
|||||||
@@ -11,12 +11,9 @@
|
|||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <asm/irqflags-arcv2.h>
|
|
||||||
#include <asm/mcip.h>
|
#include <asm/mcip.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
|
|
||||||
#define SOFTIRQ_IRQ 21
|
|
||||||
|
|
||||||
static char smp_cpuinfo_buf[128];
|
static char smp_cpuinfo_buf[128];
|
||||||
static int idu_detected;
|
static int idu_detected;
|
||||||
|
|
||||||
@@ -25,7 +22,6 @@ static DEFINE_RAW_SPINLOCK(mcip_lock);
|
|||||||
static void mcip_setup_per_cpu(int cpu)
|
static void mcip_setup_per_cpu(int cpu)
|
||||||
{
|
{
|
||||||
smp_ipi_irq_setup(cpu, IPI_IRQ);
|
smp_ipi_irq_setup(cpu, IPI_IRQ);
|
||||||
smp_ipi_irq_setup(cpu, SOFTIRQ_IRQ);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mcip_ipi_send(int cpu)
|
static void mcip_ipi_send(int cpu)
|
||||||
@@ -33,12 +29,6 @@ static void mcip_ipi_send(int cpu)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ipi_was_pending;
|
int ipi_was_pending;
|
||||||
|
|
||||||
/* ARConnect can only send IPI to others */
|
|
||||||
if (unlikely(cpu == raw_smp_processor_id())) {
|
|
||||||
arc_softirq_trigger(SOFTIRQ_IRQ);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: We must spin here if the other cpu hasn't yet
|
* NOTE: We must spin here if the other cpu hasn't yet
|
||||||
* serviced a previous message. This can burn lots
|
* serviced a previous message. This can burn lots
|
||||||
@@ -73,11 +63,6 @@ static void mcip_ipi_clear(int irq)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int __maybe_unused copy;
|
unsigned int __maybe_unused copy;
|
||||||
|
|
||||||
if (unlikely(irq == SOFTIRQ_IRQ)) {
|
|
||||||
arc_softirq_clear(irq);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&mcip_lock, flags);
|
raw_spin_lock_irqsave(&mcip_lock, flags);
|
||||||
|
|
||||||
/* Who sent the IPI */
|
/* Who sent the IPI */
|
||||||
@@ -147,7 +132,7 @@ static void mcip_probe_n_setup(void)
|
|||||||
struct plat_smp_ops plat_smp_ops = {
|
struct plat_smp_ops plat_smp_ops = {
|
||||||
.info = smp_cpuinfo_buf,
|
.info = smp_cpuinfo_buf,
|
||||||
.init_early_smp = mcip_probe_n_setup,
|
.init_early_smp = mcip_probe_n_setup,
|
||||||
.init_per_cpu = mcip_setup_per_cpu,
|
.init_irq_cpu = mcip_setup_per_cpu,
|
||||||
.ipi_send = mcip_ipi_send,
|
.ipi_send = mcip_ipi_send,
|
||||||
.ipi_clear = mcip_ipi_clear,
|
.ipi_clear = mcip_ipi_clear,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -428,11 +428,12 @@ static irqreturn_t arc_pmu_intr(int irq, void *dev)
|
|||||||
|
|
||||||
#endif /* CONFIG_ISA_ARCV2 */
|
#endif /* CONFIG_ISA_ARCV2 */
|
||||||
|
|
||||||
static void arc_cpu_pmu_irq_init(void *data)
|
void arc_cpu_pmu_irq_init(void)
|
||||||
{
|
{
|
||||||
int irq = *(int *)data;
|
struct arc_pmu_cpu *pmu_cpu = this_cpu_ptr(&arc_pmu_cpu);
|
||||||
|
|
||||||
enable_percpu_irq(irq, IRQ_TYPE_NONE);
|
arc_request_percpu_irq(arc_pmu->irq, smp_processor_id(), arc_pmu_intr,
|
||||||
|
"ARC perf counters", pmu_cpu);
|
||||||
|
|
||||||
/* Clear all pending interrupt flags */
|
/* Clear all pending interrupt flags */
|
||||||
write_aux_reg(ARC_REG_PCT_INT_ACT, 0xffffffff);
|
write_aux_reg(ARC_REG_PCT_INT_ACT, 0xffffffff);
|
||||||
@@ -514,6 +515,7 @@ static int arc_pmu_device_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
if (has_interrupts) {
|
if (has_interrupts) {
|
||||||
int irq = platform_get_irq(pdev, 0);
|
int irq = platform_get_irq(pdev, 0);
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
if (irq < 0) {
|
if (irq < 0) {
|
||||||
pr_err("Cannot get IRQ number for the platform\n");
|
pr_err("Cannot get IRQ number for the platform\n");
|
||||||
@@ -522,12 +524,24 @@ static int arc_pmu_device_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
arc_pmu->irq = irq;
|
arc_pmu->irq = irq;
|
||||||
|
|
||||||
/* intc map function ensures irq_set_percpu_devid() called */
|
/*
|
||||||
request_percpu_irq(irq, arc_pmu_intr, "ARC perf counters",
|
* arc_cpu_pmu_irq_init() needs to be called on all cores for
|
||||||
this_cpu_ptr(&arc_pmu_cpu));
|
* their respective local PMU.
|
||||||
|
* However we use opencoded on_each_cpu() to ensure it is called
|
||||||
on_each_cpu(arc_cpu_pmu_irq_init, &irq, 1);
|
* on core0 first, so that arc_request_percpu_irq() sets up
|
||||||
|
* AUTOEN etc. Otherwise enable_percpu_irq() fails to enable
|
||||||
|
* perf IRQ on non master cores.
|
||||||
|
* see arc_request_percpu_irq()
|
||||||
|
*/
|
||||||
|
preempt_disable();
|
||||||
|
local_irq_save(flags);
|
||||||
|
arc_cpu_pmu_irq_init();
|
||||||
|
local_irq_restore(flags);
|
||||||
|
smp_call_function((smp_call_func_t)arc_cpu_pmu_irq_init, 0, 1);
|
||||||
|
preempt_enable();
|
||||||
|
|
||||||
|
/* Clean all pending interrupt flags */
|
||||||
|
write_aux_reg(ARC_REG_PCT_INT_ACT, 0xffffffff);
|
||||||
} else
|
} else
|
||||||
arc_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT;
|
arc_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT;
|
||||||
|
|
||||||
|
|||||||
@@ -332,6 +332,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");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -425,6 +429,7 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
arc_unwind_init();
|
arc_unwind_init();
|
||||||
|
arc_unwind_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init customize_machine(void)
|
static int __init customize_machine(void)
|
||||||
|
|||||||
@@ -132,11 +132,11 @@ void start_kernel_secondary(void)
|
|||||||
pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
|
pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
|
||||||
|
|
||||||
/* Some SMP H/w setup - for each cpu */
|
/* Some SMP H/w setup - for each cpu */
|
||||||
if (plat_smp_ops.init_per_cpu)
|
if (plat_smp_ops.init_irq_cpu)
|
||||||
plat_smp_ops.init_per_cpu(cpu);
|
plat_smp_ops.init_irq_cpu(cpu);
|
||||||
|
|
||||||
if (machine_desc->init_per_cpu)
|
if (machine_desc->init_cpu_smp)
|
||||||
machine_desc->init_per_cpu(cpu);
|
machine_desc->init_cpu_smp(cpu);
|
||||||
|
|
||||||
arc_local_timer_setup();
|
arc_local_timer_setup();
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
|
|||||||
* prelogue is setup (callee regs saved and then fp set and not other
|
* prelogue is setup (callee regs saved and then fp set and not other
|
||||||
* way around
|
* way around
|
||||||
*/
|
*/
|
||||||
pr_warn_once("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
|
pr_warn("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -170,23 +170,6 @@ static struct unwind_table *find_table(unsigned long pc)
|
|||||||
|
|
||||||
static unsigned long read_pointer(const u8 **pLoc,
|
static unsigned long read_pointer(const u8 **pLoc,
|
||||||
const void *end, signed ptrType);
|
const void *end, signed ptrType);
|
||||||
static void init_unwind_hdr(struct unwind_table *table,
|
|
||||||
void *(*alloc) (unsigned long));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* wrappers for header alloc (vs. calling one vs. other at call site)
|
|
||||||
* to elide section mismatches warnings
|
|
||||||
*/
|
|
||||||
static void *__init unw_hdr_alloc_early(unsigned long sz)
|
|
||||||
{
|
|
||||||
return __alloc_bootmem_nopanic(sz, sizeof(unsigned int),
|
|
||||||
MAX_DMA_ADDRESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *unw_hdr_alloc(unsigned long sz)
|
|
||||||
{
|
|
||||||
return kmalloc(sz, GFP_KERNEL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void init_unwind_table(struct unwind_table *table, const char *name,
|
static void init_unwind_table(struct unwind_table *table, const char *name,
|
||||||
const void *core_start, unsigned long core_size,
|
const void *core_start, unsigned long core_size,
|
||||||
@@ -226,8 +209,6 @@ void __init arc_unwind_init(void)
|
|||||||
__start_unwind, __end_unwind - __start_unwind,
|
__start_unwind, __end_unwind - __start_unwind,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
/*__start_unwind_hdr, __end_unwind_hdr - __start_unwind_hdr);*/
|
/*__start_unwind_hdr, __end_unwind_hdr - __start_unwind_hdr);*/
|
||||||
|
|
||||||
init_unwind_hdr(&root_table, unw_hdr_alloc_early);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u32 bad_cie, not_fde;
|
static const u32 bad_cie, not_fde;
|
||||||
@@ -260,7 +241,7 @@ static void swap_eh_frame_hdr_table_entries(void *p1, void *p2, int size)
|
|||||||
e2->fde = v;
|
e2->fde = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_unwind_hdr(struct unwind_table *table,
|
static void __init setup_unwind_table(struct unwind_table *table,
|
||||||
void *(*alloc) (unsigned long))
|
void *(*alloc) (unsigned long))
|
||||||
{
|
{
|
||||||
const u8 *ptr;
|
const u8 *ptr;
|
||||||
@@ -296,10 +277,10 @@ static void init_unwind_hdr(struct unwind_table *table,
|
|||||||
if (cie == ¬_fde)
|
if (cie == ¬_fde)
|
||||||
continue;
|
continue;
|
||||||
if (cie == NULL || cie == &bad_cie)
|
if (cie == NULL || cie == &bad_cie)
|
||||||
goto ret_err;
|
return;
|
||||||
ptrType = fde_pointer_type(cie);
|
ptrType = fde_pointer_type(cie);
|
||||||
if (ptrType < 0)
|
if (ptrType < 0)
|
||||||
goto ret_err;
|
return;
|
||||||
|
|
||||||
ptr = (const u8 *)(fde + 2);
|
ptr = (const u8 *)(fde + 2);
|
||||||
if (!read_pointer(&ptr, (const u8 *)(fde + 1) + *fde,
|
if (!read_pointer(&ptr, (const u8 *)(fde + 1) + *fde,
|
||||||
@@ -315,15 +296,13 @@ static void init_unwind_hdr(struct unwind_table *table,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tableSize || !n)
|
if (tableSize || !n)
|
||||||
goto ret_err;
|
return;
|
||||||
|
|
||||||
hdrSize = 4 + sizeof(unsigned long) + sizeof(unsigned int)
|
hdrSize = 4 + sizeof(unsigned long) + sizeof(unsigned int)
|
||||||
+ 2 * n * sizeof(unsigned long);
|
+ 2 * n * sizeof(unsigned long);
|
||||||
|
|
||||||
header = alloc(hdrSize);
|
header = alloc(hdrSize);
|
||||||
if (!header)
|
if (!header)
|
||||||
goto ret_err;
|
return;
|
||||||
|
|
||||||
header->version = 1;
|
header->version = 1;
|
||||||
header->eh_frame_ptr_enc = DW_EH_PE_abs | DW_EH_PE_native;
|
header->eh_frame_ptr_enc = DW_EH_PE_abs | DW_EH_PE_native;
|
||||||
header->fde_count_enc = DW_EH_PE_abs | DW_EH_PE_data4;
|
header->fde_count_enc = DW_EH_PE_abs | DW_EH_PE_data4;
|
||||||
@@ -361,10 +340,18 @@ static void init_unwind_hdr(struct unwind_table *table,
|
|||||||
table->hdrsz = hdrSize;
|
table->hdrsz = hdrSize;
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
table->header = (const void *)header;
|
table->header = (const void *)header;
|
||||||
return;
|
}
|
||||||
|
|
||||||
ret_err:
|
static void *__init balloc(unsigned long sz)
|
||||||
panic("Attention !!! Dwarf FDE parsing errors\n");;
|
{
|
||||||
|
return __alloc_bootmem_nopanic(sz,
|
||||||
|
sizeof(unsigned int),
|
||||||
|
__pa(MAX_DMA_ADDRESS));
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init arc_unwind_setup(void)
|
||||||
|
{
|
||||||
|
setup_unwind_table(&root_table, balloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MODULES
|
#ifdef CONFIG_MODULES
|
||||||
@@ -390,8 +377,6 @@ void *unwind_add_table(struct module *module, const void *table_start,
|
|||||||
table_start, table_size,
|
table_start, table_size,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
|
|
||||||
init_unwind_hdr(table, unw_hdr_alloc);
|
|
||||||
|
|
||||||
#ifdef UNWIND_DEBUG
|
#ifdef UNWIND_DEBUG
|
||||||
unw_debug("Table added for [%s] %lx %lx\n",
|
unw_debug("Table added for [%s] %lx %lx\n",
|
||||||
module->name, table->core.pc, table->core.range);
|
module->name, table->core.pc, table->core.range);
|
||||||
@@ -454,7 +439,6 @@ void unwind_remove_table(void *handle, int init_only)
|
|||||||
info.init_only = init_only;
|
info.init_only = init_only;
|
||||||
|
|
||||||
unlink_table(&info); /* XXX: SMP */
|
unlink_table(&info); /* XXX: SMP */
|
||||||
kfree(table->header);
|
|
||||||
kfree(table);
|
kfree(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,6 +588,9 @@ static signed fde_pointer_type(const u32 *cie)
|
|||||||
const u8 *ptr = (const u8 *)(cie + 2);
|
const u8 *ptr = (const u8 *)(cie + 2);
|
||||||
unsigned version = *ptr;
|
unsigned version = *ptr;
|
||||||
|
|
||||||
|
if (version != 1)
|
||||||
|
return -1; /* unsupported */
|
||||||
|
|
||||||
if (*++ptr) {
|
if (*++ptr) {
|
||||||
const char *aug;
|
const char *aug;
|
||||||
const u8 *end = (const u8 *)(cie + 1) + *cie;
|
const u8 *end = (const u8 *)(cie + 1) + *cie;
|
||||||
@@ -1015,7 +1002,9 @@ int arc_unwind(struct unwind_frame_info *frame)
|
|||||||
ptr = (const u8 *)(cie + 2);
|
ptr = (const u8 *)(cie + 2);
|
||||||
end = (const u8 *)(cie + 1) + *cie;
|
end = (const u8 *)(cie + 1) + *cie;
|
||||||
frame->call_frame = 1;
|
frame->call_frame = 1;
|
||||||
if (*++ptr) {
|
if ((state.version = *ptr) != 1)
|
||||||
|
cie = NULL; /* unsupported version */
|
||||||
|
else if (*++ptr) {
|
||||||
/* check if augmentation size is first (thus present) */
|
/* check if augmentation size is first (thus present) */
|
||||||
if (*ptr == 'z') {
|
if (*ptr == 'z') {
|
||||||
while (++ptr < end && *ptr) {
|
while (++ptr < end && *ptr) {
|
||||||
|
|||||||
@@ -914,15 +914,6 @@ void arc_cache_init(void)
|
|||||||
|
|
||||||
printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
|
printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
|
||||||
|
|
||||||
/*
|
|
||||||
* Only master CPU needs to execute rest of function:
|
|
||||||
* - Assume SMP so all cores will have same cache config so
|
|
||||||
* any geomtry checks will be same for all
|
|
||||||
* - IOC setup / dma callbacks only need to be setup once
|
|
||||||
*/
|
|
||||||
if (cpu)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE)) {
|
if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE)) {
|
||||||
struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
|
struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ void __kunmap_atomic(void *kv)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__kunmap_atomic);
|
EXPORT_SYMBOL(__kunmap_atomic);
|
||||||
|
|
||||||
static noinline pte_t * __init alloc_kmap_pgtable(unsigned long kvaddr)
|
noinline pte_t *alloc_kmap_pgtable(unsigned long kvaddr)
|
||||||
{
|
{
|
||||||
pgd_t *pgd_k;
|
pgd_t *pgd_k;
|
||||||
pud_t *pud_k;
|
pud_t *pud_k;
|
||||||
@@ -127,7 +127,7 @@ static noinline pte_t * __init alloc_kmap_pgtable(unsigned long kvaddr)
|
|||||||
return pte_k;
|
return pte_k;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init kmap_init(void)
|
void kmap_init(void)
|
||||||
{
|
{
|
||||||
/* Due to recursive include hell, we can't do this in processor.h */
|
/* Due to recursive include hell, we can't do this in processor.h */
|
||||||
BUILD_BUG_ON(PAGE_OFFSET < (VMALLOC_END + FIXMAP_SIZE + PKMAP_SIZE));
|
BUILD_BUG_ON(PAGE_OFFSET < (VMALLOC_END + FIXMAP_SIZE + PKMAP_SIZE));
|
||||||
|
|||||||
@@ -51,9 +51,7 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
|||||||
int in_use = 0;
|
int in_use = 0;
|
||||||
|
|
||||||
if (!low_mem_sz) {
|
if (!low_mem_sz) {
|
||||||
if (base != low_mem_start)
|
BUG_ON(base != low_mem_start);
|
||||||
panic("CONFIG_LINUX_LINK_BASE != DT memory { }");
|
|
||||||
|
|
||||||
low_mem_sz = size;
|
low_mem_sz = size;
|
||||||
in_use = 1;
|
in_use = 1;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -162,9 +162,10 @@ choice
|
|||||||
mobile SoCs in the Kona family of chips (e.g. bcm28155,
|
mobile SoCs in the Kona family of chips (e.g. bcm28155,
|
||||||
bcm11351, etc...)
|
bcm11351, etc...)
|
||||||
|
|
||||||
config DEBUG_BCM63XX_UART
|
config DEBUG_BCM63XX
|
||||||
bool "Kernel low-level debugging on BCM63XX UART"
|
bool "Kernel low-level debugging on BCM63XX UART"
|
||||||
depends on ARCH_BCM_63XX
|
depends on ARCH_BCM_63XX
|
||||||
|
select DEBUG_UART_BCM63XX
|
||||||
|
|
||||||
config DEBUG_BERLIN_UART
|
config DEBUG_BERLIN_UART
|
||||||
bool "Marvell Berlin SoC Debug UART"
|
bool "Marvell Berlin SoC Debug UART"
|
||||||
@@ -1355,7 +1356,7 @@ config DEBUG_LL_INCLUDE
|
|||||||
default "debug/vf.S" if DEBUG_VF_UART
|
default "debug/vf.S" if DEBUG_VF_UART
|
||||||
default "debug/vt8500.S" if DEBUG_VT8500_UART0
|
default "debug/vt8500.S" if DEBUG_VT8500_UART0
|
||||||
default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
|
default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
|
||||||
default "debug/bcm63xx.S" if DEBUG_BCM63XX_UART
|
default "debug/bcm63xx.S" if DEBUG_UART_BCM63XX
|
||||||
default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0
|
default "debug/digicolor.S" if DEBUG_DIGICOLOR_UA0
|
||||||
default "mach/debug-macro.S"
|
default "mach/debug-macro.S"
|
||||||
|
|
||||||
@@ -1371,6 +1372,10 @@ config DEBUG_UART_8250
|
|||||||
ARCH_IOP33X || ARCH_IXP4XX || \
|
ARCH_IOP33X || ARCH_IXP4XX || \
|
||||||
ARCH_LPC32XX || ARCH_MV78XX0 || ARCH_ORION5X || ARCH_RPC
|
ARCH_LPC32XX || ARCH_MV78XX0 || ARCH_ORION5X || ARCH_RPC
|
||||||
|
|
||||||
|
# Compatibility options for BCM63xx
|
||||||
|
config DEBUG_UART_BCM63XX
|
||||||
|
def_bool ARCH_BCM_63XX
|
||||||
|
|
||||||
config DEBUG_UART_PHYS
|
config DEBUG_UART_PHYS
|
||||||
hex "Physical base address of debug UART"
|
hex "Physical base address of debug UART"
|
||||||
default 0x00100a00 if DEBUG_NETX_UART
|
default 0x00100a00 if DEBUG_NETX_UART
|
||||||
@@ -1465,7 +1470,7 @@ config DEBUG_UART_PHYS
|
|||||||
default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
|
default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
|
||||||
default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
|
default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
|
||||||
default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
|
default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
|
||||||
default 0xfffe8600 if DEBUG_BCM63XX_UART
|
default 0xfffe8600 if DEBUG_UART_BCM63XX
|
||||||
default 0xfffff700 if ARCH_IOP33X
|
default 0xfffff700 if ARCH_IOP33X
|
||||||
depends on ARCH_EP93XX || \
|
depends on ARCH_EP93XX || \
|
||||||
DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
|
DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
|
||||||
@@ -1477,7 +1482,7 @@ config DEBUG_UART_PHYS
|
|||||||
DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
|
DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
|
||||||
DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
|
DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
|
||||||
DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
|
DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
|
||||||
DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
|
DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
|
||||||
DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \
|
DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0 || \
|
||||||
DEBUG_AT91_UART
|
DEBUG_AT91_UART
|
||||||
|
|
||||||
@@ -1518,7 +1523,7 @@ config DEBUG_UART_VIRT
|
|||||||
default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
|
default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
|
||||||
default 0xfc40ab00 if DEBUG_BRCMSTB_UART
|
default 0xfc40ab00 if DEBUG_BRCMSTB_UART
|
||||||
default 0xfc705000 if DEBUG_ZTE_ZX
|
default 0xfc705000 if DEBUG_ZTE_ZX
|
||||||
default 0xfcfe8600 if DEBUG_BCM63XX_UART
|
default 0xfcfe8600 if DEBUG_UART_BCM63XX
|
||||||
default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX
|
default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX
|
||||||
default 0xfd000000 if ARCH_SPEAR13XX
|
default 0xfd000000 if ARCH_SPEAR13XX
|
||||||
default 0xfd012000 if ARCH_MV78XX0
|
default 0xfd012000 if ARCH_MV78XX0
|
||||||
@@ -1569,7 +1574,7 @@ config DEBUG_UART_VIRT
|
|||||||
DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
|
DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
|
||||||
DEBUG_NETX_UART || \
|
DEBUG_NETX_UART || \
|
||||||
DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
|
DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
|
||||||
DEBUG_BCM63XX_UART || DEBUG_ASM9260_UART || \
|
DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
|
||||||
DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
|
DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
|
||||||
|
|
||||||
config DEBUG_UART_8250_SHIFT
|
config DEBUG_UART_8250_SHIFT
|
||||||
|
|||||||
2
arch/arm/boot/.gitignore
vendored
2
arch/arm/boot/.gitignore
vendored
@@ -3,4 +3,4 @@ zImage
|
|||||||
xipImage
|
xipImage
|
||||||
bootpImage
|
bootpImage
|
||||||
uImage
|
uImage
|
||||||
*.dtb*
|
*.dtb
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-b-plus.dtb
|
|||||||
dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-cm.dtb
|
dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-cm.dtb
|
||||||
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb
|
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb
|
||||||
dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb
|
dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb
|
||||||
dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb
|
|
||||||
|
|
||||||
# Raspberry Pi
|
# Raspberry Pi
|
||||||
ifeq ($(CONFIG_ARCH_BCM2708),y)
|
ifeq ($(CONFIG_ARCH_BCM2708),y)
|
||||||
@@ -814,5 +812,5 @@ clean-files := *.dtb
|
|||||||
|
|
||||||
# Enable fixups to support overlays on BCM2708 platforms
|
# Enable fixups to support overlays on BCM2708 platforms
|
||||||
ifeq ($(RPI_DT_OVERLAYS),y)
|
ifeq ($(RPI_DT_OVERLAYS),y)
|
||||||
DTC_FLAGS ?= -@ -H epapr
|
DTC_FLAGS ?= -@
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -792,8 +792,3 @@
|
|||||||
tx-num-evt = <32>;
|
tx-num-evt = <32>;
|
||||||
rx-num-evt = <32>;
|
rx-num-evt = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&synctimer_32kclk {
|
|
||||||
assigned-clocks = <&mux_synctimer32k_ck>;
|
|
||||||
assigned-clock-parents = <&clkdiv32k_ick>;
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -529,7 +529,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sata@a0000 {
|
sata@a0000 {
|
||||||
compatible = "marvell,armada-370-sata";
|
compatible = "marvell,orion-sata";
|
||||||
reg = <0xa0000 0x5000>;
|
reg = <0xa0000 0x5000>;
|
||||||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&gateclk 14>, <&gateclk 20>;
|
clocks = <&gateclk 14>, <&gateclk 20>;
|
||||||
|
|||||||
@@ -58,8 +58,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0xf1100000 0x10000
|
||||||
MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0xf1110000 0x10000>;
|
||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* USB part of the eSATA/USB 2.0 port */
|
/* USB part of the eSATA/USB 2.0 port */
|
||||||
usb@58000 {
|
usb@50000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
button@2 {
|
button@2 {
|
||||||
label = "Factory Reset Button";
|
label = "Factory Reset Button";
|
||||||
linux,code = <KEY_RESTART>;
|
linux,code = <KEY_RESTART>;
|
||||||
gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sata {
|
sata {
|
||||||
gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -313,7 +313,7 @@
|
|||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
keys_pin: keys-pin {
|
keys_pin: keys-pin {
|
||||||
marvell,pins = "mpp24", "mpp29";
|
marvell,pins = "mpp24", "mpp47";
|
||||||
marvell,function = "gpio";
|
marvell,function = "gpio";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -303,6 +303,16 @@
|
|||||||
gpio = <&expander0 4 GPIO_ACTIVE_HIGH>;
|
gpio = <&expander0 4 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
reg_usb2_1_vbus: v5-vbus1 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "v5.0-vbus1";
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
enable-active-high;
|
||||||
|
regulator-always-on;
|
||||||
|
gpio = <&expander0 4 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
reg_sata0: pwr-sata0 {
|
reg_sata0: pwr-sata0 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "pwr_en_sata0";
|
regulator-name = "pwr_en_sata0";
|
||||||
|
|||||||
@@ -70,8 +70,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
pcie-controller {
|
pcie-controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -76,8 +76,8 @@
|
|||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
|
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
devbus-bootcs {
|
devbus-bootcs {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -95,8 +95,8 @@
|
|||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
|
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
devbus-bootcs {
|
devbus-bootcs {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -65,8 +65,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
pcie-controller {
|
pcie-controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -70,8 +70,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
pcie-controller {
|
pcie-controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@@ -304,13 +304,13 @@
|
|||||||
button@1 {
|
button@1 {
|
||||||
label = "WPS";
|
label = "WPS";
|
||||||
linux,code = <KEY_WPS_BUTTON>;
|
linux,code = <KEY_WPS_BUTTON>;
|
||||||
gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
button@2 {
|
button@2 {
|
||||||
label = "Factory Reset Button";
|
label = "Factory Reset Button";
|
||||||
linux,code = <KEY_RESTART>;
|
linux,code = <KEY_RESTART>;
|
||||||
gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -68,8 +68,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
|
|||||||
@@ -64,8 +64,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
pcie-controller {
|
pcie-controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -65,9 +65,9 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x01, 0x2f) 0 0 0xe8000000 0x8000000
|
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
devbus-bootcs {
|
devbus-bootcs {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -78,8 +78,8 @@
|
|||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
|
||||||
|
|
||||||
pcie-controller {
|
pcie-controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -303,7 +303,6 @@
|
|||||||
regulator-name = "mmc0-card-supply";
|
regulator-name = "mmc0-card-supply";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio_keys {
|
||||||
|
|||||||
@@ -86,12 +86,10 @@
|
|||||||
macb0: ethernet@f8020000 {
|
macb0: ethernet@f8020000 {
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
|
|
||||||
|
|
||||||
phy0: ethernet-phy@1 {
|
phy0: ethernet-phy@1 {
|
||||||
interrupt-parent = <&pioE>;
|
interrupt-parent = <&pioE>;
|
||||||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -154,10 +152,6 @@
|
|||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
};
|
};
|
||||||
pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
|
|
||||||
atmel,pins =
|
|
||||||
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -268,6 +262,5 @@
|
|||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
vin-supply = <&vcc_3v3_reg>;
|
vin-supply = <&vcc_3v3_reg>;
|
||||||
regulator-always-on;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -160,15 +160,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
macb0: ethernet@f8020000 {
|
macb0: ethernet@f8020000 {
|
||||||
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
|
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
ethernet-phy@1 {
|
|
||||||
reg = <0x1>;
|
|
||||||
interrupt-parent = <&pioE>;
|
|
||||||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: mmc@fc000000 {
|
mmc1: mmc@fc000000 {
|
||||||
@@ -200,10 +193,6 @@
|
|||||||
|
|
||||||
pinctrl@fc06a000 {
|
pinctrl@fc06a000 {
|
||||||
board {
|
board {
|
||||||
pinctrl_macb0_phy_irq: macb0_phy_irq {
|
|
||||||
atmel,pins =
|
|
||||||
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
|
||||||
};
|
|
||||||
pinctrl_mmc0_cd: mmc0_cd {
|
pinctrl_mmc0_cd: mmc0_cd {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
|
|
||||||
pmc: pmc@fffffc00 {
|
pmc: pmc@fffffc00 {
|
||||||
compatible = "atmel,at91sam9x5-pmc", "syscon";
|
compatible = "atmel,at91sam9x5-pmc", "syscon";
|
||||||
reg = <0xfffffc00 0x200>;
|
reg = <0xfffffc00 0x100>;
|
||||||
interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
|
interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|||||||
@@ -37,11 +37,6 @@
|
|||||||
brcm,pins = <18 19 20 21>;
|
brcm,pins = <18 19 20 21>;
|
||||||
brcm,function = <4>; /* alt0 */
|
brcm,function = <4>; /* alt0 */
|
||||||
};
|
};
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins = <40 45>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhost {
|
&sdhost {
|
||||||
@@ -64,7 +59,7 @@
|
|||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||||
|
|
||||||
spidev0: spidev@0{
|
spidev@0{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <0>; /* CE0 */
|
reg = <0>; /* CE0 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -72,7 +67,7 @@
|
|||||||
spi-max-frequency = <500000>;
|
spi-max-frequency = <500000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spidev1: spidev@1{
|
spidev@1{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <1>; /* CE1 */
|
reg = <1>; /* CE1 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -121,20 +116,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi {
|
|
||||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&audio {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&audio_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
i2s = <&i2s>,"status";
|
||||||
spi = <&spi0>,"status";
|
spi = <&spi0>,"status";
|
||||||
i2c0 = <&i2c0>,"status";
|
i2c0 = <&i2c0>,"status";
|
||||||
@@ -156,9 +141,5 @@
|
|||||||
audio = <&audio>,"status";
|
audio = <&audio>,"status";
|
||||||
watchdog = <&watchdog>,"status";
|
watchdog = <&watchdog>,"status";
|
||||||
random = <&random>,"status";
|
random = <&random>,"status";
|
||||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
|
||||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
|
||||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
|
||||||
sd_debug = <&sdhost>,"brcm,debug";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -37,11 +37,6 @@
|
|||||||
brcm,pins = <28 29 30 31>;
|
brcm,pins = <28 29 30 31>;
|
||||||
brcm,function = <6>; /* alt2 */
|
brcm,function = <6>; /* alt2 */
|
||||||
};
|
};
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins = <40 45>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhost {
|
&sdhost {
|
||||||
@@ -64,7 +59,7 @@
|
|||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||||
|
|
||||||
spidev0: spidev@0{
|
spidev@0{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <0>; /* CE0 */
|
reg = <0>; /* CE0 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -72,7 +67,7 @@
|
|||||||
spi-max-frequency = <500000>;
|
spi-max-frequency = <500000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spidev1: spidev@1{
|
spidev@1{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <1>; /* CE1 */
|
reg = <1>; /* CE1 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -115,20 +110,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi {
|
|
||||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&audio {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&audio_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
i2s = <&i2s>,"status";
|
||||||
spi = <&spi0>,"status";
|
spi = <&spi0>,"status";
|
||||||
i2c0 = <&i2c0>,"status";
|
i2c0 = <&i2c0>,"status";
|
||||||
@@ -146,9 +131,5 @@
|
|||||||
audio = <&audio>,"status";
|
audio = <&audio>,"status";
|
||||||
watchdog = <&watchdog>,"status";
|
watchdog = <&watchdog>,"status";
|
||||||
random = <&random>,"status";
|
random = <&random>,"status";
|
||||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
|
||||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
|
||||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
|
||||||
sd_debug = <&sdhost>,"brcm,debug";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,11 +35,6 @@
|
|||||||
brcm,pins = <18 19 20 21>;
|
brcm,pins = <18 19 20 21>;
|
||||||
brcm,function = <4>; /* alt0 */
|
brcm,function = <4>; /* alt0 */
|
||||||
};
|
};
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins;
|
|
||||||
brcm,function;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&spi0 {
|
&spi0 {
|
||||||
@@ -47,7 +42,7 @@
|
|||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||||
|
|
||||||
spidev0: spidev@0{
|
spidev@0{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <0>; /* CE0 */
|
reg = <0>; /* CE0 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -55,7 +50,7 @@
|
|||||||
spi-max-frequency = <500000>;
|
spi-max-frequency = <500000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spidev1: spidev@1{
|
spidev@1{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <1>; /* CE1 */
|
reg = <1>; /* CE1 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -94,7 +89,6 @@
|
|||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
i2s = <&i2s>,"status";
|
||||||
spi = <&spi0>,"status";
|
spi = <&spi0>,"status";
|
||||||
i2c0 = <&i2c0>,"status";
|
i2c0 = <&i2c0>,"status";
|
||||||
@@ -103,5 +97,6 @@
|
|||||||
i2c0_baudrate = <&i2c0>,"clock-frequency:0";
|
i2c0_baudrate = <&i2c0>,"clock-frequency:0";
|
||||||
i2c1_baudrate = <&i2c1>,"clock-frequency:0";
|
i2c1_baudrate = <&i2c1>,"clock-frequency:0";
|
||||||
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
|
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
|
||||||
|
core_freq = <&clk_core>,"clock-frequency:0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,13 +7,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio {
|
|
||||||
mmc_pins: mmc_pins {
|
|
||||||
brcm,pins = <48 49 50 51 52 53>;
|
|
||||||
brcm,function = <7>; /* alt3 */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&leds {
|
&leds {
|
||||||
act_led: act {
|
act_led: act {
|
||||||
label = "led0";
|
label = "led0";
|
||||||
@@ -22,14 +15,12 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
&sdhost {
|
&sdhost {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdhost_pins>;
|
pinctrl-0 = <&sdhost_pins>;
|
||||||
non-removable;
|
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
non-removable;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
brcm,overclock-50 = <0>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&fb {
|
&fb {
|
||||||
@@ -38,8 +29,6 @@
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
core_freq = <&clk_core>,"clock-frequency:0";
|
|
||||||
|
|
||||||
act_led_gpio = <&act_led>,"gpios:4";
|
act_led_gpio = <&act_led>,"gpios:4";
|
||||||
act_led_activelow = <&act_led>,"gpios:8";
|
act_led_activelow = <&act_led>,"gpios:8";
|
||||||
act_led_trigger = <&act_led>,"linux,default-trigger";
|
act_led_trigger = <&act_led>,"linux,default-trigger";
|
||||||
@@ -47,6 +36,5 @@
|
|||||||
audio = <&audio>,"status";
|
audio = <&audio>,"status";
|
||||||
watchdog = <&watchdog>,"status";
|
watchdog = <&watchdog>,"status";
|
||||||
random = <&random>,"status";
|
random = <&random>,"status";
|
||||||
sd_overclock = <&mmc>,"brcm,overclock-50:0";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
#include "dt-bindings/clock/bcm2835.h"
|
|
||||||
#include <dt-bindings/clock/bcm2835-aux.h>
|
|
||||||
#include "dt-bindings/power/raspberrypi-power.h"
|
|
||||||
#include "dt-bindings/gpio/gpio.h"
|
|
||||||
#include "dt-bindings/pinctrl/bcm2835.h"
|
|
||||||
#include "skeleton.dtsi"
|
#include "skeleton.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
@@ -10,7 +5,6 @@
|
|||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
audio = &audio;
|
audio = &audio;
|
||||||
aux = &aux;
|
|
||||||
sound = &sound;
|
sound = &sound;
|
||||||
soc = &soc;
|
soc = &soc;
|
||||||
dma = &dma;
|
dma = &dma;
|
||||||
@@ -25,8 +19,6 @@
|
|||||||
spi0 = &spi0;
|
spi0 = &spi0;
|
||||||
i2c0 = &i2c0;
|
i2c0 = &i2c0;
|
||||||
uart1 = &uart1;
|
uart1 = &uart1;
|
||||||
spi1 = &spi1;
|
|
||||||
spi2 = &spi2;
|
|
||||||
mmc = &mmc;
|
mmc = &mmc;
|
||||||
i2c1 = &i2c1;
|
i2c1 = &i2c1;
|
||||||
i2c2 = &i2c2;
|
i2c2 = &i2c2;
|
||||||
@@ -38,6 +30,17 @@
|
|||||||
clocks = &clocks;
|
clocks = &clocks;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Onboard audio */
|
||||||
|
audio: audio {
|
||||||
|
compatible = "brcm,bcm2835-audio";
|
||||||
|
brcm,pwm-channels = <8>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
/* External sound card */
|
||||||
|
sound: sound {
|
||||||
|
};
|
||||||
|
|
||||||
soc: soc {
|
soc: soc {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -57,32 +60,10 @@
|
|||||||
<1 24>,
|
<1 24>,
|
||||||
<1 25>,
|
<1 25>,
|
||||||
<1 26>,
|
<1 26>,
|
||||||
/* dma channel 11-14 share one irq */
|
<1 27>;
|
||||||
<1 27>,
|
|
||||||
<1 27>,
|
|
||||||
<1 27>,
|
|
||||||
<1 27>,
|
|
||||||
/* unused shared irq for all channels */
|
|
||||||
<1 28>;
|
|
||||||
interrupt-names = "dma0",
|
|
||||||
"dma1",
|
|
||||||
"dma2",
|
|
||||||
"dma3",
|
|
||||||
"dma4",
|
|
||||||
"dma5",
|
|
||||||
"dma6",
|
|
||||||
"dma7",
|
|
||||||
"dma8",
|
|
||||||
"dma9",
|
|
||||||
"dma10",
|
|
||||||
"dma11",
|
|
||||||
"dma12",
|
|
||||||
"dma13",
|
|
||||||
"dma14",
|
|
||||||
"dma-shared-all";
|
|
||||||
|
|
||||||
#dma-cells = <1>;
|
#dma-cells = <1>;
|
||||||
brcm,dma-channel-mask = <0x7f34>;
|
brcm,dma-channel-mask = <0x0f35>;
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: interrupt-controller@7e00b200 {
|
intc: interrupt-controller@7e00b200 {
|
||||||
@@ -111,10 +92,9 @@
|
|||||||
reg = <0x7e101000 0x2000>;
|
reg = <0x7e101000 0x2000>;
|
||||||
|
|
||||||
/* CPRMAN derives everything from the platform's
|
/* CPRMAN derives everything from the platform's
|
||||||
* oscillator except for a few clocks that may
|
* oscillator.
|
||||||
* derive from something else derived from CPRMAN..
|
|
||||||
*/
|
*/
|
||||||
clocks = <&clk_osc>, <&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
|
clocks = <&clk_osc>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -152,16 +132,15 @@
|
|||||||
reg = <0x7e202000 0x100>;
|
reg = <0x7e202000 0x100>;
|
||||||
interrupts = <2 24>;
|
interrupts = <2 24>;
|
||||||
clocks = <&clk_core>;
|
clocks = <&clk_core>;
|
||||||
dmas = <&dma 13>;
|
dmas = <&dma 13>,
|
||||||
dma-names = "rx-tx";
|
<&dma 13>;
|
||||||
brcm,overclock-50 = <0>;
|
dma-names = "tx", "rx";
|
||||||
brcm,pio-limit = <1>;
|
brcm,pio-limit = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s: i2s@7e203000 {
|
i2s: i2s@7e203000 {
|
||||||
compatible = "brcm,bcm2835-i2s";
|
compatible = "brcm,bcm2835-i2s";
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
reg = <0x7e203000 0x24>,
|
reg = <0x7e203000 0x24>,
|
||||||
<0x7e101098 0x08>;
|
<0x7e101098 0x08>;
|
||||||
|
|
||||||
@@ -185,7 +164,7 @@
|
|||||||
* add more gpios if necessary as <&gpio 6 1>
|
* add more gpios if necessary as <&gpio 6 1>
|
||||||
* (but do not forget to make them output!)
|
* (but do not forget to make them output!)
|
||||||
*/
|
*/
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
cs-gpios = <0>, <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0: i2c@7e205000 {
|
i2c0: i2c@7e205000 {
|
||||||
@@ -198,29 +177,6 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
pixelvalve0: pixelvalve@7e206000 {
|
|
||||||
compatible = "brcm,bcm2835-pixelvalve0";
|
|
||||||
reg = <0x7e206000 0x100>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
dpi: dpi@7e208000 {
|
|
||||||
compatible = "brcm,bcm2835-dpi";
|
|
||||||
reg = <0x7e208000 0x8c>;
|
|
||||||
clocks = <&cprman BCM2835_CLOCK_VPU>,
|
|
||||||
<&cprman BCM2835_CLOCK_DPI>;
|
|
||||||
clock-names = "core", "pixel";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
pixelvalve1: pixelvalve@7e207000 {
|
|
||||||
compatible = "brcm,bcm2835-pixelvalve1";
|
|
||||||
reg = <0x7e207000 0x100>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
pwm: pwm@7e20c000 {
|
pwm: pwm@7e20c000 {
|
||||||
compatible = "brcm,bcm2835-pwm";
|
compatible = "brcm,bcm2835-pwm";
|
||||||
reg = <0x7e20c000 0x28>;
|
reg = <0x7e20c000 0x28>;
|
||||||
@@ -229,14 +185,6 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
aux: aux@0x7e215004 {
|
|
||||||
compatible = "brcm,bcm2835-aux";
|
|
||||||
#clock-cells = <1>;
|
|
||||||
reg = <0x7e215000 0x8>;
|
|
||||||
clocks = <&clk_core>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
uart1: uart@7e215040 {
|
uart1: uart@7e215040 {
|
||||||
compatible = "brcm,bcm2835-aux-uart", "ns16550";
|
compatible = "brcm,bcm2835-aux-uart", "ns16550";
|
||||||
reg = <0x7e215040 0x40>;
|
reg = <0x7e215040 0x40>;
|
||||||
@@ -247,81 +195,17 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spi1: spi@7e215080 {
|
|
||||||
compatible = "brcm,bcm2835-aux-spi";
|
|
||||||
reg = <0x7e215080 0x40>, <0x7e215000 0x8>;
|
|
||||||
interrupts = <1 29>;
|
|
||||||
clocks = <&aux BCM2835_AUX_CLOCK_SPI1>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
spi2: spi@7e2150C0 {
|
|
||||||
compatible = "brcm,bcm2835-aux-spi";
|
|
||||||
reg = <0x7e2150C0 0x40>, <0x7e215000 0x8>;
|
|
||||||
interrupts = <1 29>;
|
|
||||||
clocks = <&aux BCM2835_AUX_CLOCK_SPI2>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
mmc: mmc@7e300000 {
|
mmc: mmc@7e300000 {
|
||||||
compatible = "brcm,bcm2835-mmc";
|
compatible = "brcm,bcm2835-mmc";
|
||||||
reg = <0x7e300000 0x100>;
|
reg = <0x7e300000 0x100>;
|
||||||
interrupts = <2 30>;
|
interrupts = <2 30>;
|
||||||
clocks = <&clk_mmc>;
|
clocks = <&clk_mmc>;
|
||||||
dmas = <&dma 11>;
|
dmas = <&dma 11>,
|
||||||
dma-names = "rx-tx";
|
<&dma 11>;
|
||||||
brcm,overclock-50 = <0>;
|
dma-names = "tx", "rx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
hvs: hvs@7e400000 {
|
|
||||||
compatible = "brcm,bcm2835-hvs";
|
|
||||||
reg = <0x7e400000 0x6000>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
firmwarekms: firmwarekms@7e600000 {
|
|
||||||
compatible = "raspberrypi,rpi-firmware-kms";
|
|
||||||
/* SMI interrupt reg */
|
|
||||||
reg = <0x7e600000 0x100>;
|
|
||||||
interrupts = <2 16>;
|
|
||||||
brcm,firmware = <&firmware>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
smi: smi@7e600000 {
|
|
||||||
compatible = "brcm,bcm2835-smi";
|
|
||||||
reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
|
|
||||||
interrupts = <2 16>;
|
|
||||||
brcm,smi-clock-source = <6>;
|
|
||||||
brcm,smi-clock-divisor = <4>;
|
|
||||||
dmas = <&dma 4>;
|
|
||||||
dma-names = "rx-tx";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
dsi1: dsi@7e700000 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
#clock-cells = <1>;
|
|
||||||
|
|
||||||
compatible = "brcm,bcm2835-dsi1";
|
|
||||||
reg = <0x7e700000 0x8c>;
|
|
||||||
interrupts = <2 12>;
|
|
||||||
|
|
||||||
clocks = <&cprman BCM2835_PLLD_DSI1>,
|
|
||||||
<&cprman BCM2835_CLOCK_DSI1E>,
|
|
||||||
<&cprman BCM2835_CLOCK_DSI1P>;
|
|
||||||
clock-names = "phy", "escape", "pixel";
|
|
||||||
clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
|
|
||||||
status = "disabled";
|
|
||||||
power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1: i2c@7e804000 {
|
i2c1: i2c@7e804000 {
|
||||||
compatible = "brcm,bcm2708-i2c";
|
compatible = "brcm,bcm2708-i2c";
|
||||||
reg = <0x7e804000 0x1000>;
|
reg = <0x7e804000 0x1000>;
|
||||||
@@ -345,21 +229,14 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
pixelvalve2: pixelvalve@7e807000 {
|
smi: smi@7e600000 {
|
||||||
compatible = "brcm,bcm2835-pixelvalve2";
|
compatible = "brcm,bcm2835-smi";
|
||||||
reg = <0x7e807000 0x100>;
|
reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
|
||||||
status = "disabled";
|
interrupts = <2 16>;
|
||||||
};
|
brcm,smi-clock-source = <6>;
|
||||||
|
brcm,smi-clock-divisor = <4>;
|
||||||
hdmi: hdmi@7e902000 {
|
dmas = <&dma 4>;
|
||||||
compatible = "brcm,bcm2835-hdmi";
|
dma-names = "rx-tx";
|
||||||
reg = <0x7e902000 0x600>,
|
|
||||||
<0x7e808000 0x100>;
|
|
||||||
ddc = <&i2c2>;
|
|
||||||
clocks = <&cprman BCM2835_PLLH_PIX>,
|
|
||||||
<&cprman BCM2835_CLOCK_HSM>;
|
|
||||||
clock-names = "pixel", "hdmi";
|
|
||||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -371,24 +248,11 @@
|
|||||||
<1 9>;
|
<1 9>;
|
||||||
};
|
};
|
||||||
|
|
||||||
v3d: v3d@7ec00000 {
|
|
||||||
compatible = "brcm,vc4-v3d";
|
|
||||||
reg = <0x7ec00000 0x1000>;
|
|
||||||
power-domains = <&power RPI_POWER_DOMAIN_V3D>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
firmware: firmware {
|
firmware: firmware {
|
||||||
compatible = "raspberrypi,bcm2835-firmware";
|
compatible = "raspberrypi,bcm2835-firmware";
|
||||||
mboxes = <&mailbox>;
|
mboxes = <&mailbox>;
|
||||||
};
|
};
|
||||||
|
|
||||||
power: power {
|
|
||||||
compatible = "raspberrypi,bcm2835-power";
|
|
||||||
firmware = <&firmware>;
|
|
||||||
#power-domain-cells = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
leds: leds {
|
leds: leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
};
|
};
|
||||||
@@ -411,23 +275,6 @@
|
|||||||
compatible = "brcm,bcm2835-thermal";
|
compatible = "brcm,bcm2835-thermal";
|
||||||
firmware = <&firmware>;
|
firmware = <&firmware>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpu: gpu {
|
|
||||||
compatible = "brcm,bcm2835-vc4";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Onboard audio */
|
|
||||||
audio: audio {
|
|
||||||
compatible = "brcm,bcm2835-audio";
|
|
||||||
brcm,pwm-channels = <8>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
/* External sound card */
|
|
||||||
sound: sound {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
clocks: clocks {
|
clocks: clocks {
|
||||||
|
|||||||
@@ -37,11 +37,6 @@
|
|||||||
brcm,pins = <18 19 20 21>;
|
brcm,pins = <18 19 20 21>;
|
||||||
brcm,function = <4>; /* alt0 */
|
brcm,function = <4>; /* alt0 */
|
||||||
};
|
};
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins = <40 45>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhost {
|
&sdhost {
|
||||||
@@ -64,7 +59,7 @@
|
|||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||||
|
|
||||||
spidev0: spidev@0{
|
spidev@0{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <0>; /* CE0 */
|
reg = <0>; /* CE0 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -72,7 +67,7 @@
|
|||||||
spi-max-frequency = <500000>;
|
spi-max-frequency = <500000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spidev1: spidev@1{
|
spidev@1{
|
||||||
compatible = "spidev";
|
compatible = "spidev";
|
||||||
reg = <1>; /* CE1 */
|
reg = <1>; /* CE1 */
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -121,20 +116,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&hdmi {
|
|
||||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&audio {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&audio_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
i2s = <&i2s>,"status";
|
||||||
spi = <&spi0>,"status";
|
spi = <&spi0>,"status";
|
||||||
i2c0 = <&i2c0>,"status";
|
i2c0 = <&i2c0>,"status";
|
||||||
@@ -156,9 +141,5 @@
|
|||||||
audio = <&audio>,"status";
|
audio = <&audio>,"status";
|
||||||
watchdog = <&watchdog>,"status";
|
watchdog = <&watchdog>,"status";
|
||||||
random = <&random>,"status";
|
random = <&random>,"status";
|
||||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
|
||||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
|
||||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
|
||||||
sd_debug = <&sdhost>,"brcm,debug";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,207 +0,0 @@
|
|||||||
/dts-v1/;
|
|
||||||
|
|
||||||
#include "bcm2710.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "brcm,bcm2710","brcm,bcm2709";
|
|
||||||
model = "Raspberry Pi 3 Model B";
|
|
||||||
};
|
|
||||||
|
|
||||||
&gpio {
|
|
||||||
sdhost_pins: sdhost_pins {
|
|
||||||
brcm,pins = <48 49 50 51 52 53>;
|
|
||||||
brcm,function = <4>; /* alt0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
spi0_pins: spi0_pins {
|
|
||||||
brcm,pins = <9 10 11>;
|
|
||||||
brcm,function = <4>; /* alt0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
spi0_cs_pins: spi0_cs_pins {
|
|
||||||
brcm,pins = <8 7>;
|
|
||||||
brcm,function = <1>; /* output */
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c0_pins: i2c0 {
|
|
||||||
brcm,pins = <0 1>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1_pins: i2c1 {
|
|
||||||
brcm,pins = <2 3>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2s_pins: i2s {
|
|
||||||
brcm,pins = <18 19 20 21>;
|
|
||||||
brcm,function = <4>; /* alt0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
sdio_pins: sdio_pins {
|
|
||||||
brcm,pins = <34 35 36 37 38 39>;
|
|
||||||
brcm,function = <7>; // alt3 = SD1
|
|
||||||
brcm,pull = <0 2 2 2 2 2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
bt_pins: bt_pins {
|
|
||||||
brcm,pins = <43>;
|
|
||||||
brcm,function = <4>; /* alt0:GPCLK2 */
|
|
||||||
brcm,pull = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
uart0_pins: uart0_pins {
|
|
||||||
brcm,pins = <32 33>;
|
|
||||||
brcm,function = <7>; /* alt3=UART0 */
|
|
||||||
brcm,pull = <0 2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
uart1_pins: uart1_pins {
|
|
||||||
brcm,pins;
|
|
||||||
brcm,function;
|
|
||||||
brcm,pull;
|
|
||||||
};
|
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins = <40 41>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&sdhost {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&sdhost_pins>;
|
|
||||||
bus-width = <4>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&mmc {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&sdio_pins>;
|
|
||||||
non-removable;
|
|
||||||
bus-width = <4>;
|
|
||||||
status = "okay";
|
|
||||||
brcm,overclock-50 = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&soc {
|
|
||||||
virtgpio: virtgpio {
|
|
||||||
compatible = "brcm,bcm2835-virtgpio";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
firmware = <&firmware>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&fb {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&uart0_pins &bt_pins>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart1 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&uart1_pins>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&spi0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
|
||||||
|
|
||||||
spidev0: spidev@0{
|
|
||||||
compatible = "spidev";
|
|
||||||
reg = <0>; /* CE0 */
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
spi-max-frequency = <500000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
spidev1: spidev@1{
|
|
||||||
compatible = "spidev";
|
|
||||||
reg = <1>; /* CE1 */
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
spi-max-frequency = <500000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2c0_pins>;
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2c1_pins>;
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2s {
|
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2s_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&random {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&leds {
|
|
||||||
act_led: act {
|
|
||||||
label = "led0";
|
|
||||||
linux,default-trigger = "mmc0";
|
|
||||||
gpios = <&virtgpio 0 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&audio {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&audio_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
|
||||||
chosen {
|
|
||||||
bootargs = "8250.nr_uarts=1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
|
||||||
__overrides__ {
|
|
||||||
uart0 = <&uart0>,"status";
|
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
|
||||||
spi = <&spi0>,"status";
|
|
||||||
i2c0 = <&i2c0>,"status";
|
|
||||||
i2c1 = <&i2c1>,"status";
|
|
||||||
i2c2_iknowwhatimdoing = <&i2c2>,"status";
|
|
||||||
i2c0_baudrate = <&i2c0>,"clock-frequency:0";
|
|
||||||
i2c1_baudrate = <&i2c1>,"clock-frequency:0";
|
|
||||||
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
|
|
||||||
core_freq = <&clk_core>,"clock-frequency:0";
|
|
||||||
|
|
||||||
act_led_gpio = <&act_led>,"gpios:4";
|
|
||||||
act_led_activelow = <&act_led>,"gpios:8";
|
|
||||||
act_led_trigger = <&act_led>,"linux,default-trigger";
|
|
||||||
|
|
||||||
audio = <&audio>,"status";
|
|
||||||
watchdog = <&watchdog>,"status";
|
|
||||||
random = <&random>,"status";
|
|
||||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
|
||||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
|
||||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
|
||||||
sd_debug = <&sdhost>,"brcm,debug";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
/dts-v1/;
|
|
||||||
|
|
||||||
#include "bcm2710.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "brcm,bcm2710","brcm,bcm2709";
|
|
||||||
model = "Raspberry Pi Compute Module 3";
|
|
||||||
};
|
|
||||||
|
|
||||||
&gpio {
|
|
||||||
|
|
||||||
mmc_pins: mmc_pins {
|
|
||||||
brcm,pins = <48 49 50 51 52 53>;
|
|
||||||
brcm,function = <7>; /* alt3 */
|
|
||||||
brcm,pull = <0 2 2 2 2 2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
spi0_pins: spi0_pins {
|
|
||||||
brcm,pins = <9 10 11>;
|
|
||||||
brcm,function = <4>; /* alt0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
spi0_cs_pins: spi0_cs_pins {
|
|
||||||
brcm,pins = <8 7>;
|
|
||||||
brcm,function = <1>; /* output */
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c0_pins: i2c0 {
|
|
||||||
brcm,pins = <0 1>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1_pins: i2c1 {
|
|
||||||
brcm,pins = <2 3>;
|
|
||||||
brcm,function = <4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2s_pins: i2s {
|
|
||||||
brcm,pins = <18 19 20 21>;
|
|
||||||
brcm,function = <4>; /* alt0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
audio_pins: audio_pins {
|
|
||||||
brcm,pins;
|
|
||||||
brcm,function;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&mmc {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&mmc_pins>;
|
|
||||||
non-removable;
|
|
||||||
bus-width = <4>;
|
|
||||||
status = "okay";
|
|
||||||
brcm,overclock-50 = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&soc {
|
|
||||||
virtgpio: virtgpio {
|
|
||||||
compatible = "brcm,bcm2835-virtgpio";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
firmware = <&firmware>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&fb {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&spi0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
|
||||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
|
||||||
|
|
||||||
spidev0: spidev@0{
|
|
||||||
compatible = "spidev";
|
|
||||||
reg = <0>; /* CE0 */
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
spi-max-frequency = <500000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
spidev1: spidev@1{
|
|
||||||
compatible = "spidev";
|
|
||||||
reg = <1>; /* CE1 */
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
spi-max-frequency = <500000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2c0_pins>;
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2c1_pins>;
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
clock-frequency = <100000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2s {
|
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&i2s_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&random {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&leds {
|
|
||||||
act_led: act {
|
|
||||||
label = "led0";
|
|
||||||
linux,default-trigger = "mmc0";
|
|
||||||
gpios = <&virtgpio 0 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&hdmi {
|
|
||||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&audio {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&audio_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/ {
|
|
||||||
__overrides__ {
|
|
||||||
uart0 = <&uart0>,"status";
|
|
||||||
uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
|
|
||||||
uart1 = <&uart1>,"status";
|
|
||||||
i2s = <&i2s>,"status";
|
|
||||||
spi = <&spi0>,"status";
|
|
||||||
i2c0 = <&i2c0>,"status";
|
|
||||||
i2c1 = <&i2c1>,"status";
|
|
||||||
i2c2_iknowwhatimdoing = <&i2c2>,"status";
|
|
||||||
i2c0_baudrate = <&i2c0>,"clock-frequency:0";
|
|
||||||
i2c1_baudrate = <&i2c1>,"clock-frequency:0";
|
|
||||||
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
|
|
||||||
core_freq = <&clk_core>,"clock-frequency:0";
|
|
||||||
|
|
||||||
act_led_gpio = <&act_led>,"gpios:4";
|
|
||||||
act_led_activelow = <&act_led>,"gpios:8";
|
|
||||||
act_led_trigger = <&act_led>,"linux,default-trigger";
|
|
||||||
|
|
||||||
audio = <&audio>,"status";
|
|
||||||
watchdog = <&watchdog>,"status";
|
|
||||||
random = <&random>,"status";
|
|
||||||
sd_overclock = <&sdhost>,"brcm,overclock-50:0";
|
|
||||||
sd_force_pio = <&sdhost>,"brcm,force-pio?";
|
|
||||||
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
|
|
||||||
sd_debug = <&sdhost>,"brcm,debug";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
#include "bcm2708_common.dtsi"
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "brcm,bcm2710","brcm,bcm2709";
|
|
||||||
model = "BCM2710";
|
|
||||||
|
|
||||||
chosen {
|
|
||||||
/* No padding required - the boot loader can do that. */
|
|
||||||
bootargs = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
soc {
|
|
||||||
ranges = <0x7e000000 0x3f000000 0x01000000>,
|
|
||||||
<0x40000000 0x40000000 0x00040000>;
|
|
||||||
|
|
||||||
local_intc: local_intc {
|
|
||||||
compatible = "brcm,bcm2836-l1-intc";
|
|
||||||
reg = <0x40000000 0x100>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <1>;
|
|
||||||
interrupt-parent = <&local_intc>;
|
|
||||||
};
|
|
||||||
|
|
||||||
arm-pmu {
|
|
||||||
compatible = "arm,cortex-a7-pmu";
|
|
||||||
interrupt-parent = <&local_intc>;
|
|
||||||
interrupts = <9>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpiomem {
|
|
||||||
compatible = "brcm,bcm2835-gpiomem";
|
|
||||||
reg = <0x7e200000 0x1000>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
timer {
|
|
||||||
compatible = "arm,armv7-timer";
|
|
||||||
clock-frequency = <19200000>;
|
|
||||||
interrupt-parent = <&local_intc>;
|
|
||||||
interrupts = <0>, // PHYS_SECURE_PPI
|
|
||||||
<1>, // PHYS_NONSECURE_PPI
|
|
||||||
<3>, // VIRT_PPI
|
|
||||||
<2>; // HYP_PPI
|
|
||||||
always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
syscon@40000000 {
|
|
||||||
compatible = "brcm,bcm2836-arm-local", "syscon";
|
|
||||||
reg = <0x40000000 0x100>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cpus: cpus {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
v7_cpu0: cpu@0 {
|
|
||||||
device_type = "cpu";
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <0x000>;
|
|
||||||
clock-frequency = <800000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
v7_cpu1: cpu@1 {
|
|
||||||
device_type = "cpu";
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <0x001>;
|
|
||||||
clock-frequency = <800000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
v7_cpu2: cpu@2 {
|
|
||||||
device_type = "cpu";
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <0x002>;
|
|
||||||
clock-frequency = <800000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
v7_cpu3: cpu@3 {
|
|
||||||
device_type = "cpu";
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <0x003>;
|
|
||||||
clock-frequency = <800000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
__overrides__ {
|
|
||||||
arm_freq = <&v7_cpu0>, "clock-frequency:0",
|
|
||||||
<&v7_cpu1>, "clock-frequency:0",
|
|
||||||
<&v7_cpu2>, "clock-frequency:0",
|
|
||||||
<&v7_cpu3>, "clock-frequency:0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&watchdog {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&intc {
|
|
||||||
compatible = "brcm,bcm2836-armctrl-ic";
|
|
||||||
interrupt-parent = <&local_intc>;
|
|
||||||
interrupts = <8>;
|
|
||||||
};
|
|
||||||
@@ -1497,16 +1497,6 @@
|
|||||||
0x48485200 0x2E00>;
|
0x48485200 0x2E00>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
/*
|
|
||||||
* Do not allow gating of cpsw clock as workaround
|
|
||||||
* for errata i877. Keeping internal clock disabled
|
|
||||||
* causes the device switching characteristics
|
|
||||||
* to degrade over time and eventually fail to meet
|
|
||||||
* the data manual delay time/skew specs.
|
|
||||||
*/
|
|
||||||
ti,no-idle;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rx_thresh_pend
|
* rx_thresh_pend
|
||||||
* rx_pend
|
* rx_pend
|
||||||
|
|||||||
@@ -298,8 +298,6 @@
|
|||||||
compatible = "maxim,max8997-pmic";
|
compatible = "maxim,max8997-pmic";
|
||||||
|
|
||||||
reg = <0x66>;
|
reg = <0x66>;
|
||||||
interrupt-parent = <&gpx0>;
|
|
||||||
interrupts = <7 0>;
|
|
||||||
|
|
||||||
max8997,pmic-buck1-uses-gpio-dvs;
|
max8997,pmic-buck1-uses-gpio-dvs;
|
||||||
max8997,pmic-buck2-uses-gpio-dvs;
|
max8997,pmic-buck2-uses-gpio-dvs;
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
&fec {
|
&fec {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii";
|
||||||
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
|
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
&fec {
|
&fec {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii";
|
||||||
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
&fec {
|
&fec {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii";
|
||||||
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
&fec {
|
&fec {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii";
|
||||||
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
&fec {
|
&fec {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii";
|
||||||
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
phy-reset-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -113,14 +113,14 @@
|
|||||||
&clks {
|
&clks {
|
||||||
assigned-clocks = <&clks IMX6QDL_PLL4_BYPASS_SRC>,
|
assigned-clocks = <&clks IMX6QDL_PLL4_BYPASS_SRC>,
|
||||||
<&clks IMX6QDL_PLL4_BYPASS>,
|
<&clks IMX6QDL_PLL4_BYPASS>,
|
||||||
|
<&clks IMX6QDL_CLK_PLL4_POST_DIV>,
|
||||||
<&clks IMX6QDL_CLK_LDB_DI0_SEL>,
|
<&clks IMX6QDL_CLK_LDB_DI0_SEL>,
|
||||||
<&clks IMX6QDL_CLK_LDB_DI1_SEL>,
|
<&clks IMX6QDL_CLK_LDB_DI1_SEL>;
|
||||||
<&clks IMX6QDL_CLK_PLL4_POST_DIV>;
|
|
||||||
assigned-clock-parents = <&clks IMX6QDL_CLK_LVDS2_IN>,
|
assigned-clock-parents = <&clks IMX6QDL_CLK_LVDS2_IN>,
|
||||||
<&clks IMX6QDL_PLL4_BYPASS_SRC>,
|
<&clks IMX6QDL_PLL4_BYPASS_SRC>,
|
||||||
<&clks IMX6QDL_CLK_PLL3_USB_OTG>,
|
<&clks IMX6QDL_CLK_PLL3_USB_OTG>,
|
||||||
<&clks IMX6QDL_CLK_PLL3_USB_OTG>;
|
<&clks IMX6QDL_CLK_PLL3_USB_OTG>;
|
||||||
assigned-clock-rates = <0>, <0>, <0>, <0>, <24576000>;
|
assigned-clock-rates = <0>, <0>, <24576000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&ecspi1 {
|
&ecspi1 {
|
||||||
|
|||||||
@@ -122,7 +122,6 @@
|
|||||||
interrupt-parent = <&gpio5>;
|
interrupt-parent = <&gpio5>;
|
||||||
interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
|
interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
|
||||||
ref-clock-frequency = <26000000>;
|
ref-clock-frequency = <26000000>;
|
||||||
tcxo-clock-frequency = <26000000>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -189,7 +189,3 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart3 {
|
|
||||||
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
|
|
||||||
&omap4_pmx_core OMAP4_UART3_RX>;
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -130,16 +130,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio8 {
|
|
||||||
/* TI trees use GPIO instead of msecure, see also muxing */
|
|
||||||
p234 {
|
|
||||||
gpio-hog;
|
|
||||||
gpios = <10 GPIO_ACTIVE_HIGH>;
|
|
||||||
output-high;
|
|
||||||
line-name = "gpio8_234/msecure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&omap5_pmx_core {
|
&omap5_pmx_core {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <
|
pinctrl-0 = <
|
||||||
@@ -223,13 +213,6 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* TI trees use GPIO mode; msecure mode does not work reliably? */
|
|
||||||
palmas_msecure_pins: palmas_msecure_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
OMAP5_IOPAD(0x180, PIN_OUTPUT | MUX_MODE6) /* gpio8_234 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
usbhost_pins: pinmux_usbhost_pins {
|
usbhost_pins: pinmux_usbhost_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x84 (PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */
|
0x84 (PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */
|
||||||
@@ -295,12 +278,6 @@
|
|||||||
&usbhost_wkup_pins
|
&usbhost_wkup_pins
|
||||||
>;
|
>;
|
||||||
|
|
||||||
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
|
usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x1A (PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
|
0x1A (PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
|
||||||
@@ -368,8 +345,6 @@
|
|||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
ti,system-power-controller;
|
ti,system-power-controller;
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&palmas_sys_nirq_pins &palmas_msecure_pins>;
|
|
||||||
|
|
||||||
extcon_usb3: palmas_usb {
|
extcon_usb3: palmas_usb {
|
||||||
compatible = "ti,palmas-usb-vid";
|
compatible = "ti,palmas-usb-vid";
|
||||||
@@ -383,14 +358,6 @@
|
|||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
rtc {
|
|
||||||
compatible = "ti,palmas-rtc";
|
|
||||||
interrupt-parent = <&palmas>;
|
|
||||||
interrupts = <8 IRQ_TYPE_NONE>;
|
|
||||||
ti,backup-battery-chargeable;
|
|
||||||
ti,backup-battery-charge-high-current;
|
|
||||||
};
|
|
||||||
|
|
||||||
palmas_pmic {
|
palmas_pmic {
|
||||||
compatible = "ti,palmas-pmic";
|
compatible = "ti,palmas-pmic";
|
||||||
interrupt-parent = <&palmas>;
|
interrupt-parent = <&palmas>;
|
||||||
|
|||||||
@@ -12,101 +12,65 @@ ifeq ($(CONFIG_ARCH_BCM2835),y)
|
|||||||
RPI_DT_OVERLAYS=y
|
RPI_DT_OVERLAYS=y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += adau1977-adc.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += ads1015.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += at86rf233-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += dht11-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += enc28j60-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += gpio-ir-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += gpio-poweroff-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hifiberry-amp-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hifiberry-dac-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hifiberry-dacplus-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dpi18.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += enc28j60.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += i2c-gpio-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += gpio-ir.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += gpio-poweroff.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hifiberry-amp.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += mcp2515-can1-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += piscreen2r-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c-mux.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += pitft28-capacitive-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c-pwm-pca9685a.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c-rtc.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c0-bcm2708.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2c1-bcm2708.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += pwm-2chan-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2s-gpio28-31.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += raspidac3-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += i2s-mmap.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-backlight-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += iqaudio-dac.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += iqaudio-dacplus.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += iqaudio-digi-wm8804-audio.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-ft5406-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += justboom-dac.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-proto-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += rpi-sense-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += sdhost-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += sdio-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += smi-dev-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += smi-nand-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += smi-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += spi-gpio35-39-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += mz61581.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += tinylcd35-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pi3-act-led.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += uart1-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pi3-disable-bt.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += vc4-kms-v3d-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pi3-miniuart-bt.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += vga666-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += piscreen.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dtbo
|
dtb-$(RPI_DT_OVERLAYS) += w1-gpio-pullup-overlay.dtb
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pps-gpio.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pwm.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += pwm-2chan.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += qca7000.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += raspidac3.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-backlight.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-dac.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-display.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-ft5406.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sdio-1bit.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += sdtweak.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += smi.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += smi-dev.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += smi-nand.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi-gpio35-39.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi-rtc.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi0-hw-cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi1-1cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi1-2cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi1-3cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi2-1cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi2-2cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += spi2-3cs.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += tinylcd35.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += uart1.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += vc4-fkms-v3d.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += vc4-kms-v3d.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += vga666.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += w1-gpio.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += w1-gpio-pullup.dtbo
|
|
||||||
dtbo-$(RPI_DT_OVERLAYS) += wittypi.dtbo
|
|
||||||
|
|
||||||
targets += dtbs dtbs_install
|
targets += dtbs dtbs_install
|
||||||
targets += $(dtbo-y)
|
targets += $(dtb-y)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
always := $(dtbo-y)
|
always := $(dtb-y)
|
||||||
clean-files := *.dtbo
|
clean-files := *.dtb
|
||||||
|
|
||||||
|
# Enable fixups to support overlays on BCM2708 platforms
|
||||||
|
ifeq ($(RPI_DT_OVERLAYS),y)
|
||||||
|
DTC_FLAGS ?= -@
|
||||||
|
endif
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ have its contents deleted (or commented out).
|
|||||||
Using Overlays
|
Using Overlays
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Overlays are loaded using the "dtoverlay" directive. As an example, consider
|
Overlays are loaded using the "dtoverlay" directive. As an example, consider the
|
||||||
the popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
|
popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
|
||||||
pre-DT world this would be loaded from /etc/modules, with an explicit
|
pre-DT world this would be loaded from /etc/modules, with an explicit
|
||||||
"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
|
"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
|
||||||
this becomes a line in config.txt:
|
this becomes a line in config.txt:
|
||||||
@@ -110,23 +110,10 @@ Params:
|
|||||||
(default "off")
|
(default "off")
|
||||||
|
|
||||||
random Set to "on" to enable the hardware random
|
random Set to "on" to enable the hardware random
|
||||||
number generator (default "on")
|
number generator (default "off")
|
||||||
|
|
||||||
sd_overclock Clock (in MHz) to use when the MMC framework
|
|
||||||
requests 50MHz
|
|
||||||
|
|
||||||
sd_force_pio Disable DMA support for SD driver (default off)
|
|
||||||
|
|
||||||
sd_pio_limit Number of blocks above which to use DMA for
|
|
||||||
SD card (default 1)
|
|
||||||
|
|
||||||
sd_debug Enable debug output from SD driver (default off)
|
|
||||||
|
|
||||||
uart0 Set to "off" to disable uart0 (default "on")
|
uart0 Set to "off" to disable uart0 (default "on")
|
||||||
|
|
||||||
uart1 Set to "on" or "off" to enable or disable uart1
|
|
||||||
(default varies)
|
|
||||||
|
|
||||||
watchdog Set to "on" to enable the hardware watchdog
|
watchdog Set to "on" to enable the hardware watchdog
|
||||||
(default "off")
|
(default "off")
|
||||||
|
|
||||||
@@ -136,14 +123,12 @@ Params:
|
|||||||
|
|
||||||
act_led_activelow Set to "on" to invert the sense of the LED
|
act_led_activelow Set to "on" to invert the sense of the LED
|
||||||
(default "off")
|
(default "off")
|
||||||
N.B. For Pi3 see pi3-act-led overlay.
|
|
||||||
|
|
||||||
act_led_gpio Set which GPIO to use for the activity LED
|
act_led_gpio Set which GPIO to use for the activity LED
|
||||||
(in case you want to connect it to an external
|
(in case you want to connect it to an external
|
||||||
device)
|
device)
|
||||||
(default "16" on a non-Plus board, "47" on a
|
(default "16" on a non-Plus board, "47" on a
|
||||||
Plus or Pi 2)
|
Plus or Pi 2)
|
||||||
N.B. For Pi3 see pi3-act-led overlay.
|
|
||||||
|
|
||||||
pwr_led_trigger
|
pwr_led_trigger
|
||||||
pwr_led_activelow
|
pwr_led_activelow
|
||||||
@@ -161,35 +146,6 @@ Params:
|
|||||||
and the other i2c baudrate parameters.
|
and the other i2c baudrate parameters.
|
||||||
|
|
||||||
|
|
||||||
Name: adau1977-adc
|
|
||||||
Info: Overlay for activation of ADAU1977 ADC codec over I2C for control
|
|
||||||
and I2S for data.
|
|
||||||
Load: dtoverlay=adau1977-adc
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: ads1015
|
|
||||||
Info: Overlay for activation of Texas Instruments ADS1015 ADC over I2C
|
|
||||||
Load: dtoverlay=ads1015,<param>=<val>
|
|
||||||
Params: addr I2C bus address of device. Set based on how the
|
|
||||||
addr pin is wired. (default=0x48 assumes addr
|
|
||||||
is pulled to GND)
|
|
||||||
cha_enable Enable virtual channel a. (default=true)
|
|
||||||
cha_cfg Set the configuration for virtual channel a.
|
|
||||||
(default=4 configures this channel for the
|
|
||||||
voltage at A0 with respect to GND)
|
|
||||||
cha_datarate Set the datarate (samples/sec) for this channel.
|
|
||||||
(default=4 sets 1600 sps)
|
|
||||||
cha_gain Set the gain of the Programmable Gain
|
|
||||||
Amplifier for this channel. (default=2 sets the
|
|
||||||
full scale of the channel to 2.048 Volts)
|
|
||||||
|
|
||||||
Channel (ch) parameters can be set for each enabled channel.
|
|
||||||
A maximum of 4 channels can be enabled (letters a thru d).
|
|
||||||
For more information refer to the device datasheet at:
|
|
||||||
http://www.ti.com/lit/ds/symlink/ads1015.pdf
|
|
||||||
|
|
||||||
|
|
||||||
Name: ads7846
|
Name: ads7846
|
||||||
Info: ADS7846 Touch controller
|
Info: ADS7846 Touch controller
|
||||||
Load: dtoverlay=ads7846,<param>=<val>
|
Load: dtoverlay=ads7846,<param>=<val>
|
||||||
@@ -215,26 +171,6 @@ Params: cs SPI bus Chip Select (default 1)
|
|||||||
www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
|
www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
|
||||||
|
|
||||||
|
|
||||||
Name: akkordion-iqdacplus
|
|
||||||
Info: Configures the Digital Dreamtime Akkordion Music Player (based on the
|
|
||||||
OEM IQAudIO DAC+ or DAC Zero module).
|
|
||||||
Load: dtoverlay=akkordion-iqdacplus,<param>=<val>
|
|
||||||
Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
|
||||||
Digital volume control. Enable with
|
|
||||||
dtoverlay=akkordion-iqdacplus,24db_digital_gain
|
|
||||||
(The default behaviour is that the Digital
|
|
||||||
volume control is limited to a maximum of
|
|
||||||
0dB. ie. it can attenuate but not provide
|
|
||||||
gain. For most users, this will be desired
|
|
||||||
as it will prevent clipping. By appending
|
|
||||||
the 24db_digital_gain parameter, the Digital
|
|
||||||
volume control will allow up to 24dB of
|
|
||||||
gain. If this parameter is enabled, it is the
|
|
||||||
responsibility of the user to ensure that
|
|
||||||
the Digital volume control is set to a value
|
|
||||||
that does not result in clipping/distortion!)
|
|
||||||
|
|
||||||
|
|
||||||
Name: at86rf233
|
Name: at86rf233
|
||||||
Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
|
Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver,
|
||||||
connected to spi0.0
|
connected to spi0.0
|
||||||
@@ -242,26 +178,11 @@ Load: dtoverlay=at86rf233,<param>=<val>
|
|||||||
Params: interrupt GPIO used for INT (default 23)
|
Params: interrupt GPIO used for INT (default 23)
|
||||||
reset GPIO used for Reset (default 24)
|
reset GPIO used for Reset (default 24)
|
||||||
sleep GPIO used for Sleep (default 25)
|
sleep GPIO used for Sleep (default 25)
|
||||||
speed SPI bus speed in Hz (default 3000000)
|
speed SPI bus speed in Hz (default 6000000)
|
||||||
trim Fine tuning of the internal capacitance
|
trim Fine tuning of the internal capacitance
|
||||||
arrays (0=+0pF, 15=+4.5pF, default 15)
|
arrays (0=+0pF, 15=+4.5pF, default 15)
|
||||||
|
|
||||||
|
|
||||||
Name: audioinjector-wm8731-audio
|
|
||||||
Info: Configures the audioinjector.net audio add on soundcard
|
|
||||||
Load: dtoverlay=audioinjector-wm8731-audio
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: audremap
|
|
||||||
Info: Switches PWM sound output to pins 12 (Right) & 13 (Left)
|
|
||||||
Load: dtoverlay=audremap,<param>=<val>
|
|
||||||
Params: swap_lr Reverse the channel allocation, which will also
|
|
||||||
swap the audio jack outputs (default off)
|
|
||||||
enable_jack Don't switch off the audio jack output
|
|
||||||
(default off)
|
|
||||||
|
|
||||||
|
|
||||||
Name: bmp085_i2c-sensor
|
Name: bmp085_i2c-sensor
|
||||||
Info: Configures the BMP085/BMP180 digital barometric pressure and temperature
|
Info: Configures the BMP085/BMP180 digital barometric pressure and temperature
|
||||||
sensors from Bosch Sensortec
|
sensors from Bosch Sensortec
|
||||||
@@ -277,49 +198,6 @@ Params: gpiopin GPIO connected to the sensor's DATA output.
|
|||||||
(default 4)
|
(default 4)
|
||||||
|
|
||||||
|
|
||||||
Name: dionaudio-loco
|
|
||||||
Info: Configures the Dion Audio LOCO DAC-AMP
|
|
||||||
Load: dtoverlay=dionaudio-loco
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: dpi18
|
|
||||||
Info: Overlay for a generic 18-bit DPI display
|
|
||||||
This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output
|
|
||||||
2-3 seconds after the kernel has started.
|
|
||||||
Load: dtoverlay=dpi18
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: dpi24
|
|
||||||
Info: Overlay for a generic 24-bit DPI display
|
|
||||||
This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output
|
|
||||||
2-3 seconds after the kernel has started.
|
|
||||||
Load: dtoverlay=dpi24
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: dwc-otg
|
|
||||||
Info: Selects the dwc_otg USB controller driver which has fiq support. This
|
|
||||||
is the default on all except the Pi Zero which defaults to dwc2.
|
|
||||||
Load: dtoverlay=dwc-otg
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: dwc2
|
|
||||||
Info: Selects the dwc2 USB controller driver
|
|
||||||
Load: dtoverlay=dwc2,<param>=<val>
|
|
||||||
Params: dr_mode Dual role mode: "host", "peripheral" or "otg"
|
|
||||||
|
|
||||||
g-rx-fifo-size Size of rx fifo size in gadget mode
|
|
||||||
|
|
||||||
g-np-tx-fifo-size Size of non-periodic tx fifo size in gadget
|
|
||||||
mode
|
|
||||||
|
|
||||||
g-tx-fifo-size Size of periodic tx fifo per endpoint
|
|
||||||
(except ep0) in gadget mode
|
|
||||||
|
|
||||||
|
|
||||||
[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
|
[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
|
||||||
|
|
||||||
|
|
||||||
@@ -348,7 +226,7 @@ Params: gpio_pin Input pin number. Default is 18.
|
|||||||
|
|
||||||
|
|
||||||
Name: gpio-poweroff
|
Name: gpio-poweroff
|
||||||
Info: Drives a GPIO high or low on poweroff (including halt)
|
Info: Drives a GPIO high or low on reboot
|
||||||
Load: dtoverlay=gpio-poweroff,<param>=<val>
|
Load: dtoverlay=gpio-poweroff,<param>=<val>
|
||||||
Params: gpiopin GPIO for signalling (default 26)
|
Params: gpiopin GPIO for signalling (default 26)
|
||||||
|
|
||||||
@@ -374,34 +252,13 @@ Params: <None>
|
|||||||
|
|
||||||
Name: hifiberry-dacplus
|
Name: hifiberry-dacplus
|
||||||
Info: Configures the HifiBerry DAC+ audio card
|
Info: Configures the HifiBerry DAC+ audio card
|
||||||
Load: dtoverlay=hifiberry-dacplus,<param>=<val>
|
Load: dtoverlay=hifiberry-dacplus
|
||||||
Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
|
||||||
Digital volume control. Enable with
|
|
||||||
"dtoverlay=hifiberry-dacplus,24db_digital_gain"
|
|
||||||
(The default behaviour is that the Digital
|
|
||||||
volume control is limited to a maximum of
|
|
||||||
0dB. ie. it can attenuate but not provide
|
|
||||||
gain. For most users, this will be desired
|
|
||||||
as it will prevent clipping. By appending
|
|
||||||
the 24dB_digital_gain parameter, the Digital
|
|
||||||
volume control will allow up to 24dB of
|
|
||||||
gain. If this parameter is enabled, it is the
|
|
||||||
responsibility of the user to ensure that
|
|
||||||
the Digital volume control is set to a value
|
|
||||||
that does not result in clipping/distortion!)
|
|
||||||
slave Force DAC+ Pro into slave mode, using Pi as
|
|
||||||
master for bit clock and frame clock.
|
|
||||||
|
|
||||||
|
|
||||||
Name: hifiberry-digi
|
|
||||||
Info: Configures the HifiBerry Digi and Digi+ audio card
|
|
||||||
Load: dtoverlay=hifiberry-digi
|
|
||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
Name: hifiberry-digi-pro
|
Name: hifiberry-digi
|
||||||
Info: Configures the HifiBerry Digi+ Pro audio card
|
Info: Configures the HifiBerry Digi audio card
|
||||||
Load: dtoverlay=hifiberry-digi-pro
|
Load: dtoverlay=hifiberry-digi
|
||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
@@ -454,38 +311,13 @@ Params: i2c_gpio_sda GPIO used for I2C data (default "23")
|
|||||||
(default "2" = ~100kHz)
|
(default "2" = ~100kHz)
|
||||||
|
|
||||||
|
|
||||||
Name: i2c-mux
|
|
||||||
Info: Adds support for a number of I2C bus multiplexers on i2c_arm
|
|
||||||
Load: dtoverlay=i2c-mux,<param>=<val>
|
|
||||||
Params: pca9542 Select the NXP PCA9542 device
|
|
||||||
|
|
||||||
pca9545 Select the NXP PCA9545 device
|
|
||||||
|
|
||||||
pca9548 Select the NXP PCA9548 device
|
|
||||||
|
|
||||||
addr Change I2C address of the device (default 0x70)
|
|
||||||
|
|
||||||
|
|
||||||
[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2c-pwm-pca9685a
|
|
||||||
Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
|
|
||||||
Load: dtoverlay=i2c-pwm-pca9685a,<param>=<val>
|
|
||||||
Params: addr I2C address of PCA9685A (default 0x40)
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2c-rtc
|
Name: i2c-rtc
|
||||||
Info: Adds support for a number of I2C Real Time Clock devices
|
Info: Adds support for a number of I2C Real Time Clock devices
|
||||||
Load: dtoverlay=i2c-rtc,<param>=<val>
|
Load: dtoverlay=i2c-rtc,<param>=<val>
|
||||||
Params: ds1307 Select the DS1307 device
|
Params: ds1307 Select the DS1307 device
|
||||||
|
|
||||||
ds1339 Select the DS1339 device
|
|
||||||
|
|
||||||
ds3231 Select the DS3231 device
|
ds3231 Select the DS3231 device
|
||||||
|
|
||||||
mcp7940x Select the MCP7940x device
|
|
||||||
|
|
||||||
mcp7941x Select the MCP7941x device
|
mcp7941x Select the MCP7941x device
|
||||||
|
|
||||||
pcf2127 Select the PCF2127 device
|
pcf2127 Select the PCF2127 device
|
||||||
@@ -494,38 +326,6 @@ Params: ds1307 Select the DS1307 device
|
|||||||
|
|
||||||
pcf8563 Select the PCF8563 device
|
pcf8563 Select the PCF8563 device
|
||||||
|
|
||||||
trickle-resistor-ohms Resistor value for trickle charge (DS1339-only)
|
|
||||||
|
|
||||||
wakeup-source Specify that the RTC can be used as a wakeup
|
|
||||||
source
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2c0-bcm2708
|
|
||||||
Info: Enable the i2c_bcm2708 driver for the i2c0 bus. Not all pin combinations
|
|
||||||
are usable on all platforms.
|
|
||||||
Load: dtoverlay=i2c0-bcm2708,<param>=<val>
|
|
||||||
Params: sda0_pin GPIO pin for SDA0 (deprecated - use pins_*)
|
|
||||||
scl0_pin GPIO pin for SCL0 (deprecated - use pins_*)
|
|
||||||
pins_0_1 Use pins 0 and 1 (default)
|
|
||||||
pins_28_29 Use pins 28 and 29
|
|
||||||
pins_44_45 Use pins 44 and 45
|
|
||||||
pins_46_47 Use pins 46 and 47
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2c1-bcm2708
|
|
||||||
Info: Enable the i2c_bcm2708 driver for the i2c1 bus
|
|
||||||
Load: dtoverlay=i2c1-bcm2708,<param>=<val>
|
|
||||||
Params: sda1_pin GPIO pin for SDA1 (2 or 44 - default 2)
|
|
||||||
scl1_pin GPIO pin for SCL1 (3 or 45 - default 3)
|
|
||||||
pin_func Alternative pin function (4 (alt0), 6 (alt2) -
|
|
||||||
default 4)
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2s-gpio28-31
|
|
||||||
Info: move I2S function block to GPIO 28 to 31
|
|
||||||
Load: dtoverlay=i2s-gpio28-31
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: i2s-mmap
|
Name: i2s-mmap
|
||||||
Info: Enables mmap support in the bcm2708-i2s driver
|
Info: Enables mmap support in the bcm2708-i2s driver
|
||||||
@@ -535,78 +335,13 @@ Params: <None>
|
|||||||
|
|
||||||
Name: iqaudio-dac
|
Name: iqaudio-dac
|
||||||
Info: Configures the IQaudio DAC audio card
|
Info: Configures the IQaudio DAC audio card
|
||||||
Load: dtoverlay=iqaudio-dac,<param>
|
Load: dtoverlay=iqaudio-dac
|
||||||
Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
Params: <None>
|
||||||
Digital volume control. Enable with
|
|
||||||
"dtoverlay=iqaudio-dac,24db_digital_gain"
|
|
||||||
(The default behaviour is that the Digital
|
|
||||||
volume control is limited to a maximum of
|
|
||||||
0dB. ie. it can attenuate but not provide
|
|
||||||
gain. For most users, this will be desired
|
|
||||||
as it will prevent clipping. By appending
|
|
||||||
the 24db_digital_gain parameter, the Digital
|
|
||||||
volume control will allow up to 24dB of
|
|
||||||
gain. If this parameter is enabled, it is the
|
|
||||||
responsibility of the user to ensure that
|
|
||||||
the Digital volume control is set to a value
|
|
||||||
that does not result in clipping/distortion!)
|
|
||||||
|
|
||||||
|
|
||||||
Name: iqaudio-dacplus
|
Name: iqaudio-dacplus
|
||||||
Info: Configures the IQaudio DAC+ audio card
|
Info: Configures the IQaudio DAC+ audio card
|
||||||
Load: dtoverlay=iqaudio-dacplus,<param>=<val>
|
Load: dtoverlay=iqaudio-dacplus
|
||||||
Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
|
||||||
Digital volume control. Enable with
|
|
||||||
"dtoverlay=iqaudio-dacplus,24db_digital_gain"
|
|
||||||
(The default behaviour is that the Digital
|
|
||||||
volume control is limited to a maximum of
|
|
||||||
0dB. ie. it can attenuate but not provide
|
|
||||||
gain. For most users, this will be desired
|
|
||||||
as it will prevent clipping. By appending
|
|
||||||
the 24db_digital_gain parameter, the Digital
|
|
||||||
volume control will allow up to 24dB of
|
|
||||||
gain. If this parameter is enabled, it is the
|
|
||||||
responsibility of the user to ensure that
|
|
||||||
the Digital volume control is set to a value
|
|
||||||
that does not result in clipping/distortion!)
|
|
||||||
auto_mute_amp If specified, unmute/mute the IQaudIO amp when
|
|
||||||
starting/stopping audio playback.
|
|
||||||
unmute_amp If specified, unmute the IQaudIO amp once when
|
|
||||||
the DAC driver module loads.
|
|
||||||
|
|
||||||
|
|
||||||
Name: iqaudio-digi-wm8804-audio
|
|
||||||
Info: Configures the IQAudIO Digi WM8804 audio card
|
|
||||||
Load: dtoverlay=iqaudio-digi-wm8804-audio,<param>=<val>
|
|
||||||
Params: card_name Override the default, "IQAudIODigi", card name.
|
|
||||||
dai_name Override the default, "IQAudIO Digi", dai name.
|
|
||||||
dai_stream_name Override the default, "IQAudIO Digi HiFi",
|
|
||||||
dai stream name.
|
|
||||||
|
|
||||||
|
|
||||||
Name: justboom-dac
|
|
||||||
Info: Configures the JustBoom DAC HAT, Amp HAT, DAC Zero and Amp Zero audio
|
|
||||||
cards
|
|
||||||
Load: dtoverlay=justboom-dac,<param>=<val>
|
|
||||||
Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec
|
|
||||||
Digital volume control. Enable with
|
|
||||||
"dtoverlay=justboom-dac,24db_digital_gain"
|
|
||||||
(The default behaviour is that the Digital
|
|
||||||
volume control is limited to a maximum of
|
|
||||||
0dB. ie. it can attenuate but not provide
|
|
||||||
gain. For most users, this will be desired
|
|
||||||
as it will prevent clipping. By appending
|
|
||||||
the 24dB_digital_gain parameter, the Digital
|
|
||||||
volume control will allow up to 24dB of
|
|
||||||
gain. If this parameter is enabled, it is the
|
|
||||||
responsibility of the user to ensure that
|
|
||||||
the Digital volume control is set to a value
|
|
||||||
that does not result in clipping/distortion!)
|
|
||||||
|
|
||||||
|
|
||||||
Name: justboom-digi
|
|
||||||
Info: Configures the JustBoom Digi HAT and Digi Zero audio cards
|
|
||||||
Load: dtoverlay=justboom-digi
|
|
||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
@@ -636,39 +371,6 @@ Params: gpio_out_pin GPIO for output (default "17")
|
|||||||
(default "off")
|
(default "off")
|
||||||
|
|
||||||
|
|
||||||
Name: mcp23017
|
|
||||||
Info: Configures the MCP23017 I2C GPIO expander
|
|
||||||
Load: dtoverlay=mcp23017,<param>=<val>
|
|
||||||
Params: gpiopin Gpio pin connected to the INTA output of the
|
|
||||||
MCP23017 (default: 4)
|
|
||||||
|
|
||||||
addr I2C address of the MCP23017 (default: 0x20)
|
|
||||||
|
|
||||||
|
|
||||||
Name: mcp23s17
|
|
||||||
Info: Configures the MCP23S08/17 SPI GPIO expanders.
|
|
||||||
If devices are present on SPI1 or SPI2, those interfaces must be enabled
|
|
||||||
with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
|
|
||||||
If interrupts are enabled for a device on a given CS# on a SPI bus, that
|
|
||||||
device must be the only one present on that SPI bus/CS#.
|
|
||||||
Load: dtoverlay=mcp23s17,<param>=<val>
|
|
||||||
Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
|
|
||||||
devices present on SPI<n>, CS#<m>
|
|
||||||
|
|
||||||
s17-spi<n>-<m>-present 8-bit integer, bitmap indicating MCP23S17
|
|
||||||
devices present on SPI<n>, CS#<m>
|
|
||||||
|
|
||||||
s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
|
|
||||||
MCP23S08 device on SPI<n>, CS#<m>, specifies
|
|
||||||
the GPIO pin to which INT output of MCP23S08
|
|
||||||
is connected.
|
|
||||||
|
|
||||||
s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
|
|
||||||
single MCP23S17 device on SPI<n>, CS#<m>,
|
|
||||||
specifies the GPIO pin to which either INTA
|
|
||||||
or INTB output of MCP23S17 is connected.
|
|
||||||
|
|
||||||
|
|
||||||
Name: mcp2515-can0
|
Name: mcp2515-can0
|
||||||
Info: Configures the MCP2515 CAN controller on spi0.0
|
Info: Configures the MCP2515 CAN controller on spi0.0
|
||||||
Load: dtoverlay=mcp2515-can0,<param>=<val>
|
Load: dtoverlay=mcp2515-can0,<param>=<val>
|
||||||
@@ -694,6 +396,7 @@ Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
|
|||||||
Load: dtoverlay=mmc,<param>=<val>
|
Load: dtoverlay=mmc,<param>=<val>
|
||||||
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
||||||
requests 50MHz
|
requests 50MHz
|
||||||
|
force_pio Disable DMA support
|
||||||
|
|
||||||
|
|
||||||
Name: mz61581
|
Name: mz61581
|
||||||
@@ -721,45 +424,6 @@ Params: speed Display SPI bus speed
|
|||||||
[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
|
[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
|
||||||
|
|
||||||
|
|
||||||
Name: pi3-act-led
|
|
||||||
Info: Pi3 uses a GPIO expander to drive the LEDs which can only be accessed
|
|
||||||
from the VPU. There is a special driver for this with a separate DT
|
|
||||||
node, which has the unfortunate consequence of breaking the
|
|
||||||
act_led_gpio and act_led_activelow dtparams.
|
|
||||||
This overlay changes the GPIO controller back to the standard one and
|
|
||||||
restores the dtparams.
|
|
||||||
Load: dtoverlay=pi3-act-led,<param>=<val>
|
|
||||||
Params: activelow Set to "on" to invert the sense of the LED
|
|
||||||
(default "off")
|
|
||||||
|
|
||||||
gpio Set which GPIO to use for the activity LED
|
|
||||||
(in case you want to connect it to an external
|
|
||||||
device)
|
|
||||||
REQUIRED
|
|
||||||
|
|
||||||
|
|
||||||
Name: pi3-disable-bt
|
|
||||||
Info: Disable Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15
|
|
||||||
N.B. To disable the systemd service that initialises the modem so it
|
|
||||||
doesn't use the UART, use 'sudo systemctl disable hciuart'.
|
|
||||||
Load: dtoverlay=pi3-disable-bt
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: pi3-miniuart-bt
|
|
||||||
Info: Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
|
|
||||||
UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
|
|
||||||
usable baudrate.
|
|
||||||
N.B. It is also necessary to edit /lib/systemd/system/hciuart.service
|
|
||||||
and replace ttyAMA0 with ttyS0, unless you have a system with udev rules
|
|
||||||
that create /dev/serial0 and /dev/serial1, in which case use
|
|
||||||
/dev/serial1 instead because it will always be correct. Furthermore,
|
|
||||||
you must also set core_freq=250 in config.txt or the miniuart will not
|
|
||||||
work.
|
|
||||||
Load: dtoverlay=pi3-miniuart-bt
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: piscreen
|
Name: piscreen
|
||||||
Info: PiScreen display by OzzMaker.com
|
Info: PiScreen display by OzzMaker.com
|
||||||
Load: dtoverlay=piscreen,<param>=<val>
|
Load: dtoverlay=piscreen,<param>=<val>
|
||||||
@@ -788,18 +452,6 @@ Params: speed Display SPI bus speed
|
|||||||
xohms Touchpanel sensitivity (X-plate resistance)
|
xohms Touchpanel sensitivity (X-plate resistance)
|
||||||
|
|
||||||
|
|
||||||
Name: pitft22
|
|
||||||
Info: Adafruit PiTFT 2.2" screen
|
|
||||||
Load: dtoverlay=pitft22,<param>=<val>
|
|
||||||
Params: speed Display SPI bus speed
|
|
||||||
|
|
||||||
rotate Display rotation {0,90,180,270}
|
|
||||||
|
|
||||||
fps Delay between frame updates
|
|
||||||
|
|
||||||
debug Debug output level {0-7}
|
|
||||||
|
|
||||||
|
|
||||||
Name: pitft28-capacitive
|
Name: pitft28-capacitive
|
||||||
Info: Adafruit PiTFT 2.8" capacitive touch screen
|
Info: Adafruit PiTFT 2.8" capacitive touch screen
|
||||||
Load: dtoverlay=pitft28-capacitive,<param>=<val>
|
Load: dtoverlay=pitft28-capacitive,<param>=<val>
|
||||||
@@ -838,8 +490,6 @@ Name: pps-gpio
|
|||||||
Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
|
Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
|
||||||
Load: dtoverlay=pps-gpio,<param>=<val>
|
Load: dtoverlay=pps-gpio,<param>=<val>
|
||||||
Params: gpiopin Input GPIO (default "18")
|
Params: gpiopin Input GPIO (default "18")
|
||||||
assert_falling_edge When present, assert is indicated by a falling
|
|
||||||
edge, rather than by a rising edge
|
|
||||||
|
|
||||||
|
|
||||||
Name: pwm
|
Name: pwm
|
||||||
@@ -882,14 +532,6 @@ Params: pin Output pin (default 18) - see table
|
|||||||
clock PWM clock frequency (informational)
|
clock PWM clock frequency (informational)
|
||||||
|
|
||||||
|
|
||||||
Name: qca7000
|
|
||||||
Info: I2SE's Evaluation Board for PLC Stamp micro
|
|
||||||
Load: dtoverlay=qca7000,<param>=<val>
|
|
||||||
Params: int_pin GPIO pin for interrupt signal (default 23)
|
|
||||||
|
|
||||||
speed SPI bus speed (default 12 MHz)
|
|
||||||
|
|
||||||
|
|
||||||
Name: raspidac3
|
Name: raspidac3
|
||||||
Info: Configures the RaspiDAV Rev.3x audio card
|
Info: Configures the RaspiDAV Rev.3x audio card
|
||||||
Load: dtoverlay=raspidac3
|
Load: dtoverlay=raspidac3
|
||||||
@@ -912,11 +554,14 @@ Name: rpi-display
|
|||||||
Info: RPi-Display - 2.8" Touch Display by Watterott
|
Info: RPi-Display - 2.8" Touch Display by Watterott
|
||||||
Load: dtoverlay=rpi-display,<param>=<val>
|
Load: dtoverlay=rpi-display,<param>=<val>
|
||||||
Params: speed Display SPI bus speed
|
Params: speed Display SPI bus speed
|
||||||
|
|
||||||
rotate Display rotation {0,90,180,270}
|
rotate Display rotation {0,90,180,270}
|
||||||
|
|
||||||
fps Delay between frame updates
|
fps Delay between frame updates
|
||||||
|
|
||||||
debug Debug output level {0-7}
|
debug Debug output level {0-7}
|
||||||
|
|
||||||
xohms Touchpanel sensitivity (X-plate resistance)
|
xohms Touchpanel sensitivity (X-plate resistance)
|
||||||
swapxy Swap x and y axis
|
|
||||||
|
|
||||||
|
|
||||||
Name: rpi-ft5406
|
Name: rpi-ft5406
|
||||||
@@ -937,38 +582,8 @@ Load: dtoverlay=rpi-sense
|
|||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
Name: rra-digidac1-wm8741-audio
|
|
||||||
Info: Configures the Red Rocks Audio DigiDAC1 soundcard
|
|
||||||
Load: dtoverlay=rra-digidac1-wm8741-audio
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: sc16is750-i2c
|
|
||||||
Info: Overlay for the NXP SC16IS750 UART with I2C Interface
|
|
||||||
Enables the chip on I2C1 at 0x48. To select another address,
|
|
||||||
please refer to table 10 in reference manual.
|
|
||||||
|
|
||||||
Load: dtoverlay=sc16is750-i2c,<param>=<val>
|
|
||||||
Params: int_pin GPIO used for IRQ (default 24)
|
|
||||||
addr Address (default 0x48)
|
|
||||||
|
|
||||||
|
|
||||||
Name: sc16is752-spi1
|
|
||||||
Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface
|
|
||||||
Enables the chip on SPI1.
|
|
||||||
N.B.: spi1 is only accessible on devices with a 40pin header, eg:
|
|
||||||
A+, B+, Zero and PI2 B; as well as the Compute Module.
|
|
||||||
|
|
||||||
Load: dtoverlay=sc16is752-spi1,<param>=<val>
|
|
||||||
Params: int_pin GPIO used for IRQ (default 24)
|
|
||||||
|
|
||||||
|
|
||||||
Name: sdhost
|
Name: sdhost
|
||||||
Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock.
|
Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock
|
||||||
N.B. This overlay is designed for situations where the mmc driver is
|
|
||||||
the default, so it disables the other (mmc) interface - this will kill
|
|
||||||
WiFi on a Pi3. If this isn't what you want, either use the sdtweak
|
|
||||||
overlay or the new sd_* dtparams of the base DTBs.
|
|
||||||
Load: dtoverlay=sdhost,<param>=<val>
|
Load: dtoverlay=sdhost,<param>=<val>
|
||||||
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
||||||
requests 50MHz
|
requests 50MHz
|
||||||
@@ -985,51 +600,6 @@ Name: sdio
|
|||||||
Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
|
Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
|
||||||
and enables SDIO via GPIOs 22-27.
|
and enables SDIO via GPIOs 22-27.
|
||||||
Load: dtoverlay=sdio,<param>=<val>
|
Load: dtoverlay=sdio,<param>=<val>
|
||||||
Params: overclock_50 SD Clock (in MHz) to use when the MMC framework
|
|
||||||
requests 50MHz
|
|
||||||
|
|
||||||
sdio_overclock SDIO Clock (in MHz) to use when the MMC
|
|
||||||
framework requests 50MHz
|
|
||||||
|
|
||||||
force_pio Disable DMA support (default off)
|
|
||||||
|
|
||||||
pio_limit Number of blocks above which to use DMA
|
|
||||||
(default 1)
|
|
||||||
|
|
||||||
debug Enable debug output (default off)
|
|
||||||
|
|
||||||
poll_once Disable SDIO-device polling every second
|
|
||||||
(default on: polling once at boot-time)
|
|
||||||
|
|
||||||
bus_width Set the SDIO host bus width (default 4 bits)
|
|
||||||
|
|
||||||
|
|
||||||
Name: sdio-1bit
|
|
||||||
Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock,
|
|
||||||
and enables 1-bit SDIO via GPIOs 22-25.
|
|
||||||
Load: dtoverlay=sdio-1bit,<param>=<val>
|
|
||||||
Params: overclock_50 SD Clock (in MHz) to use when the MMC framework
|
|
||||||
requests 50MHz
|
|
||||||
|
|
||||||
sdio_overclock SDIO Clock (in MHz) to use when the MMC
|
|
||||||
framework requests 50MHz
|
|
||||||
|
|
||||||
force_pio Disable DMA support (default off)
|
|
||||||
|
|
||||||
pio_limit Number of blocks above which to use DMA
|
|
||||||
(default 1)
|
|
||||||
|
|
||||||
debug Enable debug output (default off)
|
|
||||||
|
|
||||||
poll_once Disable SDIO-device polling every second
|
|
||||||
(default on: polling once at boot-time)
|
|
||||||
|
|
||||||
|
|
||||||
Name: sdtweak
|
|
||||||
Info: Tunes the bcm2835-sdhost SD/MMC driver
|
|
||||||
N.B. This functionality is now available via the sd_* dtparams in the
|
|
||||||
base DTB.
|
|
||||||
Load: dtoverlay=sdtweak,<param>=<val>
|
|
||||||
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
||||||
requests 50MHz
|
requests 50MHz
|
||||||
|
|
||||||
@@ -1040,6 +610,9 @@ Params: overclock_50 Clock (in MHz) to use when the MMC framework
|
|||||||
|
|
||||||
debug Enable debug output (default off)
|
debug Enable debug output (default off)
|
||||||
|
|
||||||
|
poll_once Disable SDIO-device polling every second
|
||||||
|
(default on: polling once at boot-time)
|
||||||
|
|
||||||
|
|
||||||
Name: smi
|
Name: smi
|
||||||
Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
|
Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
|
||||||
@@ -1065,117 +638,6 @@ Load: dtoverlay=spi-gpio35-39
|
|||||||
Params: <None>
|
Params: <None>
|
||||||
|
|
||||||
|
|
||||||
Name: spi-rtc
|
|
||||||
Info: Adds support for a number of SPI Real Time Clock devices
|
|
||||||
Load: dtoverlay=spi-rtc,<param>=<val>
|
|
||||||
Params: pcf2123 Select the PCF2123 device
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi0-hw-cs
|
|
||||||
Info: Re-enables hardware CS/CE (chip selects) for SPI0
|
|
||||||
Load: dtoverlay=spi0-hw-cs
|
|
||||||
Params: <None>
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi1-1cs
|
|
||||||
Info: Enables spi1 with a single chip select (CS) line and associated spidev
|
|
||||||
dev node. The gpio pin number for the CS line and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi1 is only accessible on devices with a 40pin header, eg:
|
|
||||||
A+, B+, Zero and PI2 B; as well as the Compute Module.
|
|
||||||
Load: dtoverlay=spi1-1cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi1-2cs
|
|
||||||
Info: Enables spi1 with two chip select (CS) lines and associated spidev
|
|
||||||
dev nodes. The gpio pin numbers for the CS lines and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi1 is only accessible on devices with a 40pin header, eg:
|
|
||||||
A+, B+, Zero and PI2 B; as well as the Compute Module.
|
|
||||||
Load: dtoverlay=spi1-2cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
|
|
||||||
cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs1_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.1 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi1-3cs
|
|
||||||
Info: Enables spi1 with three chip select (CS) lines and associated spidev
|
|
||||||
dev nodes. The gpio pin numbers for the CS lines and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi1 is only accessible on devices with a 40pin header, eg:
|
|
||||||
A+, B+, Zero and PI2 B; as well as the Compute Module.
|
|
||||||
Load: dtoverlay=spi1-3cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 18 - BCM SPI1_CE0).
|
|
||||||
cs1_pin GPIO pin for CS1 (default 17 - BCM SPI1_CE1).
|
|
||||||
cs2_pin GPIO pin for CS2 (default 16 - BCM SPI1_CE2).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs1_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.1 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs2_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev1.2 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi2-1cs
|
|
||||||
Info: Enables spi2 with a single chip select (CS) line and associated spidev
|
|
||||||
dev node. The gpio pin number for the CS line and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi2 is only accessible with the Compute Module.
|
|
||||||
Load: dtoverlay=spi2-1cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi2-2cs
|
|
||||||
Info: Enables spi2 with two chip select (CS) lines and associated spidev
|
|
||||||
dev nodes. The gpio pin numbers for the CS lines and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi2 is only accessible with the Compute Module.
|
|
||||||
Load: dtoverlay=spi2-2cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
|
|
||||||
cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs1_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.1 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: spi2-3cs
|
|
||||||
Info: Enables spi2 with three chip select (CS) lines and associated spidev
|
|
||||||
dev nodes. The gpio pin numbers for the CS lines and spidev device node
|
|
||||||
creation are configurable.
|
|
||||||
N.B.: spi2 is only accessible with the Compute Module.
|
|
||||||
Load: dtoverlay=spi2-3cs,<param>=<val>
|
|
||||||
Params: cs0_pin GPIO pin for CS0 (default 43 - BCM SPI2_CE0).
|
|
||||||
cs1_pin GPIO pin for CS1 (default 44 - BCM SPI2_CE1).
|
|
||||||
cs2_pin GPIO pin for CS2 (default 45 - BCM SPI2_CE2).
|
|
||||||
cs0_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.0 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs1_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.1 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
cs2_spidev Set to 'disabled' to stop the creation of a
|
|
||||||
userspace device node /dev/spidev2.2 (default
|
|
||||||
is 'okay' or enabled).
|
|
||||||
|
|
||||||
|
|
||||||
Name: tinylcd35
|
Name: tinylcd35
|
||||||
Info: 3.5" Color TFT Display by www.tinylcd.com
|
Info: 3.5" Color TFT Display by www.tinylcd.com
|
||||||
Options: Touch, RTC, keypad
|
Options: Touch, RTC, keypad
|
||||||
@@ -1215,27 +677,12 @@ Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14)
|
|||||||
rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
|
rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
|
||||||
|
|
||||||
|
|
||||||
Name: vc4-fkms-v3d
|
|
||||||
Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
|
|
||||||
display stack.
|
|
||||||
Load: dtoverlay=vc4-fkms-v3d,<param>
|
|
||||||
Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
|
|
||||||
cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
|
|
||||||
cma-128 CMA is 128MB, 128MB-aligned
|
|
||||||
cma-96 CMA is 96MB, 128MB-aligned
|
|
||||||
cma-64 CMA is 64MB, 64MB-aligned
|
|
||||||
|
|
||||||
|
|
||||||
Name: vc4-kms-v3d
|
Name: vc4-kms-v3d
|
||||||
Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
|
Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
|
||||||
booting to GUI while this overlay is in use will cause interesting
|
booting to GUI while this overlay is in use will cause interesting
|
||||||
lockups.
|
lockups.
|
||||||
Load: dtoverlay=vc4-kms-v3d,<param>
|
Load: dtoverlay=vc4-kms-v3d
|
||||||
Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
|
Params: <None>
|
||||||
cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
|
|
||||||
cma-128 CMA is 128MB, 128MB-aligned
|
|
||||||
cma-96 CMA is 96MB, 128MB-aligned
|
|
||||||
cma-64 CMA is 64MB, 64MB-aligned
|
|
||||||
|
|
||||||
|
|
||||||
Name: vga666
|
Name: vga666
|
||||||
@@ -1268,14 +715,6 @@ Params: gpiopin GPIO for I/O (default "4")
|
|||||||
extpullup GPIO for external pullup (default "5")
|
extpullup GPIO for external pullup (default "5")
|
||||||
|
|
||||||
|
|
||||||
Name: wittypi
|
|
||||||
Info: Configures the wittypi RTC module.
|
|
||||||
Load: dtoverlay=wittypi,<param>=<val>
|
|
||||||
Params: led_gpio GPIO for LED (default "17")
|
|
||||||
led_trigger Choose which activity the LED tracks (default
|
|
||||||
"default-on")
|
|
||||||
|
|
||||||
|
|
||||||
Troubleshooting
|
Troubleshooting
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
// Definitions for ADAU1977 ADC
|
|
||||||
/dts-v1/;
|
|
||||||
/plugin/;
|
|
||||||
|
|
||||||
/ {
|
|
||||||
compatible = "brcm,bcm2708";
|
|
||||||
|
|
||||||
fragment@0 {
|
|
||||||
target = <&soc>;
|
|
||||||
|
|
||||||
__overlay__ {
|
|
||||||
codec_supply: fixedregulator@0 {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "AVDD";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@1 {
|
|
||||||
target = <&i2c>;
|
|
||||||
|
|
||||||
__overlay__ {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
adau1977: codec@11 {
|
|
||||||
compatible = "adi,adau1977";
|
|
||||||
reg = <0x11>;
|
|
||||||
reset-gpios = <&gpio 5 0>;
|
|
||||||
AVDD-supply = <&codec_supply>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@2 {
|
|
||||||
target = <&i2s>;
|
|
||||||
__overlay__ {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@3 {
|
|
||||||
target = <&sound>;
|
|
||||||
__overlay__ {
|
|
||||||
compatible = "adi,adau1977-adc";
|
|
||||||
i2s-controller = <&i2s>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user