#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

#define BCLK 200
#define DID 0XC
#define VOLTAGE_MAX 1.55000000
#define VOLTAGE_STEP 0.00625

//uint8_t fid_table[] = {};
//every 0.00625 step from 1.55v to 0.0
//uint8_t vid_table[248] = {1.55, };


//Core Frequency = BCLK*FID/DID
//CPU Ratio = 25*FID/(12.5*DID)
//Core Voltage = (1.55-0.00625*VID)

//uint8_t Offsets(


int main(int argc, char **argv){
	uint8_t fid = 0;
	uint32_t freq = 0;
	float voltage = 0;
	uint8_t vid = 128;

	while(fid<255){
		freq = BCLK*fid/DID;
		if(freq>1975 && freq < 4825){
			printf("freq: %u did: %u fid: %u fid(hex): %02X", freq, DID, fid, fid);
			voltage=VOLTAGE_MAX-VOLTAGE_STEP*vid;
		//if(voltage > 0.49375 && voltage < 1.50625)
			printf(" voltage: %f vid: %u vid(hex): %02X\n", voltage, vid, vid);
			vid--;
		}
		fid++;
		//vid--;
	}

	//for(voltage=VOLTAGE_MAX; voltage>0; voltage-=VOLTAGE_STEP){
	//	vid = (VOLTAGE_MAX-voltage)/VOLTAGE_STEP;
	//	printf("voltage: %f vid: %u vid(hex): %02X\n", voltage, vid, vid);
	//}
/*
	while(vid<255){
		voltage=VOLTAGE_MAX-VOLTAGE_STEP*vid;
		if(voltage > 0.49375 && voltage < 1.50625)
			printf("voltage: %f vid: %u vid(hex): %02X\n", voltage, vid, vid);

		vid++;
	}
*/

	return 0;
}
