Commit graph

1090837 commits

Author SHA1 Message Date
Jami Kettunen
85d4bbdf85 [SUBMITME] dt-bindings: Document bindings for all MSM8998 devices 2022-06-05 20:06:42 +03:00
Jami Kettunen
a96260e915 [HACK] net: ipa: Disable automatic suspend
1aac309d32 ("net: ipa: use autosuspend") currently causes my device to
enter 900E crashdump mode as soon as IPA is probed :/

With this we at least can run ModemManager once again...
2022-06-05 20:06:42 +03:00
Jami Kettunen
df055f7b7f [HACK] [SUBMITME?] ath10k: Fake MSA ready event after event server arrival
This finally allowed me to get past the 2 ath10k_info()'s in qmi.c!

However, this doesn't fix everything; it seems you *have* to run
diag-router from https://github.com/andersson/diag to calm the firmware
down and stop constantly crashing; need to look into a way to get Wi-Fi
working later without needing this debug crap to be running.

This should possible be submitted as a quirk to the ath10k driver as
modem on mainline 8998 should be running now as well...
2022-06-05 20:06:42 +03:00
Jami Kettunen
d954b16251 [HACK] drm: Don't WARN_ON() drm_connector_set_panel_orientation() call
This method is used by OnePlus 5 (cheeseburger) during
s6e3fa5_get_modes() and calling it here (which is what all other panel
drivers seem to do as well) causes a massively long 140-line stacktrace
for the 2 hit WARN_ON()s:

  ------------[ cut here ]------------
  WARNING: CPU: 5 PID: 103 at drivers/gpu/drm/drm_mode_object.c:45 drm_mode_object_add+0x80/0x90
  Modules linked in: hci_uart apr fastrpc msm pdr_interface qrtr_smd btqca bluetooth gpu_sched nxp_nci_i2c nxp_nci nci drm_kms_helper nfc rmi_i2c rmi_core ecdh_generic ecc libaes ath10k_snoc ath10k_core cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea ath i2c_qup msm_serial serial_core mac80211 libarc4 sha256_generic libsha256 leds_qcom_lpg cfg80211 led_class_multicolor qcom_fg rtc_pm8xxx ipa qrtr qcom_q6v5_mss qcom_q6v5_pas qcom_stats qcom_pil_info qcom_q6v5 qcom_sysmon qcom_common qcom_smd mdt_loader qmi_helpers smp2p rpmsg_char leds_gpio evdev led_class rmtfs_mem qcom_hwspinlock rfkill dm_mod uinput loop
  CPU: 5 PID: 103 Comm: kworker/u16:5 Tainted: G        W         5.17.0-rc5-msm8998 #7
  Hardware name: OnePlus 5 (DT)
  Workqueue: events_unbound deferred_probe_work_func
  pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  pc : drm_mode_object_add+0x80/0x90
  lr : drm_property_create+0xd4/0x190
  sp : ffffff808193b210
  x29: ffffff808193b210 x28: 0000000000000020 x27: 0000000000001000
  x26: 0000000000001000 x25: 0000000000000001 x24: ffffffc0087f1f78
  x23: ffffffc008833928 x22: 0000000000000004 x21: 00000000b0b0b0b0
  x20: ffffff8088570b90 x19: ffffff8084b26000 x18: 00000000fffffffb
  x17: 0000007a00440000 x16: 0000000000000000 x15: 0000000000000020
  x14: ffffffffffffffff x13: ffffff8088570b70 x12: ffffff8088570b55
  x11: 0000000000000000 x10: 0000000000000078 x9 : 0000000000000000
  x8 : ffffff8088570c80 x7 : 0000000000000000 x6 : 000000000000003f
  x5 : 0000000000000040 x4 : 0000000000000000 x3 : 0000000000000004
  x2 : 00000000b0b0b0b0 x1 : ffffff8088570b90 x0 : 0000000000000001
  Call trace:
   drm_mode_object_add+0x80/0x90
   drm_property_create+0xd4/0x190
   drm_property_create_enum+0x28/0x90
   drm_connector_set_panel_orientation+0x8c/0xb0
   s6e3fa5_get_modes+0x64/0x80
   drm_panel_get_modes+0x20/0x40
   dsi_mgr_connector_get_modes+0x28/0x40 [msm]
   drm_helper_probe_single_connector_modes+0x19c/0x770 [drm_kms_helper]
   drm_client_modeset_probe+0x1a4/0x1144
   __drm_fb_helper_initial_config_and_unlock+0x30/0x500 [drm_kms_helper]
   drm_fb_helper_initial_config+0x44/0x50 [drm_kms_helper]
   msm_fbdev_init+0x84/0xec [msm]
   msm_drm_bind+0x51c/0x5e0 [msm]
   try_to_bring_up_master+0x218/0x300
   __component_add+0x9c/0x180
   component_add+0x10/0x1c
   dsi_dev_attach+0x1c/0x24 [msm]
   dsi_host_attach+0x90/0x140 [msm]
   mipi_dsi_attach+0x24/0x34
   s6e3fa5_probe+0x10c/0x1cc
   mipi_dsi_drv_probe+0x1c/0x24
   really_probe+0x1b0/0x430
   __driver_probe_device+0x10c/0x180
   driver_probe_device+0x3c/0xf0
   __device_attach_driver+0x94/0x120
   bus_for_each_drv+0x64/0xa0
   __device_attach+0xa8/0x19c
   device_initial_probe+0x10/0x20
   bus_probe_device+0x90/0xa0
   device_add+0x364/0x83c
   mipi_dsi_device_register_full+0xc4/0x150
   mipi_dsi_host_register+0xb8/0x14c
   msm_dsi_host_register+0x3c/0x54 [msm]
   msm_dsi_manager_register+0x144/0x260 [msm]
   dsi_dev_probe+0x124/0x1a4 [msm]
   platform_probe+0x64/0xcc
   really_probe+0x1b0/0x430
   __driver_probe_device+0x10c/0x180
   driver_probe_device+0x3c/0xf0
   __device_attach_driver+0x94/0x120
   bus_for_each_drv+0x64/0xa0
   __device_attach+0xa8/0x19c
   device_initial_probe+0x10/0x20
   bus_probe_device+0x90/0xa0
   deferred_probe_work_func+0x9c/0xf0
   process_one_work+0x1d0/0x350
   worker_thread+0x134/0x450
   kthread+0x104/0x10c
   ret_from_fork+0x10/0x20
  ---[ end trace 0000000000000000 ]---
  ------------[ cut here ]------------
  WARNING: CPU: 5 PID: 103 at drivers/gpu/drm/drm_mode_object.c:242 drm_object_attach_property+0x6c/0xb0
  Modules linked in: hci_uart apr fastrpc msm pdr_interface qrtr_smd btqca bluetooth gpu_sched nxp_nci_i2c nxp_nci nci drm_kms_helper nfc rmi_i2c rmi_core ecdh_generic ecc libaes ath10k_snoc ath10k_core cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea ath i2c_qup msm_serial serial_core mac80211 libarc4 sha256_generic libsha256 leds_qcom_lpg cfg80211 led_class_multicolor qcom_fg rtc_pm8xxx ipa qrtr qcom_q6v5_mss qcom_q6v5_pas qcom_stats qcom_pil_info qcom_q6v5 qcom_sysmon qcom_common qcom_smd mdt_loader qmi_helpers smp2p rpmsg_char leds_gpio evdev led_class rmtfs_mem qcom_hwspinlock rfkill dm_mod uinput loop
  CPU: 5 PID: 103 Comm: kworker/u16:5 Tainted: G        W         5.17.0-rc5-msm8998 #7
  Hardware name: OnePlus 5 (DT)
  Workqueue: events_unbound deferred_probe_work_func
  pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  pc : drm_object_attach_property+0x6c/0xb0
  lr : drm_connector_set_panel_orientation+0x54/0xb0
  sp : ffffff808193b2b0
  x29: ffffff808193b2b0 x28: 0000000000000020 x27: 0000000000001000
  x26: 0000000000001000 x25: 0000000000000001 x24: ffffffc0087f1f78
  x23: 0000000000000000 x22: 0000000000000000 x21: ffffff8084b26000
  x20: ffffff8088570b00 x19: ffffff8084b90800 x18: 00000000fffffffb
  x17: 0000007a00440000 x16: 0000000000000000 x15: 0000000000000020
  x14: ffffffffffffffff x13: ffffff8088570b70 x12: ffffff8088570b55
  x11: 0000000000000000 x10: 0000000000000078 x9 : ffffff8088570e20
  x8 : ffffff8088570e38 x7 : 00000000c0c0c0c0 x6 : 00000000c0c0c0c0
  x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000006
  x2 : 0000000000000001 x1 : ffffff8088570b80 x0 : ffffff8084b90840
  Call trace:
   drm_object_attach_property+0x6c/0xb0
   s6e3fa5_get_modes+0x64/0x80
   drm_panel_get_modes+0x20/0x40
   dsi_mgr_connector_get_modes+0x28/0x40 [msm]
   drm_helper_probe_single_connector_modes+0x19c/0x770 [drm_kms_helper]
   drm_client_modeset_probe+0x1a4/0x1144
   __drm_fb_helper_initial_config_and_unlock+0x30/0x500 [drm_kms_helper]
   drm_fb_helper_initial_config+0x44/0x50 [drm_kms_helper]
   msm_fbdev_init+0x84/0xec [msm]
   msm_drm_bind+0x51c/0x5e0 [msm]
   try_to_bring_up_master+0x218/0x300
   __component_add+0x9c/0x180
   component_add+0x10/0x1c
   dsi_dev_attach+0x1c/0x24 [msm]
   dsi_host_attach+0x90/0x140 [msm]
   mipi_dsi_attach+0x24/0x34
   s6e3fa5_probe+0x10c/0x1cc
   mipi_dsi_drv_probe+0x1c/0x24
   really_probe+0x1b0/0x430
   __driver_probe_device+0x10c/0x180
   driver_probe_device+0x3c/0xf0
   __device_attach_driver+0x94/0x120
   bus_for_each_drv+0x64/0xa0
   __device_attach+0xa8/0x19c
   device_initial_probe+0x10/0x20
   bus_probe_device+0x90/0xa0
   device_add+0x364/0x83c
   mipi_dsi_device_register_full+0xc4/0x150
   mipi_dsi_host_register+0xb8/0x14c
   msm_dsi_host_register+0x3c/0x54 [msm]
   msm_dsi_manager_register+0x144/0x260 [msm]
   dsi_dev_probe+0x124/0x1a4 [msm]
   platform_probe+0x64/0xcc
   really_probe+0x1b0/0x430
   __driver_probe_device+0x10c/0x180
   driver_probe_device+0x3c/0xf0
   __device_attach_driver+0x94/0x120
   bus_for_each_drv+0x64/0xa0
   __device_attach+0xa8/0x19c
   device_initial_probe+0x10/0x20
   bus_probe_device+0x90/0xa0
   deferred_probe_work_func+0x9c/0xf0
   process_one_work+0x1d0/0x350
   worker_thread+0x134/0x450
   kthread+0x104/0x10c
   ret_from_fork+0x10/0x20
  ---[ end trace 0000000000000000 ]---
