linux/drivers/video/fbdev/aty/atyfb.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  ATI Frame Buffer Device Driver Core Definitions
 */

#include <linux/io.h>
#include <linux/spinlock.h>
#include <linux/wait.h>

    /*
     *  Elements of the hardware specific atyfb_par structure
     */

struct crtc {};

struct aty_interrupt {};

struct pll_info {};

PLL_BLOCK_MACH64;

struct pll_514 {};

struct pll_18818 {};

struct pll_ct {};

/*
	for pll_ct.features
*/
#define DONT_USE_SPLL
#define DONT_USE_XDLL
#define USE_CPUCLK
#define POWERDOWN_PLL

aty_pll;

    /*
     *  The hardware parameters for each card
     */

struct atyfb_par {};

    /*
     *  ATI Mach64 features
     */

#define M64_HAS(feature)

#define M64F_RESET_3D
#define M64F_MAGIC_FIFO
#define M64F_GTB_DSP
#define M64F_FIFO_32
#define M64F_SDRAM_MAGIC_PLL
#define M64F_MAGIC_POSTDIV
#define M64F_INTEGRATED
#define M64F_CT_BUS
#define M64F_VT_BUS
#define M64F_MOBIL_BUS
#define M64F_GX
#define M64F_CT
#define M64F_VT
#define M64F_GT
#define M64F_MAGIC_VRAM_SIZE
#define M64F_G3_PB_1_1
#define M64F_G3_PB_1024x768
#define M64F_EXTRA_BRIGHT
#define M64F_LT_LCD_REGS
#define M64F_XL_DLL
#define M64F_MFB_FORCE_4
#define M64F_HW_TRIPLE
#define M64F_XL_MEM
    /*
     *  Register access
     */

static inline u32 aty_ld_le32(int regindex, const struct atyfb_par *par)
{}

static inline void aty_st_le32(int regindex, u32 val, const struct atyfb_par *par)
{}

static inline void aty_st_le16(int regindex, u16 val,
			       const struct atyfb_par *par)
{}

static inline u8 aty_ld_8(int regindex, const struct atyfb_par *par)
{}

static inline void aty_st_8(int regindex, u8 val, const struct atyfb_par *par)
{}

extern void aty_st_lcd(int index, u32 val, const struct atyfb_par *par);
extern u32 aty_ld_lcd(int index, const struct atyfb_par *par);

    /*
     *  DAC operations
     */

struct aty_dac_ops {};

extern const struct aty_dac_ops aty_dac_ibm514; /* IBM RGB514 */
extern const struct aty_dac_ops aty_dac_ati68860b; /* ATI 68860-B */
extern const struct aty_dac_ops aty_dac_att21c498; /* AT&T 21C498 */
extern const struct aty_dac_ops aty_dac_unsupported; /* unsupported */
extern const struct aty_dac_ops aty_dac_ct; /* Integrated */


    /*
     *  Clock operations
     */

struct aty_pll_ops {};

extern const struct aty_pll_ops aty_pll_ati18818_1; /* ATI 18818 */
extern const struct aty_pll_ops aty_pll_stg1703; /* STG 1703 */
extern const struct aty_pll_ops aty_pll_ch8398; /* Chrontel 8398 */
extern const struct aty_pll_ops aty_pll_att20c408; /* AT&T 20C408 */
extern const struct aty_pll_ops aty_pll_ibm514; /* IBM RGB514 */
extern const struct aty_pll_ops aty_pll_unsupported; /* unsupported */
extern const struct aty_pll_ops aty_pll_ct; /* Integrated */


extern void aty_set_pll_ct(const struct fb_info *info, const union aty_pll *pll);
extern u8 aty_ld_pll_ct(int offset, const struct atyfb_par *par);

extern const u8 aty_postdividers[8];


    /*
     *  Hardware cursor support
     */

extern int aty_init_cursor(struct fb_info *info, struct fb_ops *atyfb_ops);

    /*
     *  Hardware acceleration
     */

static inline void wait_for_fifo(u16 entries, struct atyfb_par *par)
{}

static inline void wait_for_idle(struct atyfb_par *par)
{}

extern void aty_reset_engine(struct atyfb_par *par);
extern void aty_init_engine(struct atyfb_par *par, struct fb_info *info);

void atyfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
void atyfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
void atyfb_imageblit(struct fb_info *info, const struct fb_image *image);