Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "pci.h"
  2. #include "rhd_regs.h"
  3.  
  4. typedef struct _ScrnInfoRec *ScrnInfoPtr;
  5. typedef struct RHDRec       *RHDPtr;
  6.  
  7. typedef struct {
  8.     int                 frameX0;
  9.     int                 frameY0;
  10.     int                 virtualX;
  11.     int                 virtualY;
  12.     int                 depth;
  13.     int                 fbbpp;
  14.   //  rgb     weight;
  15.   //  rgb     blackColour;
  16.   //  rgb     whiteColour;
  17.     int                 defaultVisual;
  18.     char **             modes;
  19.     pointer             options;
  20. } DispRec, *DispPtr;
  21.  
  22.  
  23. typedef struct _ScrnInfoRec
  24. {
  25.     int       scrnIndex;
  26.     RHDPtr    rhdPtr;
  27. //    int     driverVersion;
  28.     char *              driverName;             /* canonical name used in */
  29.                                                 /* the config file */
  30. //    ScreenPtr   pScreen;    /* Pointer to the ScreenRec */
  31. //    int     scrnIndex;    /* Number of this screen */
  32. //    Bool    configured;   /* Is this screen valid */
  33. //    int     origIndex;    /* initial number assigned to
  34. //             * this screen before
  35. //             * finalising the number of
  36. //             * available screens */
  37.  
  38.     /* Display-wide screenInfo values needed by this screen */
  39. //    int     imageByteOrder;
  40. //    int     bitmapScanlineUnit;
  41. //    int     bitmapScanlinePad;
  42. //    int     bitmapBitOrder;
  43. //    int     numFormats;
  44. //    PixmapFormatRec formats[MAXFORMATS];
  45. //    PixmapFormatRec fbFormat;
  46.  
  47.     int     bitsPerPixel;            /* fb bpp */
  48. //    Pix24Flags    pixmap24;          /* pixmap pref for depth 24 */
  49.     int     depth;                   /* depth of default visual */
  50. //    MessageType   depthFrom;         /* set from config? */
  51. //    MessageType   bitsPerPixelFrom; /* set from config? */
  52. //    rgb     weight;     /* r/g/b weights */
  53. //    rgb     mask;     /* rgb masks */
  54. //    rgb     offset;     /* rgb offsets */
  55. //    int     rgbBits;    /* Number of bits in r/g/b */
  56. //    Gamma   gamma;      /* Gamma of the monitor */
  57. //    int     defaultVisual;    /* default visual class */
  58.     int     maxHValue;               /* max horizontal timing */
  59.     int     maxVValue;               /* max vertical timing value */
  60.     int     virtualX;                /* Virtual width */
  61.     int     virtualY;                /* Virtual height */
  62.     int     xInc;                    /* Horizontal timing increment */
  63. //    MessageType   virtualFrom;    /* set from config? */
  64.     int     displayWidth;            /* memory pitch */
  65.     int     frameX0;                 /* viewport position */
  66.     int                 frameY0;
  67.     int                 frameX1;
  68.     int                 frameY1;
  69.     int     zoomLocked;              /* Disallow mode changes */
  70.     DisplayModePtr  modePool;        /* list of compatible modes */
  71.     DisplayModePtr  modes;           /* list of actual modes */
  72.     DisplayModePtr  currentMode;     /* current mode
  73.                                                  * This was previously
  74.                                                  * overloaded with the modes
  75.                                                  * field, which is a pointer
  76.                                                  * into a circular list */
  77. //    confScreenPtr confScreen;   /* Screen config info */
  78. //    MonPtr    monitor;    /* Monitor information */
  79.     DispPtr   display;               /* Display information */
  80. //    int *   entityList;   /* List of device entities */
  81. //    int     numEntities;
  82.     int     widthmm;                 /* physical display dimensions in mm */
  83.     int                 heightmm;
  84.     int     xDpi;                    /* width DPI */
  85.     int     yDpi;                    /* height DPI */
  86.     char *    name;                  /* Name to prefix messages */
  87. //    pointer   driverPrivate;    /* Driver private area */
  88. //    DevUnion *    privates;   /* Other privates can hook in
  89. //             * here */
  90. //    DriverPtr   drv;      /* xf86DriverList[] entry */
  91. //    pointer   module;     /* Pointer to module head */
  92. //    int     colorKey;
  93. //    int     overlayFlags;
  94.  
  95.     /* Some of these may be moved out of here into the driver private area */
  96.  
  97. //    char *    chipset;    /* chipset name */
  98. //    char *    ramdac;     /* ramdac name */
  99. //    char *    clockchip;    /* clock name */
  100.  //   Bool    progClock;    /* clock is programmable */
  101. //    int     numClocks;    /* number of clocks */
  102. //    int     clock[MAXCLOCKS]; /* list of clock frequencies */
  103. //    int     videoRam;   /* amount of video ram (kb) */
  104. //    unsigned long biosBase;   /* Base address of video BIOS */
  105. //    unsigned long memPhysBase;    /* Physical address of FB */
  106. //    unsigned long   fbOffset;   /* Offset of FB in the above */
  107. //    IOADDRESS     domainIOBase;   /* Domain I/O base address */
  108. //    int     memClk;     /* memory clock */
  109. //    int     textClockFreq;    /* clock of text mode */
  110. //    Bool    flipPixels;   /* swap default black/white */
  111. //    pointer   options;
  112.  
  113. //    int     chipID;
  114. //    int     chipRev;
  115. //    int     racMemFlags;
  116. //    int     racIoFlags;
  117. //    pointer   access;
  118. //    xf86CurrentAccessPtr CurrentAccess;
  119. //    resType   resourceType;
  120. //    pointer   busAccess;
  121.  
  122.     /* Allow screens to be enabled/disabled individually */
  123. //    Bool    vtSema;
  124. //    DevUnion    pixmapPrivate;    /* saved devPrivate from pixmap */
  125.  
  126.     /* hw cursor moves at SIGIO time */
  127. //    Bool    silkenMouse;
  128.  
  129.     /* Storage for clockRanges and adjustFlags for use with the VidMode ext */
  130. //    ClockRangesPtr  clockRanges;
  131. //    int     adjustFlags;
  132.  
  133.     /*
  134.      * These can be used when the minor ABI version is incremented.
  135.      * The NUM_* parameters must be reduced appropriately to keep the
  136.      * structure size and alignment unchanged.
  137.      */
  138. //    int     reservedInt[NUM_RESERVED_INTS];
  139.  
  140. //    int *   entityInstanceList;
  141. //    pointer   reservedPtr[NUM_RESERVED_POINTERS];
  142.  
  143.     /*
  144.      * Driver entry points.
  145.      *
  146.      */
  147.  
  148. /*
  149.     xf86ProbeProc                       *Probe;
  150.     xf86PreInitProc                     *PreInit;
  151.     xf86ScreenInitProc                  *ScreenInit;
  152.     xf86SwitchModeProc                  *SwitchMode;
  153.     xf86AdjustFrameProc                 *AdjustFrame;
  154.     xf86EnterVTProc                     *EnterVT;
  155.     xf86LeaveVTProc                     *LeaveVT;
  156.     xf86FreeScreenProc                  *FreeScreen;
  157.     xf86ValidModeProc                   *ValidMode;
  158.     xf86EnableDisableFBAccessProc       *EnableDisableFBAccess;
  159.     xf86SetDGAModeProc                  *SetDGAMode;
  160.     xf86ChangeGammaProc                 *ChangeGamma;
  161.     xf86PointerMovedProc                *PointerMoved;
  162.     xf86PMEventProc                     *PMEvent;
  163.     xf86HandleMessageProc               *HandleMessage;
  164.     xf86DPMSSetProc                     *DPMSSet;
  165.     xf86LoadPaletteProc                 *LoadPalette;
  166.     xf86SetOverscanProc                 *SetOverscan;
  167.     xorgRRFuncProc                      *RRFunc;
  168. */
  169.     /*
  170.      * This can be used when the minor ABI version is incremented.
  171.      * The NUM_* parameter must be reduced appropriately to keep the
  172.      * structure size and alignment unchanged.
  173.      */
  174. //    funcPointer   reservedFuncs[NUM_RESERVED_FUNCS];
  175.  
  176. } ScrnInfoRec;
  177.  
  178.  
  179.  
  180. #pragma pack(push, 1)
  181. typedef struct
  182. {
  183.   CARD16 device;
  184.   CARD16 family;
  185. }PciChipset_t;
  186. #pragma pack(pop)
  187.  
  188. #define VENDOR_ATI 0x1002
  189.  
  190. enum RHD_CHIPSETS {
  191.     RHD_UNKNOWN = 0,
  192.     /* R500 */
  193.     RHD_RV505,
  194.     RHD_RV515,
  195.     RHD_RV516,
  196.     RHD_R520,
  197.     RHD_RV530,
  198.     RHD_RV535,
  199.     RHD_RV550,
  200.     RHD_RV560,
  201.     RHD_RV570,
  202.     RHD_R580,
  203.     /* R500 Mobility */
  204.     RHD_M52,
  205.     RHD_M54,
  206.     RHD_M56,
  207.     RHD_M58,
  208.     RHD_M62,
  209.     RHD_M64,
  210.     RHD_M66,
  211.     RHD_M68,
  212.     RHD_M71,
  213.     /* R500 integrated */
  214.     RHD_RS600,
  215.     RHD_RS690,
  216.     RHD_RS740,
  217.     /* R600 */
  218.     RHD_R600,
  219.     RHD_RV610,
  220.     RHD_RV630,
  221.     /* R600 Mobility */
  222.     RHD_M72,
  223.     RHD_M74,
  224.     RHD_M76,
  225.     /* RV670 came into existence after RV6x0 and M7x */
  226.     RHD_RV670,
  227.     RHD_M88,
  228.     RHD_R680,
  229.     RHD_RV620,
  230.     RHD_M82,
  231.     RHD_RV635,
  232.     RHD_M86,
  233.     RHD_RS780,
  234.     RHD_RV770,
  235.     RHD_R700,
  236.     RHD_M98,
  237.     RHD_RV730,
  238.     RHD_M96,
  239.     RHD_RV710,
  240.     RHD_CHIP_END
  241. };
  242.  
  243. enum RHD_FAMILIES {
  244.     RHD_FAMILY_UNKNOWN = 0,
  245.     RHD_FAMILY_RV515,
  246.     RHD_FAMILY_R520,
  247.     RHD_FAMILY_RV530,
  248.     RHD_FAMILY_RV560,
  249.     RHD_FAMILY_RV570,
  250.     RHD_FAMILY_R580,
  251.     RHD_FAMILY_RS690,
  252.     RHD_FAMILY_R600,
  253.     RHD_FAMILY_RV610,
  254.     RHD_FAMILY_RV630,
  255.     RHD_FAMILY_RV670,
  256.     RHD_FAMILY_RV620,
  257.     RHD_FAMILY_RV635,
  258.     RHD_FAMILY_RS780
  259. };
  260.  
  261. enum RHD_HPD_USAGE {
  262.     RHD_HPD_USAGE_AUTO = 0,
  263.     RHD_HPD_USAGE_OFF,
  264.     RHD_HPD_USAGE_NORMAL,
  265.     RHD_HPD_USAGE_SWAP,
  266.     RHD_HPD_USAGE_AUTO_SWAP,
  267.     RHD_HPD_USAGE_AUTO_OFF
  268. };
  269.  
  270. enum RHD_TV_MODE {
  271.     RHD_TV_NONE = 0,
  272.     RHD_TV_NTSC = 1,
  273.     RHD_TV_NTSCJ = 1 << 2,
  274.     RHD_TV_PAL = 1 << 3,
  275.     RHD_TV_PALM = 1 << 4,
  276.     RHD_TV_PALCN = 1 << 5,
  277.     RHD_TV_PALN = 1 << 6,
  278.     RHD_TV_PAL60 = 1 << 7,
  279.     RHD_TV_SECAM = 1 << 8,
  280.     RHD_TV_CV = 1 << 9
  281. };
  282.  
  283. enum rhdPropertyAction {
  284.     rhdPropertyCheck,
  285.     rhdPropertyGet,
  286.     rhdPropertySet
  287. };
  288.  
  289. union rhdPropertyData
  290. {
  291.     CARD32 integer;
  292.     char *string;
  293.     Bool Bool;
  294. };
  295.  
  296. #define RHD_CONNECTORS_MAX 6
  297.  
  298. /* Just define where which PCI BAR lives for now. Will deal with different
  299.  * locations as soon as cards with a different BAR layout arrives.
  300.  */
  301. #define RHD_FB_BAR   0
  302. #define RHD_MMIO_BAR 2
  303.  
  304. /* More realistic powermanagement */
  305. #define RHD_POWER_ON       0
  306. #define RHD_POWER_RESET    1   /* off temporarily */
  307. #define RHD_POWER_SHUTDOWN 2   /* long term shutdown */
  308. #define RHD_POWER_UNKNOWN  3   /* initial state */
  309.  
  310. #define RHD_MEM_GART       1
  311. #define RHD_MEM_FB         2
  312.  
  313.  
  314. enum rhdCardType {
  315.     RHD_CARD_NONE,
  316.     RHD_CARD_AGP,
  317.     RHD_CARD_PCIE
  318. };
  319.  
  320. enum {
  321.     RHD_PCI_CAPID_AGP    = 0x02,
  322.     RHD_PCI_CAPID_PCIE   = 0x10
  323. };
  324.  
  325. typedef struct BIOSScratchOutputPrivate rhdOutputDriverPrivate;
  326. typedef struct _rhdI2CRec *rhdI2CPtr;
  327. typedef struct _atomBiosHandle *atomBiosHandlePtr;
  328. typedef struct _rhdShadowRec *rhdShadowPtr;
  329.  
  330. typedef struct _RHDopt {
  331.     Bool set;
  332.     union  {
  333.         Bool bool;
  334.         int integer;
  335.         unsigned long uslong;
  336.         double real;
  337.         double freq;
  338.         char *string;
  339.     } val;
  340. } RHDOpt, *RHDOptPtr;
  341.  
  342.  
  343. ////////////////////////////
  344. typedef enum
  345. {
  346.     CONNECTOR_NONE,            // 0
  347.     CONNECTOR_VGA,             // 1
  348.     CONNECTOR_DVI_I,           // 2
  349.     CONNECTOR_DVI_D,           // 3
  350.     CONNECTOR_DVI_A,           // 4
  351.     CONNECTOR_STV,             // 5
  352.     CONNECTOR_CTV,             // 6
  353.     CONNECTOR_LVDS,            // 7
  354.     CONNECTOR_DIGITAL,         // 8
  355.     CONNECTOR_SCART,           // 9
  356.     CONNECTOR_HDMI_TYPE_A,     // 10
  357.     CONNECTOR_HDMI_TYPE_B,     // 11
  358.     CONNECTOR_0XC,             // 12
  359.     CONNECTOR_0XD,             // 13
  360.     CONNECTOR_DIN,             // 14
  361.     CONNECTOR_DISPLAY_PORT,    // 15
  362.     CONNECTOR_UNSUPPORTED
  363. } RADEONConnectorType;
  364.  
  365. typedef enum
  366. {
  367.     DAC_NONE    = 0,
  368.     DAC_PRIMARY = 1,
  369.     DAC_TVDAC   = 2,
  370.     DAC_EXT     = 3
  371. } RADEONDacType;
  372.  
  373. typedef enum
  374. {
  375.     TMDS_NONE    = 0,
  376.     TMDS_INT     = 1,
  377.     TMDS_EXT     = 2,
  378.     TMDS_LVTMA   = 3,
  379.     TMDS_DDIA    = 4
  380. } RADEONTmdsType;
  381.  
  382. typedef struct
  383. {
  384.     Bool   valid;
  385.     CARD32 mask_clk_reg;
  386.     CARD32 mask_data_reg;
  387.     CARD32 put_clk_reg;
  388.     CARD32 put_data_reg;
  389.     CARD32 get_clk_reg;
  390.     CARD32 get_data_reg;
  391.     CARD32 mask_clk_mask;
  392.     CARD32 mask_data_mask;
  393.     CARD32 put_clk_mask;
  394.     CARD32 put_data_mask;
  395.     CARD32 get_clk_mask;
  396.     CARD32 get_data_mask;
  397. } RADEONI2CBusRec, *RADEONI2CBusPtr;
  398.  
  399. typedef struct {
  400.     RADEONDacType DACType;
  401.     RADEONTmdsType TMDSType;
  402.     RADEONConnectorType ConnectorType;
  403.     Bool valid;
  404.     int output_id;
  405.     int devices;
  406.     int hpd_mask;
  407.     RADEONI2CBusRec ddc_i2c;
  408. } RADEONBIOSConnector;
  409.  
  410. ///////////////////////////////////////////
  411.  
  412.  
  413.  
  414. typedef struct RHDRec
  415. {
  416.   ScrnInfoPtr       pScrn;
  417.   int               scrnIndex;
  418.  
  419.   CARD32            MMIOBase;
  420.   CARD32            MMIOMapSize;
  421.   CARD32            videoRam;
  422.  
  423.   enum RHD_HPD_USAGE  hpdUsage;
  424.   RHDOpt            forceReduced;
  425.  
  426.   CARD32            FbBase;            /* map base of fb   */
  427.   CARD32            FbIntAddress;      /* card internal address of FB */
  428.   CARD32            FbMapSize;
  429.  
  430.   CARD32            FbFreeStart;
  431.   CARD32            FbFreeSize;
  432.  
  433.   /* visible part of the framebuffer */
  434.   unsigned int      FbScanoutStart;
  435.   unsigned int      FbScanoutSize;
  436.  
  437.   unsigned char*    BIOSCopy;
  438.  
  439.   enum RHD_CHIPSETS ChipSet;
  440.   struct rhdCard    *Card;
  441.   char              *chipset_name;
  442.  
  443.   Bool              IsMobility;
  444.   Bool              IsIGP;
  445.   Bool              HasCRTC2;
  446.   Bool              HasSingleDAC;
  447.   Bool              InternalTVOut;
  448.  
  449.   u32_t             bus;
  450.   u32_t             devfn;
  451.  
  452.   PCITAG            PciTag;
  453.   PCITAG            NBPciTag;
  454.  
  455.   CARD16            PciDeviceID;
  456.   CARD16            subvendor_id;
  457.   CARD16            subdevice_id;
  458.   pciVideoRec       pci;
  459.  
  460.   struct             _I2CBusRec **I2C;       /* I2C bus list */
  461.   atomBiosHandlePtr   atomBIOS;              /* handle for AtomBIOS */
  462.  
  463.   struct           rhdMC   *MC;
  464.   struct           rhdVGA  *VGA;
  465.   struct           rhdCrtc *Crtc[2];
  466.   struct           rhdPLL  *PLLs[2];         /* Pixelclock PLLs */
  467.  
  468.   struct rhdLUTStore  *LUTStore;
  469.   struct rhdLUT       *LUT[2];
  470.  
  471.   struct rhdConnector *Connector[RHD_CONNECTORS_MAX];
  472.  
  473.   struct       rhdOutput   *Outputs;
  474.  
  475.   struct       rhdHPD      *HPD;             /* Hot plug detect subsystem */
  476.   enum RHD_TV_MODE   tvMode;
  477.   struct rhdMonitor  *ConfigMonitor;
  478.  
  479.   struct mem_block   *fb_heap;
  480.   struct mem_block   *gart_heap;
  481.  
  482.   RHDOpt       scaleTypeOpt;
  483.  
  484.   int          verbosity;
  485.  
  486.  
  487.    /* AtomBIOS usage */
  488.   RHDOpt      UseAtomBIOS;
  489.   CARD32      UseAtomFlags;
  490.  
  491.   struct rhdOutput *DigEncoderOutput[2];
  492. }RHD_t;
  493.  
  494. typedef struct {
  495.     int                 token;          /* id of the token */
  496.     const char *        name;           /* token name */
  497. } SymTabRec, *SymTabPtr;
  498.  
  499. extern inline CARD32 _RHDRegRead(RHDPtr rhdPtr, CARD16 offset)
  500. {
  501.   return *(volatile CARD32 *)((CARD8*)(rhdPtr->MMIOBase + offset));
  502. }
  503.  
  504. extern inline void
  505. _RHDRegWrite(RHDPtr rhdPtr, CARD16 offset, CARD32 value)
  506. {
  507.   *(volatile CARD32 *)((CARD8 *)(rhdPtr->MMIOBase + offset)) = value;
  508. }
  509.  
  510. extern inline void
  511. _RHDRegMask(RHDPtr rhdPtr, CARD16 offset, CARD32 value, CARD32 mask)
  512. {
  513.   CARD32 tmp;
  514.  
  515.   tmp = _RHDRegRead(rhdPtr, offset);
  516.   tmp &= ~mask;
  517.   tmp |= (value & mask);
  518.   _RHDRegWrite(rhdPtr, offset, tmp);
  519. };
  520.  
  521. extern inline CARD32
  522. _RHDReadPLL(RHDPtr rhdPtr, CARD16 offset)
  523. {
  524.   _RHDRegWrite(rhdPtr, CLOCK_CNTL_INDEX, (offset & PLL_ADDR));
  525.   return _RHDRegRead(rhdPtr, CLOCK_CNTL_DATA);
  526. }
  527.  
  528. extern inline void
  529. _RHDWritePLL(RHDPtr rhdPtr, CARD16 offset, CARD32 data)
  530. {
  531.   _RHDRegWrite(rhdPtr, CLOCK_CNTL_INDEX, (offset & PLL_ADDR) | PLL_WR_EN);
  532.   _RHDRegWrite(rhdPtr, CLOCK_CNTL_DATA, data);
  533. }
  534.  
  535.  
  536. enum RHD_FAMILIES RHDFamily(enum RHD_CHIPSETS chipset);
  537.  
  538. extern CARD32 _RHDReadMC(int scrnIndex, CARD32 addr);
  539. #define RHDReadMC(ptr,addr) _RHDReadMC((int)(ptr),(addr))
  540.  
  541. extern void _RHDWriteMC(int scrnIndex, CARD32 addr, CARD32 data);
  542. #define RHDWriteMC(ptr,addr,value) _RHDWriteMC((int)(ptr),(addr),(value))
  543.  
  544. #define RHDRegRead(ptr, offset) \
  545.         _RHDRegRead((RHDPtr)((ptr)->scrnIndex), (offset))
  546.  
  547. #define RHDRegWrite(ptr, offset, value) \
  548.         _RHDRegWrite((RHDPtr)((ptr)->scrnIndex), (offset), (value))
  549.  
  550. #define RHDRegMask(ptr, offset, value, mask) \
  551.         _RHDRegMask((RHDPtr)((ptr)->scrnIndex), (offset), (value), (mask))
  552.  
  553. #define RHDRegMaskD(ptr, offset, value, mask) \
  554.         RHDRegMask(ptr, offset, value, mask)
  555.  
  556. char * RhdAppendString(char *s1, const char *s2);
  557.  
  558. #ifndef PCI_DOM_MASK
  559. # define PCI_DOM_MASK 0x0ffu
  560. #endif
  561. #define PCI_DOMBUS_MASK (((PCI_DOM_MASK) << 8) | 0x0ffu)
  562.  
  563. #define PCI_MAKE_TAG(b,d,f)  ((((b) & (PCI_DOMBUS_MASK)) << 16) | \
  564.                               (((d) & 0x00001fu) << 11) | \
  565.                               (((f) & 0x000007u) << 8))
  566.  
  567. #define PCI_BUS_FROM_TAG(tag)  (((tag) >> 16) & (PCI_DOMBUS_MASK))
  568. #define PCI_DEV_FROM_TAG(tag)  (((tag) & 0x0000f800u) >> 11)
  569. #define PCI_FUNC_FROM_TAG(tag) (((tag) & 0x00000700u) >> 8)
  570. #define PCI_DFN_FROM_TAG(tag)  (((tag) & 0x0000ff00u) >> 8)
  571.  
  572. extern inline PCITAG
  573. pciTag(int busnum, int devnum, int funcnum)
  574. {
  575.         return(PCI_MAKE_TAG(busnum,devnum,funcnum));
  576. }
  577.  
  578. #define  LOG_DEBUG    0
  579.  
  580. #define  X_ERROR      0
  581. #define  X_WARNING    1
  582. #define  X_INFO       2
  583. #define  X_NONE       3
  584. #define  X_PROBED     4
  585.  
  586. /*
  587. #ifdef DBG_ALL
  588.  #undef  DBG_CALL
  589.  #undef  DBG_MSG
  590.  #undef  DBG_CAIL
  591.  
  592.  #define DBG_CALL
  593.  #define DBG_MSG
  594.  #define DBG_CAIL
  595. #endif
  596. */
  597.  
  598.  
  599. #ifdef DBG_CALL
  600.   #define RHDFUNC(ptr) dbgprintf("FUNCTION: %s\n", __func__)
  601. #else
  602.   #define RHDFUNC(ptr)
  603. #endif
  604.  
  605. #ifdef DBG_MSG
  606.   #define xf86Msg(a, format,...)            dbgprintf(format,##__VA_ARGS__)
  607.   #define xf86MsgVerb(a,b,format,...)       dbgprintf(format,##__VA_ARGS__)
  608.   #define xf86DrvMsg(a,b,format,...)        dbgprintf(format,##__VA_ARGS__)
  609.   #define xf86DrvMsgVerb(a,b,c,format,...)  dbgprintf(format,##__VA_ARGS__)
  610.   #define xf86VDrvMsgVerb(a,b,c,format,...) dbgprintf(format,##__VA_ARGS__)
  611.  
  612.   #define RHDDebug(a,format,...)            dbgprintf(format,##__VA_ARGS__)
  613.   #define RHDDebugCont(format,...)          dbgprintf(format,##__VA_ARGS__)
  614.   #define RHDDebugVerb(a,b,format,...)      dbgprintf(format,##__VA_ARGS__)
  615. #else
  616.   #define xf86Msg(a, format,...)
  617.   #define xf86MsgVerb(a,b,format,...)
  618.   #define xf86DrvMsg(a,b,format,...)
  619.   #define xf86DrvMsgVerb(a,b,c,format,...)
  620.   #define xf86VDrvMsgVerb(a,b,c,format,...)
  621.  
  622.   #define RHDDebug(a,format,...)
  623.   #define RHDDebugCont(format,...)
  624.   #define RHDDebugVerb(a,b,format,...)
  625. #endif
  626.  
  627. #ifdef DBG_CAIL
  628.   #define CAILFUNC(a)             dbgprintf("CAIL: %s\n", __func__)
  629.   #define CailDebug(a,format,...) dbgprintf(format,##__VA_ARGS__)
  630. #else
  631.   #define CAILFUNC(a)
  632.   #define CailDebug(a,format,...)
  633. #endif
  634.  
  635. #define DBG(x) x
  636. #define ErrorF dbgprintf
  637.  
  638. #define ASSERT(expr)
  639.  
  640. #define ASSERTF(expr,format)
  641.  
  642. #define RHDPTRI(p)  ((RHDPtr)((p)->scrnIndex))
  643. #define RHDPTR(p)   ((p)->rhdPtr)
  644.  
  645. #define RHDFUNCI(scrnIndex) RHDDebug(scrnIndex, "FUNCTION: %s\n", __func__)
  646.  
  647. enum atomSubSystem {
  648.     atomUsageCrtc,
  649.     atomUsagePLL,
  650.     atomUsageOutput,
  651.     atomUsageAny
  652. };
  653.  
  654. extern Bool RHDUseAtom(RHDPtr rhdPtr, enum RHD_CHIPSETS *BlackList, enum atomSubSystem subsys);
  655.  
  656. //git://anongit.freedesktop.org/git/xorg/driver/xf86-video-nv
  657. //git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau
  658.