[PATCH v12 0/9] Misc SCM driver changes

From: Mukesh Ojha
Date: Tue Feb 27 2024 - 10:53:44 EST


Earlier version was just introducing secure rmw API introduction
and its use in pinctrl/scm dload register.

Current version also seems to fix some of the identified issue
in scm driver code.

Patch #1-3 patches are for secure rmw api.
Patch #4 is slight optimization for the newer SoCs.
Patch #5 is using the introduce api.
Patch #6-9 try to avoid NUll pointer or to remove redundant code.

Change from v11: https://lore.kernel.org/lkml/1704727654-13999-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- New patches #1 and #6-9
- Renamed scm_query_lock to scm_lock and reuse it in qcom_scm_io_rmw()
- Added comment for scm_lock

Changes from v10:
- Rebased on linux-next tag 20240108

Changes from v9: https://lore.kernel.org/lkml/1698648967-974-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Added 3/4 new patch.
- commit subject modification.

Change from v8: https://lore.kernel.org/lkml/1698235506-16993-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Introduce enum for dload mode constants as per suggestion from [Elliot].
- Rebased on linux-next.

Changes from v7: https://lore.kernel.org/lkml/1696440338-12561-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Rebased it on next-20231025.
- Added reviewed-by tag and take care of comment made about
commit text should be in imperative mode.
- Modified the name of the API to qcom_scm_io_rmw() as per suggestion
made by [Dmitry]
- Moved spinlock inside qcom_scm structure.
- Corrected the patch order as per subsystem SCM first then pinctrl.

Change from minidump-v5(13/17-15/17):https://lore.kernel.org/lkml/1694429639-21484-1-git-send-email-quic_mojha@xxxxxxxxxxx/ - Removed mistakenly added macros.
https://lore.kernel.org/lkml/9da888dc-401a-4cbb-b616-b4654fa79e35@xxxxxxxxxxx/
- Added Acked-by tag from Linus.w to 2/3.
Change from minidump-v5(13/17-15/17):https://lore.kernel.org/lkml/1694429639-21484-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Removed mistakenly added macros.
https://lore.kernel.org/lkml/9da888dc-401a-4cbb-b616-b4654fa79e35@xxxxxxxxxxx/
- Added Acked-by tag from Linus.w to 2/3.

Changes in v6: https://lore.kernel.org/lkml/1680076012-10785-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Rebased it on latest tag available on linux-next
- Added missed Poovendhan sign-off on 15/17 and tested-by tag from
Kathiravan. Thanks to him for testing and reminding me of missing sign-off.
- Addressed comments made on dload mode patch v6 version

Changes in v5: https://lore.kernel.org/lkml/1680017869-22421-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Tried to fix the issue reported by kernel test robot
https://lore.kernel.org/lkml/202303280535.acb66sQT-lkp@xxxxxxxxx/

- Applied some of the improvement suggested by [Bjorn.andersson]

. Dropped 'both' instead support full,mini or mini,full for setting download
mode to collect both minidump and full dump.

. logging improvement.

Changes in v4: https://lore.kernel.org/lkml/1679935281-18445-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- val should be shifted within the function [srinivas.kandagatla]
i.e new = (old & ~mask) | (val << ffs(mask) - 1);
- Added Acked-by [linus.walleij] on pinctrl change.

Changes in v3 : https://lore.kernel.org/lkml/1679070482-8391-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Removed [1] from the series and sent as a separate patch[2], although this series
should be applied on top [2].
[1] https://lore.kernel.org/lkml/1677664555-30191-2-git-send-email-quic_mojha@xxxxxxxxxxx/
[2] https://lore.kernel.org/lkml/1678979666-551-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Introduce new exported symbol on suggestion from [srinivas.kandagatla]
- Use the symbol from drivers/pinctrl/qcom/pinctrl-msm.c.
- Addressed comment given by [dmitry.baryshkov]
- Converted non-standard Originally-by to Signed-off-by.

Changes in v2: https://lore.kernel.org/lkml/1677664555-30191-1-git-send-email-quic_mojha@xxxxxxxxxxx/
- Addressed comment made by [bjorn]
- Added download mask.
- Passed download mode as parameter
- Accept human accepatable download mode string.
- enable = !!dload_mode
- Shifted module param callback to somewhere down in
the file so that it no longer need to know the
prototype of qcom_scm_set_download_mode()
- updated commit text.

Mukesh Ojha (9):
firmware: qcom: scm: Rename scm_query_lock to scm_lock
firmware: qcom: scm: provide a read-modify-write function
firmware: qcom: scm: Modify only the download bits in TCSR register
firmware: qcom: scm: Rework dload mode availability check
pinctrl: qcom: Use qcom_scm_io_rmw() function
firmware: qcom: scm: Remove log reporting memory allocation failure
firmware: qcom: scm: Fix __scm->dev assignement
firmware: qcom: scm: Add check to prevent Null pointer dereference
firmware: scm: Remove redundant scm argument from
qcom_scm_waitq_wakeup()

drivers/firmware/qcom/qcom_scm.c | 162 +++++++++++++++++++------
drivers/pinctrl/qcom/pinctrl-msm.c | 10 +-
include/linux/firmware/qcom/qcom_scm.h | 1 +
3 files changed, 128 insertions(+), 45 deletions(-)

--
2.43.0.254.ga26002b62827