Commit 82c86b45 authored by Dave Jones's avatar Dave Jones

[CPUFREQ] powernow-k8: small cleanups / documentation additions (Pavel Machek)

From: Pavel Machek <pavel (AT) ucw.cz>

These are very small cleanups / documentation additions. It avoids
using different names for same fields in different structures.

Updated to latest cpufreq-bk by Dominik Brodowski, and ack'ed by Mark
Langsdorf, Paul Devriendt and Pavel Machek.
Signed-off-by: default avatarPavel Machek <pavel@suse.cz>
Signed-off-by: default avatarDominik Brodowski <linux@brodo.de>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 8e65826d
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
* Processor information obtained from Chapter 9 (Power and Thermal Management) * Processor information obtained from Chapter 9 (Power and Thermal Management)
* of the "BIOS and Kernel Developer's Guide for the AMD Athlon 64 and AMD * of the "BIOS and Kernel Developer's Guide for the AMD Athlon 64 and AMD
* Opteron Processors" available for download from www.amd.com * Opteron Processors" available for download from www.amd.com
*
* Tables for specific CPUs can be infrerred from
* http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/30430.pdf
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -65,7 +68,12 @@ static u32 find_millivolts_from_vid(struct powernow_k8_data *data, u32 vid) ...@@ -65,7 +68,12 @@ static u32 find_millivolts_from_vid(struct powernow_k8_data *data, u32 vid)
return 1550-vid*25; return 1550-vid*25;
} }
/* Return the vco fid for an input fid */ /* Return the vco fid for an input fid
*
* Each "low" fid has corresponding "high" fid, and you can get to "low" fids
* only from corresponding high fids. This returns "high" fid corresponding to
* "low" one.
*/
static u32 convert_fid_to_vco_fid(u32 fid) static u32 convert_fid_to_vco_fid(u32 fid)
{ {
if (fid < HI_FID_TABLE_BOTTOM) { if (fid < HI_FID_TABLE_BOTTOM) {
...@@ -307,10 +315,7 @@ static int core_voltage_pre_transition(struct powernow_k8_data *data, u32 reqvid ...@@ -307,10 +315,7 @@ static int core_voltage_pre_transition(struct powernow_k8_data *data, u32 reqvid
/* Phase 2 - core frequency transition */ /* Phase 2 - core frequency transition */
static int core_frequency_transition(struct powernow_k8_data *data, u32 reqfid) static int core_frequency_transition(struct powernow_k8_data *data, u32 reqfid)
{ {
u32 vcoreqfid; u32 vcoreqfid, vcocurrfid, vcofiddiff, savevid = data->currvid;
u32 vcocurrfid;
u32 vcofiddiff;
u32 savevid = data->currvid;
if ((reqfid < HI_FID_TABLE_BOTTOM) && (data->currfid < HI_FID_TABLE_BOTTOM)) { if ((reqfid < HI_FID_TABLE_BOTTOM) && (data->currfid < HI_FID_TABLE_BOTTOM)) {
printk(KERN_ERR PFX "ph2: illegal lo-lo transition 0x%x 0x%x\n", printk(KERN_ERR PFX "ph2: illegal lo-lo transition 0x%x 0x%x\n",
...@@ -498,7 +503,7 @@ static int check_pst_table(struct powernow_k8_data *data, struct pst_s *pst, u8 ...@@ -498,7 +503,7 @@ static int check_pst_table(struct powernow_k8_data *data, struct pst_s *pst, u8
|| (pst[j].fid & 1) || (pst[j].fid & 1)
|| (j && (pst[j].fid < HI_FID_TABLE_BOTTOM))) { || (j && (pst[j].fid < HI_FID_TABLE_BOTTOM))) {
/* Only first fid is allowed to be in "low" range */ /* Only first fid is allowed to be in "low" range */
printk(KERN_ERR PFX "fid %d invalid : 0x%x\n", j, pst[j].fid); printk(KERN_ERR PFX "two low fids - %d : 0x%x\n", j, pst[j].fid);
return -EINVAL; return -EINVAL;
} }
if (pst[j].fid < lastfid) if (pst[j].fid < lastfid)
...@@ -618,7 +623,7 @@ static int find_psb_table(struct powernow_k8_data *data) ...@@ -618,7 +623,7 @@ static int find_psb_table(struct powernow_k8_data *data)
return -ENODEV; return -ENODEV;
} }
data->vstable = psb->voltagestabilizationtime; data->vstable = psb->vstable;
dprintk("voltage stabilization time: %d(*20us)\n", data->vstable); dprintk("voltage stabilization time: %d(*20us)\n", data->vstable);
dprintk("flags2: 0x%x\n", psb->flags2); dprintk("flags2: 0x%x\n", psb->flags2);
...@@ -632,8 +637,8 @@ static int find_psb_table(struct powernow_k8_data *data) ...@@ -632,8 +637,8 @@ static int find_psb_table(struct powernow_k8_data *data)
dprintk("isochronous relief time: %d\n", data->irt); dprintk("isochronous relief time: %d\n", data->irt);
dprintk("maximum voltage step: %d - 0x%x\n", mvs, data->vidmvs); dprintk("maximum voltage step: %d - 0x%x\n", mvs, data->vidmvs);
dprintk("numpst: 0x%x\n", psb->numpst); dprintk("numpst: 0x%x\n", psb->numps);
cpst = psb->numpst; cpst = psb->numps;
if ((psb->cpuid == 0x00000fc0) || (psb->cpuid == 0x00000fe0) ){ if ((psb->cpuid == 0x00000fc0) || (psb->cpuid == 0x00000fe0) ){
thiscpuid = cpuid_eax(CPUID_PROCESSOR_SIGNATURE); thiscpuid = cpuid_eax(CPUID_PROCESSOR_SIGNATURE);
if ((thiscpuid == 0x00000fc0) || (thiscpuid == 0x00000fe0) ) { if ((thiscpuid == 0x00000fc0) || (thiscpuid == 0x00000fe0) ) {
...@@ -651,7 +656,7 @@ static int find_psb_table(struct powernow_k8_data *data) ...@@ -651,7 +656,7 @@ static int find_psb_table(struct powernow_k8_data *data)
dprintk("maxvid: 0x%x\n", psb->maxvid); dprintk("maxvid: 0x%x\n", psb->maxvid);
maxvid = psb->maxvid; maxvid = psb->maxvid;
data->numps = psb->numpstates; data->numps = psb->numps;
dprintk("numpstates: 0x%x\n", data->numps); dprintk("numpstates: 0x%x\n", data->numps);
return fill_powernow_table(data, (struct pst_s *)(psb+1), maxvid); return fill_powernow_table(data, (struct pst_s *)(psb+1), maxvid);
} }
......
...@@ -21,8 +21,7 @@ struct powernow_k8_data { ...@@ -21,8 +21,7 @@ struct powernow_k8_data {
u32 plllock; /* pll lock time, units 1 us */ u32 plllock; /* pll lock time, units 1 us */
/* keep track of the current fid / vid */ /* keep track of the current fid / vid */
u32 currvid; u32 currvid, currfid;
u32 currfid;
/* the powernow_table includes all frequency and vid/fid pairings: /* the powernow_table includes all frequency and vid/fid pairings:
* fid are the lower 8 bits of the index, vid are the upper 8 bits. * fid are the lower 8 bits of the index, vid are the upper 8 bits.
...@@ -152,14 +151,14 @@ struct psb_s { ...@@ -152,14 +151,14 @@ struct psb_s {
u8 signature[10]; u8 signature[10];
u8 tableversion; u8 tableversion;
u8 flags1; u8 flags1;
u16 voltagestabilizationtime; u16 vstable;
u8 flags2; u8 flags2;
u8 numpst; u8 num_tables;
u32 cpuid; u32 cpuid;
u8 plllocktime; u8 plllocktime;
u8 maxfid; u8 maxfid;
u8 maxvid; u8 maxvid;
u8 numpstates; u8 numps;
}; };
/* Pairs of fid/vid values are appended to the version 1.4 PSB table. */ /* Pairs of fid/vid values are appended to the version 1.4 PSB table. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment