linux/drivers/video/fbdev/nvidia/nv_type.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __NV_TYPE_H__
   3#define __NV_TYPE_H__
   4
   5#include <linux/fb.h>
   6#include <linux/types.h>
   7#include <linux/i2c.h>
   8#include <linux/i2c-algo-bit.h>
   9#include <video/vga.h>
  10
  11#define NV_ARCH_04  0x04
  12#define NV_ARCH_10  0x10
  13#define NV_ARCH_20  0x20
  14#define NV_ARCH_30  0x30
  15#define NV_ARCH_40  0x40
  16
  17#define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1)  << (b))
  18#define MASKEXPAND(mask) BITMASK(1?mask,0?mask)
  19#define SetBF(mask,value) ((value) << (0?mask))
  20#define GetBF(var,mask) (((unsigned)((var) & MASKEXPAND(mask))) >> (0?mask) )
  21#define SetBitField(value,from,to) SetBF(to, GetBF(value,from))
  22#define SetBit(n) (1<<(n))
  23#define Set8Bits(value) ((value)&0xff)
  24
  25#define V_DBLSCAN  1
  26
  27typedef struct {
  28        int bitsPerPixel;
  29        int depth;
  30        int displayWidth;
  31        int weight;
  32} NVFBLayout;
  33
  34#define NUM_SEQ_REGS            0x05
  35#define NUM_CRT_REGS            0x41
  36#define NUM_GRC_REGS            0x09
  37#define NUM_ATC_REGS            0x15
  38
  39struct nvidia_par;
  40
  41struct nvidia_i2c_chan {
  42        struct nvidia_par *par;
  43        unsigned long ddc_base;
  44        struct i2c_adapter adapter;
  45        struct i2c_algo_bit_data algo;
  46};
  47
  48typedef struct _riva_hw_state {
  49        u8 attr[NUM_ATC_REGS];
  50        u8 crtc[NUM_CRT_REGS];
  51        u8 gra[NUM_GRC_REGS];
  52        u8 seq[NUM_SEQ_REGS];
  53        u8 misc_output;
  54        u32 bpp;
  55        u32 width;
  56        u32 height;
  57        u32 interlace;
  58        u32 repaint0;
  59        u32 repaint1;
  60        u32 screen;
  61        u32 scale;
  62        u32 dither;
  63        u32 extra;
  64        u32 fifo;
  65        u32 pixel;
  66        u32 horiz;
  67        u32 arbitration0;
  68        u32 arbitration1;
  69        u32 pll;
  70        u32 pllB;
  71        u32 vpll;
  72        u32 vpll2;
  73        u32 vpllB;
  74        u32 vpll2B;
  75        u32 pllsel;
  76        u32 general;
  77        u32 crtcOwner;
  78        u32 head;
  79        u32 head2;
  80        u32 config;
  81        u32 cursorConfig;
  82        u32 cursor0;
  83        u32 cursor1;
  84        u32 cursor2;
  85        u32 timingH;
  86        u32 timingV;
  87        u32 displayV;
  88        u32 crtcSync;
  89        u32 control;
  90} RIVA_HW_STATE;
  91
  92struct riva_regs {
  93        RIVA_HW_STATE ext;
  94};
  95
  96struct nvidia_par {
  97        RIVA_HW_STATE SavedReg;
  98        RIVA_HW_STATE ModeReg;
  99        RIVA_HW_STATE initial_state;
 100        RIVA_HW_STATE *CurrentState;
 101        struct vgastate vgastate;
 102        u32 pseudo_palette[16];
 103        struct pci_dev *pci_dev;
 104        u32 Architecture;
 105        u32 CursorStart;
 106        int Chipset;
 107        unsigned long FbAddress;
 108        u8 __iomem *FbStart;
 109        u32 FbMapSize;
 110        u32 FbUsableSize;
 111        u32 ScratchBufferSize;
 112        u32 ScratchBufferStart;
 113        int FpScale;
 114        u32 MinVClockFreqKHz;
 115        u32 MaxVClockFreqKHz;
 116        u32 CrystalFreqKHz;
 117        u32 RamAmountKBytes;
 118        u32 IOBase;
 119        NVFBLayout CurrentLayout;
 120        int cursor_reset;
 121        int lockup;
 122        int videoKey;
 123        int FlatPanel;
 124        int FPDither;
 125        int Television;
 126        int CRTCnumber;
 127        int alphaCursor;
 128        int twoHeads;
 129        int twoStagePLL;
 130        int fpScaler;
 131        int fpWidth;
 132        int fpHeight;
 133        int PanelTweak;
 134        int paneltweak;
 135        int LVDS;
 136        int pm_state;
 137        int reverse_i2c;
 138        u32 crtcSync_read;
 139        u32 fpSyncs;
 140        u32 dmaPut;
 141        u32 dmaCurrent;
 142        u32 dmaFree;
 143        u32 dmaMax;
 144        u32 __iomem *dmaBase;
 145        u32 currentRop;
 146        int WaitVSyncPossible;
 147        int BlendingPossible;
 148        u32 paletteEnabled;
 149        u32 forceCRTC;
 150        u32 open_count;
 151        u8 DDCBase;
 152        int wc_cookie;
 153        struct nvidia_i2c_chan chan[3];
 154
 155        volatile u32 __iomem *REGS;
 156        volatile u32 __iomem *PCRTC0;
 157        volatile u32 __iomem *PCRTC;
 158        volatile u32 __iomem *PRAMDAC0;
 159        volatile u32 __iomem *PFB;
 160        volatile u32 __iomem *PFIFO;
 161        volatile u32 __iomem *PGRAPH;
 162        volatile u32 __iomem *PEXTDEV;
 163        volatile u32 __iomem *PTIMER;
 164        volatile u32 __iomem *PMC;
 165        volatile u32 __iomem *PRAMIN;
 166        volatile u32 __iomem *FIFO;
 167        volatile u32 __iomem *CURSOR;
 168        volatile u8 __iomem *PCIO0;
 169        volatile u8 __iomem *PCIO;
 170        volatile u8 __iomem *PVIO;
 171        volatile u8 __iomem *PDIO0;
 172        volatile u8 __iomem *PDIO;
 173        volatile u32 __iomem *PRAMDAC;
 174};
 175
 176#endif                          /* __NV_TYPE_H__ */
 177