diff options
author | Krishna Reddy <vdumpa@nvidia.com> | 2012-08-13 12:37:32 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-08-15 17:12:57 -0700 |
commit | 361f7676aaecfd0157b89f0e106f59fcc229a839 (patch) | |
tree | f66e0c369bacdea5bc789dc9a77da9b42485cb2e /arch/arm/mach-tegra/la_priv_common.h | |
parent | 028042d5cc554c41a7b5f00fc2b20dce997fcc43 (diff) |
arm: tegra: la: refactor la code.
This is necessary to support future tegra SOC's.
Change-Id: I2f6ce328e30a6895dce16d82c4097291339155cd
Signed-off-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-on: http://git-master/r/123146
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Reviewed-by: Mark Stadler <mastadler@nvidia.com>
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'arch/arm/mach-tegra/la_priv_common.h')
-rw-r--r-- | arch/arm/mach-tegra/la_priv_common.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/la_priv_common.h b/arch/arm/mach-tegra/la_priv_common.h new file mode 100644 index 000000000000..5b487e5970c5 --- /dev/null +++ b/arch/arm/mach-tegra/la_priv_common.h @@ -0,0 +1,71 @@ +/* + * arch/arm/mach-tegra/la_priv_common.h + * + * Copyright (C) 2012 NVIDIA Corporation. + * + * 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 _MACH_TEGRA_LA_PRIV_H_ +#define _MACH_TEGRA_LA_PRIV_H_ + +/* maximum valid value for latency allowance */ +#define MC_LA_MAX_VALUE 255 + +#define MC_RA(r) \ + ((u32)IO_ADDRESS(TEGRA_MC_BASE) + (MC_##r)) +#define RA(r) \ + ((u32)IO_ADDRESS(TEGRA_MC_BASE) + (MC_LA_##r)) + +#define MASK(x) \ + ((0xFFFFFFFFUL >> (31 - (1 ? x) + (0 ? x))) << (0 ? x)) +#define SHIFT(x) \ + (0 ? x) +#define ID(id) \ + TEGRA_LA_##id + +#define LA_INFO(f, e, a, r, id, ss) \ +{f, e, RA(a), MASK(r), SHIFT(r), ID(id), __stringify(id), ss} + +struct la_client_info { + unsigned int fifo_size_in_atoms; + unsigned int expiration_in_ns; /* worst case expiration value */ + unsigned long reg_addr; + unsigned long mask; + unsigned long shift; + enum tegra_la_id id; + char *name; + bool scaling_supported; +}; + +struct la_scaling_info { + unsigned int threshold_low; + unsigned int threshold_mid; + unsigned int threshold_high; + int scaling_ref_count; + int actual_la_to_set; + int la_set; +}; + +struct la_scaling_reg_info { + enum tegra_la_id id; + unsigned int tl_reg_addr; + unsigned int tl_mask; + unsigned int tl_shift; + unsigned int tm_reg_addr; + unsigned int tm_mask; + unsigned int tm_shift; + unsigned int th_reg_addr; + unsigned int th_mask; + unsigned int th_shift; +}; + +#endif /* _MACH_TEGRA_LA_PRIV_H_ */ |