Commit Graph

15 Commits

Author SHA1 Message Date
Vedashree Vidwans
08cf289cbd tegra: hwpm: t234: use autogenerated regops allowlist
- Replace keyword whitelist with allowlist.
- Update driver to use auto-genrated regops allowlist.
- This will allow support for multiple chips.

Jira THWPM-14

Change-Id: I076ee1b425dfef53650477518c846e9e4d4a9e23
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2605889
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-10-21 02:49:49 -07:00
Seshendra Gadagottu
579bc23ee6 tegra: hwpm: add support for SOC HWPM <-> IP interface
Add support for IP registering mechanism for runtime
callback and perfmux read/writes.
void tegra_soc_hwpm_ip_register(struct tegra_soc_hwpm_ip_ops *hwpm_ip_ops);

IP's callback are called to disable and enable IP runtime pm.
At this moment, only VIC/NVENC/OFA driver registration is supported.
Also will take-up perfmux register read/write in follow-up patch.

Bug 3333031
Bug 3333042

Change-Id: If559cae73be1edbdb7139b4183ce3e1dc0943053
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2607267
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2021-10-14 17:03:53 -07:00
Vedashree Vidwans
f64c161132 tegra: hwpm: correct pma_enginestatus expected val
During HWPM release, driver checks PMA engine status before disabling IP
perfmons. Correct the computation of pma engine status expected value.

THWPM-2

Change-Id: I7b0e1497efd67610f6daf39cb1fe411e04eeee11
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2586075
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-09-03 20:27:37 -07:00
Vedashree Vidwans
f7fa0cd28f tegra: hwpm: add IP floorsweep info for silicon
Add floorsweep masks for IPs on silicon. Only verified IPs at the moment
are enabled in the driver.

Bug 3335822

Change-Id: I449d44e4430d273b0680ef9b7f89106df9376d5e
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2585983
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-09-03 20:27:31 -07:00
Vedashree Vidwans
818008bdaf tegra: hwpm: Update PMMSYS CG2 SLCG field values
Update driver release function to write all SLCG fields of PMMSYS CG2
with prod values which enables SLCG for SOC HWPM HW.
Modify driver open function to correctly disable SLCG through all PMMSYS
CG2 fields.

THWPM-2

Change-Id: Id7f725c0cf3f05179295002479f9422cc99a2297
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2585982
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-09-03 20:27:24 -07:00
Vedashree Vidwans
93b933c955 tegra: hwpm: move clock-reset assert to func end
Clock/reset should be disabled/asserted after all register accesses.
Move la and hwpm clk/reset disable/assert to the end of
tegra_soc_hwpm_release().

THWPM-2

Change-Id: I8e71ec5a9251bf76d785d0dc23cc4c8edbb5267f
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2585981
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-09-03 20:27:18 -07:00
Vedashree Vidwans
8d085e2f74 tegra: hwpm: fix regops ioctl logic
IP perfmon base address value is determined by iomap(). This iomap
address is dependent on many factors like platform, carveout, etc.
Currently, soc hwpm user passes static perfmon addresses to execute
reg ops.
Modify hwpm_resource_aperture struct to hold absolute/static start and
end address of the aperture. These new variables will indicate absolute
register range of the aperture.
Modify reg ops ioctl to determine aperture of given phys addr based on
IP's absolute register range.

Bug 3346199

Change-Id: I73b341633d2c780ad0f126ebc609d65cdb7f6cc9
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2564539
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Krishna Reddy <vdumpa@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-07-29 21:13:51 -07:00
Vedashree Vidwans
3940977659 tegra: hwpm: add floorsweep_info IOCTL
Add floorsweep_info IOCTL for userspace to query IP instance information
This IOCTL will update the floorsweep_info struct with
- status: valid - query ip_type is valid but IP instances are absent
          invalid - query ip_type is invalid
          exists - query ip_type is valid and IP instances are available
- ip_inst_info: 64-bit mask, where each set bit corresponds to available
          IP instance.

