linux-2.6-microblaze.git
9 months agoMerge tag 'samsung-drivers-6.8' of https://git.kernel.org/pub/scm/linux/kernel/git...
Arnd Bergmann [Fri, 22 Dec 2023 11:19:18 +0000 (11:19 +0000)]
Merge tag 'samsung-drivers-6.8' of https://git./linux/kernel/git/krzk/linux into soc/drivers

Samsung SoC driver changes for v6.8

1. Add support for Google GS101 SoC to different drivers: clock
   controller, serial and watchdog.

   The clock driver changes depend on few bindings headers, which I put
   in a topic branch with the bindings refactoring and GS101 support,
   therefore this this pull request includes that bindings topic branch.

   The rest of the bindings topic branch is not necessary here, however
   keeping everything together makes it easier to share between
   branches.  The bindings topic branch is mostly refactoring all the
   compatibles to add SoC-specific compatible followed by fallback.

2. Exynos ChipID: recognize ExynosAutov920.

* tag 'samsung-drivers-6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: (40 commits)
  dt-bindings: clock: google,gs101: rename CMU_TOP gate defines
  watchdog: s3c2410_wdt: Add support for Google gs101 SoC
  watchdog: s3c2410_wdt: Update QUIRK macros to use BIT macro
  watchdog: s3c2410_wdt: Add support for WTCON register DBGACK_MASK bit
  tty: serial: samsung: Add gs101 compatible and common fifoszdt_serial_drv_data
  clk: samsung: clk-gs101: Add cmu_top, cmu_misc and cmu_apm support
  clk: samsung: clk-pll: Add support for pll_{0516,0517,518}
  dt-bindings: clock: google,gs101: fix incorrect numbering and DGB suffix
  dt-bindings: soc: samsung: usi: add google,gs101-usi compatible
  dt-bindings: serial: samsung: Make samsung,uart-fifosize a required property
  dt-bindings: serial: samsung: Add google-gs101-uart compatible
  dt-bindings: watchdog: Document Google gs101 watchdog bindings
  dt-bindings: samsung: exynos-sysreg: combine exynosautov920 with other enum
  dt-bindings: soc: google: exynos-sysreg: add dedicated SYSREG compatibles to GS101
  dt-bindings: clock: Add Google gs101 clock management unit bindings
  dt-bindings: soc: samsung: exynos-pmu: Add gs101 compatible
  dt-bindings: watchdog: samsung: add specific compatible for Tesla FSD
  dt-bindings: samsung: exynos-pmu: add specific compatible for Tesla FSD
  dt-bindings: serial: samsung: add specific compatible for Tesla FSD
  dt-bindings: pwm: samsung: add specific compatible for Tesla FSD
  ...

Link: https://lore.kernel.org/r/20231220084722.22149-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'qcom-drivers-for-6.8' of https://git.kernel.org/pub/scm/linux/kernel/git...
Arnd Bergmann [Fri, 22 Dec 2023 11:17:03 +0000 (11:17 +0000)]
Merge tag 'qcom-drivers-for-6.8' of https://git./linux/kernel/git/qcom/linux into soc/drivers

Qualcomm driver updates for v6.8

Support for SM8650 and X1E is added to the LLCC driver, the
LLCC_TRP_ATTR2_CFGn register stride is corrected, and a bug where for
each iteration looping over slices previous settings for dis_cap_alloc
and retain_on_pc are overwritten.

A quirk is introduced in UCSI, for implementations that does not handle
UCSI_GET_PDOS for non-PD partners. With this, USCI support is enabled by
default in pmic_glink. It is later reverted for SC8280XP due reported
errors.

A few memory leaks in error paths of qseecom are taken care of.

A small driver to expose the ADSP PDCharger ULOG debug log is
introduced, to aid debugging issues with pmic_glink.

The identiy of SM8650, PM8937 and a few DSPs are added to the Qualcomm
socinfo driver.

The Qualcomm sleep stats driver is extended to allow getting detailed
statistics about usage of various DDR states. Unfortunately this ABI
does not seem to be stable across platforms, so this addition is dropped
again while the reported problems are investigated further.

Andy is moved from MAINTAINERS to CREDITS. Thank you, Andy.

* tag 'qcom-drivers-for-6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (34 commits)
  soc: qcom: llcc: Fix LLCC_TRP_ATTR2_CFGn offset
  firmware: qcom: qseecom: fix memory leaks in error paths
  soc: qcom: llcc: Fix typo in kernel-doc
  dt-bindings: soc: qcom,aoss-qmp: document the X1E80100 Always-On Subsystem side channel
  MAINTAINERS: qcom: move Andy Gross to credits
  soc: qcom: pmic_glink: drop stray semicolons
  soc: qcom: pmic_glink: disable UCSI on sc8280xp
  soc: qcom: llcc: Fix dis_cap_alloc and retain_on_pc configuration
  soc: qcom: pmic_pdcharger_ulog: Fix hypothetical ulog request message endianess
  soc: qcom: pmic_pdcharger_ulog: Move TRACE_SYSTEM out of #if protection
  soc: qcom: pmic_pdcharger_ulog: Search current directory for headers
  soc: qcom: socinfo: Add few DSPs to get their image details
  soc: qcom: llcc: Add missing description for members in slice config
  Revert "soc: qcom: stats: Add DDR sleep stats"
  dt-bindings: firmware: qcom,scm: Allow interconnect for everyone
  dt-bindings: firmware: qcom,scm: document SCM on X1E80100 SoCs
  soc: qcom: socinfo: Add PM8937 Power IC
  soc: qcom: llcc: Add configuration data for X1E80100
  dt-bindings: cache: qcom,llcc: Add X1E80100 compatible
  soc: qcom: pmic_glink_altmode: fix port sanity check
  ...

Link: https://lore.kernel.org/r/20231219041855.732578-1-andersson@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'ti-driver-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel...
Arnd Bergmann [Fri, 22 Dec 2023 11:16:11 +0000 (11:16 +0000)]
Merge tag 'ti-driver-soc-for-v6.8' of https://git./linux/kernel/git/ti/linux into soc/drivers

TI SoC driver updates for v6.8

- ti_sci: Minor fixup for off by one error in debugfs_create
- k3-socinfo: Refactoring and add j721e detection, j722s

* tag 'ti-driver-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux:
  soc: ti: k3-socinfo: Add JTAG ID for J722S
  soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs
  firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create()

Link: https://lore.kernel.org/r/20231218153043.r5psxbjjpccusjg4@september
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'zynqmp-soc-for-6.8' of https://github.com/Xilinx/linux-xlnx into soc/drivers
Arnd Bergmann [Fri, 22 Dec 2023 11:15:29 +0000 (11:15 +0000)]
Merge tag 'zynqmp-soc-for-6.8' of https://github.com/Xilinx/linux-xlnx into soc/drivers

arm64: ZynqMP SoC changes for 6.8

power driver:
- Move to remove_new hook
- Report error around unsupported callback
- Fix long messages

event driver:
- Fix cpu_id handling
- Fix warning message

* tag 'zynqmp-soc-for-6.8' of https://github.com/Xilinx/linux-xlnx:
  soc: xilinx: Add error message for invalid payload received from IPI callback.
  soc: xilinx: fix unhandled SGI warning message
  soc: xilinx: fix quoted string split across lines
  soc: xilinx: Fix for call trace due to the usage of smp_processor_id()
  soc/xilinx: zynqmp_power: Convert to platform remove callback returning void

Link: https://lore.kernel.org/r/CAHTX3dJ=6y=vEgmH7Qqe=6TJZT=D-egKDmLLER4fS0=OHJRGZA@mail.gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'imx-drivers-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo...
Arnd Bergmann [Fri, 22 Dec 2023 11:14:54 +0000 (11:14 +0000)]
Merge tag 'imx-drivers-6.8' of git://git./linux/kernel/git/shawnguo/linux into soc/drivers

i.MX drivers change for 6.8:

- Change imx-weim bus driver to use device_get_match_data()

* tag 'imx-drivers-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
  bus: imx-weim: Use device_get_match_data()

