View Single Post
Posts: 1,463 | Thanked: 1,916 times | Joined on Feb 2008 @ Edmonton, AB
#85
It doesn't though, it actually runs at the nominal voltage which is the minimum voltage required to run the worst sample of silicon they manufactured.

There's also this in voltage.c:

/* VDD1 */
static struct omap_volt_data omap34xx_vdd1_volt_data[] = {
{.u_volt_nominal = 975000, .sr_errminlimit = 0xF4,
.vp_errorgain = 0x0C},
{.u_volt_nominal = 1075000, .sr_errminlimit = 0xF4,
.vp_errorgain = 0x0C},
{.u_volt_nominal = 1200000, .sr_errminlimit = 0xF9,
.vp_errorgain = 0x18},
{.u_volt_nominal = 1270000, .sr_errminlimit = 0xF9,
.vp_errorgain = 0x18},
{.u_volt_nominal = 1350000, .sr_errminlimit = 0xF9,
.vp_errorgain = 0x18},
};

I think I was wrong about the dyn_margin though. What it does it start at the nominal voltage and reduce it until it hits errminlimit, then raises it up 50k.
Anyways, on my phone, if i don't even touch anything and just read the data I get
1375000 <<max
1225000 <<nominal
50000 << margin
1175000 << optimized

I thought it's taking nominal - 50k to get optimized, but its actually taking optimized + 50k to get nominal.
I'll try changing the errlimit to like 1 and see what happens.