All reserving resources depending on IP floorsweep info.

Bug 3335822
Bug 3338138

Change-Id: Ic593186fd0b25ee8c493722b60120eec3c5c4350
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2562757
Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Krishna Reddy <vdumpa@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-07-29 21:13:45 -07:00
Vedashree Vidwans
6fb6e2e503 tegra: hwpm: add device_info IOCTL
Add device_info IOCTL for userspace to query current chip's information.
This IOCTL will return a device_info struct with
- chip_id: gives arch id of the chip
- chip_revision: gives chip id revision
- revision: gives major and minor chip revision info
- platform: gives current platform info

Bug 3335823
THWPM-26

Change-Id: I8275a26a812ab7a1b7013ee579f4746d4e5add3d
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2559087
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Pritesh Raithatha <praithatha@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-07-17 01:05:37 -07:00
Vedashree Vidwans
ae2a1e7dfc tegra: hwpm: redraft regops ioctl return status
- As regops ioctl status is an output from kernel, the status cannot be
invalid. So, remove TEGRA_SOC_HWPM_REG_OP_STATUS_INVALID define.
- Redefine regops ioctl status to make SUCCESS equivalent to value 0.
- Add TEGRA_SOC_HWPM_REG_OP_STATUS_WR_FAILED to indicate failure in
regops write command.

Bug 3335825

Change-Id: I31152f1ce2558fdf4c8829dd19fbcb9c87e20572
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2556234
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2021-07-16 19:56:52 -07:00
Vedashree Vidwans
492dd01e04 tegra: hwpm: enable clock/reset/unpowergate sequence
Enable clock/reset/unpowergate sequence for silicon.

THWPM-2

Change-Id: I5a9ad97b053b8b8b2409077e99cb206dcc4b544f
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2556233
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-07-16 19:56:47 -07:00
Vedashree Vidwans
0cb6f6b48f tegra: hwpm: t234: add generated hw headers
- Generate HWPM hw headers using register generator tool.
- Add required hw headers to include/hw/ path
- Update driver code to replace static hw defines with hw header
definitions.
- Remove unused static hw defines.

THWPM-39

Change-Id: I57566d51657bb6b22c4b581acd257f1871438adf
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2552741
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-07-12 23:35:58 -07:00
Seshendra Gadagottu
78465d56ca t23x: hwpm: fix NULL pointer in exec_reg_ops_ioctl
First do the assignment to reg_op before referring it in
debug print info.

Bug 200702306

Change-Id: Ic0a5ea352793858a746e6fd28759b41e99270be6
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-t23x/+/2532594
Tested-by: Vedashree Vidwans <vvidwans@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-by: Adeel Raza <araza@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-05-21 20:01:11 -07:00
Seshendra Gadagottu
ce130e224f t23x: hwpm: fix issue in tegra_soc_hwpm_open
For successful tegra_soc_hwpm_open, return success without
falling through failure case.

Added debug info in tegra_soc_hwpm_open function to
indicate failure case.

Bug 200702306

Change-Id: Ib107d9a89c185d913dc88843e750f36765790bbf
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-t23x/+/2532084
Tested-by: Vedashree Vidwans <vvidwans@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-by: Adeel Raza <araza@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-05-21 20:00:32 -07:00
Adeel Raza
70941decf9 tegra: hwpm: add SOC HWPM driver
Add a driver for programming the Tegra SOC HWPM path. SOC HWPM allows
performance monitoring of various Tegra IPs.

The profiling tests cases are configured through IOCTLs sent by a
userspace profiling app. The IOCTLs provide the following features:
  - IP discovery and reservation
  - Buffer management
  - Whitelist query
  - Register read/write ops

Bug 200702306
Bug 3305495

Change-Id: I65003b126e01bd03d856767c55aa2424bcfd11fb
Signed-off-by: Adeel Raza <araza@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-t23x/+/2515148
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2021-05-19 00:33:31 -07:00