Link: https://lore.kernel.org/r/20231216064605.876196-1-shawnguo@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'renesas-drivers-for-v6.8-tag1' of git://git.kernel.org/pub/scm/linux/kerne...
Arnd Bergmann [Fri, 22 Dec 2023 11:14:15 +0000 (11:14 +0000)]
Merge tag 'renesas-drivers-for-v6.8-tag1' of git://git./linux/kernel/git/geert/renesas-devel into soc/drivers

Renesas driver updates for v6.8

  - Remove duplicate setup of soc_device_attribute.family,
  - Make RZ/Five depend on !DMA_DIRECT_REMAP.

* tag 'renesas-drivers-for-v6.8-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel:
  soc: renesas: Make RZ/Five depend on !DMA_DIRECT_REMAP
  soc: renesas: Remove duplicate setup of soc_device_attribute.family

Link: https://lore.kernel.org/r/cover.1702642340.git.geert+renesas@glider.be
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'mtk-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/media...
Arnd Bergmann [Fri, 22 Dec 2023 11:12:46 +0000 (11:12 +0000)]
Merge tag 'mtk-soc-for-v6.8' of https://git./linux/kernel/git/mediatek/linux into soc/drivers

MediaTek soc driver updates for v6.8

This adds a refactoring of the MediaTek Smart Voltage Scaling (SVS)
driver and the addition of support for MT8186 and MT8195 in it, and
adds support for the MT8188 VDOSYS and resets in the MMSYS driver.

* tag 'mtk-soc-for-v6.8' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux: (24 commits)
  soc: mediatek: mtk-svs: Constify runtime-immutable members of svs_bank
  soc: mediatek: mtk-svs: Use ULONG_MAX to compare floor frequency
  soc: mediatek: mtk-svs: Check if SVS mode is available in the beginning
  soc: mediatek: mtk-svs: Cleanup of svs_probe() function
  soc: mediatek: mtk-svs: Compress of_device_id entries
  soc: mediatek: mtk-svs: Remove redundant print in svs_get_efuse_data
  soc: mediatek: mtk-svs: Commonize MT8192 probe function for MT8186
  soc: mediatek: mtk-svs: Drop supplementary svs per-bank pointer
  soc: mediatek: mtk-svs: Commonize efuse parse function for most SoCs
  soc: mediatek: mtk-svs: Move t-calibration-data retrieval to svs_probe()
  soc: mediatek: mtk-svs: Add SVS-Thermal coefficient to SoC platform data
  soc: mediatek: mtk-svs: Add a map to retrieve fused values
  soc: mediatek: mtk-svs: Change the thermal sensor device name
  soc: mediatek: mtk-svs: Reduce memory footprint of struct svs_bank
  soc: mediatek: mtk-svs: Build bank name string dynamically
  soc: mediatek: mtk-svs: Convert sw_id and type to enumerations
  soc: mediatek: mtk-svs: Subtract offset from regs_v2 to avoid conflict
  soc: mediatek: Add MT8188 VDOSYS reset bit map
  soc: mediatek: Support reset bit mapping in mmsys driver
  soc: mediatek: Support MT8188 VDOSYS1 Padding in mtk-mmsys
  ...

Link: https://lore.kernel.org/r/20231212114515.121695-2-angelogioacchino.delregno@collabora.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'fsl_qmc_tsa_v6.8' of https://github.com//hcodina/linux into soc/drivers
Arnd Bergmann [Fri, 22 Dec 2023 10:48:57 +0000 (10:48 +0000)]
Merge tag 'fsl_qmc_tsa_v6.8' of https://github.com//hcodina/linux into soc/drivers

PowerQUICC QMC and TSA drivers updates for v6.8

This pull request contains updates to prepare the support for the QMC
HDLC driver.
        - Perform some fixes
        - Add support for child devices
        - Add QMC dynamic timeslot support

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'kern-priv-shm-for-v6.8' of https://git.linaro.org/people/jens.wiklander...
Arnd Bergmann [Fri, 22 Dec 2023 10:44:16 +0000 (10:44 +0000)]
Merge tag 'kern-priv-shm-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers

OP-TEE kernel private shared memory optimizations

Optimize OP-TEE driver private shared memory allocated as dynamic shared
memory. Both to handle larger than one page allocations and for more
efficient memory usage.

* tag 'kern-priv-shm-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee:
  optee: allocate shared memory with alloc_pages_exact()
  optee: add page list to kernel private shared memory

Link: https://lore.kernel.org/r/20231211115815.GA616539@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'ffa-notif-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux...
Arnd Bergmann [Fri, 22 Dec 2023 10:43:18 +0000 (10:43 +0000)]
Merge tag 'ffa-notif-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers

OP-TEE: asynchronous notifications with FF-A

Add support for asynchronous notifications in the OP-TEE FF-A driver. This
is the FF-A counterpart to the asynchronous notifications already
available in the OP-TEE SMC ABI.

* tag 'ffa-notif-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee:
  optee: ffa_abi: add asynchronous notifications
  optee: provide optee_do_bottom_half() as a common function

Link: https://lore.kernel.org/r/20231211105249.GA587253@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'system-thread-for-v6.8' of https://git.linaro.org/people/jens.wiklander...
Arnd Bergmann [Fri, 22 Dec 2023 10:42:19 +0000 (10:42 +0000)]
Merge tag 'system-thread-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee into soc/drivers

OP-TEE add reserved system thread

Add support for a reserved system thread in the SMC-ABI of the OP-TEE driver.
SCMI with OP-TEE transport uses this to guarantee that it will always have
a thread available in the secure world.

* tag 'system-thread-for-v6.8' of https://git.linaro.org/people/jens.wiklander/linux-tee:
  firmware: arm_scmi: optee: use optee system invocation
  tee: optee: support tracking system threads
  tee: system session
  tee: optee: system thread call property

Link: https://lore.kernel.org/r/20231211102600.GA571787@rayden
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agoMerge tag 'hisi-drivers-for-6.8' of https://github.com/hisilicon/linux-hisi into...
Arnd Bergmann [Fri, 22 Dec 2023 10:41:36 +0000 (10:41 +0000)]
Merge tag 'hisi-drivers-for-6.8' of https://github.com/hisilicon/linux-hisi into soc/drivers

HiSilicon driver updates for v6.8

- Add support for the platform with PCC type3 and interrupt ack
- Few cleanups and improvements: correct the format of some strings and domain typo,
add failure log

* tag 'hisi-drivers-for-6.8' of https://github.com/hisilicon/linux-hisi:
  soc: hisilicon: kunpeng_hccs: Support the platform with PCC type3 and interrupt ack
  doc: kunpeng_hccs: Fix incorrect email domain name
  soc: hisilicon: kunpeng_hccs: Remove an unused blank line
  soc: hisilicon: kunpeng_hccs: Add failure log for no _CRS method
  soc: hisilicon: kunpeng_hccs: Fix some incorrect format strings

Link: https://lore.kernel.org/r/6572C41B.6050703@hisilicon.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
9 months agosoc: qcom: llcc: Fix LLCC_TRP_ATTR2_CFGn offset
Abel Vesa [Thu, 12 Oct 2023 16:05:09 +0000 (19:05 +0300)]
soc: qcom: llcc: Fix LLCC_TRP_ATTR2_CFGn offset

According to documentation, it has increments of 4, not 8.

Fixes: c72ca343f911 ("soc: qcom: llcc: Add v4.1 HW version support")
Reported-by: Unnathi Chalicheemala <quic_uchalich@quicinc.com>
Reviewed-by: Satya Durga Srinivasu Prabhala <quic_satyap@quicinc.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20231012160509.184891-1-abel.vesa@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agofirmware: qcom: qseecom: fix memory leaks in error paths
Bartosz Golaszewski [Mon, 27 Nov 2023 14:15:48 +0000 (15:15 +0100)]
firmware: qcom: qseecom: fix memory leaks in error paths

Fix instances of returning error codes directly instead of jumping to
the relevant labels where memory allocated for the SCM calls would be
freed.

