mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
Merge 5.5-rc7 into char-misc-next
We need the char-misc fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
commit
fd2d11cc8a
1
.mailmap
1
.mailmap
@ -99,6 +99,7 @@ Jacob Shin <Jacob.Shin@amd.com>
|
|||||||
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@google.com>
|
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@google.com>
|
||||||
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@motorola.com>
|
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@motorola.com>
|
||||||
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk.kim@samsung.com>
|
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk.kim@samsung.com>
|
||||||
|
Jakub Kicinski <kuba@kernel.org> <jakub.kicinski@netronome.com>
|
||||||
James Bottomley <jejb@mulgrave.(none)>
|
James Bottomley <jejb@mulgrave.(none)>
|
||||||
James Bottomley <jejb@titanic.il.steeleye.com>
|
James Bottomley <jejb@titanic.il.steeleye.com>
|
||||||
James E Wilson <wilson@specifix.com>
|
James E Wilson <wilson@specifix.com>
|
||||||
|
@ -29,13 +29,13 @@ Description: This file shows the system fans direction:
|
|||||||
|
|
||||||
The files are read only.
|
The files are read only.
|
||||||
|
|
||||||
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/jtag_enable
|
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld3_version
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 5.0
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files show with which CPLD versions have been burned
|
Description: These files show with which CPLD versions have been burned
|
||||||
on LED board.
|
on LED or Gearbox board.
|
||||||
|
|
||||||
The files are read only.
|
The files are read only.
|
||||||
|
|
||||||
@ -121,6 +121,15 @@ Description: These files show the system reset cause, as following: ComEx
|
|||||||
|
|
||||||
The files are read only.
|
The files are read only.
|
||||||
|
|
||||||
|
What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld4_version
|
||||||
|
Date: November 2018
|
||||||
|
KernelVersion: 5.0
|
||||||
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
|
Description: These files show with which CPLD versions have been burned
|
||||||
|
on LED board.
|
||||||
|
|
||||||
|
The files are read only.
|
||||||
|
|
||||||
Date: June 2019
|
Date: June 2019
|
||||||
KernelVersion: 5.3
|
KernelVersion: 5.3
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
|
@ -319,7 +319,7 @@
|
|||||||
182 = /dev/perfctr Performance-monitoring counters
|
182 = /dev/perfctr Performance-monitoring counters
|
||||||
183 = /dev/hwrng Generic random number generator
|
183 = /dev/hwrng Generic random number generator
|
||||||
184 = /dev/cpu/microcode CPU microcode update interface
|
184 = /dev/cpu/microcode CPU microcode update interface
|
||||||
186 = /dev/atomicps Atomic shapshot of process state data
|
186 = /dev/atomicps Atomic snapshot of process state data
|
||||||
187 = /dev/irnet IrNET device
|
187 = /dev/irnet IrNET device
|
||||||
188 = /dev/smbusbios SMBus BIOS
|
188 = /dev/smbusbios SMBus BIOS
|
||||||
189 = /dev/ussp_ctl User space serial port control
|
189 = /dev/ussp_ctl User space serial port control
|
||||||
|
@ -95,7 +95,7 @@ so all video4linux tools (like xawtv) should work with this driver.
|
|||||||
|
|
||||||
Besides the video4linux interface, the driver has a private interface
|
Besides the video4linux interface, the driver has a private interface
|
||||||
for accessing the Motion Eye extended parameters (camera sharpness,
|
for accessing the Motion Eye extended parameters (camera sharpness,
|
||||||
agc, video framerate), the shapshot and the MJPEG capture facilities.
|
agc, video framerate), the snapshot and the MJPEG capture facilities.
|
||||||
|
|
||||||
This interface consists of several ioctls (prototypes and structures
|
This interface consists of several ioctls (prototypes and structures
|
||||||
can be found in include/linux/meye.h):
|
can be found in include/linux/meye.h):
|
||||||
|
@ -255,7 +255,7 @@ an involved disclosed party. The current ambassadors list:
|
|||||||
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
Red Hat Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
SUSE Jiri Kosina <jkosina@suse.cz>
|
SUSE Jiri Kosina <jkosina@suse.cz>
|
||||||
|
|
||||||
Amazon
|
Amazon Peter Bowen <pzb@amzn.com>
|
||||||
Google Kees Cook <keescook@chromium.org>
|
Google Kees Cook <keescook@chromium.org>
|
||||||
============= ========================================================
|
============= ========================================================
|
||||||
|
|
||||||
|
20
MAINTAINERS
20
MAINTAINERS
@ -720,7 +720,7 @@ F: Documentation/devicetree/bindings/i2c/i2c-altera.txt
|
|||||||
F: drivers/i2c/busses/i2c-altera.c
|
F: drivers/i2c/busses/i2c-altera.c
|
||||||
|
|
||||||
ALTERA MAILBOX DRIVER
|
ALTERA MAILBOX DRIVER
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <ley.foon.tan@intel.com>
|
||||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/mailbox/mailbox-altera.c
|
F: drivers/mailbox/mailbox-altera.c
|
||||||
@ -1407,7 +1407,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
|
|||||||
|
|
||||||
ARM/ACTIONS SEMI ARCHITECTURE
|
ARM/ACTIONS SEMI ARCHITECTURE
|
||||||
M: Andreas Färber <afaerber@suse.de>
|
M: Andreas Färber <afaerber@suse.de>
|
||||||
R: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
N: owl
|
N: owl
|
||||||
@ -3150,7 +3150,7 @@ S: Maintained
|
|||||||
F: arch/mips/net/
|
F: arch/mips/net/
|
||||||
|
|
||||||
BPF JIT for NFP NICs
|
BPF JIT for NFP NICs
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <kuba@kernel.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: bpf@vger.kernel.org
|
L: bpf@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -11431,7 +11431,7 @@ F: include/uapi/linux/netrom.h
|
|||||||
F: net/netrom/
|
F: net/netrom/
|
||||||
|
|
||||||
NETRONOME ETHERNET DRIVERS
|
NETRONOME ETHERNET DRIVERS
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <kuba@kernel.org>
|
||||||
L: oss-drivers@netronome.com
|
L: oss-drivers@netronome.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/netronome/
|
F: drivers/net/ethernet/netronome/
|
||||||
@ -11591,7 +11591,7 @@ M: Boris Pismenny <borisp@mellanox.com>
|
|||||||
M: Aviad Yehezkel <aviadye@mellanox.com>
|
M: Aviad Yehezkel <aviadye@mellanox.com>
|
||||||
M: John Fastabend <john.fastabend@gmail.com>
|
M: John Fastabend <john.fastabend@gmail.com>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <kuba@kernel.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: net/tls/*
|
F: net/tls/*
|
||||||
@ -11603,7 +11603,7 @@ L: linux-wireless@vger.kernel.org
|
|||||||
Q: http://patchwork.kernel.org/project/linux-wireless/list/
|
Q: http://patchwork.kernel.org/project/linux-wireless/list/
|
||||||
|
|
||||||
NETDEVSIM
|
NETDEVSIM
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <kuba@kernel.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/netdevsim/*
|
F: drivers/net/netdevsim/*
|
||||||
|
|
||||||
@ -11680,7 +11680,7 @@ F: Documentation/scsi/NinjaSCSI.txt
|
|||||||
F: drivers/scsi/nsp32*
|
F: drivers/scsi/nsp32*
|
||||||
|
|
||||||
NIOS2 ARCHITECTURE
|
NIOS2 ARCHITECTURE
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <ley.foon.tan@intel.com>
|
||||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -12564,7 +12564,7 @@ F: Documentation/devicetree/bindings/pci/aardvark-pci.txt
|
|||||||
F: drivers/pci/controller/pci-aardvark.c
|
F: drivers/pci/controller/pci-aardvark.c
|
||||||
|
|
||||||
PCI DRIVER FOR ALTERA PCIE IP
|
PCI DRIVER FOR ALTERA PCIE IP
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <ley.foon.tan@intel.com>
|
||||||
L: rfi@lists.rocketboards.org (moderated for non-subscribers)
|
L: rfi@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -12743,7 +12743,7 @@ S: Supported
|
|||||||
F: Documentation/PCI/pci-error-recovery.rst
|
F: Documentation/PCI/pci-error-recovery.rst
|
||||||
|
|
||||||
PCI MSI DRIVER FOR ALTERA MSI IP
|
PCI MSI DRIVER FOR ALTERA MSI IP
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <ley.foon.tan@intel.com>
|
||||||
L: rfi@lists.rocketboards.org (moderated for non-subscribers)
|
L: rfi@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -18042,7 +18042,7 @@ XDP (eXpress Data Path)
|
|||||||
M: Alexei Starovoitov <ast@kernel.org>
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
M: David S. Miller <davem@davemloft.net>
|
M: David S. Miller <davem@davemloft.net>
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <kuba@kernel.org>
|
||||||
M: Jesper Dangaard Brouer <hawk@kernel.org>
|
M: Jesper Dangaard Brouer <hawk@kernel.org>
|
||||||
M: John Fastabend <john.fastabend@gmail.com>
|
M: John Fastabend <john.fastabend@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
2
Makefile
2
Makefile
@ -2,7 +2,7 @@
|
|||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 5
|
PATCHLEVEL = 5
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc6
|
EXTRAVERSION = -rc7
|
||||||
NAME = Kleptomaniac Octopus
|
NAME = Kleptomaniac Octopus
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -167,11 +167,7 @@
|
|||||||
|
|
||||||
&pcie1_rc {
|
&pcie1_rc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
|
||||||
|
|
||||||
&pcie1_ep {
|
|
||||||
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc1 {
|
&mmc1 {
|
||||||
|
@ -147,10 +147,6 @@
|
|||||||
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie1_ep {
|
|
||||||
gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&mailbox5 {
|
&mailbox5 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
|
||||||
|
@ -29,6 +29,27 @@
|
|||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
reg = <0x0 0x80000000 0x0 0x80000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
main_12v0: fixedregulator-main_12v0 {
|
||||||
|
/* main supply */
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "main_12v0";
|
||||||
|
regulator-min-microvolt = <12000000>;
|
||||||
|
regulator-max-microvolt = <12000000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
evm_5v0: fixedregulator-evm_5v0 {
|
||||||
|
/* Output of TPS54531D */
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "evm_5v0";
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
vin-supply = <&main_12v0>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
vdd_3v3: fixedregulator-vdd_3v3 {
|
vdd_3v3: fixedregulator-vdd_3v3 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vdd_3v3";
|
regulator-name = "vdd_3v3";
|
||||||
@ -547,10 +568,6 @@
|
|||||||
gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie1_ep {
|
|
||||||
gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&mcasp3 {
|
&mcasp3 {
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
|
assigned-clocks = <&l4per2_clkctrl DRA7_L4PER2_MCASP3_CLKCTRL 24>;
|
||||||
|
@ -258,9 +258,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pca0: pca9552@60 {
|
pca0: pca9552@61 {
|
||||||
compatible = "nxp,pca9552";
|
compatible = "nxp,pca9552";
|
||||||
reg = <0x60>;
|
reg = <0x61>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
@ -519,371 +519,6 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c13 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c14 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c15 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c3 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
power-supply@68 {
|
|
||||||
compatible = "ibm,cffps2";
|
|
||||||
reg = <0x68>;
|
|
||||||
};
|
|
||||||
|
|
||||||
power-supply@69 {
|
|
||||||
compatible = "ibm,cffps2";
|
|
||||||
reg = <0x69>;
|
|
||||||
};
|
|
||||||
|
|
||||||
power-supply@6a {
|
|
||||||
compatible = "ibm,cffps2";
|
|
||||||
reg = <0x6a>;
|
|
||||||
};
|
|
||||||
|
|
||||||
power-supply@6b {
|
|
||||||
compatible = "ibm,cffps2";
|
|
||||||
reg = <0x6b>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c4 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@49 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x49>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@4a {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x4a>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c5 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@49 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x49>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c6 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@4a {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x4a>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@4b {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x4b>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c7 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
si7021-a20@20 {
|
|
||||||
compatible = "silabs,si7020";
|
|
||||||
reg = <0x20>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
max31785@52 {
|
|
||||||
compatible = "maxim,max31785a";
|
|
||||||
reg = <0x52>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
fan@0 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <0>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@1 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <1>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@2 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <2>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@3 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <3>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pca0: pca9552@60 {
|
|
||||||
compatible = "nxp,pca9552";
|
|
||||||
reg = <0x60>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
|
|
||||||
gpio@0 {
|
|
||||||
reg = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@1 {
|
|
||||||
reg = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@2 {
|
|
||||||
reg = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@3 {
|
|
||||||
reg = <3>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@4 {
|
|
||||||
reg = <4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@5 {
|
|
||||||
reg = <5>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@6 {
|
|
||||||
reg = <6>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@7 {
|
|
||||||
reg = <7>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@8 {
|
|
||||||
reg = <8>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@9 {
|
|
||||||
reg = <9>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@10 {
|
|
||||||
reg = <10>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@11 {
|
|
||||||
reg = <11>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@12 {
|
|
||||||
reg = <12>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@13 {
|
|
||||||
reg = <13>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@14 {
|
|
||||||
reg = <14>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@15 {
|
|
||||||
reg = <15>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dps: dps310@76 {
|
|
||||||
compatible = "infineon,dps310";
|
|
||||||
reg = <0x76>;
|
|
||||||
#io-channel-cells = <0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c8 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
ucd90320@b {
|
|
||||||
compatible = "ti,ucd90160";
|
|
||||||
reg = <0x0b>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ucd90320@c {
|
|
||||||
compatible = "ti,ucd90160";
|
|
||||||
reg = <0x0c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ucd90320@11 {
|
|
||||||
compatible = "ti,ucd90160";
|
|
||||||
reg = <0x11>;
|
|
||||||
};
|
|
||||||
|
|
||||||
rtc@32 {
|
|
||||||
compatible = "epson,rx8900";
|
|
||||||
reg = <0x32>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@4a {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x4a>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c9 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
ir35221@42 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x42>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@43 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x43>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@44 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x44>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp423a@4c {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp423b@4d {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4d>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@72 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x72>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@73 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x73>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@74 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x74>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c10 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
ir35221@42 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x42>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@43 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x43>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@44 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x44>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp423a@4c {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp423b@4d {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4d>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@72 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x72>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@73 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x73>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@74 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x74>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c11 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp275@48 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tmp275@49 {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x49>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c12 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c13 {
|
&i2c13 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -122,37 +122,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&fmc {
|
|
||||||
status = "okay";
|
|
||||||
flash@0 {
|
|
||||||
status = "okay";
|
|
||||||
m25p,fast-read;
|
|
||||||
label = "bmc";
|
|
||||||
spi-max-frequency = <50000000>;
|
|
||||||
#include "openbmc-flash-layout-128.dtsi"
|
|
||||||
};
|
|
||||||
|
|
||||||
flash@1 {
|
|
||||||
status = "okay";
|
|
||||||
m25p,fast-read;
|
|
||||||
label = "alt-bmc";
|
|
||||||
spi-max-frequency = <50000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&spi1 {
|
|
||||||
status = "okay";
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_spi1_default>;
|
|
||||||
|
|
||||||
flash@0 {
|
|
||||||
status = "okay";
|
|
||||||
m25p,fast-read;
|
|
||||||
label = "pnor";
|
|
||||||
spi-max-frequency = <100000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&mac2 {
|
&mac2 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
@ -165,6 +134,11 @@
|
|||||||
|
|
||||||
&emmc {
|
&emmc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&fsim0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
@ -820,373 +794,6 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c1 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c3 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
bmp: bmp280@77 {
|
|
||||||
compatible = "bosch,bmp280";
|
|
||||||
reg = <0x77>;
|
|
||||||
#io-channel-cells = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
max31785@52 {
|
|
||||||
compatible = "maxim,max31785a";
|
|
||||||
reg = <0x52>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
fan@0 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <0>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
maxim,fan-rotor-input = "tach";
|
|
||||||
maxim,fan-pwm-freq = <25000>;
|
|
||||||
maxim,fan-dual-tach;
|
|
||||||
maxim,fan-no-watchdog;
|
|
||||||
maxim,fan-no-fault-ramp;
|
|
||||||
maxim,fan-ramp = <2>;
|
|
||||||
maxim,fan-fault-pin-mon;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@1 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <1>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
maxim,fan-rotor-input = "tach";
|
|
||||||
maxim,fan-pwm-freq = <25000>;
|
|
||||||
maxim,fan-dual-tach;
|
|
||||||
maxim,fan-no-watchdog;
|
|
||||||
maxim,fan-no-fault-ramp;
|
|
||||||
maxim,fan-ramp = <2>;
|
|
||||||
maxim,fan-fault-pin-mon;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@2 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <2>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
maxim,fan-rotor-input = "tach";
|
|
||||||
maxim,fan-pwm-freq = <25000>;
|
|
||||||
maxim,fan-dual-tach;
|
|
||||||
maxim,fan-no-watchdog;
|
|
||||||
maxim,fan-no-fault-ramp;
|
|
||||||
maxim,fan-ramp = <2>;
|
|
||||||
maxim,fan-fault-pin-mon;
|
|
||||||
};
|
|
||||||
|
|
||||||
fan@3 {
|
|
||||||
compatible = "pmbus-fan";
|
|
||||||
reg = <3>;
|
|
||||||
tach-pulses = <2>;
|
|
||||||
maxim,fan-rotor-input = "tach";
|
|
||||||
maxim,fan-pwm-freq = <25000>;
|
|
||||||
maxim,fan-dual-tach;
|
|
||||||
maxim,fan-no-watchdog;
|
|
||||||
maxim,fan-no-fault-ramp;
|
|
||||||
maxim,fan-ramp = <2>;
|
|
||||||
maxim,fan-fault-pin-mon;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dps: dps310@76 {
|
|
||||||
compatible = "infineon,dps310";
|
|
||||||
reg = <0x76>;
|
|
||||||
#io-channel-cells = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
pca0: pca9552@60 {
|
|
||||||
compatible = "nxp,pca9552";
|
|
||||||
reg = <0x60>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
|
|
||||||
gpio@0 {
|
|
||||||
reg = <0>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@1 {
|
|
||||||
reg = <1>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@2 {
|
|
||||||
reg = <2>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@3 {
|
|
||||||
reg = <3>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@4 {
|
|
||||||
reg = <4>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@5 {
|
|
||||||
reg = <5>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@6 {
|
|
||||||
reg = <6>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@7 {
|
|
||||||
reg = <7>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@8 {
|
|
||||||
reg = <8>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@9 {
|
|
||||||
reg = <9>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@10 {
|
|
||||||
reg = <10>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@11 {
|
|
||||||
reg = <11>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@12 {
|
|
||||||
reg = <12>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@13 {
|
|
||||||
reg = <13>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@14 {
|
|
||||||
reg = <14>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@15 {
|
|
||||||
reg = <15>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
power-supply@68 {
|
|
||||||
compatible = "ibm,cffps1";
|
|
||||||
reg = <0x68>;
|
|
||||||
};
|
|
||||||
|
|
||||||
power-supply@69 {
|
|
||||||
compatible = "ibm,cffps1";
|
|
||||||
reg = <0x69>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c4 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp423a@4c {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@70 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x70>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@71 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x71>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c5 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp423a@4c {
|
|
||||||
compatible = "ti,tmp423";
|
|
||||||
reg = <0x4c>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@70 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x70>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir35221@71 {
|
|
||||||
compatible = "infineon,ir35221";
|
|
||||||
reg = <0x71>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c7 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c9 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
tmp275@4a {
|
|
||||||
compatible = "ti,tmp275";
|
|
||||||
reg = <0x4a>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c10 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c11 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
pca9552: pca9552@60 {
|
|
||||||
compatible = "nxp,pca9552";
|
|
||||||
reg = <0x60>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
|
|
||||||
gpio-line-names = "PS_SMBUS_RESET_N", "APSS_RESET_N",
|
|
||||||
"GPU0_TH_OVERT_N_BUFF", "GPU1_TH_OVERT_N_BUFF",
|
|
||||||
"GPU2_TH_OVERT_N_BUFF", "GPU3_TH_OVERT_N_BUFF",
|
|
||||||
"GPU4_TH_OVERT_N_BUFF", "GPU5_TH_OVERT_N_BUFF",
|
|
||||||
"GPU0_PWR_GOOD_BUFF", "GPU1_PWR_GOOD_BUFF",
|
|
||||||
"GPU2_PWR_GOOD_BUFF", "GPU3_PWR_GOOD_BUFF",
|
|
||||||
"GPU4_PWR_GOOD_BUFF", "GPU5_PWR_GOOD_BUFF",
|
|
||||||
"12V_BREAKER_FLT_N", "THROTTLE_UNLATCHED_N";
|
|
||||||
|
|
||||||
gpio@0 {
|
|
||||||
reg = <0>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@1 {
|
|
||||||
reg = <1>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@2 {
|
|
||||||
reg = <2>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@3 {
|
|
||||||
reg = <3>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@4 {
|
|
||||||
reg = <4>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@5 {
|
|
||||||
reg = <5>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@6 {
|
|
||||||
reg = <6>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@7 {
|
|
||||||
reg = <7>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@8 {
|
|
||||||
reg = <8>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@9 {
|
|
||||||
reg = <9>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@10 {
|
|
||||||
reg = <10>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@11 {
|
|
||||||
reg = <11>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@12 {
|
|
||||||
reg = <12>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@13 {
|
|
||||||
reg = <13>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@14 {
|
|
||||||
reg = <14>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio@15 {
|
|
||||||
reg = <15>;
|
|
||||||
type = <PCA955X_TYPE_GPIO>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
rtc@32 {
|
|
||||||
compatible = "epson,rx8900";
|
|
||||||
reg = <0x32>;
|
|
||||||
};
|
|
||||||
|
|
||||||
eeprom@51 {
|
|
||||||
compatible = "atmel,24c64";
|
|
||||||
reg = <0x51>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ucd90160@64 {
|
|
||||||
compatible = "ti,ucd90160";
|
|
||||||
reg = <0x64>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c12 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c13 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
/* Hog these as no driver is probed for the entire LPC block */
|
/* Hog these as no driver is probed for the entire LPC block */
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -163,26 +163,6 @@
|
|||||||
spi-max-frequency = <50000000>;
|
spi-max-frequency = <50000000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
fsim0: fsi@1e79b000 {
|
|
||||||
compatible = "aspeed,ast2600-fsi-master", "fsi-master";
|
|
||||||
reg = <0x1e79b000 0x94>;
|
|
||||||
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_fsi1_default>;
|
|
||||||
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
fsim1: fsi@1e79b100 {
|
|
||||||
compatible = "aspeed,ast2600-fsi-master", "fsi-master";
|
|
||||||
reg = <0x1e79b100 0x94>;
|
|
||||||
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_fsi2_default>;
|
|
||||||
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: mdio@1e650000 {
|
mdio0: mdio@1e650000 {
|
||||||
@ -595,6 +575,25 @@
|
|||||||
ranges = <0 0x1e78a000 0x1000>;
|
ranges = <0 0x1e78a000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fsim0: fsi@1e79b000 {
|
||||||
|
compatible = "aspeed,ast2600-fsi-master", "fsi-master";
|
||||||
|
reg = <0x1e79b000 0x94>;
|
||||||
|
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_fsi1_default>;
|
||||||
|
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
fsim1: fsi@1e79b100 {
|
||||||
|
compatible = "aspeed,ast2600-fsi-master", "fsi-master";
|
||||||
|
reg = <0x1e79b100 0x94>;
|
||||||
|
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_fsi2_default>;
|
||||||
|
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
#include "imx6dl.dtsi"
|
#include "imx6dl.dtsi"
|
||||||
#include "imx6qdl-icore.dtsi"
|
#include "imx6qdl-icore-1.5.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Engicam i.CoreM6 DualLite/Solo MIPI Starter Kit";
|
model = "Engicam i.CoreM6 DualLite/Solo MIPI Starter Kit";
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
clocks = <&clk_ext_audio_codec>;
|
clocks = <&clk_ext_audio_codec>;
|
||||||
VDDA-supply = <®_3p3v>;
|
VDDA-supply = <®_3p3v>;
|
||||||
VDDIO-supply = <®_3p3v>;
|
VDDIO-supply = <&sw2_reg>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
rtc@56 {
|
rtc@56 {
|
||||||
compatible = "rv3029c2";
|
compatible = "microcrystal,rv3029";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_rtc_hw300>;
|
pinctrl-0 = <&pinctrl_rtc_hw300>;
|
||||||
reg = <0x56>;
|
reg = <0x56>;
|
||||||
|
@ -749,10 +749,6 @@
|
|||||||
vin-supply = <&vgen5_reg>;
|
vin-supply = <&vgen5_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
®_vdd3p0 {
|
|
||||||
vin-supply = <&sw2_reg>;
|
|
||||||
};
|
|
||||||
|
|
||||||
®_vdd2p5 {
|
®_vdd2p5 {
|
||||||
vin-supply = <&vgen5_reg>;
|
vin-supply = <&vgen5_reg>;
|
||||||
};
|
};
|
||||||
|
@ -584,10 +584,6 @@
|
|||||||
vin-supply = <&sw2_reg>;
|
vin-supply = <&sw2_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
®_vdd3p0 {
|
|
||||||
vin-supply = <&sw2_reg>;
|
|
||||||
};
|
|
||||||
|
|
||||||
®_vdd2p5 {
|
®_vdd2p5 {
|
||||||
vin-supply = <&sw2_reg>;
|
vin-supply = <&sw2_reg>;
|
||||||
};
|
};
|
||||||
|
@ -265,10 +265,6 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
®_3p0 {
|
|
||||||
vin-supply = <&sw2_reg>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&snvs_poweroff {
|
&snvs_poweroff {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -159,10 +159,6 @@
|
|||||||
vin-supply = <&vgen6_reg>;
|
vin-supply = <&vgen6_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
®_vdd3p0 {
|
|
||||||
vin-supply = <&sw2_reg>;
|
|
||||||
};
|
|
||||||
|
|
||||||
®_vdd2p5 {
|
®_vdd2p5 {
|
||||||
vin-supply = <&vgen6_reg>;
|
vin-supply = <&vgen6_reg>;
|
||||||
};
|
};
|
||||||
|
@ -141,10 +141,6 @@
|
|||||||
vin-supply = <&vgen6_reg>;
|
vin-supply = <&vgen6_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
®_vdd3p0 {
|
|
||||||
vin-supply = <&sw2_reg>;
|
|
||||||
};
|
|
||||||
|
|
||||||
®_vdd2p5 {
|
®_vdd2p5 {
|
||||||
vin-supply = <&vgen6_reg>;
|
vin-supply = <&vgen6_reg>;
|
||||||
};
|
};
|
||||||
|
@ -49,3 +49,7 @@
|
|||||||
reg = <0x80000000 0x10000000>;
|
reg = <0x80000000 0x10000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&gpmi {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
@ -37,10 +37,10 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
cpu0: cpu@0 {
|
cpu0: cpu@f00 {
|
||||||
compatible = "arm,cortex-a7";
|
compatible = "arm,cortex-a7";
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
reg = <0>;
|
reg = <0xf00>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@
|
|||||||
&aobus {
|
&aobus {
|
||||||
pmu: pmu@e0 {
|
pmu: pmu@e0 {
|
||||||
compatible = "amlogic,meson8-pmu", "syscon";
|
compatible = "amlogic,meson8-pmu", "syscon";
|
||||||
reg = <0xe0 0x8>;
|
reg = <0xe0 0x18>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_aobus: pinctrl@84 {
|
pinctrl_aobus: pinctrl@84 {
|
||||||
|
@ -356,7 +356,7 @@
|
|||||||
|
|
||||||
twsi1: i2c@d4011000 {
|
twsi1: i2c@d4011000 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4011000 0x1000>;
|
reg = <0xd4011000 0x70>;
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI0>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI0>;
|
||||||
resets = <&soc_clocks MMP2_CLK_TWSI0>;
|
resets = <&soc_clocks MMP2_CLK_TWSI0>;
|
||||||
@ -368,7 +368,7 @@
|
|||||||
|
|
||||||
twsi2: i2c@d4031000 {
|
twsi2: i2c@d4031000 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4031000 0x1000>;
|
reg = <0xd4031000 0x70>;
|
||||||
interrupt-parent = <&twsi_mux>;
|
interrupt-parent = <&twsi_mux>;
|
||||||
interrupts = <0>;
|
interrupts = <0>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI1>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI1>;
|
||||||
@ -380,7 +380,7 @@
|
|||||||
|
|
||||||
twsi3: i2c@d4032000 {
|
twsi3: i2c@d4032000 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4032000 0x1000>;
|
reg = <0xd4032000 0x70>;
|
||||||
interrupt-parent = <&twsi_mux>;
|
interrupt-parent = <&twsi_mux>;
|
||||||
interrupts = <1>;
|
interrupts = <1>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI2>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI2>;
|
||||||
@ -392,7 +392,7 @@
|
|||||||
|
|
||||||
twsi4: i2c@d4033000 {
|
twsi4: i2c@d4033000 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4033000 0x1000>;
|
reg = <0xd4033000 0x70>;
|
||||||
interrupt-parent = <&twsi_mux>;
|
interrupt-parent = <&twsi_mux>;
|
||||||
interrupts = <2>;
|
interrupts = <2>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI3>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI3>;
|
||||||
@ -405,7 +405,7 @@
|
|||||||
|
|
||||||
twsi5: i2c@d4033800 {
|
twsi5: i2c@d4033800 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4033800 0x1000>;
|
reg = <0xd4033800 0x70>;
|
||||||
interrupt-parent = <&twsi_mux>;
|
interrupt-parent = <&twsi_mux>;
|
||||||
interrupts = <3>;
|
interrupts = <3>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI4>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI4>;
|
||||||
@ -417,7 +417,7 @@
|
|||||||
|
|
||||||
twsi6: i2c@d4034000 {
|
twsi6: i2c@d4034000 {
|
||||||
compatible = "mrvl,mmp-twsi";
|
compatible = "mrvl,mmp-twsi";
|
||||||
reg = <0xd4034000 0x1000>;
|
reg = <0xd4034000 0x70>;
|
||||||
interrupt-parent = <&twsi_mux>;
|
interrupt-parent = <&twsi_mux>;
|
||||||
interrupts = <4>;
|
interrupts = <4>;
|
||||||
clocks = <&soc_clocks MMP2_CLK_TWSI5>;
|
clocks = <&soc_clocks MMP2_CLK_TWSI5>;
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
initial-mode = <1>; /* initialize in HUB mode */
|
initial-mode = <1>; /* initialize in HUB mode */
|
||||||
disabled-ports = <1>;
|
disabled-ports = <1>;
|
||||||
intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
|
||||||
reset-gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
|
reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
|
||||||
connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
|
connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
|
||||||
refclk-frequency = <19200000>;
|
refclk-frequency = <19200000>;
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,7 @@ menuconfig ARCH_DAVINCI
|
|||||||
select PM_GENERIC_DOMAINS if PM
|
select PM_GENERIC_DOMAINS if PM
|
||||||
select PM_GENERIC_DOMAINS_OF if PM && OF
|
select PM_GENERIC_DOMAINS_OF if PM && OF
|
||||||
select REGMAP_MMIO
|
select REGMAP_MMIO
|
||||||
|
select RESET_CONTROLLER
|
||||||
select HAVE_IDE
|
select HAVE_IDE
|
||||||
select PINCTRL_SINGLE
|
select PINCTRL_SINGLE
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ static int __init mmp_dt_init_timer(struct device_node *np)
|
|||||||
ret = clk_prepare_enable(clk);
|
ret = clk_prepare_enable(clk);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
rate = clk_get_rate(clk) / 2;
|
rate = clk_get_rate(clk);
|
||||||
} else if (cpu_is_pj4()) {
|
} else if (cpu_is_pj4()) {
|
||||||
rate = 6500000;
|
rate = 6500000;
|
||||||
} else {
|
} else {
|
||||||
|
@ -95,6 +95,7 @@ config ARCH_OMAP2PLUS
|
|||||||
bool
|
bool
|
||||||
select ARCH_HAS_BANDGAP
|
select ARCH_HAS_BANDGAP
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
select ARCH_HAS_HOLES_MEMORYMODEL
|
||||||
|
select ARCH_HAS_RESET_CONTROLLER
|
||||||
select ARCH_OMAP
|
select ARCH_OMAP
|
||||||
select CLKSRC_MMIO
|
select CLKSRC_MMIO
|
||||||
select GENERIC_IRQ_CHIP
|
select GENERIC_IRQ_CHIP
|
||||||
@ -105,11 +106,11 @@ config ARCH_OMAP2PLUS
|
|||||||
select OMAP_DM_TIMER
|
select OMAP_DM_TIMER
|
||||||
select OMAP_GPMC
|
select OMAP_GPMC
|
||||||
select PINCTRL
|
select PINCTRL
|
||||||
|
select RESET_CONTROLLER
|
||||||
select SOC_BUS
|
select SOC_BUS
|
||||||
select TI_SYSC
|
select TI_SYSC
|
||||||
select OMAP_IRQCHIP
|
select OMAP_IRQCHIP
|
||||||
select CLKSRC_TI_32K
|
select CLKSRC_TI_32K
|
||||||
select ARCH_HAS_RESET_CONTROLLER
|
|
||||||
help
|
help
|
||||||
Systems based on OMAP2, OMAP3, OMAP4 or OMAP5
|
Systems based on OMAP2, OMAP3, OMAP4 or OMAP5
|
||||||
|
|
||||||
|
@ -306,10 +306,14 @@ static void __init dra7x_evm_mmc_quirk(void)
|
|||||||
|
|
||||||
static struct clockdomain *ti_sysc_find_one_clockdomain(struct clk *clk)
|
static struct clockdomain *ti_sysc_find_one_clockdomain(struct clk *clk)
|
||||||
{
|
{
|
||||||
|
struct clk_hw *hw = __clk_get_hw(clk);
|
||||||
struct clockdomain *clkdm = NULL;
|
struct clockdomain *clkdm = NULL;
|
||||||
struct clk_hw_omap *hwclk;
|
struct clk_hw_omap *hwclk;
|
||||||
|
|
||||||
hwclk = to_clk_hw_omap(__clk_get_hw(clk));
|
hwclk = to_clk_hw_omap(hw);
|
||||||
|
if (!omap2_clk_is_hw_omap(hw))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (hwclk && hwclk->clkdm_name)
|
if (hwclk && hwclk->clkdm_name)
|
||||||
clkdm = clkdm_lookup(hwclk->clkdm_name);
|
clkdm = clkdm_lookup(hwclk->clkdm_name);
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc2_pins>;
|
pinctrl-0 = <&mmc2_pins>;
|
||||||
vmmc-supply = <®_dcdc1>;
|
vmmc-supply = <®_dcdc1>;
|
||||||
vqmmc-supply = <®_dcdc1>;
|
vqmmc-supply = <®_eldo1>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
non-removable;
|
non-removable;
|
||||||
cap-mmc-hw-reset;
|
cap-mmc-hw-reset;
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
&mmc1 {
|
&mmc1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc1_pins>;
|
pinctrl-0 = <&mmc1_pins>;
|
||||||
vmmc-supply = <®_aldo2>;
|
vmmc-supply = <®_dcdc1>;
|
||||||
vqmmc-supply = <®_dldo4>;
|
vqmmc-supply = <®_dldo4>;
|
||||||
mmc-pwrseq = <&wifi_pwrseq>;
|
mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
@ -61,10 +61,10 @@
|
|||||||
|
|
||||||
pmu {
|
pmu {
|
||||||
compatible = "arm,armv8-pmuv3";
|
compatible = "arm,armv8-pmuv3";
|
||||||
interrupts = <0 120 8>,
|
interrupts = <0 170 4>,
|
||||||
<0 121 8>,
|
<0 171 4>,
|
||||||
<0 122 8>,
|
<0 172 4>,
|
||||||
<0 123 8>;
|
<0 173 4>;
|
||||||
interrupt-affinity = <&cpu0>,
|
interrupt-affinity = <&cpu0>,
|
||||||
<&cpu1>,
|
<&cpu1>,
|
||||||
<&cpu2>,
|
<&cpu2>,
|
||||||
|
@ -46,25 +46,47 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
gpio-keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys-polled";
|
compatible = "gpio-keys";
|
||||||
poll-interval = <100>;
|
|
||||||
|
|
||||||
key1 {
|
key1 {
|
||||||
label = "A";
|
label = "A";
|
||||||
linux,code = <BTN_0>;
|
linux,code = <BTN_0>;
|
||||||
gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio GPIOH_6 GPIO_ACTIVE_LOW>;
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <34 IRQ_TYPE_EDGE_BOTH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
key2 {
|
key2 {
|
||||||
label = "B";
|
label = "B";
|
||||||
linux,code = <BTN_1>;
|
linux,code = <BTN_1>;
|
||||||
gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <35 IRQ_TYPE_EDGE_BOTH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
key3 {
|
key3 {
|
||||||
label = "C";
|
label = "C";
|
||||||
linux,code = <BTN_2>;
|
linux,code = <BTN_2>;
|
||||||
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <2 IRQ_TYPE_EDGE_BOTH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
mic_mute {
|
||||||
|
label = "MicMute";
|
||||||
|
linux,code = <SW_MUTE_DEVICE>;
|
||||||
|
linux,input-type = <EV_SW>;
|
||||||
|
gpios = <&gpio_ao GPIOE_2 GPIO_ACTIVE_LOW>;
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <99 IRQ_TYPE_EDGE_BOTH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
power_key {
|
||||||
|
label = "PowerKey";
|
||||||
|
linux,code = <KEY_POWER>;
|
||||||
|
gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -569,6 +591,8 @@
|
|||||||
|
|
||||||
bluetooth {
|
bluetooth {
|
||||||
compatible = "brcm,bcm43438-bt";
|
compatible = "brcm,bcm43438-bt";
|
||||||
|
interrupt-parent = <&gpio_intc>;
|
||||||
|
interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
|
||||||
max-speed = <2000000>;
|
max-speed = <2000000>;
|
||||||
clocks = <&wifi32k>;
|
clocks = <&wifi32k>;
|
||||||
|
@ -175,7 +175,7 @@
|
|||||||
dcfg: syscon@1e00000 {
|
dcfg: syscon@1e00000 {
|
||||||
compatible = "fsl,ls1028a-dcfg", "syscon";
|
compatible = "fsl,ls1028a-dcfg", "syscon";
|
||||||
reg = <0x0 0x1e00000 0x0 0x10000>;
|
reg = <0x0 0x1e00000 0x0 0x10000>;
|
||||||
big-endian;
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
rst: syscon@1e60000 {
|
rst: syscon@1e60000 {
|
||||||
|
@ -740,7 +740,7 @@
|
|||||||
reg = <0x30bd0000 0x10000>;
|
reg = <0x30bd0000 0x10000>;
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>,
|
clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>,
|
||||||
<&clk IMX8MM_CLK_SDMA1_ROOT>;
|
<&clk IMX8MM_CLK_AHB>;
|
||||||
clock-names = "ipg", "ahb";
|
clock-names = "ipg", "ahb";
|
||||||
#dma-cells = <3>;
|
#dma-cells = <3>;
|
||||||
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
|
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
|
||||||
|
@ -421,7 +421,7 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_imu>;
|
pinctrl-0 = <&pinctrl_imu>;
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
vdd-supply = <®_3v3_p>;
|
vdd-supply = <®_3v3_p>;
|
||||||
vddio-supply = <®_3v3_p>;
|
vddio-supply = <®_3v3_p>;
|
||||||
};
|
};
|
||||||
|
@ -60,10 +60,10 @@
|
|||||||
|
|
||||||
pmu {
|
pmu {
|
||||||
compatible = "arm,armv8-pmuv3";
|
compatible = "arm,armv8-pmuv3";
|
||||||
interrupts = <0 120 8>,
|
interrupts = <0 170 4>,
|
||||||
<0 121 8>,
|
<0 171 4>,
|
||||||
<0 122 8>,
|
<0 172 4>,
|
||||||
<0 123 8>;
|
<0 173 4>;
|
||||||
interrupt-affinity = <&cpu0>,
|
interrupt-affinity = <&cpu0>,
|
||||||
<&cpu1>,
|
<&cpu1>,
|
||||||
<&cpu2>,
|
<&cpu2>,
|
||||||
|
@ -49,7 +49,8 @@
|
|||||||
|
|
||||||
ir-receiver {
|
ir-receiver {
|
||||||
compatible = "gpio-ir-receiver";
|
compatible = "gpio-ir-receiver";
|
||||||
gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,rc-map-name = "rc-beelink-gs1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -9,7 +9,11 @@
|
|||||||
#define PG_dcache_dirty PG_arch_1
|
#define PG_dcache_dirty PG_arch_1
|
||||||
|
|
||||||
void flush_icache_range(unsigned long start, unsigned long end);
|
void flush_icache_range(unsigned long start, unsigned long end);
|
||||||
|
#define flush_icache_range flush_icache_range
|
||||||
|
|
||||||
void flush_icache_page(struct vm_area_struct *vma, struct page *page);
|
void flush_icache_page(struct vm_area_struct *vma, struct page *page);
|
||||||
|
#define flush_icache_page flush_icache_page
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_CACHE_ALIASING
|
#ifdef CONFIG_CPU_CACHE_ALIASING
|
||||||
void flush_cache_mm(struct mm_struct *mm);
|
void flush_cache_mm(struct mm_struct *mm);
|
||||||
void flush_cache_dup_mm(struct mm_struct *mm);
|
void flush_cache_dup_mm(struct mm_struct *mm);
|
||||||
@ -40,12 +44,11 @@ void invalidate_kernel_vmap_range(void *addr, int size);
|
|||||||
#define flush_dcache_mmap_unlock(mapping) xa_unlock_irq(&(mapping)->i_pages)
|
#define flush_dcache_mmap_unlock(mapping) xa_unlock_irq(&(mapping)->i_pages)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include <asm-generic/cacheflush.h>
|
|
||||||
#undef flush_icache_range
|
|
||||||
#undef flush_icache_page
|
|
||||||
#undef flush_icache_user_range
|
|
||||||
void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
|
void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
|
||||||
unsigned long addr, int len);
|
unsigned long addr, int len);
|
||||||
|
#define flush_icache_user_range flush_icache_user_range
|
||||||
|
|
||||||
|
#include <asm-generic/cacheflush.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __NDS32_CACHEFLUSH_H__ */
|
#endif /* __NDS32_CACHEFLUSH_H__ */
|
||||||
|
@ -195,7 +195,7 @@ extern void paging_init(void);
|
|||||||
#define pte_unmap(pte) do { } while (0)
|
#define pte_unmap(pte) do { } while (0)
|
||||||
#define pte_unmap_nested(pte) do { } while (0)
|
#define pte_unmap_nested(pte) do { } while (0)
|
||||||
|
|
||||||
#define pmd_off_k(address) pmd_offset(pgd_offset_k(address), address)
|
#define pmd_off_k(address) pmd_offset(pud_offset(p4d_offset(pgd_offset_k(address), (address)), (address)), (address))
|
||||||
|
|
||||||
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
|
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
|
||||||
/*
|
/*
|
||||||
|
@ -889,8 +889,8 @@ static void print_parisc_device(struct parisc_device *dev)
|
|||||||
static int count;
|
static int count;
|
||||||
|
|
||||||
print_pa_hwpath(dev, hw_path);
|
print_pa_hwpath(dev, hw_path);
|
||||||
pr_info("%d. %s at 0x%px [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
|
pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
|
||||||
++count, dev->name, (void*) dev->hpa.start, hw_path, dev->id.hw_type,
|
++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type,
|
||||||
dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
|
dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
|
||||||
|
|
||||||
if (dev->num_addrs) {
|
if (dev->num_addrs) {
|
||||||
|
@ -401,7 +401,7 @@ static void __init map_pages(unsigned long start_vaddr,
|
|||||||
pmd = (pmd_t *) __pa(pmd);
|
pmd = (pmd_t *) __pa(pmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
pgd_populate(NULL, pg_dir, __va(pmd));
|
pud_populate(NULL, (pud_t *)pg_dir, __va(pmd));
|
||||||
#endif
|
#endif
|
||||||
pg_dir++;
|
pg_dir++;
|
||||||
|
|
||||||
|
@ -5,4 +5,8 @@
|
|||||||
#include <linux/ftrace.h>
|
#include <linux/ftrace.h>
|
||||||
#include <asm-generic/asm-prototypes.h>
|
#include <asm-generic/asm-prototypes.h>
|
||||||
|
|
||||||
|
long long __lshrti3(long long a, int b);
|
||||||
|
long long __ashrti3(long long a, int b);
|
||||||
|
long long __ashlti3(long long a, int b);
|
||||||
|
|
||||||
#endif /* _ASM_RISCV_PROTOTYPES_H */
|
#endif /* _ASM_RISCV_PROTOTYPES_H */
|
||||||
|
@ -80,7 +80,9 @@ _start_kernel:
|
|||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
li t0, CONFIG_NR_CPUS
|
li t0, CONFIG_NR_CPUS
|
||||||
bgeu a0, t0, .Lsecondary_park
|
blt a0, t0, .Lgood_cores
|
||||||
|
tail .Lsecondary_park
|
||||||
|
.Lgood_cores:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Pick one hart to run the main boot sequence */
|
/* Pick one hart to run the main boot sequence */
|
||||||
@ -209,11 +211,6 @@ relocate:
|
|||||||
tail smp_callin
|
tail smp_callin
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.align 2
|
|
||||||
.Lsecondary_park:
|
|
||||||
/* We lack SMP support or have too many harts, so park this hart */
|
|
||||||
wfi
|
|
||||||
j .Lsecondary_park
|
|
||||||
END(_start)
|
END(_start)
|
||||||
|
|
||||||
#ifdef CONFIG_RISCV_M_MODE
|
#ifdef CONFIG_RISCV_M_MODE
|
||||||
@ -295,6 +292,13 @@ ENTRY(reset_regs)
|
|||||||
END(reset_regs)
|
END(reset_regs)
|
||||||
#endif /* CONFIG_RISCV_M_MODE */
|
#endif /* CONFIG_RISCV_M_MODE */
|
||||||
|
|
||||||
|
.section ".text", "ax",@progbits
|
||||||
|
.align 2
|
||||||
|
.Lsecondary_park:
|
||||||
|
/* We lack SMP support or have too many harts, so park this hart */
|
||||||
|
wfi
|
||||||
|
j .Lsecondary_park
|
||||||
|
|
||||||
__PAGE_ALIGNED_BSS
|
__PAGE_ALIGNED_BSS
|
||||||
/* Empty zero page */
|
/* Empty zero page */
|
||||||
.balign PAGE_SIZE
|
.balign PAGE_SIZE
|
||||||
|
@ -58,7 +58,8 @@ quiet_cmd_vdsold = VDSOLD $@
|
|||||||
cmd_vdsold = $(CC) $(KBUILD_CFLAGS) $(call cc-option, -no-pie) -nostdlib -nostartfiles $(SYSCFLAGS_$(@F)) \
|
cmd_vdsold = $(CC) $(KBUILD_CFLAGS) $(call cc-option, -no-pie) -nostdlib -nostartfiles $(SYSCFLAGS_$(@F)) \
|
||||||
-Wl,-T,$(filter-out FORCE,$^) -o $@.tmp && \
|
-Wl,-T,$(filter-out FORCE,$^) -o $@.tmp && \
|
||||||
$(CROSS_COMPILE)objcopy \
|
$(CROSS_COMPILE)objcopy \
|
||||||
$(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@
|
$(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@ && \
|
||||||
|
rm $@.tmp
|
||||||
|
|
||||||
# install commands for the unstripped file
|
# install commands for the unstripped file
|
||||||
quiet_cmd_vdso_install = INSTALL $@
|
quiet_cmd_vdso_install = INSTALL $@
|
||||||
|
@ -4,34 +4,73 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
#include <asm-generic/export.h>
|
||||||
|
|
||||||
ENTRY(__lshrti3)
|
SYM_FUNC_START(__lshrti3)
|
||||||
beqz a2, .L1
|
beqz a2, .L1
|
||||||
li a5,64
|
li a5,64
|
||||||
sub a5,a5,a2
|
sub a5,a5,a2
|
||||||
addi sp,sp,-16
|
|
||||||
sext.w a4,a5
|
sext.w a4,a5
|
||||||
blez a5, .L2
|
blez a5, .L2
|
||||||
sext.w a2,a2
|
sext.w a2,a2
|
||||||
sll a4,a1,a4
|
|
||||||
srl a0,a0,a2
|
srl a0,a0,a2
|
||||||
srl a1,a1,a2
|
sll a4,a1,a4
|
||||||
|
srl a2,a1,a2
|
||||||
or a0,a0,a4
|
or a0,a0,a4
|
||||||
sd a1,8(sp)
|
mv a1,a2
|
||||||
sd a0,0(sp)
|
|
||||||
ld a0,0(sp)
|
|
||||||
ld a1,8(sp)
|
|
||||||
addi sp,sp,16
|
|
||||||
ret
|
|
||||||
.L1:
|
.L1:
|
||||||
ret
|
ret
|
||||||
.L2:
|
.L2:
|
||||||
negw a4,a4
|
negw a0,a4
|
||||||
srl a1,a1,a4
|
li a2,0
|
||||||
sd a1,0(sp)
|
srl a0,a1,a0
|
||||||
sd zero,8(sp)
|
mv a1,a2
|
||||||
ld a0,0(sp)
|
|
||||||
ld a1,8(sp)
|
|
||||||
addi sp,sp,16
|
|
||||||
ret
|
ret
|
||||||
ENDPROC(__lshrti3)
|
SYM_FUNC_END(__lshrti3)
|
||||||
|
EXPORT_SYMBOL(__lshrti3)
|
||||||
|
|
||||||
|
SYM_FUNC_START(__ashrti3)
|
||||||
|
beqz a2, .L3
|
||||||
|
li a5,64
|
||||||
|
sub a5,a5,a2
|
||||||
|
sext.w a4,a5
|
||||||
|
blez a5, .L4
|
||||||
|
sext.w a2,a2
|
||||||
|
srl a0,a0,a2
|
||||||
|
sll a4,a1,a4
|
||||||
|
sra a2,a1,a2
|
||||||
|
or a0,a0,a4
|
||||||
|
mv a1,a2
|
||||||
|
.L3:
|
||||||
|
ret
|
||||||
|
.L4:
|
||||||
|
negw a0,a4
|
||||||
|
srai a2,a1,0x3f
|
||||||
|
sra a0,a1,a0
|
||||||
|
mv a1,a2
|
||||||
|
ret
|
||||||
|
SYM_FUNC_END(__ashrti3)
|
||||||
|
EXPORT_SYMBOL(__ashrti3)
|
||||||
|
|
||||||
|
SYM_FUNC_START(__ashlti3)
|
||||||
|
beqz a2, .L5
|
||||||
|
li a5,64
|
||||||
|
sub a5,a5,a2
|
||||||
|
sext.w a4,a5
|
||||||
|
blez a5, .L6
|
||||||
|
sext.w a2,a2
|
||||||
|
sll a1,a1,a2
|
||||||
|
srl a4,a0,a4
|
||||||
|
sll a2,a0,a2
|
||||||
|
or a1,a1,a4
|
||||||
|
mv a0,a2
|
||||||
|
.L5:
|
||||||
|
ret
|
||||||
|
.L6:
|
||||||
|
negw a1,a4
|
||||||
|
li a2,0
|
||||||
|
sll a1,a0,a1
|
||||||
|
mv a0,a2
|
||||||
|
ret
|
||||||
|
SYM_FUNC_END(__ashlti3)
|
||||||
|
EXPORT_SYMBOL(__ashlti3)
|
||||||
|
@ -1052,7 +1052,7 @@ static void __init log_component_list(void)
|
|||||||
|
|
||||||
if (!early_ipl_comp_list_addr)
|
if (!early_ipl_comp_list_addr)
|
||||||
return;
|
return;
|
||||||
if (ipl_block.hdr.flags & IPL_PL_FLAG_IPLSR)
|
if (ipl_block.hdr.flags & IPL_PL_FLAG_SIPL)
|
||||||
pr_info("Linux is running with Secure-IPL enabled\n");
|
pr_info("Linux is running with Secure-IPL enabled\n");
|
||||||
else
|
else
|
||||||
pr_info("Linux is running with Secure-IPL disabled\n");
|
pr_info("Linux is running with Secure-IPL disabled\n");
|
||||||
|
@ -244,6 +244,11 @@ SYM_FUNC_START(efi32_stub_entry)
|
|||||||
leal efi32_config(%ebp), %eax
|
leal efi32_config(%ebp), %eax
|
||||||
movl %eax, efi_config(%ebp)
|
movl %eax, efi_config(%ebp)
|
||||||
|
|
||||||
|
/* Disable paging */
|
||||||
|
movl %cr0, %eax
|
||||||
|
btrl $X86_CR0_PG_BIT, %eax
|
||||||
|
movl %eax, %cr0
|
||||||
|
|
||||||
jmp startup_32
|
jmp startup_32
|
||||||
SYM_FUNC_END(efi32_stub_entry)
|
SYM_FUNC_END(efi32_stub_entry)
|
||||||
#endif
|
#endif
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#define PCI_DEVICE_ID_INTEL_SKL_HQ_IMC 0x1910
|
#define PCI_DEVICE_ID_INTEL_SKL_HQ_IMC 0x1910
|
||||||
#define PCI_DEVICE_ID_INTEL_SKL_SD_IMC 0x190f
|
#define PCI_DEVICE_ID_INTEL_SKL_SD_IMC 0x190f
|
||||||
#define PCI_DEVICE_ID_INTEL_SKL_SQ_IMC 0x191f
|
#define PCI_DEVICE_ID_INTEL_SKL_SQ_IMC 0x191f
|
||||||
|
#define PCI_DEVICE_ID_INTEL_SKL_E3_IMC 0x1918
|
||||||
#define PCI_DEVICE_ID_INTEL_KBL_Y_IMC 0x590c
|
#define PCI_DEVICE_ID_INTEL_KBL_Y_IMC 0x590c
|
||||||
#define PCI_DEVICE_ID_INTEL_KBL_U_IMC 0x5904
|
#define PCI_DEVICE_ID_INTEL_KBL_U_IMC 0x5904
|
||||||
#define PCI_DEVICE_ID_INTEL_KBL_UQ_IMC 0x5914
|
#define PCI_DEVICE_ID_INTEL_KBL_UQ_IMC 0x5914
|
||||||
@ -657,6 +658,10 @@ static const struct pci_device_id skl_uncore_pci_ids[] = {
|
|||||||
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SKL_SQ_IMC),
|
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SKL_SQ_IMC),
|
||||||
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
|
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
|
||||||
},
|
},
|
||||||
|
{ /* IMC */
|
||||||
|
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SKL_E3_IMC),
|
||||||
|
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
|
||||||
|
},
|
||||||
{ /* IMC */
|
{ /* IMC */
|
||||||
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_KBL_Y_IMC),
|
PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_KBL_Y_IMC),
|
||||||
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
|
.driver_data = UNCORE_PCI_DEV_DATA(SNB_PCI_UNCORE_IMC, 0),
|
||||||
@ -826,6 +831,7 @@ static const struct imc_uncore_pci_dev desktop_imc_pci_ids[] = {
|
|||||||
IMC_DEV(SKL_HQ_IMC, &skl_uncore_pci_driver), /* 6th Gen Core H Quad Core */
|
IMC_DEV(SKL_HQ_IMC, &skl_uncore_pci_driver), /* 6th Gen Core H Quad Core */
|
||||||
IMC_DEV(SKL_SD_IMC, &skl_uncore_pci_driver), /* 6th Gen Core S Dual Core */
|
IMC_DEV(SKL_SD_IMC, &skl_uncore_pci_driver), /* 6th Gen Core S Dual Core */
|
||||||
IMC_DEV(SKL_SQ_IMC, &skl_uncore_pci_driver), /* 6th Gen Core S Quad Core */
|
IMC_DEV(SKL_SQ_IMC, &skl_uncore_pci_driver), /* 6th Gen Core S Quad Core */
|
||||||
|
IMC_DEV(SKL_E3_IMC, &skl_uncore_pci_driver), /* Xeon E3 V5 Gen Core processor */
|
||||||
IMC_DEV(KBL_Y_IMC, &skl_uncore_pci_driver), /* 7th Gen Core Y */
|
IMC_DEV(KBL_Y_IMC, &skl_uncore_pci_driver), /* 7th Gen Core Y */
|
||||||
IMC_DEV(KBL_U_IMC, &skl_uncore_pci_driver), /* 7th Gen Core U */
|
IMC_DEV(KBL_U_IMC, &skl_uncore_pci_driver), /* 7th Gen Core U */
|
||||||
IMC_DEV(KBL_UQ_IMC, &skl_uncore_pci_driver), /* 7th Gen Core U Quad Core */
|
IMC_DEV(KBL_UQ_IMC, &skl_uncore_pci_driver), /* 7th Gen Core U Quad Core */
|
||||||
|
@ -369,11 +369,6 @@
|
|||||||
#define SNR_M2M_PCI_PMON_BOX_CTL 0x438
|
#define SNR_M2M_PCI_PMON_BOX_CTL 0x438
|
||||||
#define SNR_M2M_PCI_PMON_UMASK_EXT 0xff
|
#define SNR_M2M_PCI_PMON_UMASK_EXT 0xff
|
||||||
|
|
||||||
/* SNR PCIE3 */
|
|
||||||
#define SNR_PCIE3_PCI_PMON_CTL0 0x508
|
|
||||||
#define SNR_PCIE3_PCI_PMON_CTR0 0x4e8
|
|
||||||
#define SNR_PCIE3_PCI_PMON_BOX_CTL 0x4e4
|
|
||||||
|
|
||||||
/* SNR IMC */
|
/* SNR IMC */
|
||||||
#define SNR_IMC_MMIO_PMON_FIXED_CTL 0x54
|
#define SNR_IMC_MMIO_PMON_FIXED_CTL 0x54
|
||||||
#define SNR_IMC_MMIO_PMON_FIXED_CTR 0x38
|
#define SNR_IMC_MMIO_PMON_FIXED_CTR 0x38
|
||||||
@ -4328,27 +4323,12 @@ static struct intel_uncore_type snr_uncore_m2m = {
|
|||||||
.format_group = &snr_m2m_uncore_format_group,
|
.format_group = &snr_m2m_uncore_format_group,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct intel_uncore_type snr_uncore_pcie3 = {
|
|
||||||
.name = "pcie3",
|
|
||||||
.num_counters = 4,
|
|
||||||
.num_boxes = 1,
|
|
||||||
.perf_ctr_bits = 48,
|
|
||||||
.perf_ctr = SNR_PCIE3_PCI_PMON_CTR0,
|
|
||||||
.event_ctl = SNR_PCIE3_PCI_PMON_CTL0,
|
|
||||||
.event_mask = SNBEP_PMON_RAW_EVENT_MASK,
|
|
||||||
.box_ctl = SNR_PCIE3_PCI_PMON_BOX_CTL,
|
|
||||||
.ops = &ivbep_uncore_pci_ops,
|
|
||||||
.format_group = &ivbep_uncore_format_group,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SNR_PCI_UNCORE_M2M,
|
SNR_PCI_UNCORE_M2M,
|
||||||
SNR_PCI_UNCORE_PCIE3,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct intel_uncore_type *snr_pci_uncores[] = {
|
static struct intel_uncore_type *snr_pci_uncores[] = {
|
||||||
[SNR_PCI_UNCORE_M2M] = &snr_uncore_m2m,
|
[SNR_PCI_UNCORE_M2M] = &snr_uncore_m2m,
|
||||||
[SNR_PCI_UNCORE_PCIE3] = &snr_uncore_pcie3,
|
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4357,10 +4337,6 @@ static const struct pci_device_id snr_uncore_pci_ids[] = {
|
|||||||
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a),
|
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a),
|
||||||
.driver_data = UNCORE_PCI_DEV_FULL_DATA(12, 0, SNR_PCI_UNCORE_M2M, 0),
|
.driver_data = UNCORE_PCI_DEV_FULL_DATA(12, 0, SNR_PCI_UNCORE_M2M, 0),
|
||||||
},
|
},
|
||||||
{ /* PCIe3 */
|
|
||||||
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x334a),
|
|
||||||
.driver_data = UNCORE_PCI_DEV_FULL_DATA(4, 0, SNR_PCI_UNCORE_PCIE3, 0),
|
|
||||||
},
|
|
||||||
{ /* end: all zeroes */ }
|
{ /* end: all zeroes */ }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4536,6 +4512,7 @@ static struct uncore_event_desc snr_uncore_imc_freerunning_events[] = {
|
|||||||
INTEL_UNCORE_EVENT_DESC(write, "event=0xff,umask=0x21"),
|
INTEL_UNCORE_EVENT_DESC(write, "event=0xff,umask=0x21"),
|
||||||
INTEL_UNCORE_EVENT_DESC(write.scale, "3.814697266e-6"),
|
INTEL_UNCORE_EVENT_DESC(write.scale, "3.814697266e-6"),
|
||||||
INTEL_UNCORE_EVENT_DESC(write.unit, "MiB"),
|
INTEL_UNCORE_EVENT_DESC(write.unit, "MiB"),
|
||||||
|
{ /* end: all zeroes */ },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct intel_uncore_ops snr_uncore_imc_freerunning_ops = {
|
static struct intel_uncore_ops snr_uncore_imc_freerunning_ops = {
|
||||||
|
@ -615,9 +615,9 @@ static void early_detect_mem_encrypt(struct cpuinfo_x86 *c)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
clear_all:
|
clear_all:
|
||||||
clear_cpu_cap(c, X86_FEATURE_SME);
|
setup_clear_cpu_cap(X86_FEATURE_SME);
|
||||||
clear_sev:
|
clear_sev:
|
||||||
clear_cpu_cap(c, X86_FEATURE_SEV);
|
setup_clear_cpu_cap(X86_FEATURE_SEV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,6 +467,7 @@ static int thermal_throttle_online(unsigned int cpu)
|
|||||||
{
|
{
|
||||||
struct thermal_state *state = &per_cpu(thermal_state, cpu);
|
struct thermal_state *state = &per_cpu(thermal_state, cpu);
|
||||||
struct device *dev = get_cpu_device(cpu);
|
struct device *dev = get_cpu_device(cpu);
|
||||||
|
u32 l;
|
||||||
|
|
||||||
state->package_throttle.level = PACKAGE_LEVEL;
|
state->package_throttle.level = PACKAGE_LEVEL;
|
||||||
state->core_throttle.level = CORE_LEVEL;
|
state->core_throttle.level = CORE_LEVEL;
|
||||||
@ -474,6 +475,10 @@ static int thermal_throttle_online(unsigned int cpu)
|
|||||||
INIT_DELAYED_WORK(&state->package_throttle.therm_work, throttle_active_work);
|
INIT_DELAYED_WORK(&state->package_throttle.therm_work, throttle_active_work);
|
||||||
INIT_DELAYED_WORK(&state->core_throttle.therm_work, throttle_active_work);
|
INIT_DELAYED_WORK(&state->core_throttle.therm_work, throttle_active_work);
|
||||||
|
|
||||||
|
/* Unmask the thermal vector after the above workqueues are initialized. */
|
||||||
|
l = apic_read(APIC_LVTTHMR);
|
||||||
|
apic_write(APIC_LVTTHMR, l & ~APIC_LVT_MASKED);
|
||||||
|
|
||||||
return thermal_throttle_add_dev(dev, cpu);
|
return thermal_throttle_add_dev(dev, cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,10 +727,6 @@ void intel_init_thermal(struct cpuinfo_x86 *c)
|
|||||||
rdmsr(MSR_IA32_MISC_ENABLE, l, h);
|
rdmsr(MSR_IA32_MISC_ENABLE, l, h);
|
||||||
wrmsr(MSR_IA32_MISC_ENABLE, l | MSR_IA32_MISC_ENABLE_TM1, h);
|
wrmsr(MSR_IA32_MISC_ENABLE, l | MSR_IA32_MISC_ENABLE_TM1, h);
|
||||||
|
|
||||||
/* Unmask the thermal vector: */
|
|
||||||
l = apic_read(APIC_LVTTHMR);
|
|
||||||
apic_write(APIC_LVTTHMR, l & ~APIC_LVT_MASKED);
|
|
||||||
|
|
||||||
pr_info_once("CPU0: Thermal monitoring enabled (%s)\n",
|
pr_info_once("CPU0: Thermal monitoring enabled (%s)\n",
|
||||||
tm2 ? "TM2" : "TM1");
|
tm2 ? "TM2" : "TM1");
|
||||||
|
|
||||||
|
@ -618,7 +618,7 @@ static void domain_remove_cpu(int cpu, struct rdt_resource *r)
|
|||||||
if (static_branch_unlikely(&rdt_mon_enable_key))
|
if (static_branch_unlikely(&rdt_mon_enable_key))
|
||||||
rmdir_mondata_subdir_allrdtgrp(r, d->id);
|
rmdir_mondata_subdir_allrdtgrp(r, d->id);
|
||||||
list_del(&d->list);
|
list_del(&d->list);
|
||||||
if (is_mbm_enabled())
|
if (r->mon_capable && is_mbm_enabled())
|
||||||
cancel_delayed_work(&d->mbm_over);
|
cancel_delayed_work(&d->mbm_over);
|
||||||
if (is_llc_occupancy_enabled() && has_busy_rmid(r, d)) {
|
if (is_llc_occupancy_enabled() && has_busy_rmid(r, d)) {
|
||||||
/*
|
/*
|
||||||
|
@ -1741,9 +1741,6 @@ static int set_cache_qos_cfg(int level, bool enable)
|
|||||||
struct rdt_domain *d;
|
struct rdt_domain *d;
|
||||||
int cpu;
|
int cpu;
|
||||||
|
|
||||||
if (!zalloc_cpumask_var(&cpu_mask, GFP_KERNEL))
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
if (level == RDT_RESOURCE_L3)
|
if (level == RDT_RESOURCE_L3)
|
||||||
update = l3_qos_cfg_update;
|
update = l3_qos_cfg_update;
|
||||||
else if (level == RDT_RESOURCE_L2)
|
else if (level == RDT_RESOURCE_L2)
|
||||||
@ -1751,6 +1748,9 @@ static int set_cache_qos_cfg(int level, bool enable)
|
|||||||
else
|
else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!zalloc_cpumask_var(&cpu_mask, GFP_KERNEL))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
r_l = &rdt_resources_all[level];
|
r_l = &rdt_resources_all[level];
|
||||||
list_for_each_entry(d, &r_l->domains, list) {
|
list_for_each_entry(d, &r_l->domains, list) {
|
||||||
/* Pick one CPU from each domain instance to update MSR */
|
/* Pick one CPU from each domain instance to update MSR */
|
||||||
|
@ -164,8 +164,13 @@ static inline unsigned get_max_segment_size(const struct request_queue *q,
|
|||||||
unsigned long mask = queue_segment_boundary(q);
|
unsigned long mask = queue_segment_boundary(q);
|
||||||
|
|
||||||
offset = mask & (page_to_phys(start_page) + offset);
|
offset = mask & (page_to_phys(start_page) + offset);
|
||||||
return min_t(unsigned long, mask - offset + 1,
|
|
||||||
queue_max_segment_size(q));
|
/*
|
||||||
|
* overflow may be triggered in case of zero page physical address
|
||||||
|
* on 32bit arch, use queue's max segment size when that happens.
|
||||||
|
*/
|
||||||
|
return min_not_zero(mask - offset + 1,
|
||||||
|
(unsigned long)queue_max_segment_size(q));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -328,7 +328,7 @@ EXPORT_SYMBOL(blk_queue_max_segment_size);
|
|||||||
* storage device can address. The default of 512 covers most
|
* storage device can address. The default of 512 covers most
|
||||||
* hardware.
|
* hardware.
|
||||||
**/
|
**/
|
||||||
void blk_queue_logical_block_size(struct request_queue *q, unsigned short size)
|
void blk_queue_logical_block_size(struct request_queue *q, unsigned int size)
|
||||||
{
|
{
|
||||||
q->limits.logical_block_size = size;
|
q->limits.logical_block_size = size;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ PROGBITS = $(if $(CONFIG_ARM),%,@)progbits
|
|||||||
filechk_fwbin = \
|
filechk_fwbin = \
|
||||||
echo "/* Generated by $(src)/Makefile */" ;\
|
echo "/* Generated by $(src)/Makefile */" ;\
|
||||||
echo " .section .rodata" ;\
|
echo " .section .rodata" ;\
|
||||||
echo " .p2align $(ASM_ALIGN)" ;\
|
echo " .p2align 4" ;\
|
||||||
echo "_fw_$(FWSTR)_bin:" ;\
|
echo "_fw_$(FWSTR)_bin:" ;\
|
||||||
echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\
|
echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\
|
||||||
echo "_fw_end:" ;\
|
echo "_fw_end:" ;\
|
||||||
|
@ -129,11 +129,13 @@ static blk_status_t null_zone_write(struct nullb_cmd *cmd, sector_t sector,
|
|||||||
return BLK_STS_IOERR;
|
return BLK_STS_IOERR;
|
||||||
case BLK_ZONE_COND_EMPTY:
|
case BLK_ZONE_COND_EMPTY:
|
||||||
case BLK_ZONE_COND_IMP_OPEN:
|
case BLK_ZONE_COND_IMP_OPEN:
|
||||||
|
case BLK_ZONE_COND_EXP_OPEN:
|
||||||
|
case BLK_ZONE_COND_CLOSED:
|
||||||
/* Writes must be at the write pointer position */
|
/* Writes must be at the write pointer position */
|
||||||
if (sector != zone->wp)
|
if (sector != zone->wp)
|
||||||
return BLK_STS_IOERR;
|
return BLK_STS_IOERR;
|
||||||
|
|
||||||
if (zone->cond == BLK_ZONE_COND_EMPTY)
|
if (zone->cond != BLK_ZONE_COND_EXP_OPEN)
|
||||||
zone->cond = BLK_ZONE_COND_IMP_OPEN;
|
zone->cond = BLK_ZONE_COND_IMP_OPEN;
|
||||||
|
|
||||||
zone->wp += nr_sectors;
|
zone->wp += nr_sectors;
|
||||||
|
@ -343,6 +343,12 @@ static int sysc_get_clocks(struct sysc *ddata)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Always add a slot for main clocks fck and ick even if unused */
|
||||||
|
if (!nr_fck)
|
||||||
|
ddata->nr_clocks++;
|
||||||
|
if (!nr_ick)
|
||||||
|
ddata->nr_clocks++;
|
||||||
|
|
||||||
ddata->clocks = devm_kcalloc(ddata->dev,
|
ddata->clocks = devm_kcalloc(ddata->dev,
|
||||||
ddata->nr_clocks, sizeof(*ddata->clocks),
|
ddata->nr_clocks, sizeof(*ddata->clocks),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
@ -421,7 +427,7 @@ static int sysc_enable_opt_clocks(struct sysc *ddata)
|
|||||||
struct clk *clock;
|
struct clk *clock;
|
||||||
int i, error;
|
int i, error;
|
||||||
|
|
||||||
if (!ddata->clocks)
|
if (!ddata->clocks || ddata->nr_clocks < SYSC_OPTFCK0 + 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) {
|
for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) {
|
||||||
@ -455,7 +461,7 @@ static void sysc_disable_opt_clocks(struct sysc *ddata)
|
|||||||
struct clk *clock;
|
struct clk *clock;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!ddata->clocks)
|
if (!ddata->clocks || ddata->nr_clocks < SYSC_OPTFCK0 + 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) {
|
for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) {
|
||||||
|
@ -3426,11 +3426,17 @@ static int __clk_core_init(struct clk_core *core)
|
|||||||
if (core->flags & CLK_IS_CRITICAL) {
|
if (core->flags & CLK_IS_CRITICAL) {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
clk_core_prepare(core);
|
ret = clk_core_prepare(core);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
|
||||||
flags = clk_enable_lock();
|
flags = clk_enable_lock();
|
||||||
clk_core_enable(core);
|
ret = clk_core_enable(core);
|
||||||
clk_enable_unlock(flags);
|
clk_enable_unlock(flags);
|
||||||
|
if (ret) {
|
||||||
|
clk_core_unprepare(core);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clk_core_reparent_orphans_nolock();
|
clk_core_reparent_orphans_nolock();
|
||||||
|
@ -134,7 +134,7 @@ static DEFINE_SPINLOCK(ssp3_lock);
|
|||||||
static const char *ssp_parent_names[] = {"vctcxo_4", "vctcxo_2", "vctcxo", "pll1_16"};
|
static const char *ssp_parent_names[] = {"vctcxo_4", "vctcxo_2", "vctcxo", "pll1_16"};
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(timer_lock);
|
static DEFINE_SPINLOCK(timer_lock);
|
||||||
static const char *timer_parent_names[] = {"clk32", "vctcxo_2", "vctcxo_4", "vctcxo"};
|
static const char *timer_parent_names[] = {"clk32", "vctcxo_4", "vctcxo_2", "vctcxo"};
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(reset_lock);
|
static DEFINE_SPINLOCK(reset_lock);
|
||||||
|
|
||||||
|
@ -3255,6 +3255,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc = {
|
|||||||
.name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc",
|
.name = "hlos1_vote_aggre_noc_mmu_audio_tbu_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {
|
static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {
|
||||||
@ -3263,6 +3264,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc = {
|
|||||||
.name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc",
|
.name = "hlos1_vote_aggre_noc_mmu_pcie_tbu_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {
|
static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {
|
||||||
@ -3271,6 +3273,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_tbu1_gdsc = {
|
|||||||
.name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc",
|
.name = "hlos1_vote_aggre_noc_mmu_tbu1_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {
|
static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {
|
||||||
@ -3279,6 +3282,7 @@ static struct gdsc hlos1_vote_aggre_noc_mmu_tbu2_gdsc = {
|
|||||||
.name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc",
|
.name = "hlos1_vote_aggre_noc_mmu_tbu2_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
|
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
|
||||||
@ -3287,6 +3291,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
|
|||||||
.name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
|
.name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
|
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
|
||||||
@ -3295,6 +3300,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
|
|||||||
.name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
|
.name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {
|
static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {
|
||||||
@ -3303,6 +3309,7 @@ static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf_gdsc = {
|
|||||||
.name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc",
|
.name = "hlos1_vote_mmnoc_mmu_tbu_sf_gdsc",
|
||||||
},
|
},
|
||||||
.pwrsts = PWRSTS_OFF_ON,
|
.pwrsts = PWRSTS_OFF_ON,
|
||||||
|
.flags = VOTABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct clk_regmap *gcc_sdm845_clocks[] = {
|
static struct clk_regmap *gcc_sdm845_clocks[] = {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <linux/clk-provider.h>
|
#include <linux/clk-provider.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
|
#include <linux/clk.h>
|
||||||
|
|
||||||
#include "clk.h"
|
#include "clk.h"
|
||||||
#include "clk-cpu.h"
|
#include "clk-cpu.h"
|
||||||
@ -1646,6 +1647,13 @@ static void __init exynos5x_clk_init(struct device_node *np,
|
|||||||
exynos5x_subcmus);
|
exynos5x_subcmus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keep top part of G3D clock path enabled permanently to ensure
|
||||||
|
* that the internal busses get their clock regardless of the
|
||||||
|
* main G3D clock enablement status.
|
||||||
|
*/
|
||||||
|
clk_prepare_enable(__clk_lookup("mout_sw_aclk_g3d"));
|
||||||
|
|
||||||
samsung_clk_of_add_provider(np, ctx);
|
samsung_clk_of_add_provider(np, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static const char * const ar100_r_apb2_parents[] = { "osc24M", "osc32k",
|
static const char * const ar100_r_apb2_parents[] = { "osc24M", "osc32k",
|
||||||
"pll-periph0", "iosc" };
|
"iosc", "pll-periph0" };
|
||||||
static const struct ccu_mux_var_prediv ar100_r_apb2_predivs[] = {
|
static const struct ccu_mux_var_prediv ar100_r_apb2_predivs[] = {
|
||||||
{ .index = 2, .shift = 0, .width = 5 },
|
{ .index = 3, .shift = 0, .width = 5 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ccu_div ar100_clk = {
|
static struct ccu_div ar100_clk = {
|
||||||
@ -51,17 +51,7 @@ static struct ccu_div ar100_clk = {
|
|||||||
|
|
||||||
static CLK_FIXED_FACTOR_HW(r_ahb_clk, "r-ahb", &ar100_clk.common.hw, 1, 1, 0);
|
static CLK_FIXED_FACTOR_HW(r_ahb_clk, "r-ahb", &ar100_clk.common.hw, 1, 1, 0);
|
||||||
|
|
||||||
static struct ccu_div r_apb1_clk = {
|
static SUNXI_CCU_M(r_apb1_clk, "r-apb1", "r-ahb", 0x00c, 0, 2, 0);
|
||||||
.div = _SUNXI_CCU_DIV(0, 2),
|
|
||||||
|
|
||||||
.common = {
|
|
||||||
.reg = 0x00c,
|
|
||||||
.hw.init = CLK_HW_INIT("r-apb1",
|
|
||||||
"r-ahb",
|
|
||||||
&ccu_div_ops,
|
|
||||||
0),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ccu_div r_apb2_clk = {
|
static struct ccu_div r_apb2_clk = {
|
||||||
.div = _SUNXI_CCU_DIV_FLAGS(8, 2, CLK_DIVIDER_POWER_OF_TWO),
|
.div = _SUNXI_CCU_DIV_FLAGS(8, 2, CLK_DIVIDER_POWER_OF_TWO),
|
||||||
|
@ -51,19 +51,7 @@ static struct ccu_div ar100_clk = {
|
|||||||
|
|
||||||
static CLK_FIXED_FACTOR_HW(ahb0_clk, "ahb0", &ar100_clk.common.hw, 1, 1, 0);
|
static CLK_FIXED_FACTOR_HW(ahb0_clk, "ahb0", &ar100_clk.common.hw, 1, 1, 0);
|
||||||
|
|
||||||
static struct ccu_div apb0_clk = {
|
static SUNXI_CCU_M(apb0_clk, "apb0", "ahb0", 0x0c, 0, 2, 0);
|
||||||
.div = _SUNXI_CCU_DIV_FLAGS(0, 2, CLK_DIVIDER_POWER_OF_TWO),
|
|
||||||
|
|
||||||
.common = {
|
|
||||||
.reg = 0x0c,
|
|
||||||
.hw.init = CLK_HW_INIT_HW("apb0",
|
|
||||||
&ahb0_clk.hw,
|
|
||||||
&ccu_div_ops,
|
|
||||||
0),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static SUNXI_CCU_M(a83t_apb0_clk, "apb0", "ahb0", 0x0c, 0, 2, 0);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define the parent as an array that can be reused to save space
|
* Define the parent as an array that can be reused to save space
|
||||||
@ -127,7 +115,7 @@ static struct ccu_mp a83t_ir_clk = {
|
|||||||
|
|
||||||
static struct ccu_common *sun8i_a83t_r_ccu_clks[] = {
|
static struct ccu_common *sun8i_a83t_r_ccu_clks[] = {
|
||||||
&ar100_clk.common,
|
&ar100_clk.common,
|
||||||
&a83t_apb0_clk.common,
|
&apb0_clk.common,
|
||||||
&apb0_pio_clk.common,
|
&apb0_pio_clk.common,
|
||||||
&apb0_ir_clk.common,
|
&apb0_ir_clk.common,
|
||||||
&apb0_timer_clk.common,
|
&apb0_timer_clk.common,
|
||||||
@ -167,7 +155,7 @@ static struct clk_hw_onecell_data sun8i_a83t_r_hw_clks = {
|
|||||||
.hws = {
|
.hws = {
|
||||||
[CLK_AR100] = &ar100_clk.common.hw,
|
[CLK_AR100] = &ar100_clk.common.hw,
|
||||||
[CLK_AHB0] = &ahb0_clk.hw,
|
[CLK_AHB0] = &ahb0_clk.hw,
|
||||||
[CLK_APB0] = &a83t_apb0_clk.common.hw,
|
[CLK_APB0] = &apb0_clk.common.hw,
|
||||||
[CLK_APB0_PIO] = &apb0_pio_clk.common.hw,
|
[CLK_APB0_PIO] = &apb0_pio_clk.common.hw,
|
||||||
[CLK_APB0_IR] = &apb0_ir_clk.common.hw,
|
[CLK_APB0_IR] = &apb0_ir_clk.common.hw,
|
||||||
[CLK_APB0_TIMER] = &apb0_timer_clk.common.hw,
|
[CLK_APB0_TIMER] = &apb0_timer_clk.common.hw,
|
||||||
@ -282,9 +270,6 @@ static void __init sunxi_r_ccu_init(struct device_node *node,
|
|||||||
|
|
||||||
static void __init sun8i_a83t_r_ccu_setup(struct device_node *node)
|
static void __init sun8i_a83t_r_ccu_setup(struct device_node *node)
|
||||||
{
|
{
|
||||||
/* Fix apb0 bus gate parents here */
|
|
||||||
apb0_gate_parent[0] = &a83t_apb0_clk.common.hw;
|
|
||||||
|
|
||||||
sunxi_r_ccu_init(node, &sun8i_a83t_r_ccu_desc);
|
sunxi_r_ccu_init(node, &sun8i_a83t_r_ccu_desc);
|
||||||
}
|
}
|
||||||
CLK_OF_DECLARE(sun8i_a83t_r_ccu, "allwinner,sun8i-a83t-r-ccu",
|
CLK_OF_DECLARE(sun8i_a83t_r_ccu, "allwinner,sun8i-a83t-r-ccu",
|
||||||
|
@ -761,7 +761,8 @@ static struct ccu_mp outa_clk = {
|
|||||||
.reg = 0x1f0,
|
.reg = 0x1f0,
|
||||||
.features = CCU_FEATURE_FIXED_PREDIV,
|
.features = CCU_FEATURE_FIXED_PREDIV,
|
||||||
.hw.init = CLK_HW_INIT_PARENTS("outa", out_parents,
|
.hw.init = CLK_HW_INIT_PARENTS("outa", out_parents,
|
||||||
&ccu_mp_ops, 0),
|
&ccu_mp_ops,
|
||||||
|
CLK_SET_RATE_PARENT),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -779,7 +780,8 @@ static struct ccu_mp outb_clk = {
|
|||||||
.reg = 0x1f4,
|
.reg = 0x1f4,
|
||||||
.features = CCU_FEATURE_FIXED_PREDIV,
|
.features = CCU_FEATURE_FIXED_PREDIV,
|
||||||
.hw.init = CLK_HW_INIT_PARENTS("outb", out_parents,
|
.hw.init = CLK_HW_INIT_PARENTS("outb", out_parents,
|
||||||
&ccu_mp_ops, 0),
|
&ccu_mp_ops,
|
||||||
|
CLK_SET_RATE_PARENT),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -618,7 +618,7 @@ static struct clk_hw_onecell_data sun8i_v3s_hw_clks = {
|
|||||||
[CLK_MBUS] = &mbus_clk.common.hw,
|
[CLK_MBUS] = &mbus_clk.common.hw,
|
||||||
[CLK_MIPI_CSI] = &mipi_csi_clk.common.hw,
|
[CLK_MIPI_CSI] = &mipi_csi_clk.common.hw,
|
||||||
},
|
},
|
||||||
.num = CLK_NUMBER,
|
.num = CLK_PLL_DDR1 + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct clk_hw_onecell_data sun8i_v3_hw_clks = {
|
static struct clk_hw_onecell_data sun8i_v3_hw_clks = {
|
||||||
@ -700,7 +700,7 @@ static struct clk_hw_onecell_data sun8i_v3_hw_clks = {
|
|||||||
[CLK_MBUS] = &mbus_clk.common.hw,
|
[CLK_MBUS] = &mbus_clk.common.hw,
|
||||||
[CLK_MIPI_CSI] = &mipi_csi_clk.common.hw,
|
[CLK_MIPI_CSI] = &mipi_csi_clk.common.hw,
|
||||||
},
|
},
|
||||||
.num = CLK_NUMBER,
|
.num = CLK_I2S0 + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ccu_reset_map sun8i_v3s_ccu_resets[] = {
|
static struct ccu_reset_map sun8i_v3s_ccu_resets[] = {
|
||||||
|
@ -51,6 +51,4 @@
|
|||||||
|
|
||||||
#define CLK_PLL_DDR1 74
|
#define CLK_PLL_DDR1 74
|
||||||
|
|
||||||
#define CLK_NUMBER (CLK_I2S0 + 1)
|
|
||||||
|
|
||||||
#endif /* _CCU_SUN8I_H3_H_ */
|
#endif /* _CCU_SUN8I_H3_H_ */
|
||||||
|
@ -231,8 +231,10 @@ struct clk ** __init tegra_clk_init(void __iomem *regs, int num, int banks)
|
|||||||
periph_banks = banks;
|
periph_banks = banks;
|
||||||
|
|
||||||
clks = kcalloc(num, sizeof(struct clk *), GFP_KERNEL);
|
clks = kcalloc(num, sizeof(struct clk *), GFP_KERNEL);
|
||||||
if (!clks)
|
if (!clks) {
|
||||||
kfree(periph_clk_enb_refcnt);
|
kfree(periph_clk_enb_refcnt);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
clk_num = num;
|
clk_num = num;
|
||||||
|
|
||||||
|
@ -233,7 +233,6 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev)
|
|||||||
cinfo->iobase = of_iomap(node, 0);
|
cinfo->iobase = of_iomap(node, 0);
|
||||||
cinfo->dev = &pdev->dev;
|
cinfo->dev = &pdev->dev;
|
||||||
pm_runtime_enable(cinfo->dev);
|
pm_runtime_enable(cinfo->dev);
|
||||||
pm_runtime_irq_safe(cinfo->dev);
|
|
||||||
|
|
||||||
pm_runtime_get_sync(cinfo->dev);
|
pm_runtime_get_sync(cinfo->dev);
|
||||||
atl_write(cinfo, DRA7_ATL_PCLKMUX_REG(0), DRA7_ATL_PCLKMUX);
|
atl_write(cinfo, DRA7_ATL_PCLKMUX_REG(0), DRA7_ATL_PCLKMUX);
|
||||||
|
@ -198,7 +198,7 @@ static void teo_update(struct cpuidle_driver *drv, struct cpuidle_device *dev)
|
|||||||
* pattern detection.
|
* pattern detection.
|
||||||
*/
|
*/
|
||||||
cpu_data->intervals[cpu_data->interval_idx++] = measured_ns;
|
cpu_data->intervals[cpu_data->interval_idx++] = measured_ns;
|
||||||
if (cpu_data->interval_idx > INTERVALS)
|
if (cpu_data->interval_idx >= INTERVALS)
|
||||||
cpu_data->interval_idx = 0;
|
cpu_data->interval_idx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ struct sec_req {
|
|||||||
int req_id;
|
int req_id;
|
||||||
|
|
||||||
/* Status of the SEC request */
|
/* Status of the SEC request */
|
||||||
int fake_busy;
|
atomic_t fake_busy;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,8 +132,8 @@ struct sec_debug_file {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct sec_dfx {
|
struct sec_dfx {
|
||||||
u64 send_cnt;
|
atomic64_t send_cnt;
|
||||||
u64 recv_cnt;
|
atomic64_t recv_cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sec_debug {
|
struct sec_debug {
|
||||||
|
@ -120,7 +120,7 @@ static void sec_req_cb(struct hisi_qp *qp, void *resp)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
__sync_add_and_fetch(&req->ctx->sec->debug.dfx.recv_cnt, 1);
|
atomic64_inc(&req->ctx->sec->debug.dfx.recv_cnt);
|
||||||
|
|
||||||
req->ctx->req_op->buf_unmap(req->ctx, req);
|
req->ctx->req_op->buf_unmap(req->ctx, req);
|
||||||
|
|
||||||
@ -135,13 +135,13 @@ static int sec_bd_send(struct sec_ctx *ctx, struct sec_req *req)
|
|||||||
mutex_lock(&qp_ctx->req_lock);
|
mutex_lock(&qp_ctx->req_lock);
|
||||||
ret = hisi_qp_send(qp_ctx->qp, &req->sec_sqe);
|
ret = hisi_qp_send(qp_ctx->qp, &req->sec_sqe);
|
||||||
mutex_unlock(&qp_ctx->req_lock);
|
mutex_unlock(&qp_ctx->req_lock);
|
||||||
__sync_add_and_fetch(&ctx->sec->debug.dfx.send_cnt, 1);
|
atomic64_inc(&ctx->sec->debug.dfx.send_cnt);
|
||||||
|
|
||||||
if (ret == -EBUSY)
|
if (ret == -EBUSY)
|
||||||
return -ENOBUFS;
|
return -ENOBUFS;
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
if (req->fake_busy)
|
if (atomic_read(&req->fake_busy))
|
||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
else
|
else
|
||||||
ret = -EINPROGRESS;
|
ret = -EINPROGRESS;
|
||||||
@ -641,7 +641,7 @@ static void sec_skcipher_callback(struct sec_ctx *ctx, struct sec_req *req)
|
|||||||
if (ctx->c_ctx.c_mode == SEC_CMODE_CBC && req->c_req.encrypt)
|
if (ctx->c_ctx.c_mode == SEC_CMODE_CBC && req->c_req.encrypt)
|
||||||
sec_update_iv(req);
|
sec_update_iv(req);
|
||||||
|
|
||||||
if (__sync_bool_compare_and_swap(&req->fake_busy, 1, 0))
|
if (atomic_cmpxchg(&req->fake_busy, 1, 0) != 1)
|
||||||
sk_req->base.complete(&sk_req->base, -EINPROGRESS);
|
sk_req->base.complete(&sk_req->base, -EINPROGRESS);
|
||||||
|
|
||||||
sk_req->base.complete(&sk_req->base, req->err_type);
|
sk_req->base.complete(&sk_req->base, req->err_type);
|
||||||
@ -672,9 +672,9 @@ static int sec_request_init(struct sec_ctx *ctx, struct sec_req *req)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->fake_req_limit <= atomic_inc_return(&qp_ctx->pending_reqs))
|
if (ctx->fake_req_limit <= atomic_inc_return(&qp_ctx->pending_reqs))
|
||||||
req->fake_busy = 1;
|
atomic_set(&req->fake_busy, 1);
|
||||||
else
|
else
|
||||||
req->fake_busy = 0;
|
atomic_set(&req->fake_busy, 0);
|
||||||
|
|
||||||
ret = ctx->req_op->get_res(ctx, req);
|
ret = ctx->req_op->get_res(ctx, req);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -608,6 +608,14 @@ static const struct file_operations sec_dbg_fops = {
|
|||||||
.write = sec_debug_write,
|
.write = sec_debug_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int debugfs_atomic64_t_get(void *data, u64 *val)
|
||||||
|
{
|
||||||
|
*val = atomic64_read((atomic64_t *)data);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
DEFINE_DEBUGFS_ATTRIBUTE(fops_atomic64_t_ro, debugfs_atomic64_t_get, NULL,
|
||||||
|
"%lld\n");
|
||||||
|
|
||||||
static int sec_core_debug_init(struct sec_dev *sec)
|
static int sec_core_debug_init(struct sec_dev *sec)
|
||||||
{
|
{
|
||||||
struct hisi_qm *qm = &sec->qm;
|
struct hisi_qm *qm = &sec->qm;
|
||||||
@ -628,9 +636,11 @@ static int sec_core_debug_init(struct sec_dev *sec)
|
|||||||
|
|
||||||
debugfs_create_regset32("regs", 0444, tmp_d, regset);
|
debugfs_create_regset32("regs", 0444, tmp_d, regset);
|
||||||
|
|
||||||
debugfs_create_u64("send_cnt", 0444, tmp_d, &dfx->send_cnt);
|
debugfs_create_file("send_cnt", 0444, tmp_d, &dfx->send_cnt,
|
||||||
|
&fops_atomic64_t_ro);
|
||||||
|
|
||||||
debugfs_create_u64("recv_cnt", 0444, tmp_d, &dfx->recv_cnt);
|
debugfs_create_file("recv_cnt", 0444, tmp_d, &dfx->recv_cnt,
|
||||||
|
&fops_atomic64_t_ro);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ static const struct console *earlycon_console __initdata;
|
|||||||
static const struct font_desc *font;
|
static const struct font_desc *font;
|
||||||
static u32 efi_x, efi_y;
|
static u32 efi_x, efi_y;
|
||||||
static u64 fb_base;
|
static u64 fb_base;
|
||||||
static pgprot_t fb_prot;
|
static bool fb_wb;
|
||||||
static void *efi_fb;
|
static void *efi_fb;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -33,10 +33,8 @@ static int __init efi_earlycon_remap_fb(void)
|
|||||||
if (!earlycon_console || !(earlycon_console->flags & CON_ENABLED))
|
if (!earlycon_console || !(earlycon_console->flags & CON_ENABLED))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (pgprot_val(fb_prot) == pgprot_val(PAGE_KERNEL))
|
efi_fb = memremap(fb_base, screen_info.lfb_size,
|
||||||
efi_fb = memremap(fb_base, screen_info.lfb_size, MEMREMAP_WB);
|
fb_wb ? MEMREMAP_WB : MEMREMAP_WC);
|
||||||
else
|
|
||||||
efi_fb = memremap(fb_base, screen_info.lfb_size, MEMREMAP_WC);
|
|
||||||
|
|
||||||
return efi_fb ? 0 : -ENOMEM;
|
return efi_fb ? 0 : -ENOMEM;
|
||||||
}
|
}
|
||||||
@ -53,9 +51,12 @@ late_initcall(efi_earlycon_unmap_fb);
|
|||||||
|
|
||||||
static __ref void *efi_earlycon_map(unsigned long start, unsigned long len)
|
static __ref void *efi_earlycon_map(unsigned long start, unsigned long len)
|
||||||
{
|
{
|
||||||
|
pgprot_t fb_prot;
|
||||||
|
|
||||||
if (efi_fb)
|
if (efi_fb)
|
||||||
return efi_fb + start;
|
return efi_fb + start;
|
||||||
|
|
||||||
|
fb_prot = fb_wb ? PAGE_KERNEL : pgprot_writecombine(PAGE_KERNEL);
|
||||||
return early_memremap_prot(fb_base + start, len, pgprot_val(fb_prot));
|
return early_memremap_prot(fb_base + start, len, pgprot_val(fb_prot));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,10 +216,7 @@ static int __init efi_earlycon_setup(struct earlycon_device *device,
|
|||||||
if (screen_info.capabilities & VIDEO_CAPABILITY_64BIT_BASE)
|
if (screen_info.capabilities & VIDEO_CAPABILITY_64BIT_BASE)
|
||||||
fb_base |= (u64)screen_info.ext_lfb_base << 32;
|
fb_base |= (u64)screen_info.ext_lfb_base << 32;
|
||||||
|
|
||||||
if (opt && !strcmp(opt, "ram"))
|
fb_wb = opt && !strcmp(opt, "ram");
|
||||||
fb_prot = PAGE_KERNEL;
|
|
||||||
else
|
|
||||||
fb_prot = pgprot_writecombine(PAGE_KERNEL);
|
|
||||||
|
|
||||||
si = &screen_info;
|
si = &screen_info;
|
||||||
xres = si->lfb_width;
|
xres = si->lfb_width;
|
||||||
|
@ -33,7 +33,7 @@ efi_status_t efi_get_random_bytes(efi_system_table_t *sys_table_arg,
|
|||||||
{
|
{
|
||||||
efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID;
|
efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID;
|
||||||
efi_status_t status;
|
efi_status_t status;
|
||||||
struct efi_rng_protocol *rng;
|
struct efi_rng_protocol *rng = NULL;
|
||||||
|
|
||||||
status = efi_call_early(locate_protocol, &rng_proto, NULL,
|
status = efi_call_early(locate_protocol, &rng_proto, NULL,
|
||||||
(void **)&rng);
|
(void **)&rng);
|
||||||
@ -162,8 +162,8 @@ efi_status_t efi_random_get_seed(efi_system_table_t *sys_table_arg)
|
|||||||
efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID;
|
efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID;
|
||||||
efi_guid_t rng_algo_raw = EFI_RNG_ALGORITHM_RAW;
|
efi_guid_t rng_algo_raw = EFI_RNG_ALGORITHM_RAW;
|
||||||
efi_guid_t rng_table_guid = LINUX_EFI_RANDOM_SEED_TABLE_GUID;
|
efi_guid_t rng_table_guid = LINUX_EFI_RANDOM_SEED_TABLE_GUID;
|
||||||
struct efi_rng_protocol *rng;
|
struct efi_rng_protocol *rng = NULL;
|
||||||
struct linux_efi_random_seed *seed;
|
struct linux_efi_random_seed *seed = NULL;
|
||||||
efi_status_t status;
|
efi_status_t status;
|
||||||
|
|
||||||
status = efi_call_early(locate_protocol, &rng_proto, NULL,
|
status = efi_call_early(locate_protocol, &rng_proto, NULL,
|
||||||
|
@ -573,7 +573,6 @@ config GPIO_THUNDERX
|
|||||||
tristate "Cavium ThunderX/OCTEON-TX GPIO"
|
tristate "Cavium ThunderX/OCTEON-TX GPIO"
|
||||||
depends on ARCH_THUNDER || (64BIT && COMPILE_TEST)
|
depends on ARCH_THUNDER || (64BIT && COMPILE_TEST)
|
||||||
depends on PCI_MSI
|
depends on PCI_MSI
|
||||||
select GPIOLIB_IRQCHIP
|
|
||||||
select IRQ_DOMAIN_HIERARCHY
|
select IRQ_DOMAIN_HIERARCHY
|
||||||
select IRQ_FASTEOI_HIERARCHY_HANDLERS
|
select IRQ_FASTEOI_HIERARCHY_HANDLERS
|
||||||
help
|
help
|
||||||
|
@ -53,6 +53,7 @@ struct thunderx_line {
|
|||||||
struct thunderx_gpio {
|
struct thunderx_gpio {
|
||||||
struct gpio_chip chip;
|
struct gpio_chip chip;
|
||||||
u8 __iomem *register_base;
|
u8 __iomem *register_base;
|
||||||
|
struct irq_domain *irqd;
|
||||||
struct msix_entry *msix_entries; /* per line MSI-X */
|
struct msix_entry *msix_entries; /* per line MSI-X */
|
||||||
struct thunderx_line *line_entries; /* per line irq info */
|
struct thunderx_line *line_entries; /* per line irq info */
|
||||||
raw_spinlock_t lock;
|
raw_spinlock_t lock;
|
||||||
@ -285,60 +286,54 @@ static void thunderx_gpio_set_multiple(struct gpio_chip *chip,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thunderx_gpio_irq_ack(struct irq_data *d)
|
static void thunderx_gpio_irq_ack(struct irq_data *data)
|
||||||
{
|
{
|
||||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
|
||||||
|
|
||||||
writeq(GPIO_INTR_INTR,
|
writeq(GPIO_INTR_INTR,
|
||||||
txgpio->register_base + intr_reg(irqd_to_hwirq(d)));
|
txline->txgpio->register_base + intr_reg(txline->line));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thunderx_gpio_irq_mask(struct irq_data *d)
|
static void thunderx_gpio_irq_mask(struct irq_data *data)
|
||||||
{
|
{
|
||||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
|
||||||
|
|
||||||
writeq(GPIO_INTR_ENA_W1C,
|
writeq(GPIO_INTR_ENA_W1C,
|
||||||
txgpio->register_base + intr_reg(irqd_to_hwirq(d)));
|
txline->txgpio->register_base + intr_reg(txline->line));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thunderx_gpio_irq_mask_ack(struct irq_data *d)
|
static void thunderx_gpio_irq_mask_ack(struct irq_data *data)
|
||||||
{
|
{
|
||||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
|
||||||
|
|
||||||
writeq(GPIO_INTR_ENA_W1C | GPIO_INTR_INTR,
|
writeq(GPIO_INTR_ENA_W1C | GPIO_INTR_INTR,
|
||||||
txgpio->register_base + intr_reg(irqd_to_hwirq(d)));
|
txline->txgpio->register_base + intr_reg(txline->line));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thunderx_gpio_irq_unmask(struct irq_data *d)
|
static void thunderx_gpio_irq_unmask(struct irq_data *data)
|
||||||
{
|
{
|
||||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
|
||||||
|
|
||||||
writeq(GPIO_INTR_ENA_W1S,
|
writeq(GPIO_INTR_ENA_W1S,
|
||||||
txgpio->register_base + intr_reg(irqd_to_hwirq(d)));
|
txline->txgpio->register_base + intr_reg(txline->line));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thunderx_gpio_irq_set_type(struct irq_data *d,
|
static int thunderx_gpio_irq_set_type(struct irq_data *data,
|
||||||
unsigned int flow_type)
|
unsigned int flow_type)
|
||||||
{
|
{
|
||||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
struct thunderx_gpio *txgpio = txline->txgpio;
|
||||||
struct thunderx_line *txline =
|
|
||||||
&txgpio->line_entries[irqd_to_hwirq(d)];
|
|
||||||
u64 bit_cfg;
|
u64 bit_cfg;
|
||||||
|
|
||||||
irqd_set_trigger_type(d, flow_type);
|
irqd_set_trigger_type(data, flow_type);
|
||||||
|
|
||||||
bit_cfg = txline->fil_bits | GPIO_BIT_CFG_INT_EN;
|
bit_cfg = txline->fil_bits | GPIO_BIT_CFG_INT_EN;
|
||||||
|
|
||||||
if (flow_type & IRQ_TYPE_EDGE_BOTH) {
|
if (flow_type & IRQ_TYPE_EDGE_BOTH) {
|
||||||
irq_set_handler_locked(d, handle_fasteoi_ack_irq);
|
irq_set_handler_locked(data, handle_fasteoi_ack_irq);
|
||||||
bit_cfg |= GPIO_BIT_CFG_INT_TYPE;
|
bit_cfg |= GPIO_BIT_CFG_INT_TYPE;
|
||||||
} else {
|
} else {
|
||||||
irq_set_handler_locked(d, handle_fasteoi_mask_irq);
|
irq_set_handler_locked(data, handle_fasteoi_mask_irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
raw_spin_lock(&txgpio->lock);
|
raw_spin_lock(&txgpio->lock);
|
||||||
@ -367,6 +362,33 @@ static void thunderx_gpio_irq_disable(struct irq_data *data)
|
|||||||
irq_chip_disable_parent(data);
|
irq_chip_disable_parent(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int thunderx_gpio_irq_request_resources(struct irq_data *data)
|
||||||
|
{
|
||||||
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
|
struct thunderx_gpio *txgpio = txline->txgpio;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = gpiochip_lock_as_irq(&txgpio->chip, txline->line);
|
||||||
|
if (r)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
r = irq_chip_request_resources_parent(data);
|
||||||
|
if (r)
|
||||||
|
gpiochip_unlock_as_irq(&txgpio->chip, txline->line);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void thunderx_gpio_irq_release_resources(struct irq_data *data)
|
||||||
|
{
|
||||||
|
struct thunderx_line *txline = irq_data_get_irq_chip_data(data);
|
||||||
|
struct thunderx_gpio *txgpio = txline->txgpio;
|
||||||
|
|
||||||
|
irq_chip_release_resources_parent(data);
|
||||||
|
|
||||||
|
gpiochip_unlock_as_irq(&txgpio->chip, txline->line);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupts are chained from underlying MSI-X vectors. We have
|
* Interrupts are chained from underlying MSI-X vectors. We have
|
||||||
* these irq_chip functions to be able to handle level triggering
|
* these irq_chip functions to be able to handle level triggering
|
||||||
@ -383,24 +405,50 @@ static struct irq_chip thunderx_gpio_irq_chip = {
|
|||||||
.irq_unmask = thunderx_gpio_irq_unmask,
|
.irq_unmask = thunderx_gpio_irq_unmask,
|
||||||
.irq_eoi = irq_chip_eoi_parent,
|
.irq_eoi = irq_chip_eoi_parent,
|
||||||
.irq_set_affinity = irq_chip_set_affinity_parent,
|
.irq_set_affinity = irq_chip_set_affinity_parent,
|
||||||
|
.irq_request_resources = thunderx_gpio_irq_request_resources,
|
||||||
|
.irq_release_resources = thunderx_gpio_irq_release_resources,
|
||||||
.irq_set_type = thunderx_gpio_irq_set_type,
|
.irq_set_type = thunderx_gpio_irq_set_type,
|
||||||
|
|
||||||
.flags = IRQCHIP_SET_TYPE_MASKED
|
.flags = IRQCHIP_SET_TYPE_MASKED
|
||||||
};
|
};
|
||||||
|
|
||||||
static int thunderx_gpio_child_to_parent_hwirq(struct gpio_chip *gc,
|
static int thunderx_gpio_irq_translate(struct irq_domain *d,
|
||||||
unsigned int child,
|
struct irq_fwspec *fwspec,
|
||||||
unsigned int child_type,
|
irq_hw_number_t *hwirq,
|
||||||
unsigned int *parent,
|
unsigned int *type)
|
||||||
unsigned int *parent_type)
|
|
||||||
{
|
{
|
||||||
struct thunderx_gpio *txgpio = gpiochip_get_data(gc);
|
struct thunderx_gpio *txgpio = d->host_data;
|
||||||
|
|
||||||
*parent = txgpio->base_msi + (2 * child);
|
if (WARN_ON(fwspec->param_count < 2))
|
||||||
*parent_type = IRQ_TYPE_LEVEL_HIGH;
|
return -EINVAL;
|
||||||
|
if (fwspec->param[0] >= txgpio->chip.ngpio)
|
||||||
|
return -EINVAL;
|
||||||
|
*hwirq = fwspec->param[0];
|
||||||
|
*type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int thunderx_gpio_irq_alloc(struct irq_domain *d, unsigned int virq,
|
||||||
|
unsigned int nr_irqs, void *arg)
|
||||||
|
{
|
||||||
|
struct thunderx_line *txline = arg;
|
||||||
|
|
||||||
|
return irq_domain_set_hwirq_and_chip(d, virq, txline->line,
|
||||||
|
&thunderx_gpio_irq_chip, txline);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct irq_domain_ops thunderx_gpio_irqd_ops = {
|
||||||
|
.alloc = thunderx_gpio_irq_alloc,
|
||||||
|
.translate = thunderx_gpio_irq_translate
|
||||||
|
};
|
||||||
|
|
||||||
|
static int thunderx_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
|
||||||
|
{
|
||||||
|
struct thunderx_gpio *txgpio = gpiochip_get_data(chip);
|
||||||
|
|
||||||
|
return irq_find_mapping(txgpio->irqd, offset);
|
||||||
|
}
|
||||||
|
|
||||||
static int thunderx_gpio_probe(struct pci_dev *pdev,
|
static int thunderx_gpio_probe(struct pci_dev *pdev,
|
||||||
const struct pci_device_id *id)
|
const struct pci_device_id *id)
|
||||||
{
|
{
|
||||||
@ -408,7 +456,6 @@ static int thunderx_gpio_probe(struct pci_dev *pdev,
|
|||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct thunderx_gpio *txgpio;
|
struct thunderx_gpio *txgpio;
|
||||||
struct gpio_chip *chip;
|
struct gpio_chip *chip;
|
||||||
struct gpio_irq_chip *girq;
|
|
||||||
int ngpio, i;
|
int ngpio, i;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
@ -453,8 +500,8 @@ static int thunderx_gpio_probe(struct pci_dev *pdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
txgpio->msix_entries = devm_kcalloc(dev,
|
txgpio->msix_entries = devm_kcalloc(dev,
|
||||||
ngpio, sizeof(struct msix_entry),
|
ngpio, sizeof(struct msix_entry),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!txgpio->msix_entries) {
|
if (!txgpio->msix_entries) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
@ -495,6 +542,27 @@ static int thunderx_gpio_probe(struct pci_dev *pdev,
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Push GPIO specific irqdomain on hierarchy created as a side
|
||||||
|
* effect of the pci_enable_msix()
|
||||||
|
*/
|
||||||
|
txgpio->irqd = irq_domain_create_hierarchy(irq_get_irq_data(txgpio->msix_entries[0].vector)->domain,
|
||||||
|
0, 0, of_node_to_fwnode(dev->of_node),
|
||||||
|
&thunderx_gpio_irqd_ops, txgpio);
|
||||||
|
if (!txgpio->irqd) {
|
||||||
|
err = -ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Push on irq_data and the domain for each line. */
|
||||||
|
for (i = 0; i < ngpio; i++) {
|
||||||
|
err = irq_domain_push_irq(txgpio->irqd,
|
||||||
|
txgpio->msix_entries[i].vector,
|
||||||
|
&txgpio->line_entries[i]);
|
||||||
|
if (err < 0)
|
||||||
|
dev_err(dev, "irq_domain_push_irq: %d\n", err);
|
||||||
|
}
|
||||||
|
|
||||||
chip->label = KBUILD_MODNAME;
|
chip->label = KBUILD_MODNAME;
|
||||||
chip->parent = dev;
|
chip->parent = dev;
|
||||||
chip->owner = THIS_MODULE;
|
chip->owner = THIS_MODULE;
|
||||||
@ -509,28 +577,11 @@ static int thunderx_gpio_probe(struct pci_dev *pdev,
|
|||||||
chip->set = thunderx_gpio_set;
|
chip->set = thunderx_gpio_set;
|
||||||
chip->set_multiple = thunderx_gpio_set_multiple;
|
chip->set_multiple = thunderx_gpio_set_multiple;
|
||||||
chip->set_config = thunderx_gpio_set_config;
|
chip->set_config = thunderx_gpio_set_config;
|
||||||
girq = &chip->irq;
|
chip->to_irq = thunderx_gpio_to_irq;
|
||||||
girq->chip = &thunderx_gpio_irq_chip;
|
|
||||||
girq->fwnode = of_node_to_fwnode(dev->of_node);
|
|
||||||
girq->parent_domain =
|
|
||||||
irq_get_irq_data(txgpio->msix_entries[0].vector)->domain;
|
|
||||||
girq->child_to_parent_hwirq = thunderx_gpio_child_to_parent_hwirq;
|
|
||||||
girq->handler = handle_bad_irq;
|
|
||||||
girq->default_type = IRQ_TYPE_NONE;
|
|
||||||
|
|
||||||
err = devm_gpiochip_add_data(dev, chip, txgpio);
|
err = devm_gpiochip_add_data(dev, chip, txgpio);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Push on irq_data and the domain for each line. */
|
|
||||||
for (i = 0; i < ngpio; i++) {
|
|
||||||
err = irq_domain_push_irq(chip->irq.domain,
|
|
||||||
txgpio->msix_entries[i].vector,
|
|
||||||
chip);
|
|
||||||
if (err < 0)
|
|
||||||
dev_err(dev, "irq_domain_push_irq: %d\n", err);
|
|
||||||
}
|
|
||||||
|
|
||||||
dev_info(dev, "ThunderX GPIO: %d lines with base %d.\n",
|
dev_info(dev, "ThunderX GPIO: %d lines with base %d.\n",
|
||||||
ngpio, chip->base);
|
ngpio, chip->base);
|
||||||
return 0;
|
return 0;
|
||||||
@ -545,10 +596,10 @@ static void thunderx_gpio_remove(struct pci_dev *pdev)
|
|||||||
struct thunderx_gpio *txgpio = pci_get_drvdata(pdev);
|
struct thunderx_gpio *txgpio = pci_get_drvdata(pdev);
|
||||||
|
|
||||||
for (i = 0; i < txgpio->chip.ngpio; i++)
|
for (i = 0; i < txgpio->chip.ngpio; i++)
|
||||||
irq_domain_pop_irq(txgpio->chip.irq.domain,
|
irq_domain_pop_irq(txgpio->irqd,
|
||||||
txgpio->msix_entries[i].vector);
|
txgpio->msix_entries[i].vector);
|
||||||
|
|
||||||
irq_domain_remove(txgpio->chip.irq.domain);
|
irq_domain_remove(txgpio->irqd);
|
||||||
|
|
||||||
pci_set_drvdata(pdev, NULL);
|
pci_set_drvdata(pdev, NULL);
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,7 @@ static const struct soc15_reg_golden golden_settings_sdma_4_3[] = {
|
|||||||
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC0_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
|
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC0_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
|
||||||
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC1_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
|
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC1_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
|
||||||
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003c0),
|
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003c0),
|
||||||
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x00000000)
|
SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x03fbe1fe)
|
||||||
};
|
};
|
||||||
|
|
||||||
static u32 sdma_v4_0_get_reg_offset(struct amdgpu_device *adev,
|
static u32 sdma_v4_0_get_reg_offset(struct amdgpu_device *adev,
|
||||||
|
@ -817,8 +817,8 @@ static bool dc_link_detect_helper(struct dc_link *link,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case SIGNAL_TYPE_EDP: {
|
case SIGNAL_TYPE_EDP: {
|
||||||
read_current_link_settings_on_detect(link);
|
|
||||||
detect_edp_sink_caps(link);
|
detect_edp_sink_caps(link);
|
||||||
|
read_current_link_settings_on_detect(link);
|
||||||
sink_caps.transaction_type = DDC_TRANSACTION_TYPE_I2C_OVER_AUX;
|
sink_caps.transaction_type = DDC_TRANSACTION_TYPE_I2C_OVER_AUX;
|
||||||
sink_caps.signal = SIGNAL_TYPE_EDP;
|
sink_caps.signal = SIGNAL_TYPE_EDP;
|
||||||
break;
|
break;
|
||||||
|
@ -1190,6 +1190,8 @@ static int drm_dp_mst_wait_tx_reply(struct drm_dp_mst_branch *mstb,
|
|||||||
txmsg->state == DRM_DP_SIDEBAND_TX_SENT) {
|
txmsg->state == DRM_DP_SIDEBAND_TX_SENT) {
|
||||||
mstb->tx_slots[txmsg->seqno] = NULL;
|
mstb->tx_slots[txmsg->seqno] = NULL;
|
||||||
}
|
}
|
||||||
|
mgr->is_waiting_for_dwn_reply = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
if (unlikely(ret == -EIO) && drm_debug_enabled(DRM_UT_DP)) {
|
if (unlikely(ret == -EIO) && drm_debug_enabled(DRM_UT_DP)) {
|
||||||
@ -1199,6 +1201,7 @@ out:
|
|||||||
}
|
}
|
||||||
mutex_unlock(&mgr->qlock);
|
mutex_unlock(&mgr->qlock);
|
||||||
|
|
||||||
|
drm_dp_mst_kick_tx(mgr);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2318,7 +2321,7 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb,
|
|||||||
{
|
{
|
||||||
struct drm_dp_mst_topology_mgr *mgr = mstb->mgr;
|
struct drm_dp_mst_topology_mgr *mgr = mstb->mgr;
|
||||||
struct drm_dp_mst_port *port;
|
struct drm_dp_mst_port *port;
|
||||||
int old_ddps, ret;
|
int old_ddps, old_input, ret, i;
|
||||||
u8 new_pdt;
|
u8 new_pdt;
|
||||||
bool dowork = false, create_connector = false;
|
bool dowork = false, create_connector = false;
|
||||||
|
|
||||||
@ -2349,6 +2352,7 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
old_ddps = port->ddps;
|
old_ddps = port->ddps;
|
||||||
|
old_input = port->input;
|
||||||
port->input = conn_stat->input_port;
|
port->input = conn_stat->input_port;
|
||||||
port->mcs = conn_stat->message_capability_status;
|
port->mcs = conn_stat->message_capability_status;
|
||||||
port->ldps = conn_stat->legacy_device_plug_status;
|
port->ldps = conn_stat->legacy_device_plug_status;
|
||||||
@ -2373,6 +2377,28 @@ drm_dp_mst_handle_conn_stat(struct drm_dp_mst_branch *mstb,
|
|||||||
dowork = false;
|
dowork = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!old_input && old_ddps != port->ddps && !port->ddps) {
|
||||||
|
for (i = 0; i < mgr->max_payloads; i++) {
|
||||||
|
struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i];
|
||||||
|
struct drm_dp_mst_port *port_validated;
|
||||||
|
|
||||||
|
if (!vcpi)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
port_validated =
|
||||||
|
container_of(vcpi, struct drm_dp_mst_port, vcpi);
|
||||||
|
port_validated =
|
||||||
|
drm_dp_mst_topology_get_port_validated(mgr, port_validated);
|
||||||
|
if (!port_validated) {
|
||||||
|
mutex_lock(&mgr->payload_lock);
|
||||||
|
vcpi->num_slots = 0;
|
||||||
|
mutex_unlock(&mgr->payload_lock);
|
||||||
|
} else {
|
||||||
|
drm_dp_mst_topology_put_port(port_validated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (port->connector)
|
if (port->connector)
|
||||||
drm_modeset_unlock(&mgr->base.lock);
|
drm_modeset_unlock(&mgr->base.lock);
|
||||||
else if (create_connector)
|
else if (create_connector)
|
||||||
@ -2718,9 +2744,11 @@ static void process_single_down_tx_qlock(struct drm_dp_mst_topology_mgr *mgr)
|
|||||||
ret = process_single_tx_qlock(mgr, txmsg, false);
|
ret = process_single_tx_qlock(mgr, txmsg, false);
|
||||||
if (ret == 1) {
|
if (ret == 1) {
|
||||||
/* txmsg is sent it should be in the slots now */
|
/* txmsg is sent it should be in the slots now */
|
||||||
|
mgr->is_waiting_for_dwn_reply = true;
|
||||||
list_del(&txmsg->next);
|
list_del(&txmsg->next);
|
||||||
} else if (ret) {
|
} else if (ret) {
|
||||||
DRM_DEBUG_KMS("failed to send msg in q %d\n", ret);
|
DRM_DEBUG_KMS("failed to send msg in q %d\n", ret);
|
||||||
|
mgr->is_waiting_for_dwn_reply = false;
|
||||||
list_del(&txmsg->next);
|
list_del(&txmsg->next);
|
||||||
if (txmsg->seqno != -1)
|
if (txmsg->seqno != -1)
|
||||||
txmsg->dst->tx_slots[txmsg->seqno] = NULL;
|
txmsg->dst->tx_slots[txmsg->seqno] = NULL;
|
||||||
@ -2760,7 +2788,8 @@ static void drm_dp_queue_down_tx(struct drm_dp_mst_topology_mgr *mgr,
|
|||||||
drm_dp_mst_dump_sideband_msg_tx(&p, txmsg);
|
drm_dp_mst_dump_sideband_msg_tx(&p, txmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list_is_singular(&mgr->tx_msg_downq))
|
if (list_is_singular(&mgr->tx_msg_downq) &&
|
||||||
|
!mgr->is_waiting_for_dwn_reply)
|
||||||
process_single_down_tx_qlock(mgr);
|
process_single_down_tx_qlock(mgr);
|
||||||
mutex_unlock(&mgr->qlock);
|
mutex_unlock(&mgr->qlock);
|
||||||
}
|
}
|
||||||
@ -3678,6 +3707,7 @@ static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
|
|||||||
mutex_lock(&mgr->qlock);
|
mutex_lock(&mgr->qlock);
|
||||||
txmsg->state = DRM_DP_SIDEBAND_TX_RX;
|
txmsg->state = DRM_DP_SIDEBAND_TX_RX;
|
||||||
mstb->tx_slots[slot] = NULL;
|
mstb->tx_slots[slot] = NULL;
|
||||||
|
mgr->is_waiting_for_dwn_reply = false;
|
||||||
mutex_unlock(&mgr->qlock);
|
mutex_unlock(&mgr->qlock);
|
||||||
|
|
||||||
wake_up_all(&mgr->tx_waitq);
|
wake_up_all(&mgr->tx_waitq);
|
||||||
@ -3687,6 +3717,9 @@ static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
|
|||||||
no_msg:
|
no_msg:
|
||||||
drm_dp_mst_topology_put_mstb(mstb);
|
drm_dp_mst_topology_put_mstb(mstb);
|
||||||
clear_down_rep_recv:
|
clear_down_rep_recv:
|
||||||
|
mutex_lock(&mgr->qlock);
|
||||||
|
mgr->is_waiting_for_dwn_reply = false;
|
||||||
|
mutex_unlock(&mgr->qlock);
|
||||||
memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
|
memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -4497,7 +4530,7 @@ static void drm_dp_tx_work(struct work_struct *work)
|
|||||||
struct drm_dp_mst_topology_mgr *mgr = container_of(work, struct drm_dp_mst_topology_mgr, tx_work);
|
struct drm_dp_mst_topology_mgr *mgr = container_of(work, struct drm_dp_mst_topology_mgr, tx_work);
|
||||||
|
|
||||||
mutex_lock(&mgr->qlock);
|
mutex_lock(&mgr->qlock);
|
||||||
if (!list_empty(&mgr->tx_msg_downq))
|
if (!list_empty(&mgr->tx_msg_downq) && !mgr->is_waiting_for_dwn_reply)
|
||||||
process_single_down_tx_qlock(mgr);
|
process_single_down_tx_qlock(mgr);
|
||||||
mutex_unlock(&mgr->qlock);
|
mutex_unlock(&mgr->qlock);
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,10 @@ static int __context_pin_state(struct i915_vma *vma)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
err = i915_active_acquire(&vma->active);
|
||||||
|
if (err)
|
||||||
|
goto err_unpin;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* And mark it as a globally pinned object to let the shrinker know
|
* And mark it as a globally pinned object to let the shrinker know
|
||||||
* it cannot reclaim the object until we release it.
|
* it cannot reclaim the object until we release it.
|
||||||
@ -131,14 +135,44 @@ static int __context_pin_state(struct i915_vma *vma)
|
|||||||
vma->obj->mm.dirty = true;
|
vma->obj->mm.dirty = true;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_unpin:
|
||||||
|
i915_vma_unpin(vma);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __context_unpin_state(struct i915_vma *vma)
|
static void __context_unpin_state(struct i915_vma *vma)
|
||||||
{
|
{
|
||||||
i915_vma_make_shrinkable(vma);
|
i915_vma_make_shrinkable(vma);
|
||||||
|
i915_active_release(&vma->active);
|
||||||
__i915_vma_unpin(vma);
|
__i915_vma_unpin(vma);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __ring_active(struct intel_ring *ring)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = i915_active_acquire(&ring->vma->active);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
err = intel_ring_pin(ring);
|
||||||
|
if (err)
|
||||||
|
goto err_active;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_active:
|
||||||
|
i915_active_release(&ring->vma->active);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __ring_retire(struct intel_ring *ring)
|
||||||
|
{
|
||||||
|
intel_ring_unpin(ring);
|
||||||
|
i915_active_release(&ring->vma->active);
|
||||||
|
}
|
||||||
|
|
||||||
__i915_active_call
|
__i915_active_call
|
||||||
static void __intel_context_retire(struct i915_active *active)
|
static void __intel_context_retire(struct i915_active *active)
|
||||||
{
|
{
|
||||||
@ -151,7 +185,7 @@ static void __intel_context_retire(struct i915_active *active)
|
|||||||
__context_unpin_state(ce->state);
|
__context_unpin_state(ce->state);
|
||||||
|
|
||||||
intel_timeline_unpin(ce->timeline);
|
intel_timeline_unpin(ce->timeline);
|
||||||
intel_ring_unpin(ce->ring);
|
__ring_retire(ce->ring);
|
||||||
|
|
||||||
intel_context_put(ce);
|
intel_context_put(ce);
|
||||||
}
|
}
|
||||||
@ -163,7 +197,7 @@ static int __intel_context_active(struct i915_active *active)
|
|||||||
|
|
||||||
intel_context_get(ce);
|
intel_context_get(ce);
|
||||||
|
|
||||||
err = intel_ring_pin(ce->ring);
|
err = __ring_active(ce->ring);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_put;
|
goto err_put;
|
||||||
|
|
||||||
@ -183,7 +217,7 @@ static int __intel_context_active(struct i915_active *active)
|
|||||||
err_timeline:
|
err_timeline:
|
||||||
intel_timeline_unpin(ce->timeline);
|
intel_timeline_unpin(ce->timeline);
|
||||||
err_ring:
|
err_ring:
|
||||||
intel_ring_unpin(ce->ring);
|
__ring_retire(ce->ring);
|
||||||
err_put:
|
err_put:
|
||||||
intel_context_put(ce);
|
intel_context_put(ce);
|
||||||
return err;
|
return err;
|
||||||
|
@ -2664,6 +2664,14 @@ static u32 *gen9_init_indirectctx_bb(struct intel_engine_cs *engine, u32 *batch)
|
|||||||
/* WaFlushCoherentL3CacheLinesAtContextSwitch:skl,bxt,glk */
|
/* WaFlushCoherentL3CacheLinesAtContextSwitch:skl,bxt,glk */
|
||||||
batch = gen8_emit_flush_coherentl3_wa(engine, batch);
|
batch = gen8_emit_flush_coherentl3_wa(engine, batch);
|
||||||
|
|
||||||
|
/* WaClearSlmSpaceAtContextSwitch:skl,bxt,kbl,glk,cfl */
|
||||||
|
batch = gen8_emit_pipe_control(batch,
|
||||||
|
PIPE_CONTROL_FLUSH_L3 |
|
||||||
|
PIPE_CONTROL_STORE_DATA_INDEX |
|
||||||
|
PIPE_CONTROL_CS_STALL |
|
||||||
|
PIPE_CONTROL_QW_WRITE,
|
||||||
|
LRC_PPHWSP_SCRATCH_ADDR);
|
||||||
|
|
||||||
batch = emit_lri(batch, lri, ARRAY_SIZE(lri));
|
batch = emit_lri(batch, lri, ARRAY_SIZE(lri));
|
||||||
|
|
||||||
/* WaMediaPoolStateCmdInWABB:bxt,glk */
|
/* WaMediaPoolStateCmdInWABB:bxt,glk */
|
||||||
|
@ -3304,7 +3304,7 @@ void i915_ggtt_disable_guc(struct i915_ggtt *ggtt)
|
|||||||
|
|
||||||
static void ggtt_restore_mappings(struct i915_ggtt *ggtt)
|
static void ggtt_restore_mappings(struct i915_ggtt *ggtt)
|
||||||
{
|
{
|
||||||
struct i915_vma *vma, *vn;
|
struct i915_vma *vma;
|
||||||
bool flush = false;
|
bool flush = false;
|
||||||
int open;
|
int open;
|
||||||
|
|
||||||
@ -3319,15 +3319,12 @@ static void ggtt_restore_mappings(struct i915_ggtt *ggtt)
|
|||||||
open = atomic_xchg(&ggtt->vm.open, 0);
|
open = atomic_xchg(&ggtt->vm.open, 0);
|
||||||
|
|
||||||
/* clflush objects bound into the GGTT and rebind them. */
|
/* clflush objects bound into the GGTT and rebind them. */
|
||||||
list_for_each_entry_safe(vma, vn, &ggtt->vm.bound_list, vm_link) {
|
list_for_each_entry(vma, &ggtt->vm.bound_list, vm_link) {
|
||||||
struct drm_i915_gem_object *obj = vma->obj;
|
struct drm_i915_gem_object *obj = vma->obj;
|
||||||
|
|
||||||
if (!i915_vma_is_bound(vma, I915_VMA_GLOBAL_BIND))
|
if (!i915_vma_is_bound(vma, I915_VMA_GLOBAL_BIND))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!__i915_vma_unbind(vma))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
clear_bit(I915_VMA_GLOBAL_BIND_BIT, __i915_vma_flags(vma));
|
clear_bit(I915_VMA_GLOBAL_BIND_BIT, __i915_vma_flags(vma));
|
||||||
WARN_ON(i915_vma_bind(vma,
|
WARN_ON(i915_vma_bind(vma,
|
||||||
obj ? obj->cache_level : 0,
|
obj ? obj->cache_level : 0,
|
||||||
|
@ -1074,12 +1074,17 @@ void i915_pmu_register(struct drm_i915_private *i915)
|
|||||||
hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
|
||||||
pmu->timer.function = i915_sample;
|
pmu->timer.function = i915_sample;
|
||||||
|
|
||||||
if (!is_igp(i915))
|
if (!is_igp(i915)) {
|
||||||
pmu->name = kasprintf(GFP_KERNEL,
|
pmu->name = kasprintf(GFP_KERNEL,
|
||||||
"i915-%s",
|
"i915_%s",
|
||||||
dev_name(i915->drm.dev));
|
dev_name(i915->drm.dev));
|
||||||
else
|
if (pmu->name) {
|
||||||
|
/* tools/perf reserves colons as special. */
|
||||||
|
strreplace((char *)pmu->name, ':', '_');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
pmu->name = "i915";
|
pmu->name = "i915";
|
||||||
|
}
|
||||||
if (!pmu->name)
|
if (!pmu->name)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#ifndef __I915_SELFTESTS_RANDOM_H__
|
#ifndef __I915_SELFTESTS_RANDOM_H__
|
||||||
#define __I915_SELFTESTS_RANDOM_H__
|
#define __I915_SELFTESTS_RANDOM_H__
|
||||||
|
|
||||||
|
#include <linux/math64.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
|
|
||||||
#include "../i915_selftest.h"
|
#include "../i915_selftest.h"
|
||||||
|
@ -95,7 +95,7 @@ struct cdn_dp_device {
|
|||||||
struct cdn_dp_port *port[MAX_PHY];
|
struct cdn_dp_port *port[MAX_PHY];
|
||||||
u8 ports;
|
u8 ports;
|
||||||
u8 max_lanes;
|
u8 max_lanes;
|
||||||
u8 max_rate;
|
unsigned int max_rate;
|
||||||
u8 lanes;
|
u8 lanes;
|
||||||
int active_port;
|
int active_port;
|
||||||
|
|
||||||
|
@ -232,6 +232,7 @@ static void virtio_gpu_cursor_plane_update(struct drm_plane *plane,
|
|||||||
if (!objs)
|
if (!objs)
|
||||||
return;
|
return;
|
||||||
virtio_gpu_array_add_obj(objs, vgfb->base.obj[0]);
|
virtio_gpu_array_add_obj(objs, vgfb->base.obj[0]);
|
||||||
|
virtio_gpu_array_lock_resv(objs);
|
||||||
virtio_gpu_cmd_transfer_to_host_2d
|
virtio_gpu_cmd_transfer_to_host_2d
|
||||||
(vgdev, 0,
|
(vgdev, 0,
|
||||||
plane->state->crtc_w,
|
plane->state->crtc_w,
|
||||||
|
@ -1132,7 +1132,6 @@ static void etm4_init_trace_id(struct etmv4_drvdata *drvdata)
|
|||||||
drvdata->trcid = coresight_get_trace_id(drvdata->cpu);
|
drvdata->trcid = coresight_get_trace_id(drvdata->cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_PM
|
|
||||||
static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
|
static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
|
||||||
{
|
{
|
||||||
int i, ret = 0;
|
int i, ret = 0;
|
||||||
@ -1402,17 +1401,17 @@ static struct notifier_block etm4_cpu_pm_nb = {
|
|||||||
|
|
||||||
static int etm4_cpu_pm_register(void)
|
static int etm4_cpu_pm_register(void)
|
||||||
{
|
{
|
||||||
return cpu_pm_register_notifier(&etm4_cpu_pm_nb);
|
if (IS_ENABLED(CONFIG_CPU_PM))
|
||||||
|
return cpu_pm_register_notifier(&etm4_cpu_pm_nb);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void etm4_cpu_pm_unregister(void)
|
static void etm4_cpu_pm_unregister(void)
|
||||||
{
|
{
|
||||||
cpu_pm_unregister_notifier(&etm4_cpu_pm_nb);
|
if (IS_ENABLED(CONFIG_CPU_PM))
|
||||||
|
cpu_pm_unregister_notifier(&etm4_cpu_pm_nb);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static int etm4_cpu_pm_register(void) { return 0; }
|
|
||||||
static void etm4_cpu_pm_unregister(void) { }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
|
static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
|
||||||
{
|
{
|
||||||
|
@ -433,13 +433,17 @@ iop3xx_i2c_probe(struct platform_device *pdev)
|
|||||||
adapter_data->gpio_scl = devm_gpiod_get_optional(&pdev->dev,
|
adapter_data->gpio_scl = devm_gpiod_get_optional(&pdev->dev,
|
||||||
"scl",
|
"scl",
|
||||||
GPIOD_ASIS);
|
GPIOD_ASIS);
|
||||||
if (IS_ERR(adapter_data->gpio_scl))
|
if (IS_ERR(adapter_data->gpio_scl)) {
|
||||||
return PTR_ERR(adapter_data->gpio_scl);
|
ret = PTR_ERR(adapter_data->gpio_scl);
|
||||||
|
goto free_both;
|
||||||
|
}
|
||||||
adapter_data->gpio_sda = devm_gpiod_get_optional(&pdev->dev,
|
adapter_data->gpio_sda = devm_gpiod_get_optional(&pdev->dev,
|
||||||
"sda",
|
"sda",
|
||||||
GPIOD_ASIS);
|
GPIOD_ASIS);
|
||||||
if (IS_ERR(adapter_data->gpio_sda))
|
if (IS_ERR(adapter_data->gpio_sda)) {
|
||||||
return PTR_ERR(adapter_data->gpio_sda);
|
ret = PTR_ERR(adapter_data->gpio_sda);
|
||||||
|
goto free_both;
|
||||||
|
}
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
|
@ -1608,14 +1608,18 @@ static int tegra_i2c_probe(struct platform_device *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pm_runtime_enable(&pdev->dev);
|
pm_runtime_enable(&pdev->dev);
|
||||||
if (!pm_runtime_enabled(&pdev->dev))
|
if (!pm_runtime_enabled(&pdev->dev)) {
|
||||||
ret = tegra_i2c_runtime_resume(&pdev->dev);
|
ret = tegra_i2c_runtime_resume(&pdev->dev);
|
||||||
else
|
if (ret < 0) {
|
||||||
|
dev_err(&pdev->dev, "runtime resume failed\n");
|
||||||
|
goto unprepare_div_clk;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
ret = pm_runtime_get_sync(i2c_dev->dev);
|
ret = pm_runtime_get_sync(i2c_dev->dev);
|
||||||
|
if (ret < 0) {
|
||||||
if (ret < 0) {
|
dev_err(&pdev->dev, "runtime resume failed\n");
|
||||||
dev_err(&pdev->dev, "runtime resume failed\n");
|
goto disable_rpm;
|
||||||
goto unprepare_div_clk;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i2c_dev->is_multimaster_mode) {
|
if (i2c_dev->is_multimaster_mode) {
|
||||||
@ -1623,7 +1627,7 @@ static int tegra_i2c_probe(struct platform_device *pdev)
|
|||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(i2c_dev->dev, "div_clk enable failed %d\n",
|
dev_err(i2c_dev->dev, "div_clk enable failed %d\n",
|
||||||
ret);
|
ret);
|
||||||
goto disable_rpm;
|
goto put_rpm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1671,11 +1675,16 @@ disable_div_clk:
|
|||||||
if (i2c_dev->is_multimaster_mode)
|
if (i2c_dev->is_multimaster_mode)
|
||||||
clk_disable(i2c_dev->div_clk);
|
clk_disable(i2c_dev->div_clk);
|
||||||
|
|
||||||
disable_rpm:
|
put_rpm:
|
||||||
pm_runtime_disable(&pdev->dev);
|
if (pm_runtime_enabled(&pdev->dev))
|
||||||
if (!pm_runtime_status_suspended(&pdev->dev))
|
pm_runtime_put_sync(&pdev->dev);
|
||||||
|
else
|
||||||
tegra_i2c_runtime_suspend(&pdev->dev);
|
tegra_i2c_runtime_suspend(&pdev->dev);
|
||||||
|
|
||||||
|
disable_rpm:
|
||||||
|
if (pm_runtime_enabled(&pdev->dev))
|
||||||
|
pm_runtime_disable(&pdev->dev);
|
||||||
|
|
||||||
unprepare_div_clk:
|
unprepare_div_clk:
|
||||||
clk_unprepare(i2c_dev->div_clk);
|
clk_unprepare(i2c_dev->div_clk);
|
||||||
|
|
||||||
@ -1710,9 +1719,14 @@ static int tegra_i2c_remove(struct platform_device *pdev)
|
|||||||
static int __maybe_unused tegra_i2c_suspend(struct device *dev)
|
static int __maybe_unused tegra_i2c_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
|
struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
|
||||||
|
int err;
|
||||||
|
|
||||||
i2c_mark_adapter_suspended(&i2c_dev->adapter);
|
i2c_mark_adapter_suspended(&i2c_dev->adapter);
|
||||||
|
|
||||||
|
err = pm_runtime_force_suspend(dev);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1733,6 +1747,10 @@ static int __maybe_unused tegra_i2c_resume(struct device *dev)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
err = pm_runtime_force_resume(dev);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
i2c_mark_adapter_resumed(&i2c_dev->adapter);
|
i2c_mark_adapter_resumed(&i2c_dev->adapter);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -494,13 +494,11 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev,
|
|||||||
st->channel_config[channel].buf_negative =
|
st->channel_config[channel].buf_negative =
|
||||||
of_property_read_bool(child, "adi,buffered-negative");
|
of_property_read_bool(child, "adi,buffered-negative");
|
||||||
|
|
||||||
*chan = ad7124_channel_template;
|
chan[channel] = ad7124_channel_template;
|
||||||
chan->address = channel;
|
chan[channel].address = channel;
|
||||||
chan->scan_index = channel;
|
chan[channel].scan_index = channel;
|
||||||
chan->channel = ain[0];
|
chan[channel].channel = ain[0];
|
||||||
chan->channel2 = ain[1];
|
chan[channel].channel2 = ain[1];
|
||||||
|
|
||||||
chan++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -65,6 +65,7 @@ config IAQCORE
|
|||||||
config PMS7003
|
config PMS7003
|
||||||
tristate "Plantower PMS7003 particulate matter sensor"
|
tristate "Plantower PMS7003 particulate matter sensor"
|
||||||
depends on SERIAL_DEV_BUS
|
depends on SERIAL_DEV_BUS
|
||||||
|
select IIO_BUFFER
|
||||||
select IIO_TRIGGERED_BUFFER
|
select IIO_TRIGGERED_BUFFER
|
||||||
help
|
help
|
||||||
Say Y here to build support for the Plantower PMS7003 particulate
|
Say Y here to build support for the Plantower PMS7003 particulate
|
||||||
|
@ -1301,7 +1301,8 @@ static int st_lsm6dsx_check_whoami(struct st_lsm6dsx_hw *hw, int id,
|
|||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(st_lsm6dsx_sensor_settings); i++) {
|
for (i = 0; i < ARRAY_SIZE(st_lsm6dsx_sensor_settings); i++) {
|
||||||
for (j = 0; j < ST_LSM6DSX_MAX_ID; j++) {
|
for (j = 0; j < ST_LSM6DSX_MAX_ID; j++) {
|
||||||
if (id == st_lsm6dsx_sensor_settings[i].id[j].hw_id)
|
if (st_lsm6dsx_sensor_settings[i].id[j].name &&
|
||||||
|
id == st_lsm6dsx_sensor_settings[i].id[j].hw_id)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (j < ST_LSM6DSX_MAX_ID)
|
if (j < ST_LSM6DSX_MAX_ID)
|
||||||
|
@ -566,7 +566,7 @@ static int iio_compute_scan_bytes(struct iio_dev *indio_dev,
|
|||||||
const unsigned long *mask, bool timestamp)
|
const unsigned long *mask, bool timestamp)
|
||||||
{
|
{
|
||||||
unsigned bytes = 0;
|
unsigned bytes = 0;
|
||||||
int length, i;
|
int length, i, largest = 0;
|
||||||
|
|
||||||
/* How much space will the demuxed element take? */
|
/* How much space will the demuxed element take? */
|
||||||
for_each_set_bit(i, mask,
|
for_each_set_bit(i, mask,
|
||||||
@ -574,13 +574,17 @@ static int iio_compute_scan_bytes(struct iio_dev *indio_dev,
|
|||||||
length = iio_storage_bytes_for_si(indio_dev, i);
|
length = iio_storage_bytes_for_si(indio_dev, i);
|
||||||
bytes = ALIGN(bytes, length);
|
bytes = ALIGN(bytes, length);
|
||||||
bytes += length;
|
bytes += length;
|
||||||
|
largest = max(largest, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timestamp) {
|
if (timestamp) {
|
||||||
length = iio_storage_bytes_for_timestamp(indio_dev);
|
length = iio_storage_bytes_for_timestamp(indio_dev);
|
||||||
bytes = ALIGN(bytes, length);
|
bytes = ALIGN(bytes, length);
|
||||||
bytes += length;
|
bytes += length;
|
||||||
|
largest = max(largest, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bytes = ALIGN(bytes, largest);
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +163,6 @@ static int vcnl4200_init(struct vcnl4000_data *data)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
data->al_scale = 24000;
|
|
||||||
data->vcnl4200_al.reg = VCNL4200_AL_DATA;
|
data->vcnl4200_al.reg = VCNL4200_AL_DATA;
|
||||||
data->vcnl4200_ps.reg = VCNL4200_PS_DATA;
|
data->vcnl4200_ps.reg = VCNL4200_PS_DATA;
|
||||||
switch (id) {
|
switch (id) {
|
||||||
@ -172,11 +171,13 @@ static int vcnl4200_init(struct vcnl4000_data *data)
|
|||||||
/* show 54ms in total. */
|
/* show 54ms in total. */
|
||||||
data->vcnl4200_al.sampling_rate = ktime_set(0, 54000 * 1000);
|
data->vcnl4200_al.sampling_rate = ktime_set(0, 54000 * 1000);
|
||||||
data->vcnl4200_ps.sampling_rate = ktime_set(0, 4200 * 1000);
|
data->vcnl4200_ps.sampling_rate = ktime_set(0, 4200 * 1000);
|
||||||
|
data->al_scale = 24000;
|
||||||
break;
|
break;
|
||||||
case VCNL4040_PROD_ID:
|
case VCNL4040_PROD_ID:
|
||||||
/* Integration time is 80ms, add 10ms. */
|
/* Integration time is 80ms, add 10ms. */
|
||||||
data->vcnl4200_al.sampling_rate = ktime_set(0, 100000 * 1000);
|
data->vcnl4200_al.sampling_rate = ktime_set(0, 100000 * 1000);
|
||||||
data->vcnl4200_ps.sampling_rate = ktime_set(0, 100000 * 1000);
|
data->vcnl4200_ps.sampling_rate = ktime_set(0, 100000 * 1000);
|
||||||
|
data->al_scale = 120000;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
data->vcnl4200_al.last_measurement = ktime_set(0, 0);
|
data->vcnl4200_al.last_measurement = ktime_set(0, 0);
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/mach-jz4740/irq.h>
|
|
||||||
|
|
||||||
struct ingenic_intc_data {
|
struct ingenic_intc_data {
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
@ -50,7 +49,7 @@ static irqreturn_t intc_cascade(int irq, void *data)
|
|||||||
while (pending) {
|
while (pending) {
|
||||||
int bit = __fls(pending);
|
int bit = __fls(pending);
|
||||||
|
|
||||||
irq = irq_find_mapping(domain, bit + (i * 32));
|
irq = irq_linear_revmap(domain, bit + (i * 32));
|
||||||
generic_handle_irq(irq);
|
generic_handle_irq(irq);
|
||||||
pending &= ~BIT(bit);
|
pending &= ~BIT(bit);
|
||||||
}
|
}
|
||||||
@ -97,8 +96,7 @@ static int __init ingenic_intc_of_init(struct device_node *node,
|
|||||||
goto out_unmap_irq;
|
goto out_unmap_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
domain = irq_domain_add_legacy(node, num_chips * 32,
|
domain = irq_domain_add_linear(node, num_chips * 32,
|
||||||
JZ4740_IRQ_BASE, 0,
|
|
||||||
&irq_generic_chip_ops, NULL);
|
&irq_generic_chip_ops, NULL);
|
||||||
if (!domain) {
|
if (!domain) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
#include <linux/dm-bufio.h>
|
#include <linux/dm-bufio.h>
|
||||||
|
|
||||||
#define DM_MSG_PREFIX "persistent snapshot"
|
#define DM_MSG_PREFIX "persistent snapshot"
|
||||||
#define DM_CHUNK_SIZE_DEFAULT_SECTORS 32 /* 16KB */
|
#define DM_CHUNK_SIZE_DEFAULT_SECTORS 32U /* 16KB */
|
||||||
|
|
||||||
#define DM_PREFETCH_CHUNKS 12
|
#define DM_PREFETCH_CHUNKS 12
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
|
|||||||
char b[BDEVNAME_SIZE];
|
char b[BDEVNAME_SIZE];
|
||||||
char b2[BDEVNAME_SIZE];
|
char b2[BDEVNAME_SIZE];
|
||||||
struct r0conf *conf = kzalloc(sizeof(*conf), GFP_KERNEL);
|
struct r0conf *conf = kzalloc(sizeof(*conf), GFP_KERNEL);
|
||||||
unsigned short blksize = 512;
|
unsigned blksize = 512;
|
||||||
|
|
||||||
*private_conf = ERR_PTR(-ENOMEM);
|
*private_conf = ERR_PTR(-ENOMEM);
|
||||||
if (!conf)
|
if (!conf)
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user