/* * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __DRIVERS_THERMAL_TEGRA_SOCTHERM_H #define __DRIVERS_THERMAL_TEGRA_SOCTHERM_H #define THERMCTL_LEVEL0_GROUP_CPU 0x0 #define THERMCTL_LEVEL0_GROUP_GPU 0x4 #define THERMCTL_LEVEL0_GROUP_MEM 0x8 #define THERMCTL_LEVEL0_GROUP_TSENSE 0xc #define SENSOR_CONFIG2 8 #define SENSOR_CONFIG2_THERMA_MASK (0xffff << 16) #define SENSOR_CONFIG2_THERMA_SHIFT 16 #define SENSOR_CONFIG2_THERMB_MASK 0xffff #define SENSOR_CONFIG2_THERMB_SHIFT 0 #define THERMCTL_THERMTRIP_CTL 0x80 /* BITs are defined in device file */ #define SENSOR_PDIV 0x1c0 #define SENSOR_PDIV_CPU_MASK (0xf << 12) #define SENSOR_PDIV_GPU_MASK (0xf << 8) #define SENSOR_PDIV_MEM_MASK (0xf << 4) #define SENSOR_PDIV_PLLX_MASK (0xf << 0) #define SENSOR_HOTSPOT_OFF 0x1c4 #define SENSOR_HOTSPOT_CPU_MASK (0xff << 16) #define SENSOR_HOTSPOT_GPU_MASK (0xff << 8) #define SENSOR_HOTSPOT_MEM_MASK (0xff << 0) #define SENSOR_TEMP1 0x1c8 #define SENSOR_TEMP1_CPU_TEMP_MASK (0xffff << 16) #define SENSOR_TEMP1_GPU_TEMP_MASK 0xffff #define SENSOR_TEMP2 0x1cc #define SENSOR_TEMP2_MEM_TEMP_MASK (0xffff << 16) #define SENSOR_TEMP2_PLLX_TEMP_MASK 0xffff /** * struct tegra_tsensor_group - SOC_THERM sensor group data * @name: short name of the temperature sensor group * @id: numeric ID of the temperature sensor group * @sensor_temp_offset: offset of the SENSOR_TEMP* register * @sensor_temp_mask: bit mask for this sensor group in SENSOR_TEMP* register * @pdiv: the sensor count post-divider to use during runtime * @pdiv_ate: the sensor count post-divider used during automated test * @pdiv_mask: register bitfield mask for the PDIV field for this sensor * @pllx_hotspot_diff: hotspot offset from the PLLX sensor, must be 0 for PLLX sensor group * @pllx_hotspot_mask: register bitfield mask for the HOTSPOT field */ struct tegra_tsensor_group { const char *name; u8 id; u16 sensor_temp_offset; u32 sensor_temp_mask; u32 pdiv, pdiv_ate, pdiv_mask; u32 pllx_hotspot_diff, pllx_hotspot_mask; u32 thermtrip_enable_mask; u32 thermtrip_any_en_mask; u32 thermtrip_threshold_mask; u16 thermctl_lvl0_offset; u32 thermctl_lvl0_up_thresh_mask; u32 thermctl_lvl0_dn_thresh_mask; }; struct tegra_tsensor_configuration { u32 tall, tiddq_en, ten_count, pdiv, pdiv_ate, tsample, tsample_ate; }; struct tegra_tsensor { const char *name; const u32 base; const struct tegra_tsensor_configuration *config; const u32 calib_fuse_offset; /* * Correction values used to modify values read from * calibration fuses */ const s32 fuse_corr_alpha, fuse_corr_beta; const struct tegra_tsensor_group *group; }; struct tegra_soctherm_fuse { u32 fuse_base_cp_mask, fuse_base_cp_shift; u32 fuse_base_ft_mask, fuse_base_ft_shift; u32 fuse_shift_ft_mask, fuse_shift_ft_shift; u32 fuse_spare_realignment; }; struct tsensor_shared_calib { u32 base_cp, base_ft; u32 actual_temp_cp, actual_temp_ft; }; struct tegra_soctherm_soc { const struct tegra_tsensor *tsensors; const unsigned int num_tsensors; const struct tegra_tsensor_group **ttgs; const unsigned int num_ttgs; const struct tegra_soctherm_fuse *tfuse; const int thresh_grain; const unsigned int bptt; const bool use_ccroc; }; int tegra_calc_shared_calib(const struct tegra_soctherm_fuse *tfuse, struct tsensor_shared_calib *shared); int tegra_calc_tsensor_calib(const struct tegra_tsensor *sensor, const struct tsensor_shared_calib *shared, u32 *calib); #ifdef CONFIG_ARCH_TEGRA_124_SOC extern const struct tegra_soctherm_soc tegra124_soctherm; #endif #ifdef CONFIG_ARCH_TEGRA_132_SOC extern const struct tegra_soctherm_soc tegra132_soctherm; #endif #ifdef CONFIG_ARCH_TEGRA_210_SOC extern const struct tegra_soctherm_soc tegra210_soctherm; #endif #endif class='ctrl'>mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-28 11:50:17 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-28 11:50:17 -0800
commitd56a5ca366e785f463b4782f65daac883612a2b2 (patch)
tree26ff9bf940fc911e81ab22717d9e6c3258c74bf8 /tools/testing/selftests/drivers/gpu
parentdd553962675ab5747e887f89aea1ece90e6a802e (diff)
parentee6625a948d2e47267ec8fd97307fdd67d0f8a5b (diff)
Merge tag 'nfs-for-4.10-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client bugfixes from Trond Myklebust: "Stable patches: - NFSv4.1: Fix a deadlock in layoutget - NFSv4 must not bump sequence ids on NFS4ERR_MOVED errors - NFSv4 Fix a regression with OPEN EXCLUSIVE4 mode - Fix a memory leak when removing the SUNRPC module Bugfixes: - Fix a reference leak in _pnfs_return_layout" * tag 'nfs-for-4.10-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: pNFS: Fix a reference leak in _pnfs_return_layout nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED" SUNRPC: cleanup ida information when removing sunrpc module NFSv4.0: always send mode in SETATTR after EXCLUSIVE4 nfs: Don't increment lock sequence ID after NFS4ERR_MOVED NFSv4.1: Fix a deadlock in layoutget
Diffstat (limited to 'tools/testing/selftests/drivers/gpu')