2022-06-05 20:06:42 +03:00
Jami Kettunen
48f050eb4d [HACK] scripts: Stop appending "+" to localversion
This always gets added and doesn't look nice in the version string, so
it's purely for aesthetic reasons :p
2022-06-05 20:06:42 +03:00
Jami Kettunen
eb0411a669 [ANNOTATION] [DROPME?] Import WIP "Qualcomm SPMI Fuel Gauge" driver
Drop pmi8994 DTS changes though.

https://gitlab.com/sdm845-mainline/linux/-/commits/driver/pmi8998_fg/
2022-06-05 20:06:42 +03:00
Jami Kettunen
86dea5456c power: supply: qcom_fg: Report online property 2022-06-05 20:06:42 +03:00
Yassine Oudjana
1b758aceea power: pmi8998_fg: Rename to qcom_fg and add support for PMI8994/6
This adds support for accessing SRAM. That includes requesting and releasing
access to SRAM by setting some registers and handling the mem-avail IRQ,
configuring access, and reading from/writing to it.

Pre-gen3 fuel gauges require reading from SRAM to get voltage, current
and temperature data. Getting capacity is identical to gen3.

Tested on Xiaomi Mi Note 2 with PMI8996.
2022-06-05 20:06:42 +03:00
Yassine Oudjana
fde6bbe1ee power: pmi8998_fg: Remove some trailing spaces and tabs
This should be squashed.
2022-06-05 20:06:42 +03:00
Joel Selvaraj
9083a32532 fg: clean and read charge full and max voltage from dts 2022-06-05 20:06:42 +03:00
Joel Selvaraj
a18a9850aa power: supply: add battery charging status feature 2022-06-05 20:06:42 +03:00
Joel Selvaraj
a1e7e1e597 arm64: dts: qcom: pmi8998: Add nodes for pmi8998 fuel guage 2022-06-05 20:06:42 +03:00
Joel Selvaraj
8e7ca27eb9 power: supply: introduce pmi8998 fuel guage driver 2022-06-05 20:06:42 +03:00
Jami Kettunen
924d6db5ae [ANNOTATION] Import SPMI haptics driver v4 (2022-04-03)
Drop SDM845 DTS changes though and s/qcom,pmi8998-haptics/qcom,spmi-haptics/
in pmi8998.dtsi to fix probe of the driver.

Link: https://patchwork.kernel.org/project/linux-arm-msm/cover/20211210022639.2779173-1-caleb@connolly.tech/
2022-06-05 20:06:41 +03:00
Jami Kettunen
148c6bb847 arm64: dts: qcom: msm8998-oneplus-common: Enable PMI8998 haptics
The OnePlus 5 and 5T both have a haptics engine connected to PMI8998.

Signed-off-by: Jami Kettunen <jami.kettunen@somainline.org>
Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2022-06-05 20:06:41 +03:00
Caleb Connolly
2c34128296 arm64: dts: qcom: pmi8998: introduce spmi haptics
Add bindings for Qualcomm SPMI haptics on platforms using pmi8998.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2022-06-05 20:06:41 +03:00
Caleb Connolly
2b9eb2cf36 input: add Qualcomm SPMI haptics driver
Add support for the haptics found in pmi8998 and related PMICs.
Based on the ff-memless interface. Currently this driver provides
a partial implementation of hardware features.

This driver only supports LRAs (Linear Resonant Actuators) in the "buffer"
mode with a single wave pattern.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2022-06-05 20:06:41 +03:00
Caleb Connolly
de04ce2411 dt-bindings: input: add Qualcomm SPMI haptics driver
Add bindings for qcom PMIC SPMI haptics driver.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2022-06-05 20:06:41 +03:00
Jami Kettunen
7c39a9b602 [ANNOTATION] Base @ angelo/5.14-msm8998-audio-working
I also rebased this tree on the linus/v5.18-rc1 tag and while at it
finally dropped changes irrelevant to msm8998.
2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
60f92b391e adreno 5xx: TTBR1 extravaganza on MSM8998
(JAMI: fixup for 5.16)
2022-06-05 20:06:41 +03:00
Jami Kettunen
820a7ce001 arm64: dts: qcom: msm8998-xperia: various tests
Originally from: c215a022
2022-06-05 20:06:41 +03:00
Jami Kettunen
d4e258c908 ASoC: wcd9335: various tests
Originally from: c215a022
2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
607c599b1d iommu/arm-smmu-qcom: Add MSM8998 and SDM660 mss compatibles for identity
Add MSM8998 and SDM660's mss-pil compatibles to switch the default
iommu domain type to IDENTITY, as similarly required by SDM845 and
others.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
5890456b65 iommu/arm-smmu-qcom: Skip the TTBR1 quirk for MSM8998 and SDM630
Similarly to MSM8996 DragonBoard 820c, MSM8998 and SDM630 are equipped
with Adreno 5xx series, which doesn't have separate pagetables support
at the moment of writing.
Skip the TTBR1 quirk for these two SoCs as to get Adreno in a usable
state.
2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
5ec5a8cb65 arm64: dts: qcom: AUDIO WORKS oon MSM8998 Sony Yoshino platform!!! 2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
94bfcbdfd4 ASoC: codecs: wcd9335: Fix headphone jack commit for new upstream kernel 2022-06-05 20:06:41 +03:00
Srinivas Kandagatla
de2513ec19 ASoC: wcd9335: add mbhc support
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
2022-06-05 20:06:41 +03:00
Jami Kettunen
a47080849e arm64: dts: qcom: Enable audio on MSM8998 Sony Yoshino platform
Originally from: d95b982a
2022-06-05 20:06:41 +03:00
Jami Kettunen
f5cfd7f95b arm64: dts: qcom: msm8998: More audio related node changes
Originally from: d95b982a
2022-06-05 20:06:41 +03:00
Jami Kettunen
1d4c0f12fd fixup! arm64: dts: qcom: msm8998: Configure Adreno GPU and related IOMMU 2022-06-05 20:06:41 +03:00
Jami Kettunen
8084acbe66 mfd: wcd9335: Add support to wcd9335 codec
Qualcomm WCD9335 Codec is a standalone Hi-Fi audio codec IC.

