|
@@ -25,7 +25,23 @@ unsigned int gx_frame_buffer_size(void)
|
|
|
{
|
|
|
unsigned int val;
|
|
|
|
|
|
- /* FB size is reported by a virtual register */
|
|
|
+ if (!geode_has_vsa2()) {
|
|
|
+ uint32_t hi, lo;
|
|
|
+
|
|
|
+ /* The number of pages is (PMAX - PMIN)+1 */
|
|
|
+ rdmsr(MSR_GLIU_P2D_RO0, lo, hi);
|
|
|
+
|
|
|
+ /* PMAX */
|
|
|
+ val = ((hi & 0xff) << 12) | ((lo & 0xfff00000) >> 20);
|
|
|
+ /* PMIN */
|
|
|
+ val -= (lo & 0x000fffff);
|
|
|
+ val += 1;
|
|
|
+
|
|
|
+ /* The page size is 4k */
|
|
|
+ return (val << 12);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* FB size can be obtained from the VSA II */
|
|
|
/* Virtual register class = 0x02 */
|
|
|
/* VG_MEM_SIZE(512Kb units) = 0x00 */
|
|
|
|