Commit 83e39664 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'soc-fixes-5.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
 "This is a fairly large set of bugfixes, most of which had been sent a
  while ago but only now made it into the soc tree:

  Maintainer file updates:

   - Claudiu Beznea now co-maintains the at91 soc family, replacing
     Ludovic Desroches.

   - Michael Walle maintains the sl28cpld drivers

   - Alain Volmat and Raphael Gallais-Pou take over some drivers for ST
     platforms

   - Alim Akhtar is an additional reviewer for Samsung platforms

  Code fixes:

   - Op-tee had a problem with object lifetime that needs a slightly
     complex fix, as well as another bug with error handling.

   - Several minor issues for the OMAP platform, including a regression
     with the timer

   - A Kconfig change to fix a build-time issue on Intel SoCFPGA

  Device tree fixes:

   - The Amlogic Meson platform fixes a boot regression on am1-odroid, a
     spurious interrupt, and a problem with reserved memory regions

   - In the i.MX platform, several bug fixes are needed to make devices
     work correctly: SD card detection, alarmtimer, and sound card on
     some board. One patch for the GPU got in there by accident and gets
     reverted again.

   - TI K3 needs a fix for J721S2 serial port numbers

   - ux500 needs a fix to mount the SD card as root on the Skomer phone"

* tag 'soc-fixes-5.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (46 commits)
  Revert "arm64: dts: imx8mn-venice-gw7902: disable gpu"
  arm64: Remove ARCH_VULCAN
  MAINTAINERS: add myself as a maintainer for the sl28cpld
  MAINTAINERS: add IRC to ARM sub-architectures and Devicetree
  MAINTAINERS: arm: samsung: add Git tree and IRC
  ARM: dts: Fix boot regression on Skomer
  ARM: dts: spear320: Drop unused and undocumented 'irq-over-gpio' property
  soc: aspeed: lpc-ctrl: Block error printing on probe defer cases
  docs/ABI: testing: aspeed-uart-routing: Escape asterisk
  MAINTAINERS: update drm/stm drm/sti and cec/sti maintainers
  MAINTAINERS: Update Benjamin Gaignard maintainer status
  ARM: socfpga: fix missing RESET_CONTROLLER
  arm64: dts: meson-sm1-odroid: fix boot loop after reboot
  arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610
  arm64: dts: meson-g12: add ATF BL32 reserved-memory region
  arm64: dts: meson-gx: add ATF BL32 reserved-memory region
  arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO domain for GPIOE_2
  arm64: dts: meson-sm1-odroid: use correct enable-gpio pin for tf-io regulator
  arm64: dts: meson-g12b-odroid-n2: fix typo 'dio2133'
  optee: use driver internal tee_context for some rpc
  ...