This codec has integrated SoundWire controller, pin controller and
interrupt controller.

Originally from: d95b982a
2022-06-05 20:06:41 +03:00
AngeloGioacchino Del Regno
d5b281a2f6 arm64: dts: qcom: msm8998: Add disabled slimbus support
Add generic slimbus configuration to MSM8998 and keep it disabled.
It is expected that this will be enabled in board-specific device
trees when supported, along with the right audio codec.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
Jami Kettunen
891b2ae7c2 ASoC: qcom: lpass-msm8998: Add platform driver for lpass audio
Add platform driver for configuring msm8998 lpass core I2S and
DMA configuration to support playback & capture to external codecs
connected over primary & secondary MI2S interfaces.

(driver originally split from 4d7e1ead3b ("fastmatrix yaml fix"))
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
0a3289cee8 ASoC: qcom: Add MSM8998 sound card support
Add MSM8998 sound support: this driver supports basic functionality
and headphone jack.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
(JAMI: fixup for 5.17)
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
0be74b7ad7 arm64: dts: qcom: msm8998-xperia: Enable lpass smmu
To support audio dsp functionality, enable the lpass smmu.
The firmware distributed with the MSM8998 Sony Xperia smartphones
requires us to skip resetting CB12 of this SMMU and to use CB11
as a context bank to emulate bypass streams.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
(JAMI: fixed up for v5.16-rc1)
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
cbf3502c0b arm64: dts: qcom: msm8998: Add APR services configuration
Add the standard APR Q6 services configuration for MSM8998, used by
boards supporting the audio dsp.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
cc9681773f arm64: dts: qcom: msm8998: Define fastrpc ADSP compute context banks
If the target board supports ADSP, it is essential to have fastrpc
compute context banks defined. This commit adds the always usable
unsecured context banks only.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
9c7ac5c1b8 arm64: dts: qcom: msm8998: Add disabled support for lpass iommu for q6
Add support for the LPASS (Q6) SMMU and keep it disabled as this is
used only when the audio DSP is present and used, which is not
mandatory to have.
It is expected for board-specific device-trees to enable this node
if supported.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
dc9624ed78 clk: qcom: gcc-msm8998: Add LPASS adsp and core GDSCs
As a final step to entirely enable the required clock tree for the
lpass iommu and audio dsp, add the lpass core/adsp GDSCs.

