alistair23-linux/drivers/video/nvidia/nv_type.h
Antonino A. Daplas 7a07cd786d [PATCH] nvidiafb: add suspend and resume hooks
Add suspend and resume hooks to make software suspend more reliable.  Resuming
from standby should generally work.  Resuming from mem and from disk requires
that the GPU is disabled.  Adding these to the suspend script...

fbset -accel false -a
/* suspend here */
fbset -accel true -a

...  should generally work.  In addition, resuming from mem requires that the
video card has to be POSTed by the BIOS or some other utility.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-27 08:44:55 -08:00

176 lines
3.3 KiB
C

#ifndef __NV_TYPE_H__
#define __NV_TYPE_H__
#include <linux/fb.h>
#include <linux/types.h>
#include <linux/i2c.h>
#include <linux/i2c-id.h>
#include <linux/i2c-algo-bit.h>
#define NV_ARCH_04 0x04
#define NV_ARCH_10 0x10
#define NV_ARCH_20 0x20
#define NV_ARCH_30 0x30
#define NV_ARCH_40 0x40
#define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b))
#define MASKEXPAND(mask) BITMASK(1?mask,0?mask)
#define SetBF(mask,value) ((value) << (0?mask))
#define GetBF(var,mask) (((unsigned)((var) & MASKEXPAND(mask))) >> (0?mask) )
#define SetBitField(value,from,to) SetBF(to, GetBF(value,from))
#define SetBit(n) (1<<(n))
#define Set8Bits(value) ((value)&0xff)
#define V_DBLSCAN 1
typedef struct {
int bitsPerPixel;
int depth;
int displayWidth;
int weight;
} NVFBLayout;
#define NUM_SEQ_REGS 0x05
#define NUM_CRT_REGS 0x41
#define NUM_GRC_REGS 0x09
#define NUM_ATC_REGS 0x15
struct nvidia_par;
struct nvidia_i2c_chan {
struct nvidia_par *par;
unsigned long ddc_base;
struct i2c_adapter adapter;
struct i2c_algo_bit_data algo;
};
typedef struct _riva_hw_state {
u8 attr[NUM_ATC_REGS];
u8 crtc[NUM_CRT_REGS];
u8 gra[NUM_GRC_REGS];
u8 seq[NUM_SEQ_REGS];
u8 misc_output;
u32 bpp;
u32 width;
u32 height;
u32 interlace;
u32 repaint0;
u32 repaint1;
u32 screen;
u32 scale;
u32 dither;
u32 extra;
u32 fifo;
u32 pixel;
u32 horiz;
u32 arbitration0;
u32 arbitration1;
u32 pll;
u32 pllB;
u32 vpll;
u32 vpll2;
u32 vpllB;
u32 vpll2B;
u32 pllsel;
u32 general;
u32 crtcOwner;
u32 head;
u32 head2;
u32 config;
u32 cursorConfig;
u32 cursor0;
u32 cursor1;
u32 cursor2;
u32 timingH;
u32 timingV;
u32 displayV;
u32 crtcSync;
} RIVA_HW_STATE;
struct riva_regs {
RIVA_HW_STATE ext;
};
struct nvidia_par {
RIVA_HW_STATE SavedReg;
RIVA_HW_STATE ModeReg;
RIVA_HW_STATE *CurrentState;
u32 pseudo_palette[16];
struct pci_dev *pci_dev;
u32 Architecture;
u32 CursorStart;
int Chipset;
int bus;
unsigned long FbAddress;
u8 __iomem *FbStart;
u32 FbMapSize;
u32 FbUsableSize;
u32 ScratchBufferSize;
u32 ScratchBufferStart;
int FpScale;
u32 MinVClockFreqKHz;
u32 MaxVClockFreqKHz;
u32 CrystalFreqKHz;
u32 RamAmountKBytes;
u32 IOBase;
NVFBLayout CurrentLayout;
int cursor_reset;
int lockup;
int videoKey;
int FlatPanel;
int FPDither;
int Television;
int CRTCnumber;
int alphaCursor;
int twoHeads;
int twoStagePLL;
int fpScaler;
int fpWidth;
int fpHeight;
int PanelTweak;
int paneltweak;
int pm_state;
u32 crtcSync_read;
u32 fpSyncs;
u32 dmaPut;
u32 dmaCurrent;
u32 dmaFree;
u32 dmaMax;
u32 __iomem *dmaBase;
u32 currentRop;
int WaitVSyncPossible;
int BlendingPossible;
u32 paletteEnabled;
u32 forceCRTC;
u8 DDCBase;
#ifdef CONFIG_MTRR
struct {
int vram;
int vram_valid;
} mtrr;
#endif
struct nvidia_i2c_chan chan[3];
volatile u32 __iomem *REGS;
volatile u32 __iomem *PCRTC0;
volatile u32 __iomem *PCRTC;
volatile u32 __iomem *PRAMDAC0;
volatile u32 __iomem *PFB;
volatile u32 __iomem *PFIFO;
volatile u32 __iomem *PGRAPH;
volatile u32 __iomem *PEXTDEV;
volatile u32 __iomem *PTIMER;
volatile u32 __iomem *PMC;
volatile u32 __iomem *PRAMIN;
volatile u32 __iomem *FIFO;
volatile u32 __iomem *CURSOR;
volatile u8 __iomem *PCIO0;
volatile u8 __iomem *PCIO;
volatile u8 __iomem *PVIO;
volatile u8 __iomem *PDIO0;
volatile u8 __iomem *PDIO;
volatile u32 __iomem *PRAMDAC;
};
#endif /* __NV_TYPE_H__ */