Fixes: 759e7a2b62eb ("firmware: Add support for Qualcomm UEFI Secure Application")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Closes: https://lore.kernel.org/r/202311270828.k4HGcjiL-lkp@intel.com/
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com>
Tested-by: Deepti Jaggi <quic_djaggi@quicinc.com> #sa8775p-ride
Link: https://lore.kernel.org/r/20231127141600.20929-2-brgl@bgdev.pl
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: clock: google,gs101: rename CMU_TOP gate defines
Tudor Ambarus [Mon, 18 Dec 2023 06:43:33 +0000 (06:43 +0000)]
dt-bindings: clock: google,gs101: rename CMU_TOP gate defines

The gs101 clock defines from the bindings header are derived from the
clock register names found in the datasheet under some certain rules.

The CMU TOP gate clock defines missed to include the required "CMU"
differentiator which will cause collisions with the gate clock defines
of other clock units. Rename the TOP gate clock defines to include "CMU".

Update the clock driver to use the new defines in order to not break
compilation and bisect-ability. There are no device trees that use the
previous defines.

Fixes: 0a910f160638 ("dt-bindings: clock: Add Google gs101 clock management unit bindings")
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231218064333.479885-1-tudor.ambarus@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agosoc: qcom: llcc: Fix typo in kernel-doc
Ghanshyam Agrawal [Fri, 15 Dec 2023 07:07:07 +0000 (12:37 +0530)]
soc: qcom: llcc: Fix typo in kernel-doc

Fixed spelling of "descriptor".

Signed-off-by: Ghanshyam Agrawal <ghanshyam1898@gmail.com>
Link: https://lore.kernel.org/r/20231215070707.560350-1-ghanshyam1898@gmail.com
[bjorn: Rewrote commit message]
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: soc: qcom,aoss-qmp: document the X1E80100 Always-On Subsystem side channel
Abel Vesa [Thu, 14 Dec 2023 17:35:50 +0000 (19:35 +0200)]
dt-bindings: soc: qcom,aoss-qmp: document the X1E80100 Always-On Subsystem side channel

Document the Always-On Subsystem side channel on the X1E80100 Platform.

Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231214-x1e80100-soc-qcom-aoss-v1-1-94c46c5182fd@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agoMAINTAINERS: qcom: move Andy Gross to credits
Krzysztof Kozlowski [Mon, 11 Dec 2023 15:55:33 +0000 (16:55 +0100)]
MAINTAINERS: qcom: move Andy Gross to credits

Andy's last emails related to Qualcomm SoC ARM subarchitecture are from
November 2019, so move him to credits.  Stale maintainer entries hide
information whether subsystem needs help, has a bus-factor or is even
orphaned.

Link: https://lore.kernel.org/all/?q=f%3A%22Andy+Gross%22
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Andy Gross <agross@kernel.org>
Cc: Bjorn Andersson <andersson@kernel.org>
Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231211155533.106003-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_glink: drop stray semicolons
Johan Hovold [Fri, 8 Dec 2023 12:58:27 +0000 (13:58 +0100)]
soc: qcom: pmic_glink: drop stray semicolons

Drop stray semicolons after function definitions to avoid having this be
reproduced elsewhere.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20231208125827.10363-1-johan+linaro@kernel.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_glink: disable UCSI on sc8280xp
Johan Hovold [Fri, 8 Dec 2023 12:57:30 +0000 (13:57 +0100)]
soc: qcom: pmic_glink: disable UCSI on sc8280xp

Enabling UCSI on sc8280xp and the Lenovo ThinkPad X13s in particular
results in a number of errors and timeouts during boot:

[    9.012421] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: GET_CONNECTOR_STATUS failed (-95)
[   14.047379] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: timeout waiting for UCSI sync write response
[   14.050708] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: GET_CONNECTOR_STATUS failed (-110)
[   20.192382] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: timeout waiting for UCSI sync write response
[   20.192542] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: GET_CONNECTOR_STATUS failed (-110)

Disable UCSI on sc8280xp until this has been resolved.