parents adccc16e 5e5eddd9
What: /sys/bus/platform/drivers/aspeed-uart-routing/*/uart* What: /sys/bus/platform/drivers/aspeed-uart-routing/\*/uart\*
Date: September 2021 Date: September 2021
Contact: Oskar Senft <osk@google.com> Contact: Oskar Senft <osk@google.com>
Chia-Wei Wang <chiawei_wang@aspeedtech.com> Chia-Wei Wang <chiawei_wang@aspeedtech.com>
...@@ -9,7 +9,7 @@ Description: Selects the RX source of the UARTx device. ...@@ -9,7 +9,7 @@ Description: Selects the RX source of the UARTx device.
depends on the selected file. depends on the selected file.
e.g. e.g.
cat /sys/bus/platform/drivers/aspeed-uart-routing/*.uart_routing/uart1 cat /sys/bus/platform/drivers/aspeed-uart-routing/\*.uart_routing/uart1
[io1] io2 io3 io4 uart2 uart3 uart4 io6 [io1] io2 io3 io4 uart2 uart3 uart4 io6
In this case, UART1 gets its input from IO1 (physical serial port 1). In this case, UART1 gets its input from IO1 (physical serial port 1).
...@@ -17,7 +17,7 @@ Description: Selects the RX source of the UARTx device. ...@@ -17,7 +17,7 @@ Description: Selects the RX source of the UARTx device.
Users: OpenBMC. Proposed changes should be mailed to Users: OpenBMC. Proposed changes should be mailed to
openbmc@lists.ozlabs.org openbmc@lists.ozlabs.org
What: /sys/bus/platform/drivers/aspeed-uart-routing/*/io* What: /sys/bus/platform/drivers/aspeed-uart-routing/\*/io\*
Date: September 2021 Date: September 2021
Contact: Oskar Senft <osk@google.com> Contact: Oskar Senft <osk@google.com>
Chia-Wei Wang <chiawei_wang@aspeedtech.com> Chia-Wei Wang <chiawei_wang@aspeedtech.com>
......
...@@ -119,6 +119,9 @@ Boards (incomplete list of examples): ...@@ -119,6 +119,9 @@ Boards (incomplete list of examples):
- OMAP3 BeagleBoard : Low cost community board - OMAP3 BeagleBoard : Low cost community board
compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3" compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
- OMAP3 BeagleBoard A to B4 : Early BeagleBoard revisions A to B4 with a timer quirk
compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
- OMAP3 Tobi with Overo : Commercial expansion board with daughter board - OMAP3 Tobi with Overo : Commercial expansion board with daughter board
compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3" compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3"
......
...@@ -1620,6 +1620,7 @@ M: Olof Johansson <olof@lixom.net> ...@@ -1620,6 +1620,7 @@ M: Olof Johansson <olof@lixom.net>
M: soc@kernel.org M: soc@kernel.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
C: irc://irc.libera.chat/armlinux
T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
F: arch/arm/boot/dts/Makefile F: arch/arm/boot/dts/Makefile
F: arch/arm64/boot/dts/Makefile F: arch/arm64/boot/dts/Makefile
...@@ -1627,6 +1628,7 @@ F: arch/arm64/boot/dts/Makefile ...@@ -1627,6 +1628,7 @@ F: arch/arm64/boot/dts/Makefile
ARM SUB-ARCHITECTURES ARM SUB-ARCHITECTURES
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
C: irc://irc.libera.chat/armlinux
T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
F: arch/arm/mach-*/ F: arch/arm/mach-*/
F: arch/arm/plat-*/ F: arch/arm/plat-*/
...@@ -1780,6 +1782,7 @@ F: drivers/irqchip/irq-apple-aic.c ...@@ -1780,6 +1782,7 @@ F: drivers/irqchip/irq-apple-aic.c
F: drivers/mailbox/apple-mailbox.c F: drivers/mailbox/apple-mailbox.c
F: drivers/pinctrl/pinctrl-apple-gpio.c F: drivers/pinctrl/pinctrl-apple-gpio.c
F: drivers/soc/apple/* F: drivers/soc/apple/*
F: drivers/watchdog/apple_wdt.c
F: include/dt-bindings/interrupt-controller/apple-aic.h F: include/dt-bindings/interrupt-controller/apple-aic.h
F: include/dt-bindings/pinctrl/apple.h F: include/dt-bindings/pinctrl/apple.h
F: include/linux/apple-mailbox.h F: include/linux/apple-mailbox.h
...@@ -2570,10 +2573,13 @@ N: rockchip ...@@ -2570,10 +2573,13 @@ N: rockchip
ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
R: Alim Akhtar <alim.akhtar@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
C: irc://irc.libera.chat/linux-exynos
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/ Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git
F: Documentation/arm/samsung/ F: Documentation/arm/samsung/
F: Documentation/devicetree/bindings/arm/samsung/ F: Documentation/devicetree/bindings/arm/samsung/
F: Documentation/devicetree/bindings/power/pd-samsung.yaml F: Documentation/devicetree/bindings/power/pd-samsung.yaml
...@@ -5772,7 +5778,7 @@ F: tools/testing/selftests/dma/ ...@@ -5772,7 +5778,7 @@ F: tools/testing/selftests/dma/
DMA-BUF HEAPS FRAMEWORK DMA-BUF HEAPS FRAMEWORK
M: Sumit Semwal <sumit.semwal@linaro.org> M: Sumit Semwal <sumit.semwal@linaro.org>
R: Benjamin Gaignard <benjamin.gaignard@linaro.org> R: Benjamin Gaignard <benjamin.gaignard@collabora.com>
R: Liam Mark <lmark@codeaurora.org> R: Liam Mark <lmark@codeaurora.org>
R: Laura Abbott <labbott@redhat.com> R: Laura Abbott <labbott@redhat.com>
R: Brian Starkey <Brian.Starkey@arm.com> R: Brian Starkey <Brian.Starkey@arm.com>
...@@ -6502,7 +6508,7 @@ F: Documentation/devicetree/bindings/display/rockchip/ ...@@ -6502,7 +6508,7 @@ F: Documentation/devicetree/bindings/display/rockchip/
F: drivers/gpu/drm/rockchip/ F: drivers/gpu/drm/rockchip/
DRM DRIVERS FOR STI DRM DRIVERS FOR STI
M: Benjamin Gaignard <benjamin.gaignard@linaro.org> M: Alain Volmat <alain.volmat@foss.st.com>
L: dri-devel@lists.freedesktop.org L: dri-devel@lists.freedesktop.org
S: Maintained S: Maintained
T: git git://anongit.freedesktop.org/drm/drm-misc T: git git://anongit.freedesktop.org/drm/drm-misc
...@@ -6511,8 +6517,8 @@ F: drivers/gpu/drm/sti ...@@ -6511,8 +6517,8 @@ F: drivers/gpu/drm/sti
DRM DRIVERS FOR STM DRM DRIVERS FOR STM
M: Yannick Fertre <yannick.fertre@foss.st.com> M: Yannick Fertre <yannick.fertre@foss.st.com>
M: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
M: Philippe Cornu <philippe.cornu@foss.st.com> M: Philippe Cornu <philippe.cornu@foss.st.com>
M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
L: dri-devel@lists.freedesktop.org L: dri-devel@lists.freedesktop.org
S: Maintained S: Maintained
T: git git://anongit.freedesktop.org/drm/drm-misc T: git git://anongit.freedesktop.org/drm/drm-misc
...@@ -14395,6 +14401,7 @@ M: Rob Herring <robh+dt@kernel.org> ...@@ -14395,6 +14401,7 @@ M: Rob Herring <robh+dt@kernel.org>
M: Frank Rowand <frowand.list@gmail.com> M: Frank Rowand <frowand.list@gmail.com>
L: devicetree@vger.kernel.org L: devicetree@vger.kernel.org
S: Maintained S: Maintained
C: irc://irc.libera.chat/devicetree
W: http://www.devicetree.org/ W: http://www.devicetree.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
F: Documentation/ABI/testing/sysfs-firmware-ofw F: Documentation/ABI/testing/sysfs-firmware-ofw
...@@ -14406,6 +14413,7 @@ OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS ...@@ -14406,6 +14413,7 @@ OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
M: Rob Herring <robh+dt@kernel.org> M: Rob Herring <robh+dt@kernel.org>
L: devicetree@vger.kernel.org L: devicetree@vger.kernel.org
S: Maintained S: Maintained
C: irc://irc.libera.chat/devicetree
Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/ Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
F: Documentation/devicetree/ F: Documentation/devicetree/
...@@ -15296,9 +15304,11 @@ PIN CONTROLLER - SAMSUNG ...@@ -15296,9 +15304,11 @@ PIN CONTROLLER - SAMSUNG
M: Tomasz Figa <tomasz.figa@gmail.com> M: Tomasz Figa <tomasz.figa@gmail.com>
M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
R: Alim Akhtar <alim.akhtar@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
C: irc://irc.libera.chat/linux-exynos
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/ Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
F: Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt F: Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
...@@ -17095,6 +17105,7 @@ SAMSUNG SOC CLOCK DRIVERS ...@@ -17095,6 +17105,7 @@ SAMSUNG SOC CLOCK DRIVERS
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
M: Tomasz Figa <tomasz.figa@gmail.com> M: Tomasz Figa <tomasz.figa@gmail.com>
M: Chanwoo Choi <cw00.choi@samsung.com> M: Chanwoo Choi <cw00.choi@samsung.com>
R: Alim Akhtar <alim.akhtar@samsung.com>
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Supported S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
...@@ -17731,6 +17742,21 @@ S: Maintained ...@@ -17731,6 +17742,21 @@ S: Maintained
W: http://www.winischhofer.at/linuxsisusbvga.shtml W: http://www.winischhofer.at/linuxsisusbvga.shtml
F: drivers/usb/misc/sisusbvga/ F: drivers/usb/misc/sisusbvga/
SL28 CPLD MFD DRIVER
M: Michael Walle <michael@walle.cc>
S: Maintained
F: Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
F: Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
F: Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
F: Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
F: Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
F: Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
F: drivers/gpio/gpio-sl28cpld.c
F: drivers/hwmon/sl28cpld-hwmon.c
F: drivers/irqchip/irq-sl28cpld.c
F: drivers/pwm/pwm-sl28cpld.c
F: drivers/watchdog/sl28cpld_wdt.c
SLAB ALLOCATOR SLAB ALLOCATOR
M: Christoph Lameter <cl@linux.com> M: Christoph Lameter <cl@linux.com>
M: Pekka Enberg <penberg@kernel.org> M: Pekka Enberg <penberg@kernel.org>
...@@ -18447,7 +18473,7 @@ F: Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt ...@@ -18447,7 +18473,7 @@ F: Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt
F: sound/soc/sti/ F: sound/soc/sti/
STI CEC DRIVER STI CEC DRIVER
M: Benjamin Gaignard <benjamin.gaignard@linaro.org> M: Alain Volmat <alain.volmat@foss.st.com>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/media/stih-cec.txt F: Documentation/devicetree/bindings/media/stih-cec.txt
F: drivers/media/cec/platform/sti/ F: drivers/media/cec/platform/sti/
......
...@@ -806,6 +806,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \ ...@@ -806,6 +806,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
logicpd-som-lv-37xx-devkit.dtb \ logicpd-som-lv-37xx-devkit.dtb \
omap3430-sdp.dtb \ omap3430-sdp.dtb \
omap3-beagle.dtb \ omap3-beagle.dtb \
omap3-beagle-ab4.dtb \
omap3-beagle-xm.dtb \ omap3-beagle-xm.dtb \
omap3-beagle-xm-ab.dtb \ omap3-beagle-xm-ab.dtb \
omap3-cm-t3517.dtb \ omap3-cm-t3517.dtb \
......
...@@ -55,7 +55,7 @@ &mcasp0 { ...@@ -55,7 +55,7 @@ &mcasp0 {
2 1 0 0 /* # 0: INACTIVE, 1: TX, 2: RX */ 2 1 0 0 /* # 0: INACTIVE, 1: TX, 2: RX */
>; >;
tx-num-evt = <16>; tx-num-evt = <16>;
rt-num-evt = <16>; rx-num-evt = <16>;
status = "okay"; status = "okay";
}; };
......
...@@ -160,7 +160,7 @@ l4_per1: interconnect@48000000 { ...@@ -160,7 +160,7 @@ l4_per1: interconnect@48000000 {
target-module@48210000 { target-module@48210000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc"; compatible = "ti,sysc-omap4-simple", "ti,sysc";
power-domains = <&prm_mpu>; power-domains = <&prm_mpu>;
clocks = <&mpu_clkctrl DRA7_MPU_CLKCTRL 0>; clocks = <&mpu_clkctrl DRA7_MPU_MPU_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -875,10 +875,10 @@ target-module@58000000 { ...@@ -875,10 +875,10 @@ target-module@58000000 {
<0x58000014 4>; <0x58000014 4>;
reg-names = "rev", "syss"; reg-names = "rev", "syss";
ti,syss-mask = <1>; ti,syss-mask = <1>;
clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 0>, clocks = <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 0>,
<&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 9>, <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 9>,
<&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 10>, <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 10>,
<&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 11>; <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 11>;
clock-names = "fck", "hdmi_clk", "sys_clk", "tv_clk"; clock-names = "fck", "hdmi_clk", "sys_clk", "tv_clk";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -912,7 +912,7 @@ SYSC_OMAP2_ENAWAKEUP | ...@@ -912,7 +912,7 @@ SYSC_OMAP2_ENAWAKEUP |
SYSC_OMAP2_SOFTRESET | SYSC_OMAP2_SOFTRESET |
SYSC_OMAP2_AUTOIDLE)>; SYSC_OMAP2_AUTOIDLE)>;
ti,syss-mask = <1>; ti,syss-mask = <1>;
clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>; clocks = <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 8>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -939,8 +939,8 @@ target-module@40000 { ...@@ -939,8 +939,8 @@ target-module@40000 {
<SYSC_IDLE_SMART>, <SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>; <SYSC_IDLE_SMART_WKUP>;
ti,sysc-mask = <(SYSC_OMAP4_SOFTRESET)>; ti,sysc-mask = <(SYSC_OMAP4_SOFTRESET)>;
clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 9>, clocks = <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 9>,
<&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>; <&dss_clkctrl DRA7_DSS_DSS_CORE_CLKCTRL 8>;
clock-names = "fck", "dss_clk"; clock-names = "fck", "dss_clk";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -979,7 +979,7 @@ bb2d: gpu@0 { ...@@ -979,7 +979,7 @@ bb2d: gpu@0 {
compatible = "vivante,gc"; compatible = "vivante,gc";
reg = <0x0 0x700>; reg = <0x0 0x700>;
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&dss_clkctrl DRA7_BB2D_CLKCTRL 0>; clocks = <&dss_clkctrl DRA7_DSS_BB2D_CLKCTRL 0>;
clock-names = "core"; clock-names = "core";
}; };
}; };
...@@ -1333,7 +1333,7 @@ &timer1_target { ...@@ -1333,7 +1333,7 @@ &timer1_target {
ti,no-reset-on-init; ti,no-reset-on-init;
ti,no-idle; ti,no-idle;
timer@0 { timer@0 {
assigned-clocks = <&wkupaon_clkctrl DRA7_TIMER1_CLKCTRL 24>; assigned-clocks = <&wkupaon_clkctrl DRA7_WKUPAON_TIMER1_CLKCTRL 24>;
assigned-clock-parents = <&sys_32k_ck>; assigned-clock-parents = <&sys_32k_ck>;
}; };
}; };
......
...@@ -79,7 +79,6 @@ hog_pins_a: hog@0 { ...@@ -79,7 +79,6 @@ hog_pins_a: hog@0 {
MX23_PAD_LCD_RESET__GPIO_1_18 MX23_PAD_LCD_RESET__GPIO_1_18
MX23_PAD_PWM3__GPIO_1_29 MX23_PAD_PWM3__GPIO_1_29
MX23_PAD_PWM4__GPIO_1_30 MX23_PAD_PWM4__GPIO_1_30
MX23_PAD_SSP1_DETECT__SSP1_DETECT
>; >;
fsl,drive-strength = <MXS_DRIVE_4mA>; fsl,drive-strength = <MXS_DRIVE_4mA>;
fsl,voltage = <MXS_VOLTAGE_HIGH>; fsl,voltage = <MXS_VOLTAGE_HIGH>;
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
* Author: Fabio Estevam <fabio.estevam@freescale.com> * Author: Fabio Estevam <fabio.estevam@freescale.com>
*/ */
#include <dt-bindings/gpio/gpio.h>
/ { / {
aliases { aliases {
backlight = &backlight; backlight = &backlight;
...@@ -226,6 +228,7 @@ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 ...@@ -226,6 +228,7 @@ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x1b0b0
>; >;
}; };
...@@ -304,7 +307,7 @@ &usbotg { ...@@ -304,7 +307,7 @@ &usbotg {
&usdhc3 { &usdhc3 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3>; pinctrl-0 = <&pinctrl_usdhc3>;
non-removable; cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
status = "okay"; status = "okay";
}; };
......
...@@ -259,7 +259,7 @@ wdog1: watchdog@403d0000 { ...@@ -259,7 +259,7 @@ wdog1: watchdog@403d0000 {
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&pcc2 IMX7ULP_CLK_WDG1>; clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
assigned-clocks = <&pcc2 IMX7ULP_CLK_WDG1>; assigned-clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
assigned-clocks-parents = <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>; assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>;
timeout-sec = <40>; timeout-sec = <40>;
}; };
......
...@@ -59,7 +59,7 @@ hwrng: rng@8100 { ...@@ -59,7 +59,7 @@ hwrng: rng@8100 {
}; };
uart_A: serial@84c0 { uart_A: serial@84c0 {
compatible = "amlogic,meson6-uart", "amlogic,meson-uart"; compatible = "amlogic,meson6-uart";
reg = <0x84c0 0x18>; reg = <0x84c0 0x18>;
interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
fifo-size = <128>; fifo-size = <128>;
...@@ -67,7 +67,7 @@ uart_A: serial@84c0 { ...@@ -67,7 +67,7 @@ uart_A: serial@84c0 {
}; };
uart_B: serial@84dc { uart_B: serial@84dc {
compatible = "amlogic,meson6-uart", "amlogic,meson-uart"; compatible = "amlogic,meson6-uart";
reg = <0x84dc 0x18>; reg = <0x84dc 0x18>;
interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
status = "disabled"; status = "disabled";
...@@ -105,7 +105,7 @@ saradc: adc@8680 { ...@@ -105,7 +105,7 @@ saradc: adc@8680 {
}; };
uart_C: serial@8700 { uart_C: serial@8700 {
compatible = "amlogic,meson6-uart", "amlogic,meson-uart"; compatible = "amlogic,meson6-uart";
reg = <0x8700 0x18>; reg = <0x8700 0x18>;
interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
status = "disabled"; status = "disabled";
...@@ -228,7 +228,7 @@ ir_receiver: ir-receiver@480 { ...@@ -228,7 +228,7 @@ ir_receiver: ir-receiver@480 {
}; };
uart_AO: serial@4c0 { uart_AO: serial@4c0 {
compatible = "amlogic,meson6-uart", "amlogic,meson-ao-uart", "amlogic,meson-uart"; compatible = "amlogic,meson6-uart", "amlogic,meson-ao-uart";
reg = <0x4c0 0x18>; reg = <0x4c0 0x18>;
interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>; interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
status = "disabled"; status = "disabled";
......
...@@ -736,27 +736,27 @@ &timer_abcde { ...@@ -736,27 +736,27 @@ &timer_abcde {
}; };
&uart_AO { &uart_AO {
compatible = "amlogic,meson8-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8-uart", "amlogic,meson-ao-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>; clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_A { &uart_A {
compatible = "amlogic,meson8-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_B { &uart_B {
compatible = "amlogic,meson8-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_C { &uart_C {
compatible = "amlogic,meson8-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&usb0 { &usb0 {
......
...@@ -724,27 +724,27 @@ &timer_abcde { ...@@ -724,27 +724,27 @@ &timer_abcde {
}; };
&uart_AO { &uart_AO {
compatible = "amlogic,meson8b-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8b-uart", "amlogic,meson-ao-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>; clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_A { &uart_A {
compatible = "amlogic,meson8b-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8b-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_B { &uart_B {
compatible = "amlogic,meson8b-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8b-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&uart_C { &uart_C {
compatible = "amlogic,meson8b-uart", "amlogic,meson-uart"; compatible = "amlogic,meson8b-uart";
clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>; clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
clock-names = "baud", "xtal", "pclk"; clock-names = "xtal", "pclk", "baud";
}; };
&usb0 { &usb0 {
......
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
#include "omap3-beagle.dts"
/ {
model = "TI OMAP3 BeagleBoard A to B4";
compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3";
};
/*
* Workaround for capacitor C70 issue, see "Boards revision A and < B5"
* section at https://elinux.org/BeagleBoard_Community
*/
/* Unusable as clocksource because of unreliable oscillator */
&counter32k {
status = "disabled";
};
/* Unusable as clockevent because of unreliable oscillator, allow to idle */
&timer1_target {
/delete-property/ti,no-reset-on-init;
/delete-property/ti,no-idle;
timer@0 {
/delete-property/ti,timer-alwon;
};
};
/* Preferred always-on timer for clocksource */
&timer12_target {
ti,no-reset-on-init;
ti,no-idle;
timer@0 {
/* Always clocked by secure_32k_fck */
};
};
/* Preferred timer for clockevent */
&timer2_target {
ti,no-reset-on-init;
ti,no-idle;
timer@0 {
assigned-clocks = <&gpt2_fck>;
assigned-clock-parents = <&sys_ck>;
};
};
...@@ -304,39 +304,6 @@ &usbhsehci { ...@@ -304,39 +304,6 @@ &usbhsehci {
phys = <0 &hsusb2_phy>; phys = <0 &hsusb2_phy>;
}; };
/* Unusable as clocksource because of unreliable oscillator */
&counter32k {
status = "disabled";
};
/* Unusable as clockevent because if unreliable oscillator, allow to idle */
&timer1_target {
/delete-property/ti,no-reset-on-init;
/delete-property/ti,no-idle;
timer@0 {
/delete-property/ti,timer-alwon;
};
};
/* Preferred always-on timer for clocksource */
&timer12_target {
ti,no-reset-on-init;
ti,no-idle;
timer@0 {
/* Always clocked by secure_32k_fck */
};
};
/* Preferred timer for clockevent */
&timer2_target {
ti,no-reset-on-init;
ti,no-idle;
timer@0 {
assigned-clocks = <&gpt2_fck>;
assigned-clock-parents = <&sys_ck>;
};
};
&twl_gpio { &twl_gpio {
ti,use-leds; ti,use-leds;
/* pullups: BIT(1) */ /* pullups: BIT(1) */
......
...@@ -235,7 +235,6 @@ stmpe811@41 { ...@@ -235,7 +235,6 @@ stmpe811@41 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <0x41>; reg = <0x41>;
irq-over-gpio;
irq-gpios = <&gpiopinctrl 29 0x4>; irq-gpios = <&gpiopinctrl 29 0x4>;
id = <0>; id = <0>;
blocks = <0x5>; blocks = <0x5>;
......
...@@ -185,10 +185,6 @@ mmc@80126000 { ...@@ -185,10 +185,6 @@ mmc@80126000 {
cap-sd-highspeed; cap-sd-highspeed;
cap-mmc-highspeed; cap-mmc-highspeed;
/* All direction control is used */ /* All direction control is used */
st,sig-dir-cmd;
st,sig-dir-dat0;
st,sig-dir-dat2;
st,sig-dir-dat31;
st,sig-pin-fbclk; st,sig-pin-fbclk;
full-pwr-cycle; full-pwr-cycle;
vmmc-supply = <&ab8500_ldo_aux3_reg>; vmmc-supply = <&ab8500_ldo_aux3_reg>;
......
...@@ -263,9 +263,9 @@ static int __init omapdss_init_of(void) ...@@ -263,9 +263,9 @@ static int __init omapdss_init_of(void)
} }
r = of_platform_populate(node, NULL, NULL, &pdev->dev); r = of_platform_populate(node, NULL, NULL, &pdev->dev);
put_device(&pdev->dev);
if (r) { if (r) {
pr_err("Unable to populate DSS submodule devices\n"); pr_err("Unable to populate DSS submodule devices\n");
put_device(&pdev->dev);
return r; return r;
} }
......
...@@ -752,9 +752,11 @@ static int __init _init_clkctrl_providers(void) ...@@ -752,9 +752,11 @@ static int __init _init_clkctrl_providers(void)
for_each_matching_node(np, ti_clkctrl_match_table) { for_each_matching_node(np, ti_clkctrl_match_table) {
ret = _setup_clkctrl_provider(np); ret = _setup_clkctrl_provider(np);
if (ret) if (ret) {
of_node_put(np);
break; break;
} }
}
return ret; return ret;
} }
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
menuconfig ARCH_INTEL_SOCFPGA menuconfig ARCH_INTEL_SOCFPGA
bool "Altera SOCFPGA family" bool "Altera SOCFPGA family"
depends on ARCH_MULTI_V7 depends on ARCH_MULTI_V7
select ARCH_HAS_RESET_CONTROLLER
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
...@@ -18,6 +19,7 @@ menuconfig ARCH_INTEL_SOCFPGA ...@@ -18,6 +19,7 @@ menuconfig ARCH_INTEL_SOCFPGA
select PL310_ERRATA_727915 select PL310_ERRATA_727915
select PL310_ERRATA_753970 if PL310 select PL310_ERRATA_753970 if PL310
select PL310_ERRATA_769419 select PL310_ERRATA_769419
select RESET_CONTROLLER
if ARCH_INTEL_SOCFPGA if ARCH_INTEL_SOCFPGA
config SOCFPGA_SUSPEND config SOCFPGA_SUSPEND
......
...@@ -309,9 +309,6 @@ config ARCH_VISCONTI ...@@ -309,9 +309,6 @@ config ARCH_VISCONTI
help help
This enables support for Toshiba Visconti SoCs Family. This enables support for Toshiba Visconti SoCs Family.
config ARCH_VULCAN
def_bool n
config ARCH_XGENE config ARCH_XGENE
bool "AppliedMicro X-Gene SOC Family" bool "AppliedMicro X-Gene SOC Family"
help help
......
...@@ -107,6 +107,12 @@ secmon_reserved: secmon@5000000 { ...@@ -107,6 +107,12 @@ secmon_reserved: secmon@5000000 {
no-map; no-map;
}; };
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
secmon_reserved_bl32: secmon@5300000 {
reg = <0x0 0x05300000 0x0 0x2000000>;
no-map;
};
linux,cma { linux,cma {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reusable; reusable;
......
...@@ -157,14 +157,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 { ...@@ -157,14 +157,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 {
regulator-always-on; regulator-always-on;
}; };
reserved-memory {
/* TEE Reserved Memory */
bl32_reserved: bl32@5000000 {
reg = <0x0 0x05300000 0x0 0x2000000>;
no-map;
};
};
sdio_pwrseq: sdio-pwrseq { sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple"; compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
......
...@@ -17,7 +17,7 @@ aliases { ...@@ -17,7 +17,7 @@ aliases {
rtc1 = &vrtc; rtc1 = &vrtc;
}; };
dioo2133: audio-amplifier-0 { dio2133: audio-amplifier-0 {
compatible = "simple-audio-amplifier"; compatible = "simple-audio-amplifier";
enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
VCC-supply = <&vcc_5v>; VCC-supply = <&vcc_5v>;
...@@ -219,7 +219,7 @@ sound { ...@@ -219,7 +219,7 @@ sound {
audio-widgets = "Line", "Lineout"; audio-widgets = "Line", "Lineout";
audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>, audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
<&tdmin_b>, <&tdmin_c>, <&tdmin_lb>, <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
<&dioo2133>; <&dio2133>;
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
"TDMOUT_B IN 1", "FRDDR_B OUT 1", "TDMOUT_B IN 1", "FRDDR_B OUT 1",
"TDMOUT_B IN 2", "FRDDR_C OUT 1", "TDMOUT_B IN 2", "FRDDR_C OUT 1",
......
...@@ -49,6 +49,12 @@ secmon_reserved_alt: secmon@5000000 { ...@@ -49,6 +49,12 @@ secmon_reserved_alt: secmon@5000000 {
no-map; no-map;
}; };
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
secmon_reserved_bl32: secmon@5300000 {
reg = <0x0 0x05300000 0x0 0x2000000>;
no-map;
};
linux,cma { linux,cma {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reusable; reusable;
......
...@@ -123,7 +123,7 @@ vddio_c: regulator-vddio_c { ...@@ -123,7 +123,7 @@ vddio_c: regulator-vddio_c {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>; enable-gpio = <&gpio_ao GPIOE_2 GPIO_ACTIVE_HIGH>;
enable-active-high; enable-active-high;
regulator-always-on; regulator-always-on;
......
...@@ -48,7 +48,7 @@ tf_io: gpio-regulator-tf_io { ...@@ -48,7 +48,7 @@ tf_io: gpio-regulator-tf_io {
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
vin-supply = <&vcc_5v>; vin-supply = <&vcc_5v>;
enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>; enable-gpio = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
enable-active-high; enable-active-high;
regulator-always-on; regulator-always-on;
......
...@@ -203,14 +203,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 { ...@@ -203,14 +203,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 {
regulator-always-on; regulator-always-on;
}; };
reserved-memory {
/* TEE Reserved Memory */
bl32_reserved: bl32@5000000 {
reg = <0x0 0x05300000 0x0 0x2000000>;
no-map;
};
};
sdio_pwrseq: sdio-pwrseq { sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple"; compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
......
...@@ -157,6 +157,10 @@ partition@3e0000 { ...@@ -157,6 +157,10 @@ partition@3e0000 {
}; };
}; };
&ftm_alarm0 {
status = "okay";
};
&gpio1 { &gpio1 {
gpio-line-names = gpio-line-names =
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
......
...@@ -1115,8 +1115,8 @@ &mipi_csi1 { ...@@ -1115,8 +1115,8 @@ &mipi_csi1 {
status = "okay"; status = "okay";
ports { ports {
port@1 { port@0 {
reg = <1>; reg = <0>;
mipi1_sensor_ep: endpoint { mipi1_sensor_ep: endpoint {
remote-endpoint = <&camera1_ep>; remote-endpoint = <&camera1_ep>;
......
...@@ -554,7 +554,7 @@ lcdif: lcd-controller@30320000 { ...@@ -554,7 +554,7 @@ lcdif: lcd-controller@30320000 {
assigned-clock-rates = <0>, <0>, <0>, <594000000>; assigned-clock-rates = <0>, <0>, <0>, <594000000>;
status = "disabled"; status = "disabled";
port@0 { port {
lcdif_mipi_dsi: endpoint { lcdif_mipi_dsi: endpoint {
remote-endpoint = <&mipi_dsi_lcdif_in>; remote-endpoint = <&mipi_dsi_lcdif_in>;
}; };
...@@ -1151,8 +1151,8 @@ ports { ...@@ -1151,8 +1151,8 @@ ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
port@0 { port@1 {
reg = <0>; reg = <1>;
csi1_mipi_ep: endpoint { csi1_mipi_ep: endpoint {
remote-endpoint = <&csi1_ep>; remote-endpoint = <&csi1_ep>;
...@@ -1203,8 +1203,8 @@ ports { ...@@ -1203,8 +1203,8 @@ ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
port@0 { port@1 {
reg = <0>; reg = <1>;
csi2_mipi_ep: endpoint { csi2_mipi_ep: endpoint {
remote-endpoint = <&csi2_ep>; remote-endpoint = <&csi2_ep>;
......
...@@ -91,7 +91,7 @@ reg_vcc_3v3: regulator-3v3 { ...@@ -91,7 +91,7 @@ reg_vcc_3v3: regulator-3v3 {
sound { sound {
compatible = "fsl,imx-audio-tlv320aic32x4"; compatible = "fsl,imx-audio-tlv320aic32x4";
model = "tqm-tlv320aic32"; model = "imx-audio-tlv320aic32x4";
ssi-controller = <&sai3>; ssi-controller = <&sai3>;
audio-codec = <&tlv320aic3x04>; audio-codec = <&tlv320aic3x04>;
}; };
......
...@@ -15,8 +15,18 @@ / { ...@@ -15,8 +15,18 @@ / {
model = "Texas Instruments J721S2 EVM"; model = "Texas Instruments J721S2 EVM";
chosen { chosen {
stdout-path = "serial10:115200n8"; stdout-path = "serial2:115200n8";
bootargs = "console=ttyS10,115200n8 earlycon=ns16550a,mmio32,2880000"; bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,2880000";
};
aliases {
serial1 = &mcu_uart0;
serial2 = &main_uart8;
mmc0 = &main_sdhci0;
mmc1 = &main_sdhci1;
can0 = &main_mcan16;
can1 = &mcu_mcan0;
can2 = &mcu_mcan1;
}; };
evm_12v0: fixedregulator-evm12v0 { evm_12v0: fixedregulator-evm12v0 {
......
...@@ -21,28 +21,6 @@ / { ...@@ -21,28 +21,6 @@ / {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
aliases {
serial0 = &wkup_uart0;
serial1 = &mcu_uart0;
serial2 = &main_uart0;
serial3 = &main_uart1;
serial4 = &main_uart2;
serial5 = &main_uart3;
serial6 = &main_uart4;
serial7 = &main_uart5;
serial8 = &main_uart6;
serial9 = &main_uart7;
serial10 = &main_uart8;
serial11 = &main_uart9;
mmc0 = &main_sdhci0;
mmc1 = &main_sdhci1;
can0 = &main_mcan16;
can1 = &mcu_mcan0;
can2 = &mcu_mcan1;
can3 = &main_mcan3;
can4 = &main_mcan5;
};
chosen { }; chosen { };
cpus { cpus {
......
...@@ -241,7 +241,7 @@ static void __init dmtimer_systimer_assign_alwon(void) ...@@ -241,7 +241,7 @@ static void __init dmtimer_systimer_assign_alwon(void)
bool quirk_unreliable_oscillator = false; bool quirk_unreliable_oscillator = false;
/* Quirk unreliable 32 KiHz oscillator with incomplete dts */ /* Quirk unreliable 32 KiHz oscillator with incomplete dts */
if (of_machine_is_compatible("ti,omap3-beagle") || if (of_machine_is_compatible("ti,omap3-beagle-ab4") ||
of_machine_is_compatible("timll,omap3-devkit8000")) { of_machine_is_compatible("timll,omap3-devkit8000")) {
quirk_unreliable_oscillator = true; quirk_unreliable_oscillator = true;
counter_32k = -ENODEV; counter_32k = -ENODEV;
......
...@@ -306,10 +306,9 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev) ...@@ -306,10 +306,9 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
} }
lpc_ctrl->clk = devm_clk_get(dev, NULL); lpc_ctrl->clk = devm_clk_get(dev, NULL);
if (IS_ERR(lpc_ctrl->clk)) { if (IS_ERR(lpc_ctrl->clk))
dev_err(dev, "couldn't get clock\n"); return dev_err_probe(dev, PTR_ERR(lpc_ctrl->clk),
return PTR_ERR(lpc_ctrl->clk); "couldn't get clock\n");
}
rc = clk_prepare_enable(lpc_ctrl->clk); rc = clk_prepare_enable(lpc_ctrl->clk);
if (rc) { if (rc) {
dev_err(dev, "couldn't enable clock\n"); dev_err(dev, "couldn't enable clock\n");
......
...@@ -31,7 +31,7 @@ config EXYNOS_USI ...@@ -31,7 +31,7 @@ config EXYNOS_USI
help help
Enable support for USI block. USI (Universal Serial Interface) is an Enable support for USI block. USI (Universal Serial Interface) is an
IP-core found in modern Samsung Exynos SoCs, like Exynos850 and IP-core found in modern Samsung Exynos SoCs, like Exynos850 and
ExynosAutoV0. USI block can be configured to provide one of the ExynosAutoV9. USI block can be configured to provide one of the
following serial protocols: UART, SPI or High Speed I2C. following serial protocols: UART, SPI or High Speed I2C.
This driver allows one to configure USI for desired protocol, which This driver allows one to configure USI for desired protocol, which
......
...@@ -158,6 +158,7 @@ void optee_remove_common(struct optee *optee) ...@@ -158,6 +158,7 @@ void optee_remove_common(struct optee *optee)
optee_unregister_devices(); optee_unregister_devices();
optee_notif_uninit(optee); optee_notif_uninit(optee);
teedev_close_context(optee->ctx);
/* /*
* The two devices have to be unregistered before we can free the * The two devices have to be unregistered before we can free the
* other resources. * other resources.
......
...@@ -424,6 +424,7 @@ static struct tee_shm_pool_mgr *optee_ffa_shm_pool_alloc_pages(void) ...@@ -424,6 +424,7 @@ static struct tee_shm_pool_mgr *optee_ffa_shm_pool_alloc_pages(void)
*/ */
static void handle_ffa_rpc_func_cmd_shm_alloc(struct tee_context *ctx, static void handle_ffa_rpc_func_cmd_shm_alloc(struct tee_context *ctx,
struct optee *optee,
struct optee_msg_arg *arg) struct optee_msg_arg *arg)
{ {
struct tee_shm *shm; struct tee_shm *shm;
...@@ -439,7 +440,7 @@ static void handle_ffa_rpc_func_cmd_shm_alloc(struct tee_context *ctx, ...@@ -439,7 +440,7 @@ static void handle_ffa_rpc_func_cmd_shm_alloc(struct tee_context *ctx,
shm = optee_rpc_cmd_alloc_suppl(ctx, arg->params[0].u.value.b); shm = optee_rpc_cmd_alloc_suppl(ctx, arg->params[0].u.value.b);
break; break;
case OPTEE_RPC_SHM_TYPE_KERNEL: case OPTEE_RPC_SHM_TYPE_KERNEL:
shm = tee_shm_alloc(ctx, arg->params[0].u.value.b, shm = tee_shm_alloc(optee->ctx, arg->params[0].u.value.b,
TEE_SHM_MAPPED | TEE_SHM_PRIV); TEE_SHM_MAPPED | TEE_SHM_PRIV);
break; break;
default: default:
...@@ -493,14 +494,13 @@ static void handle_ffa_rpc_func_cmd_shm_free(struct tee_context *ctx, ...@@ -493,14 +494,13 @@ static void handle_ffa_rpc_func_cmd_shm_free(struct tee_context *ctx,
} }
static void handle_ffa_rpc_func_cmd(struct tee_context *ctx, static void handle_ffa_rpc_func_cmd(struct tee_context *ctx,
struct optee *optee,
struct optee_msg_arg *arg) struct optee_msg_arg *arg)
{ {
struct optee *optee = tee_get_drvdata(ctx->teedev);
arg->ret_origin = TEEC_ORIGIN_COMMS; arg->ret_origin = TEEC_ORIGIN_COMMS;
switch (arg->cmd) { switch (arg->cmd) {
case OPTEE_RPC_CMD_SHM_ALLOC: case OPTEE_RPC_CMD_SHM_ALLOC:
handle_ffa_rpc_func_cmd_shm_alloc(ctx, arg); handle_ffa_rpc_func_cmd_shm_alloc(ctx, optee, arg);
break; break;
case OPTEE_RPC_CMD_SHM_FREE: case OPTEE_RPC_CMD_SHM_FREE:
handle_ffa_rpc_func_cmd_shm_free(ctx, optee, arg); handle_ffa_rpc_func_cmd_shm_free(ctx, optee, arg);
...@@ -510,12 +510,12 @@ static void handle_ffa_rpc_func_cmd(struct tee_context *ctx, ...@@ -510,12 +510,12 @@ static void handle_ffa_rpc_func_cmd(struct tee_context *ctx,
} }
} }
static void optee_handle_ffa_rpc(struct tee_context *ctx, u32 cmd, static void optee_handle_ffa_rpc(struct tee_context *ctx, struct optee *optee,
struct optee_msg_arg *arg) u32 cmd, struct optee_msg_arg *arg)
{ {
switch (cmd) { switch (cmd) {
case OPTEE_FFA_YIELDING_CALL_RETURN_RPC_CMD: case OPTEE_FFA_YIELDING_CALL_RETURN_RPC_CMD:
handle_ffa_rpc_func_cmd(ctx, arg); handle_ffa_rpc_func_cmd(ctx, optee, arg);
break; break;
case OPTEE_FFA_YIELDING_CALL_RETURN_INTERRUPT: case OPTEE_FFA_YIELDING_CALL_RETURN_INTERRUPT:
/* Interrupt delivered by now */ /* Interrupt delivered by now */
...@@ -582,7 +582,7 @@ static int optee_ffa_yielding_call(struct tee_context *ctx, ...@@ -582,7 +582,7 @@ static int optee_ffa_yielding_call(struct tee_context *ctx,
* above. * above.
*/ */
cond_resched(); cond_resched();
optee_handle_ffa_rpc(ctx, data->data1, rpc_arg); optee_handle_ffa_rpc(ctx, optee, data->data1, rpc_arg);
cmd = OPTEE_FFA_YIELDING_CALL_RESUME; cmd = OPTEE_FFA_YIELDING_CALL_RESUME;
data->data0 = cmd; data->data0 = cmd;
data->data1 = 0; data->data1 = 0;
...@@ -619,9 +619,18 @@ static int optee_ffa_do_call_with_arg(struct tee_context *ctx, ...@@ -619,9 +619,18 @@ static int optee_ffa_do_call_with_arg(struct tee_context *ctx,
.data2 = (u32)(shm->sec_world_id >> 32), .data2 = (u32)(shm->sec_world_id >> 32),
.data3 = shm->offset, .data3 = shm->offset,
}; };
struct optee_msg_arg *arg = tee_shm_get_va(shm, 0); struct optee_msg_arg *arg;
unsigned int rpc_arg_offs = OPTEE_MSG_GET_ARG_SIZE(arg->num_params); unsigned int rpc_arg_offs;
struct optee_msg_arg *rpc_arg = tee_shm_get_va(shm, rpc_arg_offs); struct optee_msg_arg *rpc_arg;
arg = tee_shm_get_va(shm, 0);
if (IS_ERR(arg))
return PTR_ERR(arg);
rpc_arg_offs = OPTEE_MSG_GET_ARG_SIZE(arg->num_params);
rpc_arg = tee_shm_get_va(shm, rpc_arg_offs);
if (IS_ERR(rpc_arg))
return PTR_ERR(rpc_arg);
return optee_ffa_yielding_call(ctx, &data, rpc_arg); return optee_ffa_yielding_call(ctx, &data, rpc_arg);
} }
...@@ -793,7 +802,9 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev) ...@@ -793,7 +802,9 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev)
{ {
const struct ffa_dev_ops *ffa_ops; const struct ffa_dev_ops *ffa_ops;
unsigned int rpc_arg_count; unsigned int rpc_arg_count;
struct tee_shm_pool *pool;
struct tee_device *teedev; struct tee_device *teedev;
struct tee_context *ctx;
struct optee *optee; struct optee *optee;
int rc; int rc;
...@@ -813,12 +824,12 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev) ...@@ -813,12 +824,12 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev)
if (!optee) if (!optee)
return -ENOMEM; return -ENOMEM;
optee->pool = optee_ffa_config_dyn_shm(); pool = optee_ffa_config_dyn_shm();
if (IS_ERR(optee->pool)) { if (IS_ERR(pool)) {
rc = PTR_ERR(optee->pool); rc = PTR_ERR(pool);
optee->pool = NULL; goto err_free_optee;
goto err;
} }
optee->pool = pool;
optee->ops = &optee_ffa_ops; optee->ops = &optee_ffa_ops;
optee->ffa.ffa_dev = ffa_dev; optee->ffa.ffa_dev = ffa_dev;
...@@ -829,7 +840,7 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev) ...@@ -829,7 +840,7 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev)
optee); optee);
if (IS_ERR(teedev)) { if (IS_ERR(teedev)) {
rc = PTR_ERR(teedev); rc = PTR_ERR(teedev);
goto err; goto err_free_pool;
} }
optee->teedev = teedev; optee->teedev = teedev;
...@@ -837,50 +848,57 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev) ...@@ -837,50 +848,57 @@ static int optee_ffa_probe(struct ffa_device *ffa_dev)
optee); optee);
if (IS_ERR(teedev)) { if (IS_ERR(teedev)) {
rc = PTR_ERR(teedev); rc = PTR_ERR(teedev);
goto err; goto err_unreg_teedev;
} }
optee->supp_teedev = teedev; optee->supp_teedev = teedev;
rc = tee_device_register(optee->teedev); rc = tee_device_register(optee->teedev);
if (rc) if (rc)
goto err; goto err_unreg_supp_teedev;
rc = tee_device_register(optee->supp_teedev); rc = tee_device_register(optee->supp_teedev);
if (rc) if (rc)
goto err; goto err_unreg_supp_teedev;
rc = rhashtable_init(&optee->ffa.global_ids, &shm_rhash_params); rc = rhashtable_init(&optee->ffa.global_ids, &shm_rhash_params);
if (rc) if (rc)
goto err; goto err_unreg_supp_teedev;
mutex_init(&optee->ffa.mutex); mutex_init(&optee->ffa.mutex);
mutex_init(&optee->call_queue.mutex); mutex_init(&optee->call_queue.mutex);
INIT_LIST_HEAD(&optee->call_queue.waiters); INIT_LIST_HEAD(&optee->call_queue.waiters);
optee_supp_init(&optee->supp); optee_supp_init(&optee->supp);
ffa_dev_set_drvdata(ffa_dev, optee); ffa_dev_set_drvdata(ffa_dev, optee);
ctx = teedev_open(optee->teedev);
if (IS_ERR(ctx))
goto err_rhashtable_free;
optee->ctx = ctx;
rc = optee_notif_init(optee, OPTEE_DEFAULT_MAX_NOTIF_VALUE); rc = optee_notif_init(optee, OPTEE_DEFAULT_MAX_NOTIF_VALUE);
if (rc) { if (rc)
optee_ffa_remove(ffa_dev); goto err_close_ctx;
return rc;
}
rc = optee_enumerate_devices(PTA_CMD_GET_DEVICES); rc = optee_enumerate_devices(PTA_CMD_GET_DEVICES);
if (rc) { if (rc)
optee_ffa_remove(ffa_dev); goto err_unregister_devices;
return rc;
}
pr_info("initialized driver\n"); pr_info("initialized driver\n");
return 0; return 0;
err:
/* err_unregister_devices:
* tee_device_unregister() is safe to call even if the optee_unregister_devices();
* devices hasn't been registered with optee_notif_uninit(optee);
* tee_device_register() yet. err_close_ctx:
*/ teedev_close_context(ctx);
err_rhashtable_free:
rhashtable_free_and_destroy(&optee->ffa.global_ids, rh_free_fn, NULL);
optee_supp_uninit(&optee->supp);
mutex_destroy(&optee->call_queue.mutex);
err_unreg_supp_teedev:
tee_device_unregister(optee->supp_teedev); tee_device_unregister(optee->supp_teedev);
err_unreg_teedev:
tee_device_unregister(optee->teedev); tee_device_unregister(optee->teedev);
if (optee->pool) err_free_pool:
tee_shm_pool_free(optee->pool); tee_shm_pool_free(pool);
err_free_optee:
kfree(optee); kfree(optee);
return rc; return rc;
} }
......
...@@ -121,5 +121,5 @@ int optee_notif_init(struct optee *optee, u_int max_key) ...@@ -121,5 +121,5 @@ int optee_notif_init(struct optee *optee, u_int max_key)
void optee_notif_uninit(struct optee *optee) void optee_notif_uninit(struct optee *optee)
{ {
kfree(optee->notif.bitmap); bitmap_free(optee->notif.bitmap);
} }
...@@ -53,7 +53,6 @@ struct optee_call_queue { ...@@ -53,7 +53,6 @@ struct optee_call_queue {
struct optee_notif { struct optee_notif {
u_int max_key; u_int max_key;
struct tee_context *ctx;
/* Serializes access to the elements below in this struct */ /* Serializes access to the elements below in this struct */
spinlock_t lock; spinlock_t lock;
struct list_head db; struct list_head db;
...@@ -134,9 +133,10 @@ struct optee_ops { ...@@ -134,9 +133,10 @@ struct optee_ops {
/** /**
* struct optee - main service struct * struct optee - main service struct
* @supp_teedev: supplicant device * @supp_teedev: supplicant device
* @teedev: client device
* @ops: internal callbacks for different ways to reach secure * @ops: internal callbacks for different ways to reach secure
* world * world
* @teedev: client device * @ctx: driver internal TEE context
* @smc: specific to SMC ABI * @smc: specific to SMC ABI
* @ffa: specific to FF-A ABI * @ffa: specific to FF-A ABI
* @call_queue: queue of threads waiting to call @invoke_fn * @call_queue: queue of threads waiting to call @invoke_fn
...@@ -152,6 +152,7 @@ struct optee { ...@@ -152,6 +152,7 @@ struct optee {
struct tee_device *supp_teedev; struct tee_device *supp_teedev;
struct tee_device *teedev; struct tee_device *teedev;
const struct optee_ops *ops; const struct optee_ops *ops;
struct tee_context *ctx;
union { union {
struct optee_smc smc; struct optee_smc smc;
struct optee_ffa ffa; struct optee_ffa ffa;
......
...@@ -75,16 +75,6 @@ static int from_msg_param_tmp_mem(struct tee_param *p, u32 attr, ...@@ -75,16 +75,6 @@ static int from_msg_param_tmp_mem(struct tee_param *p, u32 attr,
p->u.memref.shm_offs = mp->u.tmem.buf_ptr - pa; p->u.memref.shm_offs = mp->u.tmem.buf_ptr - pa;
p->u.memref.shm = shm; p->u.memref.shm = shm;
/* Check that the memref is covered by the shm object */
if (p->u.memref.size) {
size_t o = p->u.memref.shm_offs +
p->u.memref.size - 1;
rc = tee_shm_get_pa(shm, o, NULL);
if (rc)
return rc;
}
return 0; return 0;
} }
...@@ -622,6 +612,7 @@ static void handle_rpc_func_cmd_shm_free(struct tee_context *ctx, ...@@ -622,6 +612,7 @@ static void handle_rpc_func_cmd_shm_free(struct tee_context *ctx,
} }
static void handle_rpc_func_cmd_shm_alloc(struct tee_context *ctx, static void handle_rpc_func_cmd_shm_alloc(struct tee_context *ctx,
struct optee *optee,
struct optee_msg_arg *arg, struct optee_msg_arg *arg,
struct optee_call_ctx *call_ctx) struct optee_call_ctx *call_ctx)
{ {
...@@ -651,7 +642,8 @@ static void handle_rpc_func_cmd_shm_alloc(struct tee_context *ctx, ...@@ -651,7 +642,8 @@ static void handle_rpc_func_cmd_shm_alloc(struct tee_context *ctx,
shm = optee_rpc_cmd_alloc_suppl(ctx, sz); shm = optee_rpc_cmd_alloc_suppl(ctx, sz);
break; break;
case OPTEE_RPC_SHM_TYPE_KERNEL: case OPTEE_RPC_SHM_TYPE_KERNEL:
shm = tee_shm_alloc(ctx, sz, TEE_SHM_MAPPED | TEE_SHM_PRIV); shm = tee_shm_alloc(optee->ctx, sz,
TEE_SHM_MAPPED | TEE_SHM_PRIV);
break; break;
default: default:
arg->ret = TEEC_ERROR_BAD_PARAMETERS; arg->ret = TEEC_ERROR_BAD_PARAMETERS;
...@@ -747,7 +739,7 @@ static void handle_rpc_func_cmd(struct tee_context *ctx, struct optee *optee, ...@@ -747,7 +739,7 @@ static void handle_rpc_func_cmd(struct tee_context *ctx, struct optee *optee,
switch (arg->cmd) { switch (arg->cmd) {
case OPTEE_RPC_CMD_SHM_ALLOC: case OPTEE_RPC_CMD_SHM_ALLOC:
free_pages_list(call_ctx); free_pages_list(call_ctx);
handle_rpc_func_cmd_shm_alloc(ctx, arg, call_ctx); handle_rpc_func_cmd_shm_alloc(ctx, optee, arg, call_ctx);
break; break;
case OPTEE_RPC_CMD_SHM_FREE: case OPTEE_RPC_CMD_SHM_FREE:
handle_rpc_func_cmd_shm_free(ctx, arg); handle_rpc_func_cmd_shm_free(ctx, arg);
...@@ -776,7 +768,7 @@ static void optee_handle_rpc(struct tee_context *ctx, ...@@ -776,7 +768,7 @@ static void optee_handle_rpc(struct tee_context *ctx,
switch (OPTEE_SMC_RETURN_GET_RPC_FUNC(param->a0)) { switch (OPTEE_SMC_RETURN_GET_RPC_FUNC(param->a0)) {
case OPTEE_SMC_RPC_FUNC_ALLOC: case OPTEE_SMC_RPC_FUNC_ALLOC:
shm = tee_shm_alloc(ctx, param->a1, shm = tee_shm_alloc(optee->ctx, param->a1,
TEE_SHM_MAPPED | TEE_SHM_PRIV); TEE_SHM_MAPPED | TEE_SHM_PRIV);
if (!IS_ERR(shm) && !tee_shm_get_pa(shm, 0, &pa)) { if (!IS_ERR(shm) && !tee_shm_get_pa(shm, 0, &pa)) {
reg_pair_from_64(&param->a1, &param->a2, pa); reg_pair_from_64(&param->a1, &param->a2, pa);
...@@ -954,57 +946,34 @@ static irqreturn_t notif_irq_thread_fn(int irq, void *dev_id) ...@@ -954,57 +946,34 @@ static irqreturn_t notif_irq_thread_fn(int irq, void *dev_id)
{ {
struct optee *optee = dev_id; struct optee *optee = dev_id;
optee_smc_do_bottom_half(optee->notif.ctx); optee_smc_do_bottom_half(optee->ctx);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static int optee_smc_notif_init_irq(struct optee *optee, u_int irq) static int optee_smc_notif_init_irq(struct optee *optee, u_int irq)
{ {
struct tee_context *ctx;
int rc; int rc;
ctx = teedev_open(optee->teedev);
if (IS_ERR(ctx))
return PTR_ERR(ctx);
optee->notif.ctx = ctx;
rc = request_threaded_irq(irq, notif_irq_handler, rc = request_threaded_irq(irq, notif_irq_handler,
notif_irq_thread_fn, notif_irq_thread_fn,
0, "optee_notification", optee); 0, "optee_notification", optee);
if (rc) if (rc)
goto err_close_ctx; return rc;
optee->smc.notif_irq = irq; optee->smc.notif_irq = irq;
return 0; return 0;
err_close_ctx:
teedev_close_context(optee->notif.ctx);
optee->notif.ctx = NULL;
return rc;
} }
static void optee_smc_notif_uninit_irq(struct optee *optee) static void optee_smc_notif_uninit_irq(struct optee *optee)
{ {
if (optee->notif.ctx) { if (optee->smc.sec_caps & OPTEE_SMC_SEC_CAP_ASYNC_NOTIF) {
optee_smc_stop_async_notif(optee->notif.ctx); optee_smc_stop_async_notif(optee->ctx);
if (optee->smc.notif_irq) { if (optee->smc.notif_irq) {
free_irq(optee->smc.notif_irq, optee); free_irq(optee->smc.notif_irq, optee);
irq_dispose_mapping(optee->smc.notif_irq); irq_dispose_mapping(optee->smc.notif_irq);
} }
/*
* The thread normally working with optee->notif.ctx was
* stopped with free_irq() above.
*
* Note we're not using teedev_close_context() or
* tee_client_close_context() since we have already called
* tee_device_put() while initializing to avoid a circular
* reference counting.
*/
teedev_close_context(optee->notif.ctx);
} }
} }
...@@ -1366,6 +1335,7 @@ static int optee_probe(struct platform_device *pdev) ...@@ -1366,6 +1335,7 @@ static int optee_probe(struct platform_device *pdev)
struct optee *optee = NULL; struct optee *optee = NULL;
void *memremaped_shm = NULL; void *memremaped_shm = NULL;
struct tee_device *teedev; struct tee_device *teedev;
struct tee_context *ctx;
u32 max_notif_value; u32 max_notif_value;
u32 sec_caps; u32 sec_caps;
int rc; int rc;
...@@ -1446,9 +1416,13 @@ static int optee_probe(struct platform_device *pdev) ...@@ -1446,9 +1416,13 @@ static int optee_probe(struct platform_device *pdev)
optee->pool = pool; optee->pool = pool;
platform_set_drvdata(pdev, optee); platform_set_drvdata(pdev, optee);
ctx = teedev_open(optee->teedev);
if (IS_ERR(ctx))
goto err_supp_uninit;
optee->ctx = ctx;
rc = optee_notif_init(optee, max_notif_value); rc = optee_notif_init(optee, max_notif_value);
if (rc) if (rc)
goto err_supp_uninit; goto err_close_ctx;
if (sec_caps & OPTEE_SMC_SEC_CAP_ASYNC_NOTIF) { if (sec_caps & OPTEE_SMC_SEC_CAP_ASYNC_NOTIF) {
unsigned int irq; unsigned int irq;
...@@ -1496,6 +1470,8 @@ static int optee_probe(struct platform_device *pdev) ...@@ -1496,6 +1470,8 @@ static int optee_probe(struct platform_device *pdev)
optee_unregister_devices(); optee_unregister_devices();
err_notif_uninit: err_notif_uninit:
optee_notif_uninit(optee); optee_notif_uninit(optee);
err_close_ctx:
teedev_close_context(ctx);
err_supp_uninit: err_supp_uninit:
optee_supp_uninit(&optee->supp); optee_supp_uninit(&optee->supp);
mutex_destroy(&optee->call_queue.mutex); mutex_destroy(&optee->call_queue.mutex);
......
...@@ -84,17 +84,10 @@ ...@@ -84,17 +84,10 @@
#define DRA7_L3_MAIN_2_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) #define DRA7_L3_MAIN_2_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_L3_INSTR_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) #define DRA7_L3_INSTR_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
/* iva clocks */
#define DRA7_IVA_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_SL2IF_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
/* dss clocks */ /* dss clocks */
#define DRA7_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) #define DRA7_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) #define DRA7_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
/* gpu clocks */
#define DRA7_GPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
/* l3init clocks */ /* l3init clocks */
#define DRA7_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) #define DRA7_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
#define DRA7_MMC2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) #define DRA7_MMC2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
...@@ -267,10 +260,17 @@ ...@@ -267,10 +260,17 @@
#define DRA7_L3INSTR_L3_MAIN_2_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) #define DRA7_L3INSTR_L3_MAIN_2_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_L3INSTR_L3_INSTR_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) #define DRA7_L3INSTR_L3_INSTR_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
/* iva clocks */
#define DRA7_IVA_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_SL2IF_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
/* dss clocks */ /* dss clocks */
#define DRA7_DSS_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) #define DRA7_DSS_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
#define DRA7_DSS_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) #define DRA7_DSS_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
/* gpu clocks */
#define DRA7_GPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
/* l3init clocks */ /* l3init clocks */
#define DRA7_L3INIT_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) #define DRA7_L3INIT_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
#define DRA7_L3INIT_MMC2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) #define DRA7_L3INIT_MMC2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment