drivers/staging/sm750fb/sm750.h

Source file repositories/reference/linux-study-clean/drivers/staging/sm750fb/sm750.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/sm750fb/sm750.h
Extension
.h
Size
5648 bytes
Lines
219
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct init_status {
	ushort powerMode;
	/* below three clocks are in unit of MHZ*/
	ushort chip_clk;
	ushort mem_clk;
	ushort master_clk;
	ushort setAllEngOff;
	ushort resetMemory;
};

struct lynx_accel {
	/* base virtual address of DPR registers */
	unsigned char __iomem *dpr_base;
	/* base virtual address of de data port */
	unsigned char __iomem *dp_port_base;

	/* function pointers */
	void (*de_init)(struct lynx_accel *accel);

	int (*de_wait)(void);/* see if hardware ready to work */

	int (*de_fillrect)(struct lynx_accel *accel,
			   u32 base, u32 pitch, u32 bpp,
			   u32 x, u32 y, u32 width, u32 height,
			   u32 color, u32 rop);

	int (*de_copyarea)(struct lynx_accel *accel,
			   u32 s_base, u32 s_pitch,
			   u32 sx, u32 sy,
			   u32 d_base, u32 d_pitch,
			   u32 bpp, u32 dx, u32 dy,
			   u32 width, u32 height,
			   u32 rop2);

	int (*de_imageblit)(struct lynx_accel *accel, const char *p_srcbuf,
			    u32 src_delta, u32 start_bit, u32 d_base, u32 d_pitch,
			    u32 byte_per_pixel, u32 dx, u32 dy, u32 width,
			    u32 height, u32 f_color, u32 b_color, u32 rop2);

};

struct sm750_dev {
	/* common members */
	u16 devid;
	u8 revid;
	struct pci_dev *pdev;
	struct fb_info *fbinfo[2];
	struct lynx_accel accel;
	int accel_off;
	int fb_count;
	int mtrr_off;
	struct{
		int vram;
	} mtrr;
	/* all smi graphic adaptor got below attributes */
	unsigned long vidmem_start;
	unsigned long vidreg_start;
	__u32 vidmem_size;
	__u32 vidreg_size;
	void __iomem *pvReg;
	unsigned char __iomem *pvMem;
	/* locks*/
	spinlock_t slock;

	struct init_status init_parm;
	enum sm750_pnltype pnltype;
	enum sm750_dataflow dataflow;
	int nocrt;

	/*
	 * 0: no hardware cursor
	 * 1: primary crtc hw cursor enabled,
	 * 2: secondary crtc hw cursor enabled
	 * 3: both ctrc hw cursor enabled
	 */
	int hw_cursor;
};

struct lynx_cursor {
	/* cursor width ,height and size */
	int w;
	int h;
	int size;
	/* hardware limitation */
	int max_w;
	int max_h;
	/* base virtual address and offset  of cursor image */
	char __iomem *vstart;
	int offset;
	/* mmio addr of hw cursor */

Annotation

Implementation Notes