Fixes: 4db09e7b967b ("soc: qcom: pmic_glink: enable UCSI by default)
Link: https://lore.kernel.org/r/ZXL5jvDHr-MuxMoz@hovoldconsulting.com
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20231208125730.10323-1-johan+linaro@kernel.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: llcc: Fix dis_cap_alloc and retain_on_pc configuration
Atul Dhudase [Wed, 6 Dec 2023 15:32:51 +0000 (21:02 +0530)]
soc: qcom: llcc: Fix dis_cap_alloc and retain_on_pc configuration

Commit c14e64b46944 ("soc: qcom: llcc: Support chipsets that can
 write to llcc") add the support for chipset where capacity based
allocation and retention through power collapse can be programmed
based on content of SCT table mentioned in the llcc driver where
the target like sdm845 where the entire programming related to it
is controlled in firmware. However, the commit introduces a bug
where capacity/retention register get overwritten each time it
gets programmed for each slice and that results in misconfiguration
of the register based on SCT table and that is not expected
behaviour instead it should be read modify write to retain the
configuration of other slices.

This issue is totally caught from code review and programming test
and not through any power/perf numbers so, it is not known what
impact this could make if we don't have this change however,
this feature are for these targets and they should have been
programmed accordingly as per their configuration mentioned in
SCT table like others bits information.

This change brings one difference where it keeps capacity/retention
bits of the slices that are not mentioned in SCT table in unknown
state where as earlier it was initialized to zero.

Fixes: c14e64b46944 ("soc: qcom: llcc: Support chipsets that can write to llcc")
Signed-off-by: Atul Dhudase <quic_adhudase@quicinc.com>
Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/1701876771-10695-1-git-send-email-quic_mojha@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_pdcharger_ulog: Fix hypothetical ulog request message endianess
Andrew Halaney [Tue, 5 Dec 2023 23:05:11 +0000 (17:05 -0600)]
soc: qcom: pmic_pdcharger_ulog: Fix hypothetical ulog request message endianess

Sparse reports the following:

    % ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make C=2 W=1 drivers/soc/qcom/pmic_pdcharger_ulog.o
    ...
      CC      drivers/soc/qcom/pmic_pdcharger_ulog.o
      CHECK   drivers/soc/qcom/pmic_pdcharger_ulog.c
    drivers/soc/qcom/pmic_pdcharger_ulog.c:57:34: warning: incorrect type in initializer (different base types)
    drivers/soc/qcom/pmic_pdcharger_ulog.c:57:34:    expected restricted __le32 [usertype] owner
    drivers/soc/qcom/pmic_pdcharger_ulog.c:57:34:    got int
    drivers/soc/qcom/pmic_pdcharger_ulog.c:58:33: warning: incorrect type in initializer (different base types)
    drivers/soc/qcom/pmic_pdcharger_ulog.c:58:33:    expected restricted __le32 [usertype] type
    drivers/soc/qcom/pmic_pdcharger_ulog.c:58:33:    got int
    drivers/soc/qcom/pmic_pdcharger_ulog.c:59:35: warning: incorrect type in initializer (different base types)
    drivers/soc/qcom/pmic_pdcharger_ulog.c:59:35:    expected restricted __le32 [usertype] opcode
    drivers/soc/qcom/pmic_pdcharger_ulog.c:59:35:    got int

Let's deal with endianness conversion in the rare case this ever runs
on a big-endian machine (and to quiet down sparse for this file).

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312060355.M0eJtq4X-lkp@intel.com/
Fixes: 086fdb48bc65 ("soc: qcom: add ADSP PDCharger ULOG driver")
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231205-pmicpdcharger-ulog-fixups-v1-3-71c95162cb84@redhat.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_pdcharger_ulog: Move TRACE_SYSTEM out of #if protection
Andrew Halaney [Tue, 5 Dec 2023 23:05:10 +0000 (17:05 -0600)]
soc: qcom: pmic_pdcharger_ulog: Move TRACE_SYSTEM out of #if protection

As specified in samples/trace_events/trace-events-sample.h:

    * Notice that TRACE_SYSTEM should be defined outside of #if
    * protection, just like TRACE_INCLUDE_FILE.

Fixes: 086fdb48bc65 ("soc: qcom: add ADSP PDCharger ULOG driver")
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231205-pmicpdcharger-ulog-fixups-v1-2-71c95162cb84@redhat.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_pdcharger_ulog: Search current directory for headers
Andrew Halaney [Tue, 5 Dec 2023 23:05:09 +0000 (17:05 -0600)]
soc: qcom: pmic_pdcharger_ulog: Search current directory for headers

As specified in samples/trace_events/Makefile:

    If you include a trace header outside of include/trace/events
    then the file that does the #define CREATE_TRACE_POINTS must
    have that tracer file in its main search path. This is because
    define_trace.h will include it, and must be able to find it from
    the include/trace directory.

Without this the following compilation error is seen:

      CC      drivers/soc/qcom/pmic_pdcharger_ulog.o
    In file included from drivers/soc/qcom/pmic_pdcharger_ulog.h:36,
                     from drivers/soc/qcom/pmic_pdcharger_ulog.c:15:
    ./include/trace/define_trace.h:95:42: fatal error: ./pmic_pdcharger_ulog.h: No such file or directory
       95 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
          |                                          ^
    compilation terminated.

Fixes: 086fdb48bc65 ("soc: qcom: add ADSP PDCharger ULOG driver")
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231205-pmicpdcharger-ulog-fixups-v1-1-71c95162cb84@redhat.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: socinfo: Add few DSPs to get their image details
Naman Jain [Tue, 5 Dec 2023 10:10:18 +0000 (15:40 +0530)]
soc: qcom: socinfo: Add few DSPs to get their image details

Add support to get image details from SMEM for DSPs like
DSPS (Sensors DSP), CDSP (Compute DSP), GPDSP (General purpose DSP)
while also supporting this for more than one DSP of certain types.

Signed-off-by: Naman Jain <quic_namajain@quicinc.com>
Link: https://lore.kernel.org/r/20231205101018.6079-1-quic_namajain@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: llcc: Add missing description for members in slice config
Abel Vesa [Tue, 5 Dec 2023 08:10:29 +0000 (10:10 +0200)]
soc: qcom: llcc: Add missing description for members in slice config

Fix all warnings thrown due to missing description for some of the
members in llcc_slice_config.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312050519.mup4Q8mD-lkp@intel.com/
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20231205-llcc-fix-slice-config-warnings-v1-1-d6331d601dd3@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agoRevert "soc: qcom: stats: Add DDR sleep stats"
Konrad Dybcio [Thu, 14 Dec 2023 12:25:15 +0000 (13:25 +0100)]
Revert "soc: qcom: stats: Add DDR sleep stats"

After recent reports ([1], [2]) of older platforms (particularly 8150 and
7180) breaking after DDR sleep stats introduction, revert the following:

Commit 73380e2573c3 ("soc: qcom: stats: fix 64-bit division")
Commit e84e61bdb97c ("soc: qcom: stats: Add DDR sleep stats")

The feature itself is rather useful for debugging DRAM power management,
however it looks like the shared RPMh stats data structures differ on
previous SoCs.

Revert its addition for now to un-break booting on these earlier SoCs,
while I try to come up with a better way to enable it conditionally.

[1] https://lore.kernel.org/linux-arm-msm/20231209215601.3543895-2-dmitry.baryshkov@linaro.org/
[2] https://lore.kernel.org/linux-arm-msm/CAD=FV=XX4wLg1NNVL15RK4D4tLvuSzZyUv=k_tS4bSb3=7QJzQ@mail.gmail.com/

Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reported-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20231214-topic-undo_ddr_stats-v1-1-1fe32c258e56@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agowatchdog: s3c2410_wdt: Add support for Google gs101 SoC
Peter Griffin [Mon, 11 Dec 2023 16:23:27 +0000 (16:23 +0000)]
watchdog: s3c2410_wdt: Add support for Google gs101 SoC

This patch adds the compatibles and drvdata for the Google
gs101 SoC found in Pixel 6, Pixel 6a & Pixel 6 pro phones.

Similar to Exynos850 it has two watchdog instances, one for
each cluster and has some control bits in PMU registers.

gs101 also has the dbgack_mask bit in wtcon register, so
we also enable QUIRK_HAS_DBGACK_BIT.

Tested-by: Will McVicker <willmcvicker@google.com>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20231211162331.435900-13-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agowatchdog: s3c2410_wdt: Update QUIRK macros to use BIT macro
Peter Griffin [Mon, 11 Dec 2023 16:23:26 +0000 (16:23 +0000)]
watchdog: s3c2410_wdt: Update QUIRK macros to use BIT macro

Update the remaining QUIRK macros to use the BIT macro.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-12-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agowatchdog: s3c2410_wdt: Add support for WTCON register DBGACK_MASK bit
Peter Griffin [Mon, 11 Dec 2023 16:23:25 +0000 (16:23 +0000)]
watchdog: s3c2410_wdt: Add support for WTCON register DBGACK_MASK bit

The WDT uses the CPU core signal DBGACK to determine whether the SoC
is running in debug mode or not. If the DBGACK signal is asserted and
DBGACK_MASK bit is enabled, then WDT output and interrupt is masked
(disabled).

Presence of the DBGACK_MASK bit is determined by adding a new
QUIRK_HAS_DBGACK_BIT quirk. Also update to use BIT macro to avoid
checkpatch --strict warnings.

Tested-by: Will McVicker <willmcvicker@google.com>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-11-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agosoc: renesas: Make RZ/Five depend on !DMA_DIRECT_REMAP
Conor Dooley [Mon, 11 Dec 2023 22:06:36 +0000 (22:06 +0000)]
soc: renesas: Make RZ/Five depend on !DMA_DIRECT_REMAP

Randy reported yet another build issue with randconfigs on rv32:
WARNING: unmet direct dependencies detected for DMA_GLOBAL_POOL
  Depends on [n]: !ARCH_HAS_DMA_SET_UNCACHED [=n] && !DMA_DIRECT_REMAP [=y]
  Selected by [y]:
  - ARCH_R9A07G043 [=y] && SOC_RENESAS [=y] && RISCV [=y] && NONPORTABLE [=y] && RISCV_ALTERNATIVE [=y] && !RISCV_ISA_ZICBOM [=n] && RISCV_SBI [=y]

This happens when DMA_DIRECT_REMAP is selected by the T-Head CMO erratum
option and DMA_GLOBAL_POOL is selected by the Andes CMO erratum. Block
selecting the RZ/Five config option, and by extension DMA_GLOBAL_POOL,
if DMA_DIRECT_REMAP has already been enabled.

Reported-by: Randy Dunlap <rdunlap@infradead.org>
Closes: https://lore.kernel.org/all/24942b4d-d16a-463f-b39a-f9dfcb89d742@infradead.org/
Tested-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231211-primate-arbitrate-fbcd307a0b00@spud
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agosoc: renesas: Remove duplicate setup of soc_device_attribute.family
Geert Uytterhoeven [Mon, 4 Dec 2023 13:32:03 +0000 (14:32 +0100)]
soc: renesas: Remove duplicate setup of soc_device_attribute.family

As of commit 3f84aa5ec052dba9 ("base: soc: populate machine name in
soc_device_register if empty") in v6.4, soc_device_register() fills in
soc_device_attribute.family when it is still empty.  Hence the identical
code in renesas_soc_init() doing the same can be removed.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/4c5e4d0d1819028466748ed684254fec41aae816.1701696627.git.geert+renesas@glider.be
9 months agosoc: xilinx: Add error message for invalid payload received from IPI callback.
Naman Trivedi Manojbhai [Thu, 7 Dec 2023 15:24:08 +0000 (16:24 +0100)]
soc: xilinx: Add error message for invalid payload received from IPI callback.

payload[0] of response buffer of zynqmp_pm_get_callback_data()
contains valid payload or error code in case of error.

Added error message to inform user about the error code received in
payload[0].

Signed-off-by: Naman Trivedi Manojbhai <naman.trivedimanojbhai@amd.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/85749bde3e71148533d31ea2092f4514ec347768.1701962639.git.michal.simek@amd.com
9 months agosoc: ti: k3-socinfo: Add JTAG ID for J722S
Vaishnav Achath [Mon, 11 Dec 2023 13:26:00 +0000 (18:56 +0530)]
soc: ti: k3-socinfo: Add JTAG ID for J722S

Add JTAG ID info for the J722S SoC family to enable SoC detection.

More details about this SoC can be found in the TRM:
https://www.ti.com/lit/zip/sprujb3

Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20231211132600.25289-1-vaishnav.a@ti.com
Signed-off-by: Nishanth Menon <nm@ti.com>
9 months agotty: serial: samsung: Add gs101 compatible and common fifoszdt_serial_drv_data
Peter Griffin [Mon, 11 Dec 2023 16:23:28 +0000 (16:23 +0000)]
tty: serial: samsung: Add gs101 compatible and common fifoszdt_serial_drv_data

Add serial driver data for Google Tensor gs101 SoC and a common
fifoszdt_serial_drv_data that can be used by platforms that specify the
samsung,uart-fifosize DT property.

A corresponding dt-bindings patch updates the yaml to ensure
samsung,uart-fifosize is a required property.

Tested-by: Will McVicker <willmcvicker@google.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-14-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agoclk: samsung: clk-gs101: Add cmu_top, cmu_misc and cmu_apm support
Peter Griffin [Mon, 11 Dec 2023 16:23:23 +0000 (16:23 +0000)]
clk: samsung: clk-gs101: Add cmu_top, cmu_misc and cmu_apm support

cmu_top is the top level clock management unit which contains PLLs, muxes,
dividers and gates that feed the other clock management units.

cmu_misc clocks IPs such as Watchdog and cmu_apm clocks ips part of the
APM module.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: André Draszik <andre.draszik@linaro.org>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Will McVicker <willmcvicker@google.com>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-9-peter.griffin@linaro.org
[krzysztof: drop not needed linux/of_device.h include]
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agoclk: samsung: clk-pll: Add support for pll_{0516,0517,518}
Peter Griffin [Mon, 11 Dec 2023 16:23:22 +0000 (16:23 +0000)]
clk: samsung: clk-pll: Add support for pll_{0516,0517,518}

These plls are found in the Tensor gs101 SoC found in the Pixel 6.

pll0516x: Integer PLL with high frequency
pll0517x: Integer PLL with middle frequency
pll0518x: Integer PLL with low frequency

PLL0516x
FOUT = (MDIV * 2 * FIN)/PDIV * 2^SDIV)

PLL0517x and PLL0518x
FOUT = (MDIV * FIN)/PDIV*2^SDIV)

The PLLs are similar enough to pll_0822x that the same code can handle
both. The main difference is the change in the fout formula for the
high frequency 0516 pll.

Locktime for 516,517 & 518 is 150 the same as the pll_0822x lock factor.
MDIV, SDIV PDIV masks and bit shifts are also the same as 0822x.

When defining the PLL the "con" parameter should be set to CON3
register, like this

PLL(pll_0517x, CLK_FOUT_SHARED0_PLL, "fout_shared0_pll", "oscclk",
    PLL_LOCKTIME_PLL_SHARED0, PLL_CON3_PLL_SHARED0,
    NULL),

Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Will McVicker <willmcvicker@google.com>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-8-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agoMerge tag 'samsung-dt-bindings-refactoring-and-google-gs101-6.8' into next/drivers
Krzysztof Kozlowski [Tue, 12 Dec 2023 19:27:59 +0000 (20:27 +0100)]
Merge tag 'samsung-dt-bindings-refactoring-and-google-gs101-6.8' into next/drivers

Samsung Devicetree bindings topic branch for v6.8

Topic branch collecting several changes to Samsung SoC Devicetree
bindings:

1. Add specific compatibles to all Samsung Exynos and Tesla FSD blocks,
   because that's what guidelines expect [1] and is generally
   recommended practice.  Existing compatibles are left untouched, thus
   no driver changes are needed.  The work only cleans things up, so any
   future contributions will use recommended style: specific and
   fallback compatibles.

2. Add bindings for new devices: Samsung ExynosAutov920 and Google
   GS101.

These bindings are needed for both DTS and drivers, e.g. clock drivers.

9 months agodt-bindings: clock: google,gs101: fix incorrect numbering and DGB suffix
Peter Griffin [Mon, 11 Dec 2023 16:23:21 +0000 (16:23 +0000)]
dt-bindings: clock: google,gs101: fix incorrect numbering and DGB suffix

166 was skipped by mistake and two clocks:
* CLK_MOUT_CMU_HSI0_USBDPDGB
* CLK_GOUT_HSI0_USBDPDGB

Have an incorrect DGB ending instead of DBG.

This is an ABI break, but as the patch was only applied yesterday this
header has never been in an actual release so it seems better to fix
this early than ignore it.

Fixes: 0a910f160638 ("dt-bindings: clock: Add Google gs101 clock management unit bindings")
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: André Draszik <andre.draszik@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-7-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: soc: samsung: usi: add google,gs101-usi compatible
Tudor Ambarus [Mon, 11 Dec 2023 16:23:20 +0000 (16:23 +0000)]
dt-bindings: soc: samsung: usi: add google,gs101-usi compatible

Add google,gs101-usi dedicated compatible for representing USI of Google
GS101 SoC.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-6-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: serial: samsung: Make samsung,uart-fifosize a required property
Peter Griffin [Mon, 11 Dec 2023 16:23:19 +0000 (16:23 +0000)]
dt-bindings: serial: samsung: Make samsung,uart-fifosize a required property

Specifying samsung,uart-fifosize in both DT and driver static data is error
prone and relies on driver probe order and dt aliases to be correct.

Additionally on many Exynos platforms these are (USI) universal serial
interfaces which can be uart, spi or i2c, so it can change per board.

For google,gs101-uart make samsung,uart-fifosize a required property.
For this platform fifosize now *only* comes from DT.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-5-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: serial: samsung: Add google-gs101-uart compatible
Peter Griffin [Mon, 11 Dec 2023 16:23:18 +0000 (16:23 +0000)]
dt-bindings: serial: samsung: Add google-gs101-uart compatible

Add dedicated google-gs101-uart compatible to the dt-schema for
representing uart of the Google Tensor gs101 SoC.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-4-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: watchdog: Document Google gs101 watchdog bindings
Peter Griffin [Mon, 11 Dec 2023 16:23:16 +0000 (16:23 +0000)]
dt-bindings: watchdog: Document Google gs101 watchdog bindings

Add the "google,gs101-wdt" compatible to the dt-schema documentation.

gs101 SoC has two CPU clusters and each cluster has its own dedicated
watchdog timer (similar to exynos850 and exynosautov9 SoCs).

These WDT instances are controlled using different bits in PMU
registers.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-2-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agosoc: fsl: cpm1: qmc: Introduce functions to change timeslots at runtime
Herve Codina [Tue, 5 Dec 2023 15:21:14 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Introduce functions to change timeslots at runtime

Introduce qmc_chan_{get,set}_ts_info() function to allow timeslots
modification at runtime.

The modification is provided using qmc_chan_set_ts_info() and will be
applied on next qmc_chan_start().
qmc_chan_set_ts_info() must be called with the channel rx and/or tx
stopped.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-18-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan()
Herve Codina [Tue, 5 Dec 2023 15:21:13 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Remove timeslots handling from setup_chan()

Timeslots setting is done at channel start() and stop().
There is no more need to do that during setup_chan().

Simply remove timeslot setting from setup_chan().

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-17-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and stop()
Herve Codina [Tue, 5 Dec 2023 15:21:12 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Handle timeslot entries at channel start() and stop()

In order to support runtime timeslot route changes, enable the
channel timeslot entries at channel start() and disable them at
channel stop().

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-16-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag
Herve Codina [Tue, 5 Dec 2023 15:21:11 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Introduce is_tsa_64rxtx flag

In order to support runtime timeslot route changes, some operations will
be different according the routing table used (common Rx and Tx table or
one table for Rx and one for Tx).

The is_tsa_64rxtx flag is introduced to avoid extra computation to
determine the table format each time we need it.
It is set once at initialization.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-15-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup
Herve Codina [Tue, 5 Dec 2023 15:21:10 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Split Tx and Rx TSA entries setup

The Tx and Rx entries for a given channel are set in one function.

In order to modify Rx entries and Tx entries independently of one other,
split this function in one for the Rx part and one for the Tx part.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-14-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Add support for disabling channel TSA entries
Herve Codina [Tue, 5 Dec 2023 15:21:09 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Add support for disabling channel TSA entries

In order to allow runtime timeslot route changes, disabling channel TSA
entries needs to be supported.

Add support for this new feature.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-13-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans()
Herve Codina [Tue, 5 Dec 2023 15:21:08 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Check available timeslots in qmc_check_chans()

The timeslots checked in qmc_check_chans() are the timeslots used.
With the introduction of the available timeslots, the used timeslots
are a subset of the available timeslots. The timeslots checked during
the qmc_check_chans() call should be the available ones.

Simply update and check the available timeslots instead of the used
timeslots in qmc_check_chans().

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-12-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Remove no more needed checks from qmc_check_chans()
Herve Codina [Tue, 5 Dec 2023 15:21:07 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Remove no more needed checks from qmc_check_chans()

The newly introduced qmc_chan_setup_tsa* functions check that the
channel entries are not already used.
These checks are also performed by qmc_check_chans() and are no more
needed.

Remove them from qmc_check_chans().

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-11-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa*
Herve Codina [Tue, 5 Dec 2023 15:21:06 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Introduce qmc_chan_setup_tsa*

Introduce the qmc_chan_setup_tsa* functions to setup entries related
to the given channel.
Use them during QMC channels setup.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-10-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa*
Herve Codina [Tue, 5 Dec 2023 15:21:05 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Rename qmc_setup_tsa* to qmc_init_tsa*

qmc_setup_tsa* are called once at initialisation.
They initialize the QMC TSA table.
In order to introduce setup function later on for dynamic timeslots
management, rename the function to avoid later confusion.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-9-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Introduce available timeslots masks
Herve Codina [Tue, 5 Dec 2023 15:21:04 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Introduce available timeslots masks

Available timeslots masks define timeslots available for the related
channel. These timeslots are defined by the QMC binding.

Timeslots used are initialized to available timeslots but can be a
subset of available timeslots.
This prepares the dynamic timeslots management (ie. changing timeslots
at runtime).

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-8-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Add support for child devices
Herve Codina [Tue, 5 Dec 2023 15:21:03 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Add support for child devices

QMC child devices support is needed to avoid orphan DT nodes that use a
simple DT phandle to reference a QMC channel.

Allow to instantiate child devices and also extend the API to get the
qmc_chan using a child device.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Link: https://lore.kernel.org/r/20231205152116.122512-7-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Remove inline function specifiers
Herve Codina [Tue, 5 Dec 2023 15:21:02 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Remove inline function specifiers

The inline function specifier is present on some functions but it is
better to let the compiler decide inlining or not these functions.

Remove inline specifiers.

Fixes: 3178d58e0b97 ("soc: fsl: cpm1: Add support for QMC")
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Suggested-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-6-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Extend the API to provide Rx status
Herve Codina [Tue, 5 Dec 2023 15:21:01 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Extend the API to provide Rx status

In HDLC mode, some status flags related to the data read transfer can be
set by the hardware and need to be known by a QMC consumer for further
analysis.

Extend the API in order to provide these transfer status flags at the
read complete() call.

In TRANSPARENT mode, these flags have no meaning. Keep only one read
complete() API and update the consumers working in transparent mode.
In this case, the newly introduced flags parameter is simply unused.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-5-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Fix rx channel reset
Herve Codina [Tue, 5 Dec 2023 15:21:00 +0000 (16:21 +0100)]
soc: fsl: cpm1: qmc: Fix rx channel reset

The qmc_chan_reset_rx() set the is_rx_stopped flag. This leads to an
inconsistent state in the following sequence.
    qmc_chan_stop()
    qmc_chan_reset()
Indeed, after the qmc_chan_reset() call, the channel must still be
stopped. Only a qmc_chan_start() call can move the channel from stopped
state to started state.

Fix the issue removing the is_rx_stopped flag setting from
qmc_chan_reset()

Fixes: 3178d58e0b97 ("soc: fsl: cpm1: Add support for QMC")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-4-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: qmc: Fix __iomem addresses declaration
Herve Codina [Tue, 5 Dec 2023 15:20:59 +0000 (16:20 +0100)]
soc: fsl: cpm1: qmc: Fix __iomem addresses declaration

Running sparse (make C=1) on qmc.c raises a lot of warning such as:
  ...
  warning: incorrect type in assignment (different address spaces)
     expected struct cpm_buf_desc [usertype] *[noderef] __iomem bd
     got struct cpm_buf_desc [noderef] [usertype] __iomem *txbd_free
  ...

Indeed, some variable were declared 'type *__iomem var' instead of
'type __iomem *var'.

Use the correct declaration to remove these warnings.

Fixes: 3178d58e0b97 ("soc: fsl: cpm1: Add support for QMC")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-3-herve.codina@bootlin.com
9 months agosoc: fsl: cpm1: tsa: Fix __iomem addresses declaration
Herve Codina [Tue, 5 Dec 2023 15:20:58 +0000 (16:20 +0100)]
soc: fsl: cpm1: tsa: Fix __iomem addresses declaration

Running sparse (make C=1) on tsa.c raises a lot of warning such as:
  --- 8< ---
  warning: incorrect type in assignment (different address spaces)
     expected void *[noderef] si_regs
     got void [noderef] __iomem *
  --- 8< ---

Indeed, some variable were declared 'type *__iomem var' instead of
'type __iomem *var'.

Use the correct declaration to remove these warnings.

Fixes: 1d4ba0b81c1c ("soc: fsl: cpm1: Add support for TSA")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312051959.9YdRIYbg-lkp@intel.com/
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-2-herve.codina@bootlin.com
9 months agosoc: mediatek: mtk-svs: Constify runtime-immutable members of svs_bank
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:42 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Constify runtime-immutable members of svs_bank

Some members of struct svs_bank are not changed during runtime, so those
are not variables but constants: move all of those to a new structure
called svs_bank_pdata and refactor the code to make use of that and
reorder members by size where possible.
This effectively moves at least 50 bytes to the text segment.
While at it, also uniform the thermal zone names across the banks.

Link: https://lore.kernel.org/r/20231121125044.78642-19-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Use ULONG_MAX to compare floor frequency
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:41 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Use ULONG_MAX to compare floor frequency

The `freq` variable is of type unsigned long and, even though it does
currently work with u32 because no frequency is higher than U32_MAX,
it is not guaranteed that in the future we will see one.
Initialize the freq variable with ULONG_MAX instead of U32_MAX.

Link: https://lore.kernel.org/r/20231121125044.78642-18-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Check if SVS mode is available in the beginning
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:40 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Check if SVS mode is available in the beginning

The svs_init01() and svs_init02() functions are already checking if the
INIT01 and INIT02 modes are available - but that's done in for loops and
for each SVS bank.

Give those a shortcut to get out early if no SVS bank features the
desired init mode: this is especially done to avoid some locking in
the svs_init01(), but also to avoid multiple for loops to check the
same, when no bank supports a specific mode.

Link: https://lore.kernel.org/r/20231121125044.78642-17-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Cleanup of svs_probe() function
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:39 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Cleanup of svs_probe() function

Cleanup the svs_probe() function: use dev_err_probe() where possible,
change some efuse read failure gotos and then remove now impossible
IS_ERR_OR_NULL() checks (as they will never return true) for nvmem
(efuse read) failures.
Also remove some unnecessary blank lines.

Link: https://lore.kernel.org/r/20231121125044.78642-16-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Compress of_device_id entries
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:38 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Compress of_device_id entries

Compress each entry to one line, as they fit in 84 columns, which
is acceptable.
While at it, also change the capital 'S' to 's' in 'sentinel'.

Link: https://lore.kernel.org/r/20231121125044.78642-15-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Remove redundant print in svs_get_efuse_data
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:37 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Remove redundant print in svs_get_efuse_data

Callers of svs_get_efuse_data() are already printing an error in case
anything goes wrong, and the error print for nvmem_cell_read() failure
is redundant: remove it.

Link: https://lore.kernel.org/r/20231121125044.78642-14-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Commonize MT8192 probe function for MT8186
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:36 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Commonize MT8192 probe function for MT8186

Include the additions of svs_mt8186_platform_probe() in the common
svs_mt8192_platform_probe() function, remove the former, and use the
latter as .probe() callback for MT8186.

Link: https://lore.kernel.org/r/20231121125044.78642-13-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Drop supplementary svs per-bank pointer
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:35 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Drop supplementary svs per-bank pointer

Drop the "pbank" pointer from struct svs_bank: this was used to simply
pass a pointer to the SVS bank that the flow was working on.
That for instance needs more locking, and it's avoidable by adding one
more parameter to functions working on specific banks, either a bank
index number, or passing the svs_bank pointer directly from the caller.

Even if the locking can now be reduced, for now, it was still left in
place for the sake of making sure to not introduce any stability and/or
reliability regression.

Link: https://lore.kernel.org/r/20231121125044.78642-12-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Commonize efuse parse function for most SoCs
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:34 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Commonize efuse parse function for most SoCs

Remove almost all of the per-SoC .efuse_parsing() callbacks and replace
them with one common callback svs_common_parse_efuse(): to do that, also
change the function signature of the callback to add the newly required
pointer to struct svs_platform_data, containing the SVS-global fuse map.

This is done for MT8186, MT8188, MT8192, MT8195.

As for MT8183, the efuse parse function was simplified by using the new
fuse maps.

Link: https://lore.kernel.org/r/20231121125044.78642-11-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Move t-calibration-data retrieval to svs_probe()
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:33 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Move t-calibration-data retrieval to svs_probe()

The t-calibration-data (SVS-Thermal calibration data) shall exist for
all SoCs or SVS won't work anyway: move it to the common svs_probe()
function and remove it from all of the per-SoC efuse_parsing() probe
callbacks.

Link: https://lore.kernel.org/r/20231121125044.78642-10-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Add SVS-Thermal coefficient to SoC platform data
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:32 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Add SVS-Thermal coefficient to SoC platform data

In preparation for commonizing the efuse parsing function, add the
SVS-Thermal coefficients for all SoCs for which said function can be
commonized (MT8186, MT8188, MT8192, MT8195) and assign those to their
platform data structure.
That will be used to calculate the MTS parameter with the equation
                     MTS = (ts_coeff * 2) / 1000

This commit brings no functional changes.

Link: https://lore.kernel.org/r/20231121125044.78642-9-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Add a map to retrieve fused values
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:31 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Add a map to retrieve fused values

In preparation for adding a common efuse parsing function which will
greatly reduce code duplication, add a SoC-specific mapping that will
be used to retrieve the right SVS calibration values from the fuses.
The maps are two: one is a Global Map used for reading parameters that
are SVS-global, and one is a Bank Map for reading calibrations for
each SVS Bank.

While at it, also populate the map in the platform data for each SoC.

Being this a preparation commit, there are no functional changes.

Link: https://lore.kernel.org/r/20231121125044.78642-8-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Change the thermal sensor device name
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:30 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Change the thermal sensor device name

This driver tries to create a device link to the thermal sensor device:
change all instances of "lvts" and "thermal" to "thermal-sensor", as
that's what the devicetree node name must be.

Note for MT8183: As specified in a previous commit, this SoC never got
SVS probing, so this is not a breaking change and it does not require
fallback for older device trees.

Link: https://lore.kernel.org/r/20231121125044.78642-7-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Reduce memory footprint of struct svs_bank
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:29 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Reduce memory footprint of struct svs_bank

Many 32-bit members of this struct can be size reduced to either 16-bit
or even 8-bit, for a total saving of ~61 bytes per bank. Keeping in mind
that one SoC declares at least two banks, this brings a minimum of ~122
bytes saving (depending on compiler optimization).

Link: https://lore.kernel.org/r/20231121125044.78642-6-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Build bank name string dynamically
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:28 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Build bank name string dynamically

In svs_bank_resource_setup() there is a "big" switch assigning different
names depending on sw_id and type and this will surely grow: for example
MT8186 has got a two-line type (high/low) SVS bank for CPU_BIG, and this
would require more switch nesting.

Simplify all of this by changing that to a devm_kasprintf() call that
will concatenate the SW_ID string (e.g. SVSB_CPU_LITTLE) with the Type
string (e.g. _LOW), resulting in the expected full bank name (e.g.
SVSB_CPU_LITTLE_LOW).

This being a dynamic allocation can be slower, but this happens only
once in the life of this driver and it's not a performance path, so it's
totally acceptable.

Link: https://lore.kernel.org/r/20231121125044.78642-5-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Convert sw_id and type to enumerations
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:27 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Convert sw_id and type to enumerations

The sw_id and type specifiers currently are defined as BIT(x) for
unknown reasons: nothing in this code makes any AND/OR check for
those, and that would never happen anyway because both sw_id and
type are exclusive, as in:
 - There will never be a bank that is for both CPU and GPU, or
   for CPU and CCI together;
 - A bank cannot be contemporarily of one-line and two-line type,
   as much as it cannot contemporarily have both HIGH and LOW roles

Change those definitions to enumerations and also add some kerneldoc
to better describe what they are for and what they indicate.

While at it, also change the names adding _SWID or _TYPE to increase
human readability.

Link: https://lore.kernel.org/r/20231121125044.78642-4-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mtk-svs: Subtract offset from regs_v2 to avoid conflict
AngeloGioacchino Del Regno [Tue, 21 Nov 2023 12:50:26 +0000 (13:50 +0100)]
soc: mediatek: mtk-svs: Subtract offset from regs_v2 to avoid conflict

The svs_regs_v2 array of registers was offsetted by 0xc00 because the
SVS node was supposed to have the same iostart as the thermal sensors.
That's wrong for two reasons:
 1. Two different devices cannot have the same iostart in devicetree,
    as those would technically be the same device otherwise; and
 2. SVS and Thermal Sensor (be it LVTS or AUXADC thermal) are not the
    same IP, and those two do obviously have a different iospace.

Even though there already are users of this register array, the only
one that declares a devicetree node for SVS is MT8183 - but it never
actually worked because the "tzts1" thermal zone missed thermal trips,
hence this driver's probe always failed on that SoC.

Knowing this - it is safe to say that keeping compatibility with older
device trees is pointless, hence simply subtract the 0xc00 offset from
the register offset array.

Link: https://lore.kernel.org/r/20231121125044.78642-3-angelogioacchino.delregno@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: Add MT8188 VDOSYS reset bit map
Hsiao Chien Sung [Tue, 24 Oct 2023 13:00:35 +0000 (21:00 +0800)]
soc: mediatek: Add MT8188 VDOSYS reset bit map

Add MT8188 reset bit map for VDOSYS0 and VDOSYS1.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: Support reset bit mapping in mmsys driver
Hsiao Chien Sung [Tue, 24 Oct 2023 13:00:34 +0000 (21:00 +0800)]
soc: mediatek: Support reset bit mapping in mmsys driver

- Reset ID must starts from 0 and be consecutive, but
  the reset bits in our hardware design is not continuous,
  some bits are left unused, we need a map to solve the problem
- Use old style 1-to-1 mapping if .rst_tb is not defined

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: Support MT8188 VDOSYS1 Padding in mtk-mmsys
Hsiao Chien Sung [Tue, 24 Oct 2023 13:00:33 +0000 (21:00 +0800)]
soc: mediatek: Support MT8188 VDOSYS1 Padding in mtk-mmsys

- Add Padding components
- Add Mutex module definitions for Padding

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: Support MT8188 VDOSYS1 in mtk-mmsys
Hsiao Chien Sung [Tue, 24 Oct 2023 13:00:32 +0000 (21:00 +0800)]
soc: mediatek: Support MT8188 VDOSYS1 in mtk-mmsys

- Add register definitions for MT8188
- Add VDOSYS1 routing table
- Update MUTEX definitions accordingly
- Set VSYNC length from 0x40 (default) to 1 since ETHDR is bypassed

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: mmsys: Add support for MT8188 VPPSYS
yu-chang.lee [Fri, 17 Nov 2023 05:43:45 +0000 (13:43 +0800)]
soc: mediatek: mmsys: Add support for MT8188 VPPSYS

Add MT8188 VPPSYS0 and VPPSYS1 driver data.

Signed-off-by: yu-chang.lee <yu-chang.lee@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: svs: Add support for MT8186 SoC
Mark Tseng [Thu, 16 Nov 2023 11:04:46 +0000 (19:04 +0800)]
soc: mediatek: svs: Add support for MT8186 SoC

MT8186 svs has a number of banks which used as optimization of opp
voltage table for corresponding dvfs drivers.
MT8186 svs big core uses 2-line high bank and low bank to optimize the
voltage of opp table for higher and lower frequency respectively.

Signed-off-by: Mark Tseng <chun-jen.tseng@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agosoc: mediatek: svs: Add support for MT8195 SoC
Mark Tseng [Thu, 16 Nov 2023 11:04:45 +0000 (19:04 +0800)]
soc: mediatek: svs: Add support for MT8195 SoC

MT8195 svs gpu uses 2-line high bank and low bank to optimize the
voltage of opp table for higher and lower frequency respectively.

Signed-off-by: Mark Tseng <chun-jen.tseng@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
9 months agodt-bindings: samsung: exynos-sysreg: combine exynosautov920 with other enum
Krzysztof Kozlowski [Sun, 10 Dec 2023 13:48:34 +0000 (14:48 +0100)]
dt-bindings: samsung: exynos-sysreg: combine exynosautov920 with other enum

No need to create a new enum every time we bring-up new SoC.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Jaewon Kim <jaewon02.kim@samsung.com>
Link: https://lore.kernel.org/r/20231210134834.43943-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: soc: google: exynos-sysreg: add dedicated SYSREG compatibles to GS101
Peter Griffin [Sat, 9 Dec 2023 23:30:49 +0000 (23:30 +0000)]
dt-bindings: soc: google: exynos-sysreg: add dedicated SYSREG compatibles to GS101

GS101 has three different SYSREG controllers, add dedicated
compatibles for them to the documentation.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231209233106.147416-4-peter.griffin@linaro.org
[krzysztof: move Google entries to existing enum]
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: clock: Add Google gs101 clock management unit bindings
Peter Griffin [Sat, 9 Dec 2023 23:30:48 +0000 (23:30 +0000)]
dt-bindings: clock: Add Google gs101 clock management unit bindings

Provide dt-schema documentation for Google gs101 SoC clock controller.
Currently this adds support for cmu_top, cmu_misc and cmu_apm.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231209233106.147416-3-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: soc: samsung: exynos-pmu: Add gs101 compatible
Peter Griffin [Sat, 9 Dec 2023 23:30:47 +0000 (23:30 +0000)]
dt-bindings: soc: samsung: exynos-pmu: Add gs101 compatible

Add gs101-pmu compatible to the bindings documentation.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231209233106.147416-2-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: firmware: qcom,scm: Allow interconnect for everyone
Konrad Dybcio [Wed, 29 Nov 2023 14:44:01 +0000 (15:44 +0100)]
dt-bindings: firmware: qcom,scm: Allow interconnect for everyone

Every Qualcomm SoC physically has a "CRYPTO0<->DDR" interconnect lane.
Allow this property to be present, no matter the SoC.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20231125-topic-rb1_feat-v3-4-4cbb567743bb@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: firmware: qcom,scm: document SCM on X1E80100 SoCs
Sibi Sankar [Fri, 24 Nov 2023 10:06:07 +0000 (15:36 +0530)]
dt-bindings: firmware: qcom,scm: document SCM on X1E80100 SoCs

Document scm compatible for X1E80100 SoCs.

Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
Reviewed-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231124100608.29964-5-quic_sibis@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: socinfo: Add PM8937 Power IC
Dang Huynh [Tue, 21 Nov 2023 05:35:02 +0000 (12:35 +0700)]
soc: qcom: socinfo: Add PM8937 Power IC

The PM8917 and PM8937 uses the same SUBTYPE ID.

The PM8937 is found in boards with MSM8917, MSM8937 and MSM8940
and APQ variants.

Signed-off-by: Dang Huynh <danct12@riseup.net>
Link: https://lore.kernel.org/r/20231121-pm8937-v2-4-b0171ab62075@riseup.net
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: llcc: Add configuration data for X1E80100
Rajendra Nayak [Fri, 17 Nov 2023 09:53:15 +0000 (15:23 +0530)]
soc: qcom: llcc: Add configuration data for X1E80100

Add LLCC configuration data for X1E80100 SoC.

Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
Co-developed-by: Sibi Sankar <quic_sibis@quicinc.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Link: https://lore.kernel.org/r/20231117095315.2087-3-quic_sibis@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: cache: qcom,llcc: Add X1E80100 compatible
Rajendra Nayak [Fri, 17 Nov 2023 09:53:14 +0000 (15:23 +0530)]
dt-bindings: cache: qcom,llcc: Add X1E80100 compatible

Add the compatible for X1E80100 platforms.

Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
Co-developed-by: Sibi Sankar <quic_sibis@quicinc.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231117095315.2087-2-quic_sibis@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_glink_altmode: fix port sanity check
Johan Hovold [Thu, 9 Nov 2023 09:31:00 +0000 (10:31 +0100)]
soc: qcom: pmic_glink_altmode: fix port sanity check

The PMIC GLINK altmode driver currently supports at most two ports.

Fix the incomplete port sanity check on notifications to avoid
accessing and corrupting memory beyond the port array if we ever get a
notification for an unsupported port.

Fixes: 080b4e24852b ("soc: qcom: pmic_glink: Introduce altmode support")
Cc: stable@vger.kernel.org # 6.3
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20231109093100.19971-1-johan+linaro@kernel.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: llcc: Add configuration data for SM8650
Neil Armstrong [Mon, 30 Oct 2023 09:45:15 +0000 (10:45 +0100)]
soc: qcom: llcc: Add configuration data for SM8650

Add Last Level Cache Controller support for the SM8650 platform.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231030-topic-sm8650-upstream-llcc-v2-2-f281cec608e2@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: cache: qcom,llcc: Document the SM8650 Last Level Cache Controller
Neil Armstrong [Mon, 30 Oct 2023 09:45:14 +0000 (10:45 +0100)]
dt-bindings: cache: qcom,llcc: Document the SM8650 Last Level Cache Controller

Document the Last Level Cache Controller on the SM8650 platform.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231030-topic-sm8650-upstream-llcc-v2-1-f281cec608e2@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: socinfo: Add SM8650 SoC ID table entry
Neil Armstrong [Mon, 30 Oct 2023 09:55:20 +0000 (10:55 +0100)]
soc: qcom: socinfo: Add SM8650 SoC ID table entry

Add SoC Info support for the SM8650 platform.

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
Link: https://lore.kernel.org/r/20231030-topic-sm8650-upstream-socinfo-v2-2-4751e7391dc9@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agodt-bindings: arm: qcom,ids: Add SoC ID for SM8650
Neil Armstrong [Mon, 30 Oct 2023 09:55:19 +0000 (10:55 +0100)]
dt-bindings: arm: qcom,ids: Add SoC ID for SM8650

Add the ID for the Qualcomm SM8650 SoC.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
Link: https://lore.kernel.org/r/20231030-topic-sm8650-upstream-socinfo-v2-1-4751e7391dc9@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agosoc: qcom: pmic_glink: enable UCSI by default
Dmitry Baryshkov [Wed, 25 Oct 2023 11:49:30 +0000 (14:49 +0300)]
soc: qcom: pmic_glink: enable UCSI by default

Now as the issue with the UCSI_GET_PDOS is worked around, enable UCSI
support for all PMIC_GLINK platforms except Qualcomm SC8180X. The
mentioned SoC has slightly different UCSI implementation, which I would
like be tested properly before enabling it.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231025115620.905538-3-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
9 months agousb: typec: ucsi: fix UCSI on buggy Qualcomm devices
Dmitry Baryshkov [Wed, 25 Oct 2023 11:49:29 +0000 (14:49 +0300)]
usb: typec: ucsi: fix UCSI on buggy Qualcomm devices

On sevral Qualcomm platforms (SC8180X, SM8350, SC8280XP) a call to
UCSI_GET_PDOS for non-PD partners will cause a firmware crash with no
easy way to recover from it. Since we have no easy way to determine
whether the partner really has PD support, shortcut UCSI_GET_PDOS on
such platforms. This allows us to enable UCSI support on such devices.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231025115620.905538-2-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>