// Geode GX2/LX VGA functions
//
// Copyright (C) 2009 Chris Kindt
//
// Writen for Google Summer of Code 2009 for the coreboot project
//
// This file may be distributed under the terms of the GNU LGPLv3 license.

#ifndef  GEODEVGA_H
#define  GEODEVGA_H

#define VRC_INDEX                       0xAC1C  // Index register
#define VRC_DATA                        0xAC1E  // Data register
#define VR_UNLOCK                       0xFC53  // Virtual register unlock code

// Graphics-specific registers:
#define OEM_BAR0                        0x50
#define OEM_BAR1                        0x54
#define OEM_BAR2                        0x58
#define OEM_BAR3                        0x5C

#define DC_LOCK_LOCK                    0x00000000
#define DC_LOCK_UNLOCK                  0x00004758

/* LX MSRs */
#define MSR_GLIU0                       (1 << 28)
#define MSR_GLIU0_BASE4                 (MSR_GLIU0 + 0x23)  /* LX */
#define GLIU0_P2D_BM_4                  (MSR_GLIU0 + 0x24)  /* GX2 */
#define GLIU0_P2D_RO			(MSR_GLIU0 + 0x29)
#define GLIU0_IOD_BM_0                  (MSR_GLIU0 + 0xE0)
#define GLIU0_IOD_BM_1                  (MSR_GLIU0 + 0xE1)
#define DC_SPARE                        0x80000011
#define VP_MSR_CONFIG_GX2               0xc0002001  /* GX2 */
#define VP_MSR_CONFIG_LX                0x48002001  /* LX */
#define VP_MSR_PADSEL                   0x48002011

#define VP_MSR_PADSEL_TFT_SEL_LOW       0xDFFFFFFF
#define VP_MSR_PADSEL_TFT_SEL_HIGH      0x0000003F

/* VP_MSR_CONFIG bits */
#define VP_MSR_CONFIG_FMT_CRT           (0)
#define VP_MSR_CONFIG_FMT_FP            (1 << 3)
#define VP_MSR_CONFIG_FPC               (1 << 15)
#define VP_MSR_CONFIG_FMT               ((1 << 3) | (1 << 4) | (1 << 5))


/* DC REG OFFSET */
#define DC_UNLOCK                       0x0
#define DC_GENERAL_CFG                  0x4
#define DC_DISPLAY_CFG                  0x8
#define DC_FB_ST_OFFSET                 0x10
#define DC_CB_ST_OFFSET                 0x14
#define DC_CURS_ST_OFFSET               0x18
#define DC_GLIU0_MEM_OFFSET             0x84

/* VP REG OFFSET */
#define VP_VCFG                         0x0
#define VP_DCFG                         0x8
#define VP_MISC                         0x50

/* FP REG OFFSET */
#define FP_PT1                          0x00
#define FP_PT2                          0x08
#define FP_PM                           0x10


/* DC bits */
#define DC_GENERAL_CFG_VGAE             (1 << 7)
#define DC_DISPLAY_CFG_GDEN             (1 << 3)
#define DC_DISPLAY_CFG_TRUP             (1 << 6)

/* VP bits */
#define VP_DCFG_CRT_EN                  (1 << 0)
#define VP_DCFG_HSYNC_EN                (1 << 1)
#define VP_DCFG_VSYNC_EN                (1 << 2)
#define VP_DCFG_DAC_BL_EN               (1 << 3)
#define VP_DCFG_CRT_SKEW                (1 << 16)
#define VP_DCFG_BYP_BOTH                (1 << 0)

/* FP bits */
#define FP_PM_P                         (1 << 24)       /* panel power ctl */
#define FP_PT2_SCRC                     (1 << 27)       /* panel shift clock retrace activity ctl  */

/* Mask */
#define DC_CFG_MSK                      0xf000a6

int geodevga_setup();

#endif
