DarkBahamut wrote:It would be interesting if someone was able to multimeter the XU4 to see what voltage it really is using. The kernel is claims that it's using the ASV tables and not the table in the bus driver. That is also the behaviour I would expect as it matches other Samsung devices running 3.10.
You can see the kernel output on my XU4 board when running 3.10:
Code: Select all
[ 0.311355] [c4] VDD_MIF ASV group is 3
Code: Select all
[ 8.568034] [c4] MIF 933000Khz ASV is 1100000uV
[ 8.571158] [c4] DEVFREQ(MIF) : 933000Khz, ABB 8
[ 8.575733] [c4] MIF 825000Khz ASV is 962500uV
[ 8.580154] [c4] DEVFREQ(MIF) : 825000Khz, ABB 14
[ 8.584837] [c4] MIF 728000Khz ASV is 925000uV
[ 8.589263] [c4] DEVFREQ(MIF) : 728000Khz, ABB 14
[ 8.593946] [c4] MIF 633000Khz ASV is 887500uV
[ 8.598373] [c4] DEVFREQ(MIF) : 633000Khz, ABB 14
[ 8.603057] [c4] MIF 543000Khz ASV is 862500uV
[ 8.607483] [c4] DEVFREQ(MIF) : 543000Khz, ABB 14
[ 8.612134] [c4] MIF 413000Khz ASV is 800000uV
[ 8.616593] [c4] DEVFREQ(MIF) : 413000Khz, ABB 14
[ 8.621278] [c4] MIF 275000Khz ASV is 775000uV
[ 8.625708] [c4] DEVFREQ(MIF) : 275000Khz, ABB 14
[ 8.630391] [c4] MIF 206000Khz ASV is 775000uV
[ 8.634815] [c4] DEVFREQ(MIF) : 206000Khz, ABB 14
[ 8.639499] [c4] MIF 165000Khz ASV is 775000uV
[ 8.643925] [c4] DEVFREQ(MIF) : 165000Khz, ABB 14
[ 8.649909] [c4] MIF: set ASV freq 825000, voltage 962500
The voltages don't match the bus driver, but they do match the ASV tables. I think the bus driver is only used if the ASV grouping is removed.
The voltages indeed don't match. I've just measured following entry for you:
Code: Select all
[ 9.487144] [c6] MIF 825000Khz ASV is 950000uV
[ 9.491329] [c6] DEVFREQ(MIF) : 825000Khz, ABB 14
In reality it measures as 962mV, which seems to check out because there is some kind of MIF_VOLT_STEP of 125mV. The VDD_MIF moves with steps of 6250uV, not sure why it does that. See following example where I manually set voltage (target_volt) and then read from the regulator what the actual voltage is (mind you, this again needs +125mV):
Code: Select all
[ 1616.247707] [c7] run 7 ok! target_volt (+ 12500) @ 821500 , regulator_volt @ 825000
[ 1616.260394] [c7] run 8 ok! target_volt (+ 12500) @ 821000 , regulator_volt @ 825000
[ 1616.273103] [c7] run 9 ok! target_volt (+ 12500) @ 820500 , regulator_volt @ 825000
[ 1616.285776] [c7] run 10 ok! target_volt (+ 12500) @ 820000 , regulator_volt @ 825000
[ 1616.298724] [c7] run 11 ok! target_volt (+ 12500) @ 819500 , regulator_volt @ 825000
[ 1616.311536] [c7] run 12 ok! target_volt (+ 12500) @ 819000 , regulator_volt @ 825000
[ 1616.324588] [c7] run 13 ok! target_volt (+ 12500) @ 818500 , regulator_volt @ 818750
[ 1616.337462] [c7] run 14 ok! target_volt (+ 12500) @ 818000 , regulator_volt @ 818750
[ 1616.350244] [c7] run 15 ok! target_volt (+ 12500) @ 817500 , regulator_volt @ 818750
[ 1616.363716] [c7] run 16 ok! target_volt (+ 12500) @ 817000 , regulator_volt @ 818750
[ 1616.377114] [c7] run 17 ok! target_volt (+ 12500) @ 816500 , regulator_volt @ 818750
[ 1616.389969] [c7] run 18 ok! target_volt (+ 12500) @ 816000 , regulator_volt @ 818750
[ 1616.402918] [c7] run 19 ok! target_volt (+ 12500) @ 815500 , regulator_volt @ 818750
[ 1616.415812] [c7] run 20 ok! target_volt (+ 12500) @ 815000 , regulator_volt @ 818750
[ 1616.428755] [c7] run 21 ok! target_volt (+ 12500) @ 814500 , regulator_volt @ 818750
[ 1616.441657] [c7] run 22 ok! target_volt (+ 12500) @ 814000 , regulator_volt @ 818750
[ 1616.454580] [c7] run 23 ok! target_volt (+ 12500) @ 813500 , regulator_volt @ 818750
[ 1616.467558] [c7] run 24 ok! target_volt (+ 12500) @ 813000 , regulator_volt @ 818750
[ 1616.480741] [c7] run 25 ok! target_volt (+ 12500) @ 812500 , regulator_volt @ 812500
[ 1616.493639] [c7] run 26 ok! target_volt (+ 12500) @ 812000 , regulator_volt @ 812500
[ 1616.506529] [c7] run 27 ok! target_volt (+ 12500) @ 811500 , regulator_volt @ 812500
[ 1616.519440] [c7] run 28 ok! target_volt (+ 12500) @ 811000 , regulator_volt @ 812500
[ 1616.532322] [c7] run 29 ok! target_volt (+ 12500) @ 810500 , regulator_volt @ 812500
[ 1616.545091] [c7] run 30 ok! target_volt (+ 12500) @ 810000 , regulator_volt @ 812500
[ 1616.557974] [c7] run 31 ok! target_volt (+ 12500) @ 809500 , regulator_volt @ 812500
[ 1616.570816] [c7] run 32 ok! target_volt (+ 12500) @ 809000 , regulator_volt @ 812500
[ 1616.583619] [c7] run 33 ok! target_volt (+ 12500) @ 808500 , regulator_volt @ 812500
joy wrote:@kbaao,
For your information.....
I've tried 1066MHz today because I'm also wondering if there is more room,
but the minute I set related registers, system turns lock immediately.
I also adjusted vdd_mif voltage but no work.
So, no more room.
Sorry for my late reply joy! Appreciate the effort! I've developed my own kernel module in the meantime that allows for arbitrary voltage settings. I'll be sure to share the module in time, maybe its of use to someone here.
I'm still trying to figure out what the VDD_MIF is exactly and how it relates to other components. My understanding right now is that changing voltage or frequency mainly comes down to manipulating an interconnect bus between the CPU and DRAM.
1) How does this affect the memory controller itself?
2) Is the controller even part of the bus?
In general I'm still not sure what components are affected by changing the frequency or voltage. It seems there are some components to consider: memory controller, CPU<->DRAM bus, DRAM itself.
3) Which components are controlled? I read somewhere that the bus shares its clock speed with the DRAM, does that mean that changing the bus frequency directly affects the physical DRAM frequency it operates at? Does the same hold for the voltage?
And then finally, do we know the part number of the regulator? I'd assume its a regulator from Texas Instruments, but haven't been able to find which one.