SMEM allows the OS to retrieve information about the DDR memory. Among that information, is a semi-magic value called 'HBB', or Highest Bank address Bit, which multimedia drivers (for hardware like Adreno and MDSS) must retrieve in order to program the IP blocks correctly.
This series introduces an API to retrieve that value, uses it in the aforementioned programming sequences and exposes available DDR frequencies in debugfs (to e.g. pass to aoss_qmp debugfs). More information can be exposed in the future, as needed. Signed-off-by: Konrad Dybcio <[email protected]> --- Changes in v5: - Parse DRAM data before publishing __smem - Add trivial patch 1 converting 'unsigned' to 'unsigned int' to make checkpatch happy - Link to v4: https://patch.msgid.link/[email protected] Changes in v4: - Rebase on top of Dmitry's cleanups to ubwc_config - Mark and consume the shared data as little-endian - Fix compiler optimizing out what it thinks is impossible (odd v3_14freq case) - Rework qcom_ubwc_config_get_data() per discussion to not alter hardcoded data - Remove some unnecessary comments and assignments - Return -ENODATA instead of -EINVAL for out-of-sensible-range HBB - Cosmetic/line wrapping fixups - Drop applied drm/msm patch - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Support v6 and v7 DDRInfo (v7 is used on e.g. Hamoa) - Handle rare cases of DDRInfo v5 with additional trailing data - Rebase/adjust to SSoT UBWC - Expose hbb value in debugfs - cosmetic changes - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Avoid checking for < 0 on unsigned types - Overwrite Adreno UBWC data to keep the data shared with userspace coherent with what's programmed into the hardware - Call get_hbb() in msm_mdss_enable() instead of all UBWC setup branches separately - Pick up Bjorn's rb on patch 1 - Link to v1: https://lore.kernel.org/r/[email protected] To: Bjorn Andersson <[email protected]> To: Konrad Dybcio <[email protected]> To: Kees Cook <[email protected]> To: "Gustavo A. R. Silva" <[email protected]> To: Alim Akhtar <[email protected]> To: Avri Altman <[email protected]> To: Bart Van Assche <[email protected]> To: "James E.J. Bottomley" <[email protected]> To: "Martin K. Petersen" <[email protected]> To: Matthias Brugger <[email protected]> To: AngeloGioacchino Del Regno <[email protected]> To: Suzuki K Poulose <[email protected]> To: Mike Leach <[email protected]> To: James Clark <[email protected]> To: Leo Yan <[email protected]> To: Rob Herring <[email protected]> To: Krzysztof Kozlowski <[email protected]> To: Conor Dooley <[email protected]> To: Yuanfang Zhang <[email protected]> To: Mao Jinlong <[email protected]> To: Jie Gan <[email protected]> To: Paul Walmsley <[email protected]> To: Palmer Dabbelt <[email protected]> To: Albert Ou <[email protected]> To: Alexandre Ghiti <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] --- Konrad Dybcio (3): soc: qcom: smem: Use 'unsigned int' instead of 'unsigned' soc: qcom: smem: Expose DDR data from SMEM soc: qcom: ubwc: Get HBB from SMEM drivers/soc/qcom/Makefile | 3 +- drivers/soc/qcom/smem.c | 80 +++++--- drivers/soc/qcom/smem.h | 12 ++ drivers/soc/qcom/smem_dramc.c | 430 +++++++++++++++++++++++++++++++++++++++++ drivers/soc/qcom/ubwc_config.c | 40 +++- include/linux/soc/qcom/smem.h | 2 + 6 files changed, 533 insertions(+), 34 deletions(-) --- base-commit: c5e32e86ca02b003f86e095d379b38148999293d change-id: 20250409-topic-smem_dramc-6467187ac865 Best regards, -- Konrad Dybcio <[email protected]>

