mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-01-30 14:52:17 +00:00
BrooklynR 5.16.0
Staying ahead of others.
This commit is contained in:
parent
5085653c71
commit
b83067bfb6
@ -45,14 +45,24 @@ how the user addresses are used by the kernel:
|
||||
|
||||
1. User addresses not accessed by the kernel but used for address space
|
||||
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
||||
tagged pointers in this context is allowed with the exception of
|
||||
``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||
``mremap()`` as these have the potential to alias with existing
|
||||
user addresses.
|
||||
tagged pointers in this context is allowed with these exceptions:
|
||||
|
||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||
``mmap()`` and ``mremap()`` system calls.
|
||||
- ``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||
``mremap()`` as these have the potential to alias with existing
|
||||
user addresses.
|
||||
|
||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||
``mmap()`` and ``mremap()`` system calls.
|
||||
|
||||
- The ``range.start``, ``start`` and ``dst`` arguments to the
|
||||
``UFFDIO_*`` ``ioctl()``s used on a file descriptor obtained from
|
||||
``userfaultfd()``, as fault addresses subsequently obtained by reading
|
||||
the file descriptor will be untagged, which may otherwise confuse
|
||||
tag-unaware programs.
|
||||
|
||||
NOTE: This behaviour changed in v5.14 and so some earlier kernels may
|
||||
incorrectly accept valid tagged pointers for this system call.
|
||||
|
||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||
relaxation is disabled by default and the application thread needs to
|
||||
|
93
Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
Normal file
93
Documentation/devicetree/bindings/net/nxp,dwmac-imx.yaml
Normal file
@ -0,0 +1,93 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/nxp,dwmac-imx.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NXP i.MX8 DWMAC glue layer Device Tree Bindings
|
||||
|
||||
maintainers:
|
||||
- Joakim Zhang <qiangqing.zhang@nxp.com>
|
||||
|
||||
# We need a select here so we don't match all nodes with 'snps,dwmac'
|
||||
select:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- nxp,imx8mp-dwmac-eqos
|
||||
- nxp,imx8dxl-dwmac-eqos
|
||||
required:
|
||||
- compatible
|
||||
|
||||
allOf:
|
||||
- $ref: "snps,dwmac.yaml#"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- nxp,imx8mp-dwmac-eqos
|
||||
- nxp,imx8dxl-dwmac-eqos
|
||||
- const: snps,dwmac-5.10a
|
||||
|
||||
clocks:
|
||||
minItems: 3
|
||||
maxItems: 5
|
||||
items:
|
||||
- description: MAC host clock
|
||||
- description: MAC apb clock
|
||||
- description: MAC timer clock
|
||||
- description: MAC RGMII TX clock
|
||||
- description: EQOS MEM clock
|
||||
|
||||
clock-names:
|
||||
minItems: 3
|
||||
maxItems: 5
|
||||
contains:
|
||||
enum:
|
||||
- stmmaceth
|
||||
- pclk
|
||||
- ptp_ref
|
||||
- tx
|
||||
- mem
|
||||
|
||||
intf_mode:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
description:
|
||||
Should be phandle/offset pair. The phandle to the syscon node which
|
||||
encompases the GPR register, and the offset of the GPR register.
|
||||
|
||||
snps,rmii_refclk_ext:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
To select RMII reference clock from external.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/clock/imx8mp-clock.h>
|
||||
|
||||
eqos: ethernet@30bf0000 {
|
||||
compatible = "nxp,imx8mp-dwmac-eqos","snps,dwmac-5.10a";
|
||||
reg = <0x30bf0000 0x10000>;
|
||||
interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "macirq", "eth_wake_irq";
|
||||
clocks = <&clk IMX8MP_CLK_ENET_QOS_ROOT>,
|
||||
<&clk IMX8MP_CLK_QOS_ENET_ROOT>,
|
||||
<&clk IMX8MP_CLK_ENET_QOS_TIMER>,
|
||||
<&clk IMX8MP_CLK_ENET_QOS>;
|
||||
clock-names = "stmmaceth", "pclk", "ptp_ref", "tx";
|
||||
phy-mode = "rgmii";
|
||||
status = "disabled";
|
||||
};
|
@ -28,6 +28,7 @@ select:
|
||||
- snps,dwmac-4.00
|
||||
- snps,dwmac-4.10a
|
||||
- snps,dwmac-4.20a
|
||||
- snps,dwmac-5.10a
|
||||
- snps,dwxgmac
|
||||
- snps,dwxgmac-2.10
|
||||
|
||||
@ -82,6 +83,7 @@ properties:
|
||||
- snps,dwmac-4.00
|
||||
- snps,dwmac-4.10a
|
||||
- snps,dwmac-4.20a
|
||||
- snps,dwmac-5.10a
|
||||
- snps,dwxgmac
|
||||
- snps,dwxgmac-2.10
|
||||
|
||||
@ -375,6 +377,7 @@ allOf:
|
||||
- snps,dwmac-4.00
|
||||
- snps,dwmac-4.10a
|
||||
- snps,dwmac-4.20a
|
||||
- snps,dwmac-5.10a
|
||||
- snps,dwxgmac
|
||||
- snps,dwxgmac-2.10
|
||||
- st,spear600-gmac
|
||||
|
@ -57,12 +57,14 @@ properties:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
deprecated: true
|
||||
description:
|
||||
Power domain to use for enable control. This binding is only
|
||||
available if the compatible is chosen to regulator-fixed-domain.
|
||||
maxItems: 1
|
||||
|
||||
required-opps:
|
||||
deprecated: true
|
||||
description:
|
||||
Performance state to use for enable control. This binding is only
|
||||
available if the compatible is chosen to regulator-fixed-domain. The
|
||||
|
@ -114,7 +114,7 @@ properties:
|
||||
|
||||
ports:
|
||||
$ref: /schemas/graph.yaml#/properties/ports
|
||||
properties:
|
||||
patternProperties:
|
||||
port(@[0-9a-f]+)?:
|
||||
$ref: audio-graph-port.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
@ -243,8 +243,8 @@ Configuration Flags and Socket Options
|
||||
These are the various configuration flags that can be used to control
|
||||
and monitor the behavior of AF_XDP sockets.
|
||||
|
||||
XDP_COPY and XDP_ZERO_COPY bind flags
|
||||
-------------------------------------
|
||||
XDP_COPY and XDP_ZEROCOPY bind flags
|
||||
------------------------------------
|
||||
|
||||
When you bind to a socket, the kernel will first try to use zero-copy
|
||||
copy. If zero-copy is not supported, it will fall back on using copy
|
||||
@ -252,7 +252,7 @@ mode, i.e. copying all packets out to user space. But if you would
|
||||
like to force a certain mode, you can use the following flags. If you
|
||||
pass the XDP_COPY flag to the bind call, the kernel will force the
|
||||
socket into copy mode. If it cannot use copy mode, the bind call will
|
||||
fail with an error. Conversely, the XDP_ZERO_COPY flag will force the
|
||||
fail with an error. Conversely, the XDP_ZEROCOPY flag will force the
|
||||
socket into zero-copy mode or fail.
|
||||
|
||||
XDP_SHARED_UMEM bind flag
|
||||
|
@ -826,7 +826,7 @@ tcp_fastopen_blackhole_timeout_sec - INTEGER
|
||||
initial value when the blackhole issue goes away.
|
||||
0 to disable the blackhole detection.
|
||||
|
||||
By default, it is set to 1hr.
|
||||
By default, it is set to 0 (feature is disabled).
|
||||
|
||||
tcp_fastopen_key - list of comma separated 32-digit hexadecimal INTEGERs
|
||||
The list consists of a primary key and an optional backup key. The
|
||||
|
4
Makefile
4
Makefile
@ -1,9 +1,9 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 14
|
||||
PATCHLEVEL = 16
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc2
|
||||
NAME = Opossums on Parade
|
||||
NAME = BrooklynR dsat
|
||||
|
||||
# *DOCUMENTATION*
|
||||
# To see a list of typical targets execute "make help"
|
||||
|
2002
Makefile.txt
2002
Makefile.txt
File diff suppressed because it is too large
Load Diff
2
README
2
README
@ -1,4 +1,4 @@
|
||||
BrooklynR dsat NXT, The Blockchain Aerospace Linux 5.14.2
|
||||
BrooklynR dsat NXT, The Blockchain Aerospace Linux 5.16.0
|
||||
=========================================================
|
||||
|
||||
* BrooklynR dsat NXT (next generation) V 1.2 as optional dsat aerospace feature for orbital blockchain satellite project
|
||||
|
@ -90,13 +90,13 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 47 0>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "input";
|
||||
gpios = <&gpio 35 0>;
|
||||
|
@ -103,7 +103,7 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 16 1>;
|
||||
|
@ -90,7 +90,7 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 16 1>;
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "bcm2708-rpi.dtsi"
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 47 0>;
|
||||
|
@ -139,7 +139,7 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "actpwr";
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
|
@ -93,7 +93,7 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "actpwr";
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
|
@ -90,13 +90,13 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 47 0>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "input";
|
||||
gpios = <&gpio 35 0>;
|
||||
|
@ -33,7 +33,7 @@ pixelvalve1: pixelvalve@7e207000 {
|
||||
};
|
||||
#endif
|
||||
|
||||
/delete-node/ sdhci@7e300000;
|
||||
/delete-node/ mmc@7e300000;
|
||||
|
||||
sdhci: mmc: mmc@7e300000 {
|
||||
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
|
||||
|
@ -90,13 +90,13 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 47 0>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "input";
|
||||
gpios = <&gpio 35 0>;
|
||||
|
@ -149,13 +149,13 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 29 0>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "default-on";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
|
@ -164,13 +164,13 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&virtgpio 0 0>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "input";
|
||||
gpios = <&expgpio 7 0>;
|
||||
|
@ -123,7 +123,7 @@ &i2s {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&virtgpio 0 0>;
|
||||
|
@ -1,9 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#include "bcm2711.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
//#include "bcm283x-rpi-usb-peripheral.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
|
||||
@ -14,25 +13,12 @@ chosen {
|
||||
stdout-path = "serial1:115200n8";
|
||||
};
|
||||
|
||||
/* Will be filled by the bootloader */
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0 0>;
|
||||
};
|
||||
|
||||
aliases {
|
||||
emmc2bus = &emmc2bus;
|
||||
ethernet0 = &genet;
|
||||
pcie0 = &pcie0;
|
||||
blconfig = &blconfig;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
@ -78,31 +64,15 @@ &ddc1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&firmware {
|
||||
firmware_clocks: clocks {
|
||||
compatible = "raspberrypi,firmware-clocks";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
expgpio: gpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"PWR_LED_OFF",
|
||||
"GLOBAL_RESET",
|
||||
"VDD_SD_IO_SEL",
|
||||
"CAM_GPIO",
|
||||
"SD_PWR_ON",
|
||||
"SD_OC_N";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
reset: reset {
|
||||
compatible = "raspberrypi,firmware-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
&expgpio {
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"PWR_LED_OFF",
|
||||
"GLOBAL_RESET",
|
||||
"VDD_SD_IO_SEL",
|
||||
"CAM_GPIO",
|
||||
"SD_PWR_ON",
|
||||
"SD_OC_N";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
@ -179,23 +149,13 @@ &gpio {
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hvs {
|
||||
clocks = <&firmware_clocks 4>;
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -218,22 +178,6 @@ &pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rmem {
|
||||
/*
|
||||
* RPi4's co-processor will copy the board's bootloader configuration
|
||||
* into memory for the OS to consume. It'll also update this node with
|
||||
* its placement information.
|
||||
*/
|
||||
blconfig: nvram@0 {
|
||||
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x0 0x0 0x0>;
|
||||
no-map;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/* SDHCI is used to control the SDIO for wireless */
|
||||
&sdhci {
|
||||
#address-cells = <1>;
|
||||
@ -308,10 +252,6 @@ &uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -335,7 +275,7 @@ soc {
|
||||
};
|
||||
};
|
||||
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
#include "bcm283x-rpi-cam1-regulator.dtsi"
|
||||
@ -351,11 +291,12 @@ aliases {
|
||||
mmc0 = &emmc2;
|
||||
mmc1 = &mmcnr;
|
||||
mmc2 = &sdhost;
|
||||
/delete-property/ i2c2;
|
||||
i2c3 = &i2c3;
|
||||
i2c4 = &i2c4;
|
||||
i2c5 = &i2c5;
|
||||
i2c6 = &i2c6;
|
||||
i2c20 = &ddc0;
|
||||
i2c21 = &ddc1;
|
||||
spi3 = &spi3;
|
||||
spi4 = &spi4;
|
||||
spi5 = &spi5;
|
||||
@ -561,13 +502,6 @@ &i2s {
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
/delete-property/ i2c2_baudrate;
|
||||
/delete-property/ i2c2_iknowwhatimdoing;
|
||||
};
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
@ -587,13 +521,13 @@ audio_pins: audio_pins {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "default-on";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
|
@ -28,11 +28,11 @@ aliases {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
@ -181,12 +181,14 @@ &gpio {
|
||||
&hdmi0 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -333,7 +335,7 @@ soc {
|
||||
};
|
||||
};
|
||||
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
#include "bcm283x-rpi-csi1-2lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
|
||||
@ -348,11 +350,12 @@ aliases {
|
||||
mmc0 = &emmc2;
|
||||
mmc1 = &mmcnr;
|
||||
mmc2 = &sdhost;
|
||||
/delete-property/ i2c2;
|
||||
i2c3 = &i2c3;
|
||||
i2c4 = &i2c4;
|
||||
i2c5 = &i2c5;
|
||||
i2c6 = &i2c6;
|
||||
i2c20 = &ddc0;
|
||||
i2c21 = &ddc1;
|
||||
spi3 = &spi3;
|
||||
spi4 = &spi4;
|
||||
spi5 = &spi5;
|
||||
@ -558,13 +561,6 @@ &i2s {
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
/delete-property/ i2c2_baudrate;
|
||||
/delete-property/ i2c2_iknowwhatimdoing;
|
||||
};
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
@ -592,14 +588,14 @@ audio_pins: audio_pins {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "default-on";
|
||||
default-state = "on";
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "default-on";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
|
@ -28,11 +28,11 @@ aliases {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
@ -193,12 +193,14 @@ &gpio {
|
||||
&hdmi0 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -277,9 +279,9 @@ &genet {
|
||||
};
|
||||
|
||||
&genet_mdio {
|
||||
phy1: ethernet-phy@1 {
|
||||
phy1: ethernet-phy@0 {
|
||||
/* No PHY interrupt */
|
||||
reg = <0x1>;
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
@ -346,7 +348,7 @@ soc {
|
||||
};
|
||||
};
|
||||
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
#include "bcm2711-rpi-ds.dtsi"
|
||||
#include "bcm283x-rpi-csi0-2lane.dtsi"
|
||||
#include "bcm283x-rpi-csi1-4lane.dtsi"
|
||||
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
|
||||
@ -363,11 +365,12 @@ aliases {
|
||||
mmc0 = &emmc2;
|
||||
mmc1 = &mmcnr;
|
||||
mmc2 = &sdhost;
|
||||
/delete-property/ i2c2;
|
||||
i2c3 = &i2c3;
|
||||
i2c4 = &i2c4;
|
||||
i2c5 = &i2c5;
|
||||
i2c6 = &i2c6;
|
||||
i2c20 = &ddc0;
|
||||
i2c21 = &ddc1;
|
||||
spi3 = &spi3;
|
||||
spi4 = &spi4;
|
||||
spi5 = &spi5;
|
||||
@ -573,13 +576,6 @@ &i2s {
|
||||
pinctrl-0 = <&i2s_pins>;
|
||||
};
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
/delete-property/ i2c2_baudrate;
|
||||
/delete-property/ i2c2_iknowwhatimdoing;
|
||||
};
|
||||
};
|
||||
|
||||
// =============================================
|
||||
// Board specific stuff here
|
||||
|
||||
@ -603,13 +599,13 @@ audio_pins: audio_pins {
|
||||
};
|
||||
|
||||
&leds {
|
||||
act_led: act {
|
||||
act_led: led-act {
|
||||
label = "led0";
|
||||
linux,default-trigger = "mmc0";
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr_led: pwr {
|
||||
pwr_led: led-pwr {
|
||||
label = "led1";
|
||||
linux,default-trigger = "default-on";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
|
205
arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
Normal file
205
arch/arm/boot/dts/bcm2711-rpi-ds.dtsi
Normal file
@ -0,0 +1,205 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm270x-rpi.dtsi"
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
arm_freq;
|
||||
};
|
||||
|
||||
v3dbus: v3dbus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
|
||||
<0x40000000 0x0 0xff800000 0x0 0x00800000>;
|
||||
dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
v3d: v3d@7ec04000 {
|
||||
compatible = "brcm,2711-v3d";
|
||||
reg =
|
||||
<0x7ec00000 0x0 0x4000>,
|
||||
<0x7ec04000 0x0 0x4000>;
|
||||
reg-names = "hub", "core0";
|
||||
|
||||
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
||||
resets = <&pm BCM2835_RESET_V3D>;
|
||||
clocks = <&firmware_clocks 5>;
|
||||
clocks-names = "v3d";
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
scb: scb {
|
||||
/* Add a label */
|
||||
};
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
raspberrypi,firmware = <&firmware>;
|
||||
};
|
||||
|
||||
&cma {
|
||||
/* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
|
||||
alloc-ranges = <0x0 0x00000000 0x30000000>;
|
||||
};
|
||||
|
||||
&scb {
|
||||
ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
||||
<0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
|
||||
<0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
|
||||
<0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
|
||||
dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
dma40: dma@7e007b00 {
|
||||
compatible = "brcm,bcm2711-dma";
|
||||
reg = <0x0 0x7e007b00 0x0 0x400>;
|
||||
interrupts =
|
||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
|
||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
|
||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
|
||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
|
||||
interrupt-names = "dma11",
|
||||
"dma12",
|
||||
"dma13",
|
||||
"dma14";
|
||||
#dma-cells = <1>;
|
||||
brcm,dma-channel-mask = <0x7800>;
|
||||
};
|
||||
|
||||
xhci: xhci@7e9c0000 {
|
||||
compatible = "generic-xhci";
|
||||
status = "disabled";
|
||||
reg = <0x0 0x7e9c0000 0x0 0x100000>;
|
||||
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
};
|
||||
|
||||
hevc-decoder@7eb00000 {
|
||||
compatible = "raspberrypi,rpivid-hevc-decoder";
|
||||
reg = <0x0 0x7eb00000 0x0 0x10000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
rpivid-local-intc@7eb10000 {
|
||||
compatible = "raspberrypi,rpivid-local-intc";
|
||||
reg = <0x0 0x7eb10000 0x0 0x1000>;
|
||||
status = "okay";
|
||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
h264-decoder@7eb20000 {
|
||||
compatible = "raspberrypi,rpivid-h264-decoder";
|
||||
reg = <0x0 0x7eb20000 0x0 0x10000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
vp9-decoder@7eb30000 {
|
||||
compatible = "raspberrypi,rpivid-vp9-decoder";
|
||||
reg = <0x0 0x7eb30000 0x0 0x10000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&dma40 {
|
||||
/* The VPU firmware uses DMA channel 11 for VCHIQ */
|
||||
brcm,dma-channel-mask = <0x7000>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
compatible = "brcm,bcm2711-vchiq";
|
||||
};
|
||||
|
||||
&firmwarekms {
|
||||
compatible = "raspberrypi,rpi-firmware-kms-2711";
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&smi {
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmc {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&csi0 {
|
||||
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&csi1 {
|
||||
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&random {
|
||||
compatible = "brcm,bcm2711-rng200";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb {
|
||||
/* Enable the FIQ support */
|
||||
reg = <0x7e980000 0x10000>,
|
||||
<0x7e00b200 0x200>;
|
||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&emmc2 {
|
||||
mmc-ddr-3_3v;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
dmas = <&dma (10|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
dmas = <&dma (17|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&ddc1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dvp {
|
||||
status = "disabled";
|
||||
};
|
@ -1,205 +1,74 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm270x-rpi.dtsi"
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
||||
|
||||
/ {
|
||||
__overrides__ {
|
||||
arm_freq;
|
||||
/* Will be filled by the bootloader */
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0 0>;
|
||||
};
|
||||
|
||||
v3dbus: v3dbus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x7c500000 0x0 0xfc500000 0x0 0x03300000>,
|
||||
<0x40000000 0x0 0xff800000 0x0 0x00800000>;
|
||||
dma-ranges = <0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
v3d: v3d@7ec04000 {
|
||||
compatible = "brcm,2711-v3d";
|
||||
reg =
|
||||
<0x7ec00000 0x0 0x4000>,
|
||||
<0x7ec04000 0x0 0x4000>;
|
||||
reg-names = "hub", "core0";
|
||||
|
||||
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
||||
resets = <&pm BCM2835_RESET_V3D>;
|
||||
clocks = <&firmware_clocks 5>;
|
||||
clocks-names = "v3d";
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
scb: scb {
|
||||
/* Add a label */
|
||||
aliases {
|
||||
emmc2bus = &emmc2bus;
|
||||
ethernet0 = &genet;
|
||||
pcie0 = &pcie0;
|
||||
blconfig = &blconfig;
|
||||
};
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
raspberrypi,firmware = <&firmware>;
|
||||
};
|
||||
|
||||
&cma {
|
||||
/* Limit cma to the lower 768MB to allow room for HIGHMEM on 32-bit */
|
||||
alloc-ranges = <0x0 0x00000000 0x30000000>;
|
||||
};
|
||||
|
||||
&scb {
|
||||
ranges = <0x0 0x7c000000 0x0 0xfc000000 0x0 0x03800000>,
|
||||
<0x0 0x40000000 0x0 0xff800000 0x0 0x00800000>,
|
||||
<0x6 0x00000000 0x6 0x00000000 0x0 0x40000000>,
|
||||
<0x0 0x00000000 0x0 0x00000000 0x0 0xfc000000>;
|
||||
dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x4 0x00000000>;
|
||||
|
||||
dma40: dma@7e007b00 {
|
||||
compatible = "brcm,bcm2711-dma";
|
||||
reg = <0x0 0x7e007b00 0x0 0x400>;
|
||||
interrupts =
|
||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 11 */
|
||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 12 */
|
||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, /* dma4 13 */
|
||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; /* dma4 14 */
|
||||
interrupt-names = "dma11",
|
||||
"dma12",
|
||||
"dma13",
|
||||
"dma14";
|
||||
#dma-cells = <1>;
|
||||
brcm,dma-channel-mask = <0x7800>;
|
||||
&firmware {
|
||||
firmware_clocks: clocks {
|
||||
compatible = "raspberrypi,firmware-clocks";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
xhci: xhci@7e9c0000 {
|
||||
compatible = "generic-xhci";
|
||||
status = "disabled";
|
||||
reg = <0x0 0x7e9c0000 0x0 0x100000>;
|
||||
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
};
|
||||
|
||||
hevc-decoder@7eb00000 {
|
||||
compatible = "raspberrypi,rpivid-hevc-decoder";
|
||||
reg = <0x0 0x7eb00000 0x0 0x10000>;
|
||||
expgpio: gpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
rpivid-local-intc@7eb10000 {
|
||||
compatible = "raspberrypi,rpivid-local-intc";
|
||||
reg = <0x0 0x7eb10000 0x0 0x1000>;
|
||||
status = "okay";
|
||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reset: reset {
|
||||
compatible = "raspberrypi,firmware-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
h264-decoder@7eb20000 {
|
||||
compatible = "raspberrypi,rpivid-h264-decoder";
|
||||
reg = <0x0 0x7eb20000 0x0 0x10000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
vp9-decoder@7eb30000 {
|
||||
compatible = "raspberrypi,rpivid-vp9-decoder";
|
||||
reg = <0x0 0x7eb30000 0x0 0x10000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&dma40 {
|
||||
/* The VPU firmware uses DMA channel 11 for VCHIQ */
|
||||
brcm,dma-channel-mask = <0x7000>;
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
compatible = "brcm,bcm2711-vchiq";
|
||||
};
|
||||
|
||||
&firmwarekms {
|
||||
compatible = "raspberrypi,rpi-firmware-kms-2711";
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&smi {
|
||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmc {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&mmcnr {
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&csi0 {
|
||||
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&csi1 {
|
||||
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&random {
|
||||
compatible = "brcm,bcm2711-rng200";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb {
|
||||
/* Enable the FIQ support */
|
||||
reg = <0x7e980000 0x10000>,
|
||||
<0x7e00b200 0x200>;
|
||||
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
&emmc2 {
|
||||
mmc-ddr-3_3v;
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
dmas = <&dma (10|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "disabled";
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
dmas = <&dma (17|(1<<27)|(1<<24)|(10<<16)|(15<<20))>;
|
||||
status = "disabled";
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
};
|
||||
|
||||
&ddc1 {
|
||||
status = "disabled";
|
||||
&hvs {
|
||||
clocks = <&firmware_clocks 4>;
|
||||
};
|
||||
|
||||
&dvp {
|
||||
status = "disabled";
|
||||
&rmem {
|
||||
/*
|
||||
* RPi4's co-processor will copy the board's bootloader configuration
|
||||
* into memory for the OS to consume. It'll also update this node with
|
||||
* its placement information.
|
||||
*/
|
||||
blconfig: nvram@0 {
|
||||
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x0 0x0 0x0>;
|
||||
no-map;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
@ -434,7 +434,7 @@ emmc2bus: emmc2bus {
|
||||
ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
|
||||
dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
|
||||
|
||||
emmc2: emmc2@7e340000 {
|
||||
emmc2: mmc@7e340000 {
|
||||
compatible = "brcm,bcm2711-emmc2";
|
||||
reg = <0x0 0x7e340000 0x100>;
|
||||
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -14,11 +14,11 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -14,7 +14,7 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -15,11 +15,11 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -15,7 +15,7 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -15,7 +15,7 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
/ {
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -23,7 +23,7 @@ chosen {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -18,7 +18,7 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
@ -4,7 +4,7 @@ / {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
act {
|
||||
led-act {
|
||||
label = "ACT";
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
@ -15,11 +15,11 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -19,11 +19,11 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
|
@ -20,11 +20,11 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
|
@ -20,7 +20,7 @@ memory@0 {
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
@ -14,7 +14,7 @@ leds {
|
||||
* Since there is no upstream GPIO driver yet,
|
||||
* remove the incomplete node.
|
||||
*/
|
||||
/delete-node/ act;
|
||||
/delete-node/ led-act;
|
||||
};
|
||||
|
||||
reg_3v3: fixed-regulator {
|
||||
|
7
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
7
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
@ -0,0 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
&usb {
|
||||
dr_mode = "peripheral";
|
||||
g-rx-fifo-size = <256>;
|
||||
g-np-tx-fifo-size = <32>;
|
||||
g-tx-fifo-size = <256 256 512 512 512 768 768>;
|
||||
};
|
@ -444,7 +444,7 @@ pwm: pwm@7e20c000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci: sdhci@7e300000 {
|
||||
sdhci: mmc@7e300000 {
|
||||
compatible = "brcm,bcm2835-sdhci";
|
||||
reg = <0x7e300000 0x100>;
|
||||
interrupts = <2 30>;
|
||||
|
@ -31,7 +31,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
audremap.dtbo \
|
||||
balena-fin.dtbo \
|
||||
cap1106.dtbo \
|
||||
chipdip-i2s-master-dac.dtbo \
|
||||
chipdip-dac.dtbo \
|
||||
cma.dtbo \
|
||||
dht11.dtbo \
|
||||
dionaudio-loco.dtbo \
|
||||
@ -220,6 +220,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
|
||||
upstream.dtbo \
|
||||
upstream-pi4.dtbo \
|
||||
vc4-fkms-v3d.dtbo \
|
||||
vc4-fkms-v3d-pi4.dtbo \
|
||||
vc4-kms-dpi-at056tn53v1.dtbo \
|
||||
vc4-kms-dsi-7inch.dtbo \
|
||||
vc4-kms-dsi-lt070me05000.dtbo \
|
||||
|
@ -628,9 +628,9 @@ Load: dtoverlay=cap1106,<param>=<val>
|
||||
Params: int_pin GPIO pin for interrupt signal (default 23)
|
||||
|
||||
|
||||
Name: chipdip-i2s-master-dac
|
||||
Info: Configures Raspberry PI to work as I2S slave with BCLK=64Fs.
|
||||
Load: dtoverlay=chipdip-i2s-master-dac
|
||||
Name: chipdip-dac
|
||||
Info: Configures Chip Dip audio cards.
|
||||
Load: dtoverlay=chipdip-dac
|
||||
Params: <None>
|
||||
|
||||
|
||||
@ -3268,6 +3268,23 @@ Params: cma-512 CMA is 512MB (needs 1GB)
|
||||
cma-default Use upstream's default value
|
||||
|
||||
|
||||
Name: vc4-fkms-v3d-pi4
|
||||
Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
|
||||
display stack.
|
||||
Load: dtoverlay=vc4-fkms-v3d-pi4,<param>
|
||||
Params: cma-512 CMA is 512MB (needs 1GB)
|
||||
cma-448 CMA is 448MB (needs 1GB)
|
||||
cma-384 CMA is 384MB (needs 1GB)
|
||||
cma-320 CMA is 320MB (needs 1GB)
|
||||
cma-256 CMA is 256MB (needs 1GB)
|
||||
cma-192 CMA is 192MB (needs 1GB)
|
||||
cma-128 CMA is 128MB
|
||||
cma-96 CMA is 96MB
|
||||
cma-64 CMA is 64MB
|
||||
cma-size CMA size in bytes, 4MB aligned
|
||||
cma-default Use upstream's default value
|
||||
|
||||
|
||||
Name: vc4-kms-dpi-at056tn53v1
|
||||
Info: Enable an Innolux 5.6in VGA TFT connected to DPI interface under KMS.
|
||||
Requires vc4-kms-v3d to be loaded.
|
||||
|
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
46
arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Device Tree overlay for ChipDip DAC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
||||
fragment@0 {
|
||||
target = <&i2s>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target-path = "/";
|
||||
__overlay__ {
|
||||
spdif-transmitter {
|
||||
#address-cells = <0>;
|
||||
#size-cells = <0>;
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dit";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&sound>;
|
||||
__overlay__ {
|
||||
compatible = "chipdip,chipdip-dac";
|
||||
i2s-controller = <&i2s>;
|
||||
sr0-gpios = <&gpio 5 0>;
|
||||
sr1-gpios = <&gpio 6 0>;
|
||||
sr2-gpios = <&gpio 12 0>;
|
||||
res0-gpios = <&gpio 24 0>;
|
||||
res1-gpios = <&gpio 27 0>;
|
||||
mute-gpios = <&gpio 4 0>;
|
||||
sdwn-gpios = <&gpio 13 0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
@ -138,6 +138,15 @@ upstream-pi4 {
|
||||
bcm2711;
|
||||
};
|
||||
|
||||
vc4-fkms-v3d {
|
||||
bcm2835;
|
||||
bcm2711 = "vc4-fkms-v3d-pi4";
|
||||
};
|
||||
|
||||
vc4-fkms-v3d-pi4 {
|
||||
bcm2711;
|
||||
};
|
||||
|
||||
vc4-kms-v3d {
|
||||
bcm2835;
|
||||
bcm2711 = "vc4-kms-v3d-pi4";
|
||||
|
44
arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
Normal file
44
arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* vc4-fkms-v3d-overlay.dts
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
#include "cma-overlay.dts"
|
||||
|
||||
&frag0 {
|
||||
size = <(512*1024*1024)>;
|
||||
};
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@1 {
|
||||
target = <&fb>;
|
||||
__overlay__ {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&firmwarekms>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@3 {
|
||||
target = <&v3d>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
fragment@4 {
|
||||
target = <&vc4>;
|
||||
__overlay__ {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
@ -9,8 +9,12 @@
|
||||
|
||||
#include "cma-overlay.dts"
|
||||
|
||||
&frag0 {
|
||||
size = <(512*1024*1024)>;
|
||||
};
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
compatible = "brcm,bcm2711";
|
||||
|
||||
fragment@1 {
|
||||
target = <&ddc0>;
|
||||
|
@ -663,6 +663,7 @@ CONFIG_TTY_PRINTK=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS_SPI=m
|
||||
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_MUX_GPMUX=m
|
||||
@ -937,6 +938,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
||||
CONFIG_TINYDRM_REPAPER=m
|
||||
CONFIG_TINYDRM_ST7586=m
|
||||
CONFIG_TINYDRM_ST7735R=m
|
||||
CONFIG_DRM_GUD=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_BCM2708=y
|
||||
CONFIG_FB_UDL=m
|
||||
@ -971,6 +973,7 @@ CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_USB_HIFACE=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||
@ -1018,6 +1021,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
||||
CONFIG_SND_SOC_MAX98357A=m
|
||||
CONFIG_SND_SOC_SPDIF=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HIDRAW=y
|
||||
|
@ -676,6 +676,7 @@ CONFIG_TTY_PRINTK=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS_SPI=m
|
||||
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_MUX_GPMUX=m
|
||||
@ -952,6 +953,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
||||
CONFIG_TINYDRM_REPAPER=m
|
||||
CONFIG_TINYDRM_ST7586=m
|
||||
CONFIG_TINYDRM_ST7735R=m
|
||||
CONFIG_DRM_GUD=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_BCM2708=y
|
||||
CONFIG_FB_UDL=m
|
||||
@ -986,6 +988,7 @@ CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_USB_HIFACE=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||
@ -1033,6 +1036,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
||||
CONFIG_SND_SOC_MAX98357A=m
|
||||
CONFIG_SND_SOC_SPDIF=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HIDRAW=y
|
||||
|
@ -657,6 +657,7 @@ CONFIG_TTY_PRINTK=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS_SPI=m
|
||||
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_MUX_GPMUX=m
|
||||
@ -930,6 +931,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
||||
CONFIG_TINYDRM_REPAPER=m
|
||||
CONFIG_TINYDRM_ST7586=m
|
||||
CONFIG_TINYDRM_ST7735R=m
|
||||
CONFIG_DRM_GUD=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_BCM2708=y
|
||||
CONFIG_FB_UDL=m
|
||||
@ -964,6 +966,7 @@ CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_USB_HIFACE=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||
@ -1011,6 +1014,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
||||
CONFIG_SND_SOC_MAX98357A=m
|
||||
CONFIG_SND_SOC_SPDIF=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HIDRAW=y
|
||||
|
@ -1063,7 +1063,7 @@ &usb2 {
|
||||
status = "okay";
|
||||
extcon = <&usb2_id>;
|
||||
|
||||
usb@7600000 {
|
||||
dwc3@7600000 {
|
||||
extcon = <&usb2_id>;
|
||||
dr_mode = "otg";
|
||||
maximum-speed = "high-speed";
|
||||
@ -1074,7 +1074,7 @@ &usb3 {
|
||||
status = "okay";
|
||||
extcon = <&usb3_id>;
|
||||
|
||||
usb@6a00000 {
|
||||
dwc3@6a00000 {
|
||||
extcon = <&usb3_id>;
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
@ -443,7 +443,7 @@ usb_0: usb@8af8800 {
|
||||
resets = <&gcc GCC_USB0_BCR>;
|
||||
status = "disabled";
|
||||
|
||||
dwc_0: usb@8a00000 {
|
||||
dwc_0: dwc3@8a00000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x8a00000 0xcd00>;
|
||||
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -484,7 +484,7 @@ usb_1: usb@8cf8800 {
|
||||
resets = <&gcc GCC_USB1_BCR>;
|
||||
status = "disabled";
|
||||
|
||||
dwc_1: usb@8c00000 {
|
||||
dwc_1: dwc3@8c00000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x8c00000 0xcd00>;
|
||||
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -2566,7 +2566,7 @@ usb3: usb@6af8800 {
|
||||
power-domains = <&gcc USB30_GDSC>;
|
||||
status = "disabled";
|
||||
|
||||
usb@6a00000 {
|
||||
dwc3@6a00000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x06a00000 0xcc00>;
|
||||
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -2873,7 +2873,7 @@ usb2: usb@76f8800 {
|
||||
qcom,select-utmi-as-pipe-clk;
|
||||
status = "disabled";
|
||||
|
||||
usb@7600000 {
|
||||
dwc3@7600000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x07600000 0xcc00>;
|
||||
interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -1964,7 +1964,7 @@ usb3: usb@a8f8800 {
|
||||
|
||||
resets = <&gcc GCC_USB_30_BCR>;
|
||||
|
||||
usb3_dwc3: usb@a800000 {
|
||||
usb3_dwc3: dwc3@a800000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x0a800000 0xcd00>;
|
||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -337,7 +337,7 @@ &usb2_phy_sec {
|
||||
&usb3 {
|
||||
status = "okay";
|
||||
|
||||
usb@7580000 {
|
||||
dwc3@7580000 {
|
||||
dr_mode = "host";
|
||||
};
|
||||
};
|
||||
|
@ -544,7 +544,7 @@ usb3: usb@7678800 {
|
||||
assigned-clock-rates = <19200000>, <200000000>;
|
||||
status = "disabled";
|
||||
|
||||
usb@7580000 {
|
||||
dwc3@7580000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x07580000 0xcd00>;
|
||||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -573,7 +573,7 @@ usb2: usb@79b8800 {
|
||||
assigned-clock-rates = <19200000>, <133333333>;
|
||||
status = "disabled";
|
||||
|
||||
usb@78c0000 {
|
||||
dwc3@78c0000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0x078c0000 0xcc00>;
|
||||
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -2756,7 +2756,7 @@ usb_1: usb@a6f8800 {
|
||||
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3 0>;
|
||||
interconnect-names = "usb-ddr", "apps-usb";
|
||||
|
||||
usb_1_dwc3: usb@a600000 {
|
||||
usb_1_dwc3: dwc3@a600000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0 0x0a600000 0 0xe000>;
|
||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -3781,7 +3781,7 @@ usb_1: usb@a6f8800 {
|
||||
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_0 0>;
|
||||
interconnect-names = "usb-ddr", "apps-usb";
|
||||
|
||||
usb_1_dwc3: usb@a600000 {
|
||||
usb_1_dwc3: dwc3@a600000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0 0x0a600000 0 0xcd00>;
|
||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||
@ -3829,7 +3829,7 @@ usb_2: usb@a8f8800 {
|
||||
<&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_1 0>;
|
||||
interconnect-names = "usb-ddr", "apps-usb";
|
||||
|
||||
usb_2_dwc3: usb@a800000 {
|
||||
usb_2_dwc3: dwc3@a800000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0 0x0a800000 0 0xcd00>;
|
||||
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -2344,7 +2344,7 @@ usb_1: usb@a6f8800 {
|
||||
|
||||
resets = <&gcc GCC_USB30_PRIM_BCR>;
|
||||
|
||||
usb_1_dwc3: usb@a600000 {
|
||||
usb_1_dwc3: dwc3@a600000 {
|
||||
compatible = "snps,dwc3";
|
||||
reg = <0 0x0a600000 0 0xcd00>;
|
||||
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -673,6 +673,7 @@ CONFIG_TTY_PRINTK=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS_SPI=m
|
||||
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_MUX_GPMUX=m
|
||||
@ -955,6 +956,7 @@ CONFIG_TINYDRM_MI0283QT=m
|
||||
CONFIG_TINYDRM_REPAPER=m
|
||||
CONFIG_TINYDRM_ST7586=m
|
||||
CONFIG_TINYDRM_ST7735R=m
|
||||
CONFIG_DRM_GUD=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_BCM2708=y
|
||||
CONFIG_FB_UDL=m
|
||||
@ -989,6 +991,7 @@ CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_USB_HIFACE=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||
@ -1036,6 +1039,7 @@ CONFIG_SND_SOC_MA120X0P=m
|
||||
CONFIG_SND_SOC_MAX98357A=m
|
||||
CONFIG_SND_SOC_SPDIF=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_HID_BATTERY_STRENGTH=y
|
||||
CONFIG_HIDRAW=y
|
||||
|
@ -649,6 +649,7 @@ CONFIG_TTY_PRINTK=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_TIS_SPI=m
|
||||
CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_MUX=m
|
||||
@ -869,6 +870,7 @@ CONFIG_DRM_DISPLAY_CONNECTOR=m
|
||||
CONFIG_DRM_SIMPLE_BRIDGE=m
|
||||
CONFIG_DRM_VC4=m
|
||||
CONFIG_DRM_VC4_HDMI_CEC=y
|
||||
CONFIG_DRM_GUD=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_BCM2708=y
|
||||
CONFIG_FB_UDL=m
|
||||
@ -900,6 +902,7 @@ CONFIG_SND_USB_CAIAQ_INPUT=y
|
||||
CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BCM2835_SOC_I2S=m
|
||||
CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
|
||||
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
|
||||
@ -936,6 +939,7 @@ CONFIG_SND_SOC_ICS43432=m
|
||||
CONFIG_SND_SOC_MA120X0P=m
|
||||
CONFIG_SND_SOC_MAX98357A=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SIMPLE_CARD=m
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=m
|
||||
|
@ -32,20 +32,23 @@ SYM_FUNC_END(__arm_smccc_sve_check)
|
||||
EXPORT_SYMBOL(__arm_smccc_sve_check)
|
||||
|
||||
.macro SMCCC instr
|
||||
stp x29, x30, [sp, #-16]!
|
||||
mov x29, sp
|
||||
alternative_if ARM64_SVE
|
||||
bl __arm_smccc_sve_check
|
||||
alternative_else_nop_endif
|
||||
\instr #0
|
||||
ldr x4, [sp]
|
||||
ldr x4, [sp, #16]
|
||||
stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
|
||||
stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
|
||||
ldr x4, [sp, #8]
|
||||
ldr x4, [sp, #24]
|
||||
cbz x4, 1f /* no quirk structure */
|
||||
ldr x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
|
||||
cmp x9, #ARM_SMCCC_QUIRK_QCOM_A6
|
||||
b.ne 1f
|
||||
str x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
|
||||
1: ret
|
||||
1: ldp x29, x30, [sp], #16
|
||||
ret
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
@ -1339,7 +1339,6 @@ void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
|
||||
return dt_virt;
|
||||
}
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 3
|
||||
int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
||||
{
|
||||
pud_t new_pud = pfn_pud(__phys_to_pfn(phys), mk_pud_sect_prot(prot));
|
||||
@ -1354,16 +1353,6 @@ int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int pud_clear_huge(pud_t *pudp)
|
||||
{
|
||||
if (!pud_sect(READ_ONCE(*pudp)))
|
||||
return 0;
|
||||
pud_clear(pudp);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 2
|
||||
int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
|
||||
{
|
||||
pmd_t new_pmd = pfn_pmd(__phys_to_pfn(phys), mk_pmd_sect_prot(prot));
|
||||
@ -1378,6 +1367,14 @@ int pmd_set_huge(pmd_t *pmdp, phys_addr_t phys, pgprot_t prot)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int pud_clear_huge(pud_t *pudp)
|
||||
{
|
||||
if (!pud_sect(READ_ONCE(*pudp)))
|
||||
return 0;
|
||||
pud_clear(pudp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int pmd_clear_huge(pmd_t *pmdp)
|
||||
{
|
||||
if (!pmd_sect(READ_ONCE(*pmdp)))
|
||||
@ -1385,7 +1382,6 @@ int pmd_clear_huge(pmd_t *pmdp)
|
||||
pmd_clear(pmdp);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)
|
||||
{
|
||||
|
@ -33,6 +33,7 @@ config MAC
|
||||
depends on MMU
|
||||
select MMU_MOTOROLA if MMU
|
||||
select HAVE_ARCH_NVRAM_OPS
|
||||
select HAVE_PATA_PLATFORM
|
||||
select LEGACY_TIMER_TICK
|
||||
help
|
||||
This option enables support for the Apple Macintosh series of
|
||||
|
@ -59,7 +59,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||
|
||||
vma = find_vma(mm, addr);
|
||||
if (TASK_SIZE - len >= addr &&
|
||||
(!vma || addr + len <= vma->vm_start))
|
||||
(!vma || addr + len <= vm_start_gap(vma)))
|
||||
return addr;
|
||||
}
|
||||
|
||||
|
@ -2697,8 +2697,10 @@ static int kvmppc_core_vcpu_create_hv(struct kvm_vcpu *vcpu)
|
||||
HFSCR_DSCR | HFSCR_VECVSX | HFSCR_FP | HFSCR_PREFIX;
|
||||
if (cpu_has_feature(CPU_FTR_HVMODE)) {
|
||||
vcpu->arch.hfscr &= mfspr(SPRN_HFSCR);
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
if (cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
|
||||
vcpu->arch.hfscr |= HFSCR_TM;
|
||||
#endif
|
||||
}
|
||||
if (cpu_has_feature(CPU_FTR_TM_COMP))
|
||||
vcpu->arch.hfscr |= HFSCR_TM;
|
||||
|
@ -302,6 +302,9 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
|
||||
if (vcpu->kvm->arch.l1_ptcr == 0)
|
||||
return H_NOT_AVAILABLE;
|
||||
|
||||
if (MSR_TM_TRANSACTIONAL(vcpu->arch.shregs.msr))
|
||||
return H_BAD_MODE;
|
||||
|
||||
/* copy parameters in */
|
||||
hv_ptr = kvmppc_get_gpr(vcpu, 4);
|
||||
regs_ptr = kvmppc_get_gpr(vcpu, 5);
|
||||
@ -322,6 +325,23 @@ long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
|
||||
if (l2_hv.vcpu_token >= NR_CPUS)
|
||||
return H_PARAMETER;
|
||||
|
||||
/*
|
||||
* L1 must have set up a suspended state to enter the L2 in a
|
||||
* transactional state, and only in that case. These have to be
|
||||
* filtered out here to prevent causing a TM Bad Thing in the
|
||||
* host HRFID. We could synthesize a TM Bad Thing back to the L1
|
||||
* here but there doesn't seem like much point.
|
||||
*/
|
||||
if (MSR_TM_SUSPENDED(vcpu->arch.shregs.msr)) {
|
||||
if (!MSR_TM_ACTIVE(l2_regs.msr))
|
||||
return H_BAD_MODE;
|
||||
} else {
|
||||
if (l2_regs.msr & MSR_TS_MASK)
|
||||
return H_BAD_MODE;
|
||||
if (WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_TS_MASK))
|
||||
return H_BAD_MODE;
|
||||
}
|
||||
|
||||
/* translate lpid */
|
||||
l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
|
||||
if (!l2)
|
||||
|
@ -317,6 +317,9 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
||||
*/
|
||||
mtspr(SPRN_HDEC, hdec);
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
tm_return_to_guest:
|
||||
#endif
|
||||
mtspr(SPRN_DAR, vcpu->arch.shregs.dar);
|
||||
mtspr(SPRN_DSISR, vcpu->arch.shregs.dsisr);
|
||||
mtspr(SPRN_SRR0, vcpu->arch.shregs.srr0);
|
||||
@ -415,11 +418,23 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
||||
* is in real suspend mode and is trying to transition to
|
||||
* transactional mode.
|
||||
*/
|
||||
if (local_paca->kvm_hstate.fake_suspend &&
|
||||
if (!local_paca->kvm_hstate.fake_suspend &&
|
||||
(vcpu->arch.shregs.msr & MSR_TS_S)) {
|
||||
if (kvmhv_p9_tm_emulation_early(vcpu)) {
|
||||
/* Prevent it being handled again. */
|
||||
trap = 0;
|
||||
/*
|
||||
* Go straight back into the guest with the
|
||||
* new NIP/MSR as set by TM emulation.
|
||||
*/
|
||||
mtspr(SPRN_HSRR0, vcpu->arch.regs.nip);
|
||||
mtspr(SPRN_HSRR1, vcpu->arch.shregs.msr);
|
||||
|
||||
/*
|
||||
* tm_return_to_guest re-loads SRR0/1, DAR,
|
||||
* DSISR after RI is cleared, in case they had
|
||||
* been clobbered by a MCE.
|
||||
*/
|
||||
__mtmsrd(0, 1); /* clear RI */
|
||||
goto tm_return_to_guest;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -499,6 +514,10 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
|
||||
* If we are in real mode, only switch MMU on after the MMU is
|
||||
* switched to host, to avoid the P9_RADIX_PREFETCH_BUG.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_PPC_TRANSACTIONAL_MEM) &&
|
||||
vcpu->arch.shregs.msr & MSR_TS_MASK)
|
||||
msr |= MSR_TS_S;
|
||||
|
||||
__mtmsrd(msr, 0);
|
||||
|
||||
end_timing(vcpu);
|
||||
|
@ -242,6 +242,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
|
||||
* value so we can restore it on the way out.
|
||||
*/
|
||||
orig_rets = args.rets;
|
||||
if (be32_to_cpu(args.nargs) >= ARRAY_SIZE(args.args)) {
|
||||
/*
|
||||
* Don't overflow our args array: ensure there is room for
|
||||
* at least rets[0] (even if the call specifies 0 nret).
|
||||
*
|
||||
* Each handler must then check for the correct nargs and nret
|
||||
* values, but they may always return failure in rets[0].
|
||||
*/
|
||||
rc = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
args.rets = &args.args[be32_to_cpu(args.nargs)];
|
||||
|
||||
mutex_lock(&vcpu->kvm->arch.rtas_token_lock);
|
||||
@ -269,9 +280,17 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
|
||||
fail:
|
||||
/*
|
||||
* We only get here if the guest has called RTAS with a bogus
|
||||
* args pointer. That means we can't get to the args, and so we
|
||||
* can't fail the RTAS call. So fail right out to userspace,
|
||||
* which should kill the guest.
|
||||
* args pointer or nargs/nret values that would overflow the
|
||||
* array. That means we can't get to the args, and so we can't
|
||||
* fail the RTAS call. So fail right out to userspace, which
|
||||
* should kill the guest.
|
||||
*
|
||||
* SLOF should actually pass the hcall return value from the
|
||||
* rtas handler call in r3, so enter_rtas could be modified to
|
||||
* return a failure indication in r3 and we could return such
|
||||
* errors to the guest rather than failing to host userspace.
|
||||
* However old guests that don't test for failure could then
|
||||
* continue silently after errors, so for now we won't do this.
|
||||
*/
|
||||
return rc;
|
||||
}
|
||||
|
@ -240,3 +240,13 @@ void __init setup_kuap(bool disabled)
|
||||
mtspr(SPRN_MD_AP, MD_APG_KUAP);
|
||||
}
|
||||
#endif
|
||||
|
||||
int pud_clear_huge(pud_t *pud)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pmd_clear_huge(pmd_t *pmd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ static int pasemi_system_reset_exception(struct pt_regs *regs)
|
||||
switch (regs->msr & SRR1_WAKEMASK) {
|
||||
case SRR1_WAKEDEC:
|
||||
set_dec(1);
|
||||
break;
|
||||
case SRR1_WAKEEE:
|
||||
/*
|
||||
* Handle these when interrupts get re-enabled and we take
|
||||
|
@ -27,10 +27,10 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md);
|
||||
|
||||
#define ARCH_EFI_IRQ_FLAGS_MASK (SR_IE | SR_SPIE)
|
||||
|
||||
/* Load initrd at enough distance from DRAM start */
|
||||
/* Load initrd anywhere in system RAM */
|
||||
static inline unsigned long efi_get_max_initrd_addr(unsigned long image_addr)
|
||||
{
|
||||
return image_addr + SZ_256M;
|
||||
return ULONG_MAX;
|
||||
}
|
||||
|
||||
#define alloc_screen_info(x...) (&screen_info)
|
||||
|
@ -132,8 +132,12 @@ unsigned long get_wchan(struct task_struct *task)
|
||||
{
|
||||
unsigned long pc = 0;
|
||||
|
||||
if (likely(task && task != current && !task_is_running(task)))
|
||||
if (likely(task && task != current && !task_is_running(task))) {
|
||||
if (!try_get_task_stack(task))
|
||||
return 0;
|
||||
walk_stackframe(task, NULL, save_wchan, &pc);
|
||||
put_task_stack(task);
|
||||
}
|
||||
return pc;
|
||||
}
|
||||
|
||||
|
@ -30,23 +30,23 @@ ENTRY(__asm_copy_from_user)
|
||||
* t0 - end of uncopied dst
|
||||
*/
|
||||
add t0, a0, a2
|
||||
bgtu a0, t0, 5f
|
||||
|
||||
/*
|
||||
* Use byte copy only if too small.
|
||||
* SZREG holds 4 for RV32 and 8 for RV64
|
||||
*/
|
||||
li a3, 8*SZREG /* size must be larger than size in word_copy */
|
||||
li a3, 9*SZREG /* size must be larger than size in word_copy */
|
||||
bltu a2, a3, .Lbyte_copy_tail
|
||||
|
||||
/*
|
||||
* Copy first bytes until dst is align to word boundary.
|
||||
* Copy first bytes until dst is aligned to word boundary.
|
||||
* a0 - start of dst
|
||||
* t1 - start of aligned dst
|
||||
*/
|
||||
addi t1, a0, SZREG-1
|
||||
andi t1, t1, ~(SZREG-1)
|
||||
/* dst is already aligned, skip */
|
||||
beq a0, t1, .Lskip_first_bytes
|
||||
beq a0, t1, .Lskip_align_dst
|
||||
1:
|
||||
/* a5 - one byte for copying data */
|
||||
fixup lb a5, 0(a1), 10f
|
||||
@ -55,7 +55,7 @@ ENTRY(__asm_copy_from_user)
|
||||
addi a0, a0, 1 /* dst */
|
||||
bltu a0, t1, 1b /* t1 - start of aligned dst */
|
||||
|
||||
.Lskip_first_bytes:
|
||||
.Lskip_align_dst:
|
||||
/*
|
||||
* Now dst is aligned.
|
||||
* Use shift-copy if src is misaligned.
|
||||
@ -72,10 +72,9 @@ ENTRY(__asm_copy_from_user)
|
||||
*
|
||||
* a0 - start of aligned dst
|
||||
* a1 - start of aligned src
|
||||
* a3 - a1 & mask:(SZREG-1)
|
||||
* t0 - end of aligned dst
|
||||
*/
|
||||
addi t0, t0, -(8*SZREG-1) /* not to over run */
|
||||
addi t0, t0, -(8*SZREG) /* not to over run */
|
||||
2:
|
||||
fixup REG_L a4, 0(a1), 10f
|
||||
fixup REG_L a5, SZREG(a1), 10f
|
||||
@ -97,7 +96,7 @@ ENTRY(__asm_copy_from_user)
|
||||
addi a1, a1, 8*SZREG
|
||||
bltu a0, t0, 2b
|
||||
|
||||
addi t0, t0, 8*SZREG-1 /* revert to original value */
|
||||
addi t0, t0, 8*SZREG /* revert to original value */
|
||||
j .Lbyte_copy_tail
|
||||
|
||||
.Lshift_copy:
|
||||
@ -107,7 +106,7 @@ ENTRY(__asm_copy_from_user)
|
||||
* For misaligned copy we still perform aligned word copy, but
|
||||
* we need to use the value fetched from the previous iteration and
|
||||
* do some shifts.
|
||||
* This is safe because reading less than a word size.
|
||||
* This is safe because reading is less than a word size.
|
||||
*
|
||||
* a0 - start of aligned dst
|
||||
* a1 - start of src
|
||||
@ -117,7 +116,7 @@ ENTRY(__asm_copy_from_user)
|
||||
*/
|
||||
/* calculating aligned word boundary for dst */
|
||||
andi t1, t0, ~(SZREG-1)
|
||||
/* Converting unaligned src to aligned arc */
|
||||
/* Converting unaligned src to aligned src */
|
||||
andi a1, a1, ~(SZREG-1)
|
||||
|
||||
/*
|
||||
@ -125,11 +124,11 @@ ENTRY(__asm_copy_from_user)
|
||||
* t3 - prev shift
|
||||
* t4 - current shift
|
||||
*/
|
||||
slli t3, a3, LGREG
|
||||
slli t3, a3, 3 /* converting bytes in a3 to bits */
|
||||
li a5, SZREG*8
|
||||
sub t4, a5, t3
|
||||
|
||||
/* Load the first word to combine with seceond word */
|
||||
/* Load the first word to combine with second word */
|
||||
fixup REG_L a5, 0(a1), 10f
|
||||
|
||||
3:
|
||||
@ -161,7 +160,7 @@ ENTRY(__asm_copy_from_user)
|
||||
* a1 - start of remaining src
|
||||
* t0 - end of remaining dst
|
||||
*/
|
||||
bgeu a0, t0, 5f
|
||||
bgeu a0, t0, .Lout_copy_user /* check if end of copy */
|
||||
4:
|
||||
fixup lb a5, 0(a1), 10f
|
||||
addi a1, a1, 1 /* src */
|
||||
@ -169,7 +168,7 @@ ENTRY(__asm_copy_from_user)
|
||||
addi a0, a0, 1 /* dst */
|
||||
bltu a0, t0, 4b /* t0 - end of dst */
|
||||
|
||||
5:
|
||||
.Lout_copy_user:
|
||||
/* Disable access to user memory */
|
||||
csrc CSR_STATUS, t6
|
||||
li a0, 0
|
||||
|
@ -127,10 +127,17 @@ void __init mem_init(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* The default maximal physical memory size is -PAGE_OFFSET,
|
||||
* limit the memory size via mem.
|
||||
* The default maximal physical memory size is -PAGE_OFFSET for 32-bit kernel,
|
||||
* whereas for 64-bit kernel, the end of the virtual address space is occupied
|
||||
* by the modules/BPF/kernel mappings which reduces the available size of the
|
||||
* linear mapping.
|
||||
* Limit the memory size via mem.
|
||||
*/
|
||||
#ifdef CONFIG_64BIT
|
||||
static phys_addr_t memory_limit = -PAGE_OFFSET - SZ_4G;
|
||||
#else
|
||||
static phys_addr_t memory_limit = -PAGE_OFFSET;
|
||||
#endif
|
||||
|
||||
static int __init early_mem(char *p)
|
||||
{
|
||||
@ -152,7 +159,7 @@ static void __init setup_bootmem(void)
|
||||
{
|
||||
phys_addr_t vmlinux_end = __pa_symbol(&_end);
|
||||
phys_addr_t vmlinux_start = __pa_symbol(&_start);
|
||||
phys_addr_t max_mapped_addr = __pa(~(ulong)0);
|
||||
phys_addr_t __maybe_unused max_mapped_addr;
|
||||
phys_addr_t dram_end;
|
||||
|
||||
#ifdef CONFIG_XIP_KERNEL
|
||||
@ -175,14 +182,21 @@ static void __init setup_bootmem(void)
|
||||
memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
|
||||
|
||||
dram_end = memblock_end_of_DRAM();
|
||||
|
||||
#ifndef CONFIG_64BIT
|
||||
/*
|
||||
* memblock allocator is not aware of the fact that last 4K bytes of
|
||||
* the addressable memory can not be mapped because of IS_ERR_VALUE
|
||||
* macro. Make sure that last 4k bytes are not usable by memblock
|
||||
* if end of dram is equal to maximum addressable memory.
|
||||
* if end of dram is equal to maximum addressable memory. For 64-bit
|
||||
* kernel, this problem can't happen here as the end of the virtual
|
||||
* address space is occupied by the kernel mapping then this check must
|
||||
* be done in create_kernel_page_table.
|
||||
*/
|
||||
max_mapped_addr = __pa(~(ulong)0);
|
||||
if (max_mapped_addr == (dram_end - 1))
|
||||
memblock_set_current_limit(max_mapped_addr - 4096);
|
||||
#endif
|
||||
|
||||
min_low_pfn = PFN_UP(memblock_start_of_DRAM());
|
||||
max_low_pfn = max_pfn = PFN_DOWN(dram_end);
|
||||
@ -570,6 +584,14 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)
|
||||
BUG_ON((PAGE_OFFSET % PGDIR_SIZE) != 0);
|
||||
BUG_ON((kernel_map.phys_addr % map_size) != 0);
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
/*
|
||||
* The last 4K bytes of the addressable memory can not be mapped because
|
||||
* of IS_ERR_VALUE macro.
|
||||
*/
|
||||
BUG_ON((kernel_map.virt_addr + kernel_map.size) > ADDRESS_SPACE_END - SZ_4K);
|
||||
#endif
|
||||
|
||||
pt_ops.alloc_pte = alloc_pte_early;
|
||||
pt_ops.get_pte_virt = get_pte_virt_early;
|
||||
#ifndef __PAGETABLE_PMD_FOLDED
|
||||
@ -709,6 +731,8 @@ static void __init setup_vm_final(void)
|
||||
if (start <= __pa(PAGE_OFFSET) &&
|
||||
__pa(PAGE_OFFSET) < end)
|
||||
start = __pa(PAGE_OFFSET);
|
||||
if (end >= __pa(PAGE_OFFSET) + memory_limit)
|
||||
end = __pa(PAGE_OFFSET) + memory_limit;
|
||||
|
||||
map_size = best_map_size(start, end - start);
|
||||
for (pa = start; pa < end; pa += map_size) {
|
||||
|
@ -9,16 +9,6 @@
|
||||
#include <asm/errno.h>
|
||||
#include <asm/sigp.h>
|
||||
|
||||
#ifdef CC_USING_EXPOLINE
|
||||
.pushsection .dma.text.__s390_indirect_jump_r14,"axG"
|
||||
__dma__s390_indirect_jump_r14:
|
||||
larl %r1,0f
|
||||
ex 0,0(%r1)
|
||||
j .
|
||||
0: br %r14
|
||||
.popsection
|
||||
#endif
|
||||
|
||||
.section .dma.text,"ax"
|
||||
/*
|
||||
* Simplified version of expoline thunk. The normal thunks can not be used here,
|
||||
@ -27,11 +17,10 @@ __dma__s390_indirect_jump_r14:
|
||||
* affects a few functions that are not performance-relevant.
|
||||
*/
|
||||
.macro BR_EX_DMA_r14
|
||||
#ifdef CC_USING_EXPOLINE
|
||||
jg __dma__s390_indirect_jump_r14
|
||||
#else
|
||||
br %r14
|
||||
#endif
|
||||
larl %r1,0f
|
||||
ex 0,0(%r1)
|
||||
j .
|
||||
0: br %r14
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
@ -5,7 +5,12 @@ CONFIG_WATCH_QUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
CONFIG_BPF_LSM=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_SCHED_CORE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
@ -28,14 +33,13 @@ CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_CGROUP_MISC=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_SYSFS_SYSCALL is not set
|
||||
CONFIG_BPF_LSM=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_PROFILING=y
|
||||
@ -76,6 +80,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_BLK_WBT=y
|
||||
CONFIG_BLK_CGROUP_IOLATENCY=y
|
||||
CONFIG_BLK_CGROUP_IOCOST=y
|
||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
@ -95,6 +100,7 @@ CONFIG_CLEANCACHE=y
|
||||
CONFIG_FRONTSWAP=y
|
||||
CONFIG_CMA_DEBUG=y
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_SYSFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
CONFIG_MEM_SOFT_DIRTY=y
|
||||
CONFIG_ZSWAP=y
|
||||
@ -158,6 +164,7 @@ CONFIG_IPV6_RPL_LWTUNNEL=y
|
||||
CONFIG_MPTCP=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=m
|
||||
CONFIG_NETFILTER_NETLINK_HOOK=m
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
@ -280,6 +287,7 @@ CONFIG_IP_VS_FTP=m
|
||||
CONFIG_IP_VS_PE_SIP=m
|
||||
CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_LOG_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -384,12 +392,11 @@ CONFIG_VSOCKETS=m
|
||||
CONFIG_VIRTIO_VSOCKETS=m
|
||||
CONFIG_NETLINK_DIAG=m
|
||||
CONFIG_CGROUP_NET_PRIO=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_IOV=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_DEBUG=y
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_S390=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
@ -436,7 +443,7 @@ CONFIG_MD_MULTIPATH=m
|
||||
CONFIG_MD_FAULTY=m
|
||||
CONFIG_MD_CLUSTER=m
|
||||
CONFIG_BCACHE=m
|
||||
CONFIG_BLK_DEV_DM=m
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_UNSTRIPED=m
|
||||
CONFIG_DM_CRYPT=m
|
||||
CONFIG_DM_SNAPSHOT=m
|
||||
@ -453,6 +460,7 @@ CONFIG_DM_MULTIPATH_ST=m
|
||||
CONFIG_DM_MULTIPATH_HST=m
|
||||
CONFIG_DM_MULTIPATH_IOA=m
|
||||
CONFIG_DM_DELAY=m
|
||||
CONFIG_DM_INIT=y
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_DM_FLAKEY=m
|
||||
CONFIG_DM_VERITY=m
|
||||
@ -495,6 +503,7 @@ CONFIG_NLMON=m
|
||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MICROSOFT is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX5_CORE=m
|
||||
@ -551,7 +560,6 @@ CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_LEGACY_PTY_COUNT=0
|
||||
CONFIG_VIRTIO_CONSOLE=m
|
||||
CONFIG_HW_RANDOM_VIRTIO=m
|
||||
CONFIG_RAW_DRIVER=m
|
||||
CONFIG_HANGCHECK_TIMER=m
|
||||
CONFIG_TN3270_FS=y
|
||||
CONFIG_PPS=m
|
||||
@ -574,7 +582,6 @@ CONFIG_SYNC_FILE=y
|
||||
CONFIG_VFIO=m
|
||||
CONFIG_VFIO_PCI=m
|
||||
CONFIG_VFIO_MDEV=m
|
||||
CONFIG_VFIO_MDEV_DEVICE=m
|
||||
CONFIG_VIRTIO_PCI=m
|
||||
CONFIG_VIRTIO_BALLOON=m
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
@ -619,6 +626,7 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=m
|
||||
CONFIG_VIRTIO_FS=m
|
||||
CONFIG_OVERLAY_FS=m
|
||||
CONFIG_NETFS_STATS=y
|
||||
CONFIG_FSCACHE=m
|
||||
CONFIG_CACHEFILES=m
|
||||
CONFIG_ISO9660_FS=y
|
||||
@ -654,7 +662,6 @@ CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_STATS2=y
|
||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||
CONFIG_CIFS_UPCALL=y
|
||||
CONFIG_CIFS_XATTR=y
|
||||
@ -682,6 +689,7 @@ CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
||||
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
||||
CONFIG_SECURITY_LANDLOCK=y
|
||||
CONFIG_INTEGRITY_SIGNATURE=y
|
||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||
CONFIG_IMA=y
|
||||
@ -696,6 +704,7 @@ CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_DH=m
|
||||
CONFIG_CRYPTO_ECDH=m
|
||||
CONFIG_CRYPTO_ECDSA=m
|
||||
CONFIG_CRYPTO_ECRDSA=m
|
||||
CONFIG_CRYPTO_SM2=m
|
||||
CONFIG_CRYPTO_CURVE25519=m
|
||||
@ -843,7 +852,6 @@ CONFIG_FAULT_INJECTION_DEBUG_FS=y
|
||||
CONFIG_FAIL_FUNCTION=y
|
||||
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
|
||||
CONFIG_LKDTM=m
|
||||
CONFIG_TEST_LIST_SORT=y
|
||||
CONFIG_TEST_MIN_HEAP=y
|
||||
CONFIG_TEST_SORT=y
|
||||
CONFIG_KPROBES_SANITY_TEST=y
|
||||
@ -853,3 +861,4 @@ CONFIG_PERCPU_TEST=m
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_TEST_BITOPS=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_TEST_LIVEPATCH=m
|
||||
|
@ -4,6 +4,11 @@ CONFIG_WATCH_QUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
CONFIG_BPF_LSM=y
|
||||
CONFIG_SCHED_CORE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
@ -26,14 +31,13 @@ CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
CONFIG_CGROUP_BPF=y
|
||||
CONFIG_CGROUP_MISC=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CHECKPOINT_RESTORE=y
|
||||
CONFIG_SCHED_AUTOGROUP=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_SYSFS_SYSCALL is not set
|
||||
CONFIG_BPF_LSM=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_PROFILING=y
|
||||
@ -70,6 +74,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_BLK_WBT=y
|
||||
CONFIG_BLK_CGROUP_IOLATENCY=y
|
||||
CONFIG_BLK_CGROUP_IOCOST=y
|
||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
@ -87,6 +92,7 @@ CONFIG_KSM=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_CLEANCACHE=y
|
||||
CONFIG_FRONTSWAP=y
|
||||
CONFIG_CMA_SYSFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
CONFIG_MEM_SOFT_DIRTY=y
|
||||
CONFIG_ZSWAP=y
|
||||
@ -149,6 +155,7 @@ CONFIG_IPV6_RPL_LWTUNNEL=y
|
||||
CONFIG_MPTCP=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_BRIDGE_NETFILTER=m
|
||||
CONFIG_NETFILTER_NETLINK_HOOK=m
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_SECMARK=y
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
@ -271,6 +278,7 @@ CONFIG_IP_VS_FTP=m
|
||||
CONFIG_IP_VS_PE_SIP=m
|
||||
CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_LOG_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -374,11 +382,10 @@ CONFIG_VSOCKETS=m
|
||||
CONFIG_VIRTIO_VSOCKETS=m
|
||||
CONFIG_NETLINK_DIAG=m
|
||||
CONFIG_CGROUP_NET_PRIO=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_IOV=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_S390=y
|
||||
CONFIG_UEVENT_HELPER=y
|
||||
@ -427,7 +434,7 @@ CONFIG_MD_MULTIPATH=m
|
||||
CONFIG_MD_FAULTY=m
|
||||
CONFIG_MD_CLUSTER=m
|
||||
CONFIG_BCACHE=m
|
||||
CONFIG_BLK_DEV_DM=m
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_UNSTRIPED=m
|
||||
CONFIG_DM_CRYPT=m
|
||||
CONFIG_DM_SNAPSHOT=m
|
||||
@ -444,6 +451,7 @@ CONFIG_DM_MULTIPATH_ST=m
|
||||
CONFIG_DM_MULTIPATH_HST=m
|
||||
CONFIG_DM_MULTIPATH_IOA=m
|
||||
CONFIG_DM_DELAY=m
|
||||
CONFIG_DM_INIT=y
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_DM_FLAKEY=m
|
||||
CONFIG_DM_VERITY=m
|
||||
@ -487,6 +495,7 @@ CONFIG_NLMON=m
|
||||
# CONFIG_NET_VENDOR_GOOGLE is not set
|
||||
# CONFIG_NET_VENDOR_HUAWEI is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MICROSOFT is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX5_CORE=m
|
||||
@ -543,7 +552,6 @@ CONFIG_INPUT_EVDEV=y
|
||||
CONFIG_LEGACY_PTY_COUNT=0
|
||||
CONFIG_VIRTIO_CONSOLE=m
|
||||
CONFIG_HW_RANDOM_VIRTIO=m
|
||||
CONFIG_RAW_DRIVER=m
|
||||
CONFIG_HANGCHECK_TIMER=m
|
||||
CONFIG_TN3270_FS=y
|
||||
# CONFIG_PTP_1588_CLOCK is not set
|
||||
@ -566,7 +574,6 @@ CONFIG_SYNC_FILE=y
|
||||
CONFIG_VFIO=m
|
||||
CONFIG_VFIO_PCI=m
|
||||
CONFIG_VFIO_MDEV=m
|
||||
CONFIG_VFIO_MDEV_DEVICE=m
|
||||
CONFIG_VIRTIO_PCI=m
|
||||
CONFIG_VIRTIO_BALLOON=m
|
||||
CONFIG_VIRTIO_INPUT=y
|
||||
@ -607,6 +614,7 @@ CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=m
|
||||
CONFIG_VIRTIO_FS=m
|
||||
CONFIG_OVERLAY_FS=m
|
||||
CONFIG_NETFS_STATS=y
|
||||
CONFIG_FSCACHE=m
|
||||
CONFIG_CACHEFILES=m
|
||||
CONFIG_ISO9660_FS=y
|
||||
@ -642,7 +650,6 @@ CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_STATS2=y
|
||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||
CONFIG_CIFS_UPCALL=y
|
||||
CONFIG_CIFS_XATTR=y
|
||||
@ -669,6 +676,7 @@ CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||
CONFIG_SECURITY_SELINUX_DISABLE=y
|
||||
CONFIG_SECURITY_LOCKDOWN_LSM=y
|
||||
CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y
|
||||
CONFIG_SECURITY_LANDLOCK=y
|
||||
CONFIG_INTEGRITY_SIGNATURE=y
|
||||
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
|
||||
CONFIG_IMA=y
|
||||
@ -684,6 +692,7 @@ CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_DH=m
|
||||
CONFIG_CRYPTO_ECDH=m
|
||||
CONFIG_CRYPTO_ECDSA=m
|
||||
CONFIG_CRYPTO_ECRDSA=m
|
||||
CONFIG_CRYPTO_SM2=m
|
||||
CONFIG_CRYPTO_CURVE25519=m
|
||||
@ -754,6 +763,7 @@ CONFIG_CRC8=m
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_CMA_SIZE_MBYTES=0
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DYNAMIC_DEBUG=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_INFO_DWARF4=y
|
||||
CONFIG_GDB_SCRIPTS=y
|
||||
@ -781,3 +791,4 @@ CONFIG_LKDTM=m
|
||||
CONFIG_PERCPU_TEST=m
|
||||
CONFIG_ATOMIC64_SELFTEST=y
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_TEST_LIVEPATCH=m
|
||||
|
@ -29,9 +29,9 @@ CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_COMPACTION is not set
|
||||
# CONFIG_MIGRATION is not set
|
||||
# CONFIG_BOUNCE is not set
|
||||
CONFIG_NET=y
|
||||
# CONFIG_IUCV is not set
|
||||
# CONFIG_PCPU_DEV_REFCNT is not set
|
||||
# CONFIG_ETHTOOL_NETLINK is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
@ -51,7 +51,6 @@ CONFIG_ZFCP=y
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_HVC_IUCV is not set
|
||||
# CONFIG_HW_RANDOM_S390 is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
# CONFIG_HMC_DRV is not set
|
||||
# CONFIG_S390_TAPE is not set
|
||||
# CONFIG_VMCP is not set
|
||||
|
@ -19,6 +19,7 @@ void ftrace_caller(void);
|
||||
|
||||
extern char ftrace_graph_caller_end;
|
||||
extern unsigned long ftrace_plt;
|
||||
extern void *ftrace_func;
|
||||
|
||||
struct dyn_arch_ftrace { };
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
* trampoline (ftrace_plt), which clobbers also r1.
|
||||
*/
|
||||
|
||||
void *ftrace_func __read_mostly = ftrace_stub;
|
||||
unsigned long ftrace_plt;
|
||||
|
||||
int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
|
||||
@ -85,6 +86,7 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
||||
|
||||
int ftrace_update_ftrace_func(ftrace_func_t func)
|
||||
{
|
||||
ftrace_func = func;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ ENTRY(ftrace_caller)
|
||||
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
|
||||
aghik %r2,%r0,-MCOUNT_INSN_SIZE
|
||||
lgrl %r4,function_trace_op
|
||||
lgrl %r1,ftrace_trace_function
|
||||
lgrl %r1,ftrace_func
|
||||
#else
|
||||
lgr %r2,%r0
|
||||
aghi %r2,-MCOUNT_INSN_SIZE
|
||||
larl %r4,function_trace_op
|
||||
lg %r4,0(%r4)
|
||||
larl %r1,ftrace_trace_function
|
||||
larl %r1,ftrace_func
|
||||
lg %r1,0(%r1)
|
||||
#endif
|
||||
lgr %r3,%r14
|
||||
|
@ -745,7 +745,7 @@ static int __init cpumf_pmu_init(void)
|
||||
if (!cf_dbg) {
|
||||
pr_err("Registration of s390dbf(cpum_cf) failed\n");
|
||||
return -ENOMEM;
|
||||
};
|
||||
}
|
||||
debug_register_view(cf_dbg, &debug_sprintf_view);
|
||||
|
||||
cpumf_pmu.attr_groups = cpumf_cf_event_group();
|
||||
|
@ -29,6 +29,7 @@ $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_32)
|
||||
$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_32)
|
||||
|
||||
obj-y += vdso32_wrapper.o
|
||||
targets += vdso32.lds
|
||||
CPPFLAGS_vdso32.lds += -P -C -U$(ARCH)
|
||||
|
||||
# Disable gcov profiling, ubsan and kasan for VDSO code
|
||||
|
@ -237,7 +237,7 @@ static void __init hv_smp_prepare_cpus(unsigned int max_cpus)
|
||||
for_each_present_cpu(i) {
|
||||
if (i == 0)
|
||||
continue;
|
||||
ret = hv_call_add_logical_proc(numa_cpu_node(i), i, i);
|
||||
ret = hv_call_add_logical_proc(numa_cpu_node(i), i, cpu_physical_id(i));
|
||||
BUG_ON(ret);
|
||||
}
|
||||
|
||||
|
@ -79,9 +79,10 @@ __jump_label_patch(struct jump_entry *entry, enum jump_label_type type)
|
||||
return (struct jump_label_patch){.code = code, .size = size};
|
||||
}
|
||||
|
||||
static inline void __jump_label_transform(struct jump_entry *entry,
|
||||
enum jump_label_type type,
|
||||
int init)
|
||||
static __always_inline void
|
||||
__jump_label_transform(struct jump_entry *entry,
|
||||
enum jump_label_type type,
|
||||
int init)
|
||||
{
|
||||
const struct jump_label_patch jlp = __jump_label_patch(entry, type);
|
||||
|
||||
|
@ -682,7 +682,6 @@ int p4d_clear_huge(p4d_t *p4d)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 3
|
||||
/**
|
||||
* pud_set_huge - setup kernel PUD mapping
|
||||
*
|
||||
@ -721,23 +720,6 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* pud_clear_huge - clear kernel PUD mapping when it is set
|
||||
*
|
||||
* Returns 1 on success and 0 on failure (no PUD map is found).
|
||||
*/
|
||||
int pud_clear_huge(pud_t *pud)
|
||||
{
|
||||
if (pud_large(*pud)) {
|
||||
pud_clear(pud);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_PGTABLE_LEVELS > 2
|
||||
/**
|
||||
* pmd_set_huge - setup kernel PMD mapping
|
||||
*
|
||||
@ -768,6 +750,21 @@ int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* pud_clear_huge - clear kernel PUD mapping when it is set
|
||||
*
|
||||
* Returns 1 on success and 0 on failure (no PUD map is found).
|
||||
*/
|
||||
int pud_clear_huge(pud_t *pud)
|
||||
{
|
||||
if (pud_large(*pud)) {
|
||||
pud_clear(pud);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* pmd_clear_huge - clear kernel PMD mapping when it is set
|
||||
*
|
||||
@ -782,7 +779,6 @@ int pmd_clear_huge(pmd_t *pmd)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
/**
|
||||
|
@ -370,7 +370,7 @@ config ACPI_TABLE_UPGRADE
|
||||
config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
|
||||
bool "Override ACPI tables from built-in initrd"
|
||||
depends on ACPI_TABLE_UPGRADE
|
||||
depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION=""
|
||||
depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION_NONE
|
||||
help
|
||||
This option provides functionality to override arbitrary ACPI tables
|
||||
from built-in uncompressed initrd.
|
||||
|
@ -860,11 +860,9 @@ EXPORT_SYMBOL(acpi_dev_present);
|
||||
* Return the next match of ACPI device if another matching device was present
|
||||
* at the moment of invocation, or NULL otherwise.
|
||||
*
|
||||
* FIXME: The function does not tolerate the sudden disappearance of @adev, e.g.
|
||||
* in the case of a hotplug event. That said, the caller should ensure that
|
||||
* this will never happen.
|
||||
*
|
||||
* The caller is responsible for invoking acpi_dev_put() on the returned device.
|
||||
* On the other hand the function invokes acpi_dev_put() on the given @adev
|
||||
* assuming that its reference counter had been increased beforehand.
|
||||
*
|
||||
* See additional information in acpi_dev_present() as well.
|
||||
*/
|
||||
@ -880,6 +878,7 @@ acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const cha
|
||||
match.hrv = hrv;
|
||||
|
||||
dev = bus_find_device(&acpi_bus_type, start, &match, acpi_dev_match_cb);
|
||||
acpi_dev_put(adev);
|
||||
return dev ? to_acpi_device(dev) : NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_dev_get_next_match_dev);
|
||||
|
@ -231,6 +231,8 @@ EXPORT_SYMBOL_GPL(auxiliary_find_device);
|
||||
int __auxiliary_driver_register(struct auxiliary_driver *auxdrv,
|
||||
struct module *owner, const char *modname)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (WARN_ON(!auxdrv->probe) || WARN_ON(!auxdrv->id_table))
|
||||
return -EINVAL;
|
||||
|
||||
@ -246,7 +248,11 @@ int __auxiliary_driver_register(struct auxiliary_driver *auxdrv,
|
||||
auxdrv->driver.bus = &auxiliary_bus_type;
|
||||
auxdrv->driver.mod_name = modname;
|
||||
|
||||
return driver_register(&auxdrv->driver);
|
||||
ret = driver_register(&auxdrv->driver);
|
||||
if (ret)
|
||||
kfree(auxdrv->driver.name);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__auxiliary_driver_register);
|
||||
|
||||
|
@ -574,8 +574,10 @@ static void devlink_remove_symlinks(struct device *dev,
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
|
||||
sysfs_remove_link(&con->kobj, buf);
|
||||
if (device_is_registered(con)) {
|
||||
snprintf(buf, len, "supplier:%s:%s", dev_bus_name(sup), dev_name(sup));
|
||||
sysfs_remove_link(&con->kobj, buf);
|
||||
}
|
||||
snprintf(buf, len, "consumer:%s:%s", dev_bus_name(con), dev_name(con));
|
||||
sysfs_remove_link(&sup->kobj, buf);
|
||||
kfree(buf);
|
||||
|
@ -4100,8 +4100,6 @@ static void rbd_acquire_lock(struct work_struct *work)
|
||||
|
||||
static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)
|
||||
{
|
||||
bool need_wait;
|
||||
|
||||
dout("%s rbd_dev %p\n", __func__, rbd_dev);
|
||||
lockdep_assert_held_write(&rbd_dev->lock_rwsem);
|
||||
|
||||
@ -4113,11 +4111,11 @@ static bool rbd_quiesce_lock(struct rbd_device *rbd_dev)
|
||||
*/
|
||||
rbd_dev->lock_state = RBD_LOCK_STATE_RELEASING;
|
||||
rbd_assert(!completion_done(&rbd_dev->releasing_wait));
|
||||
need_wait = !list_empty(&rbd_dev->running_list);
|
||||
downgrade_write(&rbd_dev->lock_rwsem);
|
||||
if (need_wait)
|
||||
wait_for_completion(&rbd_dev->releasing_wait);
|
||||
up_read(&rbd_dev->lock_rwsem);
|
||||
if (list_empty(&rbd_dev->running_list))
|
||||
return true;
|
||||
|
||||
up_write(&rbd_dev->lock_rwsem);
|
||||
wait_for_completion(&rbd_dev->releasing_wait);
|
||||
|
||||
down_write(&rbd_dev->lock_rwsem);
|
||||
if (rbd_dev->lock_state != RBD_LOCK_STATE_RELEASING)
|
||||
@ -4203,15 +4201,11 @@ static void rbd_handle_acquired_lock(struct rbd_device *rbd_dev, u8 struct_v,
|
||||
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
||||
down_write(&rbd_dev->lock_rwsem);
|
||||
if (rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
||||
/*
|
||||
* we already know that the remote client is
|
||||
* the owner
|
||||
*/
|
||||
up_write(&rbd_dev->lock_rwsem);
|
||||
return;
|
||||
dout("%s rbd_dev %p cid %llu-%llu == owner_cid\n",
|
||||
__func__, rbd_dev, cid.gid, cid.handle);
|
||||
} else {
|
||||
rbd_set_owner_cid(rbd_dev, &cid);
|
||||
}
|
||||
|
||||
rbd_set_owner_cid(rbd_dev, &cid);
|
||||
downgrade_write(&rbd_dev->lock_rwsem);
|
||||
} else {
|
||||
down_read(&rbd_dev->lock_rwsem);
|
||||
@ -4236,14 +4230,12 @@ static void rbd_handle_released_lock(struct rbd_device *rbd_dev, u8 struct_v,
|
||||
if (!rbd_cid_equal(&cid, &rbd_empty_cid)) {
|
||||
down_write(&rbd_dev->lock_rwsem);
|
||||
if (!rbd_cid_equal(&cid, &rbd_dev->owner_cid)) {
|
||||
dout("%s rbd_dev %p unexpected owner, cid %llu-%llu != owner_cid %llu-%llu\n",
|
||||
dout("%s rbd_dev %p cid %llu-%llu != owner_cid %llu-%llu\n",
|
||||
__func__, rbd_dev, cid.gid, cid.handle,
|
||||
rbd_dev->owner_cid.gid, rbd_dev->owner_cid.handle);
|
||||
up_write(&rbd_dev->lock_rwsem);
|
||||
return;
|
||||
} else {
|
||||
rbd_set_owner_cid(rbd_dev, &rbd_empty_cid);
|
||||
}
|
||||
|
||||
rbd_set_owner_cid(rbd_dev, &rbd_empty_cid);
|
||||
downgrade_write(&rbd_dev->lock_rwsem);
|
||||
} else {
|
||||
down_read(&rbd_dev->lock_rwsem);
|
||||
@ -4951,6 +4943,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
|
||||
disk->minors = RBD_MINORS_PER_MAJOR;
|
||||
}
|
||||
disk->fops = &rbd_bd_ops;
|
||||
disk->private_data = rbd_dev;
|
||||
|
||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||
/* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */
|
||||
|
@ -773,11 +773,18 @@ static void mhi_process_cmd_completion(struct mhi_controller *mhi_cntrl,
|
||||
cmd_pkt = mhi_to_virtual(mhi_ring, ptr);
|
||||
|
||||
chan = MHI_TRE_GET_CMD_CHID(cmd_pkt);
|
||||
mhi_chan = &mhi_cntrl->mhi_chan[chan];
|
||||
write_lock_bh(&mhi_chan->lock);
|
||||
mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre);
|
||||
complete(&mhi_chan->completion);
|
||||
write_unlock_bh(&mhi_chan->lock);
|
||||
|
||||
if (chan < mhi_cntrl->max_chan &&
|
||||
mhi_cntrl->mhi_chan[chan].configured) {
|
||||
mhi_chan = &mhi_cntrl->mhi_chan[chan];
|
||||
write_lock_bh(&mhi_chan->lock);
|
||||
mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre);
|
||||
complete(&mhi_chan->completion);
|
||||
write_unlock_bh(&mhi_chan->lock);
|
||||
} else {
|
||||
dev_err(&mhi_cntrl->mhi_dev->dev,
|
||||
"Completion packet for invalid channel ID: %d\n", chan);
|
||||
}
|
||||
|
||||
mhi_del_ring_element(mhi_cntrl, mhi_ring);
|
||||
}
|
||||
|
@ -32,6 +32,8 @@
|
||||
* @edl: emergency download mode firmware path (if any)
|
||||
* @bar_num: PCI base address register to use for MHI MMIO register space
|
||||
* @dma_data_width: DMA transfer word size (32 or 64 bits)
|
||||
* @sideband_wake: Devices using dedicated sideband GPIO for wakeup instead
|
||||
* of inband wake support (such as sdx24)
|
||||
*/
|
||||
struct mhi_pci_dev_info {
|
||||
const struct mhi_controller_config *config;
|
||||
@ -40,6 +42,7 @@ struct mhi_pci_dev_info {
|
||||
const char *edl;
|
||||
unsigned int bar_num;
|
||||
unsigned int dma_data_width;
|
||||
bool sideband_wake;
|
||||
};
|
||||
|
||||
#define MHI_CHANNEL_CONFIG_UL(ch_num, ch_name, el_count, ev_ring) \
|
||||
@ -72,6 +75,22 @@ struct mhi_pci_dev_info {
|
||||
.doorbell_mode_switch = false, \
|
||||
}
|
||||
|
||||
#define MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(ch_num, ch_name, el_count, ev_ring) \
|
||||
{ \
|
||||
.num = ch_num, \
|
||||
.name = ch_name, \
|
||||
.num_elements = el_count, \
|
||||
.event_ring = ev_ring, \
|
||||
.dir = DMA_FROM_DEVICE, \
|
||||
.ee_mask = BIT(MHI_EE_AMSS), \
|
||||
.pollcfg = 0, \
|
||||
.doorbell = MHI_DB_BRST_DISABLE, \
|
||||
.lpm_notify = false, \
|
||||
.offload_channel = false, \
|
||||
.doorbell_mode_switch = false, \
|
||||
.auto_queue = true, \
|
||||
}
|
||||
|
||||
#define MHI_EVENT_CONFIG_CTRL(ev_ring, el_count) \
|
||||
{ \
|
||||
.num_elements = el_count, \
|
||||
@ -210,7 +229,7 @@ static const struct mhi_channel_config modem_qcom_v1_mhi_channels[] = {
|
||||
MHI_CHANNEL_CONFIG_UL(14, "QMI", 4, 0),
|
||||
MHI_CHANNEL_CONFIG_DL(15, "QMI", 4, 0),
|
||||
MHI_CHANNEL_CONFIG_UL(20, "IPCR", 8, 0),
|
||||
MHI_CHANNEL_CONFIG_DL(21, "IPCR", 8, 0),
|
||||
MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(21, "IPCR", 8, 0),
|
||||
MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
|
||||
MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
|
||||
MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
|
||||
@ -242,7 +261,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = {
|
||||
.edl = "qcom/sdx65m/edl.mbn",
|
||||
.config = &modem_qcom_v1_mhiv_config,
|
||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||
.dma_data_width = 32
|
||||
.dma_data_width = 32,
|
||||
.sideband_wake = false,
|
||||
};
|
||||
|
||||
static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = {
|
||||
@ -251,7 +271,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = {
|
||||
.edl = "qcom/sdx55m/edl.mbn",
|
||||
.config = &modem_qcom_v1_mhiv_config,
|
||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||
.dma_data_width = 32
|
||||
.dma_data_width = 32,
|
||||
.sideband_wake = false,
|
||||
};
|
||||
|
||||
static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = {
|
||||
@ -259,7 +280,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = {
|
||||
.edl = "qcom/prog_firehose_sdx24.mbn",
|
||||
.config = &modem_qcom_v1_mhiv_config,
|
||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||
.dma_data_width = 32
|
||||
.dma_data_width = 32,
|
||||
.sideband_wake = true,
|
||||
};
|
||||
|
||||
static const struct mhi_channel_config mhi_quectel_em1xx_channels[] = {
|
||||
@ -301,7 +323,8 @@ static const struct mhi_pci_dev_info mhi_quectel_em1xx_info = {
|
||||
.edl = "qcom/prog_firehose_sdx24.mbn",
|
||||
.config = &modem_quectel_em1xx_config,
|
||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||
.dma_data_width = 32
|
||||
.dma_data_width = 32,
|
||||
.sideband_wake = true,
|
||||
};
|
||||
|
||||
static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = {
|
||||
@ -339,7 +362,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = {
|
||||
.edl = "qcom/sdx55m/edl.mbn",
|
||||
.config = &modem_foxconn_sdx55_config,
|
||||
.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
|
||||
.dma_data_width = 32
|
||||
.dma_data_width = 32,
|
||||
.sideband_wake = false,
|
||||
};
|
||||
|
||||
static const struct pci_device_id mhi_pci_id_table[] = {
|
||||
@ -640,9 +664,12 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
mhi_cntrl->status_cb = mhi_pci_status_cb;
|
||||
mhi_cntrl->runtime_get = mhi_pci_runtime_get;
|
||||
mhi_cntrl->runtime_put = mhi_pci_runtime_put;
|
||||
mhi_cntrl->wake_get = mhi_pci_wake_get_nop;
|
||||
mhi_cntrl->wake_put = mhi_pci_wake_put_nop;
|
||||
mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop;
|
||||
|
||||
if (info->sideband_wake) {
|
||||
mhi_cntrl->wake_get = mhi_pci_wake_get_nop;
|
||||
mhi_cntrl->wake_put = mhi_pci_wake_put_nop;
|
||||
mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop;
|
||||
}
|
||||
|
||||
err = mhi_pci_claim(mhi_cntrl, info->bar_num, DMA_BIT_MASK(info->dma_data_width));
|
||||
if (err)
|
||||
|
@ -333,8 +333,6 @@ vc_mem_init(void)
|
||||
vc_mem_inited = 1;
|
||||
return 0;
|
||||
|
||||
device_destroy(vc_mem_class, vc_mem_devnum);
|
||||
|
||||
out_class_destroy:
|
||||
class_destroy(vc_mem_class);
|
||||
vc_mem_class = NULL;
|
||||
|
@ -34,7 +34,6 @@ static long __init parse_acpi_path(const struct efi_dev_path *node,
|
||||
break;
|
||||
if (!adev->pnp.unique_id && node->acpi.uid == 0)
|
||||
break;
|
||||
acpi_dev_put(adev);
|
||||
}
|
||||
if (!adev)
|
||||
return -ENODEV;
|
||||
|
@ -896,6 +896,7 @@ static int __init efi_memreserve_map_root(void)
|
||||
static int efi_mem_reserve_iomem(phys_addr_t addr, u64 size)
|
||||
{
|
||||
struct resource *res, *parent;
|
||||
int ret;
|
||||
|
||||
res = kzalloc(sizeof(struct resource), GFP_ATOMIC);
|
||||
if (!res)
|
||||
@ -908,7 +909,17 @@ static int efi_mem_reserve_iomem(phys_addr_t addr, u64 size)
|
||||
|
||||
/* we expect a conflict with a 'System RAM' region */
|
||||
parent = request_resource_conflict(&iomem_resource, res);
|
||||
return parent ? request_resource(parent, res) : 0;
|
||||
ret = parent ? request_resource(parent, res) : 0;
|
||||
|
||||
/*
|
||||
* Given that efi_mem_reserve_iomem() can be called at any
|
||||
* time, only call memblock_reserve() if the architecture
|
||||
* keeps the infrastructure around.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK) && !ret)
|
||||
memblock_reserve(addr, size);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user