As a side note, it was found out that disabling the lpass core GDSC
at any time would cause a system lockup (and reboot): disabling
this GDSC will leave the lpass iommu completely unclocked, losing
its state entirely - including the secure contexts that have been
previously set-up from the bootloader/TrustZone.
Losing this IOMMU configuration will trigger a hypervisor fault,
which will reboot the system; the only workaround for this issue
is to declare the lpass core gdsc as always-on.

It should also not be forgotten that this is all about firmware and
there may be a version of it that doesn't enable this GDSC at all
before booting Linux, which is the reason why this specific declaration
wasn't simply omitted.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
9bc4d550c8 dt-bindings: clock: gcc-msm8998: Add LPASS adsp/core GDSCs definitions
Add the GDSC definitions for the LPASS_ADSP_GDSC and LPASS_CORE_GDSC
as a final step to enable the required clock tree for the lpass iommu
and for the audio dsp itself.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
39b5b6a96d clk: qcom: gcc-msm8998: Add q6 bimc and lpass core, adsp SMMU clocks
Add the Q6 BIMC, LPASS core/adsp SMMU clocks to support audio related
functionality on MSM8998 and APQ variants. Please note that the Q6 and
the lpass iommu also need GDSCs to be enabled in order to initialize,
which are going to be added in a later commit.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
8717e14bea dt-bindings: clock: gcc-msm8998: Add Q6 and LPASS clocks definitions
Add definitions for the Q6 BIMC, LPASS core and adsp smmu clocks,
required to enable audio functionality on MSM8998.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
(JAMI: merge with e122a6a4 for 5.17)
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
0754da18bc arm64: dts: qcom: msm8998: Add imem pil-reloc-info for firmware loading
Firmware loading (mainly the modem) may require IMEM PIL relocation
informations: specify this imem region in dt for qcom_pil_info to
use it.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
442a308c69 arm64: dts: qcom: msm8998: Add qcom,adreno-smmu compatible 2022-06-05 20:06:40 +03:00
Jami Kettunen
a271945e7f regulator: qcom-labibb: Always disable interrupts during OCP & SC
Originally from: cd95ecae
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
814a6f0160 yoshino: Fix too high overheating backlight, enable all wled strings maple 2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
3002121529 drm/msm/dsi_phy_10nm: Fix bad VCO rate calculation 2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
ad3f6572c0 clk: qcom: mmcc-msm8998: Set CLK_GET_RATE_NOCACHE to pixel/byte clks
The pixel and byte clocks rate should not be cached, as a VCO shutdown
may clear the frequency setup and this may not be set again due to the
cached rate being present.
This will also be useful when shadow clocks will be implemented in
the DSI PLL for seamless timing/resolution switch.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
24a7f77342 clk: qcom: gcc-msm8998: Set MISC flags, mark hmss/gpu-ahb critical
It is being evaluated whether this commit is really needed.
DONOTUPSTREAM.

