misc: mods: update from Perforce to 4.21

Bug 4165184

Change-Id: I6b548008b21024d8e322c5a1ca1f98fbc5b389a2
Signed-off-by: Chris Dragan <kdragan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2975467
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Chris Dragan
2023-09-06 22:04:09 -07:00
committed by mobile promotions
parent 4ded4286d6
commit a7810cdbac
2 changed files with 51 additions and 1 deletions

View File

@@ -1953,6 +1953,38 @@ static int esc_mods_write_msr(struct mods_client *client, struct MODS_MSR *p)
}
#endif
#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
static int esc_mods_idle(struct mods_client *client, struct MODS_IDLE *p)
{
u32 i;
LOG_ENT();
switch (p->idle_method) {
case MODS_IDLE_METHOD_ARM_WFI:
dsb(st);
for (i = 0; i < p->num_loops; i++)
wfi();
break;
case MODS_IDLE_METHOD_ARM_WFE:
dsb(st);
for (i = 0; i < p->num_loops; i++)
wfe();
break;
default:
cl_error("unsupported idle method %u\n", p->idle_method);
LOG_EXT();
return -EINVAL;
}
LOG_EXT();
return OK;
}
#endif
static int esc_mods_get_driver_stats(struct mods_client *client,
struct MODS_GET_DRIVER_STATS *p)
{
@@ -2661,6 +2693,11 @@ static long mods_krnl_ioctl(struct file *fp,
MODS_FLUSH_CPU_CACHE_RANGE);
break;
#endif
#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
case MODS_ESC_IDLE:
MODS_IOCTL_NORETVAL(MODS_ESC_IDLE, esc_mods_idle, MODS_IDLE);
break;
#endif
#if defined(MODS_HAS_TEGRA) && defined(CONFIG_DMA_SHARED_BUFFER)
case MODS_ESC_DMABUF_GET_PHYSICAL_ADDRESS:
MODS_IOCTL(MODS_ESC_DMABUF_GET_PHYSICAL_ADDRESS,

View File

@@ -8,7 +8,7 @@
/* Driver version */
#define MODS_DRIVER_VERSION_MAJOR 4
#define MODS_DRIVER_VERSION_MINOR 20
#define MODS_DRIVER_VERSION_MINOR 21
#define MODS_DRIVER_VERSION ((MODS_DRIVER_VERSION_MAJOR << 8) | \
((MODS_DRIVER_VERSION_MINOR / 10) << 4) | \
(MODS_DRIVER_VERSION_MINOR % 10))
@@ -1935,6 +1935,18 @@ struct MODS_BPMP_UPHY_LANE_EOM_SCAN_PARAMS {
__u32 data;
};
#define MODS_IDLE_METHOD_ARM_WFI 0
#define MODS_IDLE_METHOD_ARM_WFE 1
/* Used by MODS_ESC_IDLE
*
* Idles the calling CPU.
*/
struct MODS_IDLE {
__u32 idle_method;
__u32 num_loops;
};
#pragma pack(pop)
#define MODS_IOC_MAGIC 'x'
@@ -2151,5 +2163,6 @@ struct MODS_BPMP_UPHY_LANE_EOM_SCAN_PARAMS {
#define MODS_ESC_FFA_CMD MODSIO(WR, 145, MODS_FFA_PARAMS)
#define MODS_ESC_BPMP_UPHY_LANE_EOM_SCAN MODSIO(WR, 146, \
MODS_BPMP_UPHY_LANE_EOM_SCAN_PARAMS)
#define MODS_ESC_IDLE MODSIO(W, 147, MODS_IDLE)
#endif /* _UAPI_MODS_H_ */