soc: qcom: import smem from Linux 6.11-rc2
Import the SMEM driver from Linux. Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Simon Glass
parent
513edfc585
commit
252a93301a
1279
drivers/soc/qcom/smem.c
Normal file
1279
drivers/soc/qcom/smem.c
Normal file
File diff suppressed because it is too large
Load Diff
20
include/soc/qcom/smem.h
Normal file
20
include/soc/qcom/smem.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __QCOM_SMEM_H__
|
||||
#define __QCOM_SMEM_H__
|
||||
|
||||
#define QCOM_SMEM_HOST_ANY -1
|
||||
|
||||
bool qcom_smem_is_available(void);
|
||||
int qcom_smem_alloc(unsigned host, unsigned item, size_t size);
|
||||
void *qcom_smem_get(unsigned host, unsigned item, size_t *size);
|
||||
|
||||
int qcom_smem_get_free_space(unsigned host);
|
||||
|
||||
phys_addr_t qcom_smem_virt_to_phys(void *p);
|
||||
|
||||
int qcom_smem_get_soc_id(u32 *id);
|
||||
int qcom_smem_get_feature_code(u32 *code);
|
||||
|
||||
int qcom_smem_bust_hwspin_lock_by_host(unsigned int host);
|
||||
|
||||
#endif
|
||||
111
include/soc/qcom/socinfo.h
Normal file
111
include/soc/qcom/socinfo.h
Normal file
@@ -0,0 +1,111 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#ifndef __QCOM_SOCINFO_H__
|
||||
#define __QCOM_SOCINFO_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* SMEM item id, used to acquire handles to respective
|
||||
* SMEM region.
|
||||
*/
|
||||
#define SMEM_HW_SW_BUILD_ID 137
|
||||
|
||||
#define SMEM_SOCINFO_BUILD_ID_LENGTH 32
|
||||
#define SMEM_SOCINFO_CHIP_ID_LENGTH 32
|
||||
|
||||
/*
|
||||
* SoC version type with major number in the upper 16 bits and minor
|
||||
* number in the lower 16 bits.
|
||||
*/
|
||||
#define SOCINFO_MAJOR(ver) (((ver) >> 16) & 0xffff)
|
||||
#define SOCINFO_MINOR(ver) ((ver) & 0xffff)
|
||||
#define SOCINFO_VERSION(maj, min) ((((maj) & 0xffff) << 16)|((min) & 0xffff))
|
||||
|
||||
/* Socinfo SMEM item structure */
|
||||
struct socinfo {
|
||||
__le32 fmt;
|
||||
__le32 id;
|
||||
__le32 ver;
|
||||
char build_id[SMEM_SOCINFO_BUILD_ID_LENGTH];
|
||||
/* Version 2 */
|
||||
__le32 raw_id;
|
||||
__le32 raw_ver;
|
||||
/* Version 3 */
|
||||
__le32 hw_plat;
|
||||
/* Version 4 */
|
||||
__le32 plat_ver;
|
||||
/* Version 5 */
|
||||
__le32 accessory_chip;
|
||||
/* Version 6 */
|
||||
__le32 hw_plat_subtype;
|
||||
/* Version 7 */
|
||||
__le32 pmic_model;
|
||||
__le32 pmic_die_rev;
|
||||
/* Version 8 */
|
||||
__le32 pmic_model_1;
|
||||
__le32 pmic_die_rev_1;
|
||||
__le32 pmic_model_2;
|
||||
__le32 pmic_die_rev_2;
|
||||
/* Version 9 */
|
||||
__le32 foundry_id;
|
||||
/* Version 10 */
|
||||
__le32 serial_num;
|
||||
/* Version 11 */
|
||||
__le32 num_pmics;
|
||||
__le32 pmic_array_offset;
|
||||
/* Version 12 */
|
||||
__le32 chip_family;
|
||||
__le32 raw_device_family;
|
||||
__le32 raw_device_num;
|
||||
/* Version 13 */
|
||||
__le32 nproduct_id;
|
||||
char chip_id[SMEM_SOCINFO_CHIP_ID_LENGTH];
|
||||
/* Version 14 */
|
||||
__le32 num_clusters;
|
||||
__le32 ncluster_array_offset;
|
||||
__le32 num_subset_parts;
|
||||
__le32 nsubset_parts_array_offset;
|
||||
/* Version 15 */
|
||||
__le32 nmodem_supported;
|
||||
/* Version 16 */
|
||||
__le32 feature_code;
|
||||
__le32 pcode;
|
||||
__le32 npartnamemap_offset;
|
||||
__le32 nnum_partname_mapping;
|
||||
/* Version 17 */
|
||||
__le32 oem_variant;
|
||||
/* Version 18 */
|
||||
__le32 num_kvps;
|
||||
__le32 kvps_offset;
|
||||
/* Version 19 */
|
||||
__le32 num_func_clusters;
|
||||
__le32 boot_cluster;
|
||||
__le32 boot_core;
|
||||
};
|
||||
|
||||
/* Internal feature codes */
|
||||
enum qcom_socinfo_feature_code {
|
||||
/* External feature codes */
|
||||
SOCINFO_FC_UNKNOWN = 0x0,
|
||||
SOCINFO_FC_AA,
|
||||
SOCINFO_FC_AB,
|
||||
SOCINFO_FC_AC,
|
||||
SOCINFO_FC_AD,
|
||||
SOCINFO_FC_AE,
|
||||
SOCINFO_FC_AF,
|
||||
SOCINFO_FC_AG,
|
||||
SOCINFO_FC_AH,
|
||||
};
|
||||
|
||||
/* Internal feature codes */
|
||||
/* Valid values: 0 <= n <= 0xf */
|
||||
#define SOCINFO_FC_Yn(n) (0xf1 + (n))
|
||||
#define SOCINFO_FC_INT_MAX SOCINFO_FC_Yn(0xf)
|
||||
|
||||
/* Product codes */
|
||||
#define SOCINFO_PC_UNKNOWN 0
|
||||
#define SOCINFO_PCn(n) ((n) + 1)
|
||||
#define SOCINFO_PC_RESERVE (BIT(31) - 1)
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user