(JAMI: fixed up for v5.16-rc1)
2022-06-05 20:06:40 +03:00
AngeloGioacchino Del Regno
af19ac27f5 input: keyboard: Add Fast GPIO-driven keyboard/keypad matrix driver
This driver is a reimplementation of matrix_keyboard, on which it
is heavily based: the former was made back in 2009 and then
lightly updated in 2012 to add some support for device-tree / OF.

It turns out that this is not enough, nor OF is fully supported,
as the global (or "clustered") interrupt is never probed, nor it
made usage of the GPIOD API which, nowadays, really simplifies
the job - but not only: it also provides means to set GPIO arrays
for controllers that are supporting this.
The latter is very important when dealing with slow GPIOs such as
I2C and/or SPI expanders (and, again, not only); by using the new
APIs everything fits the new systems, from simplifications of the
probe/remove functions to opening possibility of using expanders
to drive key matrices with or without protection diodes.

But then, why wasn't the old matrix_keyboard driver modified
instead of creating a new one?
The problem there is that the old driver is made to support the
old platform_device style and it's currently still being used by
some PXA boards that are not (yet?) ported to device-tree, so it
would be impossible to modernize it for good, which means that to
support GPIOD (which is - really - required for the aforementioned
reasons) and to fully support DT it would be necessary to wrap the
old GPIO API around the new GPIOD one, creating overhead and also
probably unnecessary memory usage, other than a very big driver
which, at least on embedded devices (having limited resources),
would be simply bad. Leaving the fact that I haven't got any old
board so it's impossible for me to analyze and optimize for them.

Since 98% of the users of the old driver are infact platforms that
have been ported to (or are born with) DT, the introduction of a
new driver that's purely made for them seemed to be the best
choice, also because the expectations are (I think) that all of
the old ARM-based boards will be ported to DT anyway, which will
actually deprecate the good old matrix_keyboard driver.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
2022-06-05 20:06:39 +03:00