drivers/video/fbdev/savage/savagefb.h
Source file repositories/reference/linux-study-clean/drivers/video/fbdev/savage/savagefb.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/video/fbdev/savage/savagefb.h- Extension
.h- Size
- 10665 bytes
- Lines
- 407
- Domain
- Driver Families
- Bucket
- drivers/video
- 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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/i2c.hlinux/i2c-algo-bit.hlinux/mutex.hvideo/vga.h../edid.h
Detected Declarations
struct xtimingsstruct savage_regstruct savagefb_parstruct savagefb_i2c_chanstruct savagefb_parfunction savage_in8function savage_in16function savage_in32function savage_out8function savage_out16function savage_out32function vga_in8function vga_in16function vga_in32function vga_out8function vga_out16function vga_out32function VGArCRfunction VGArGRfunction VGArSEQfunction VGAwCRfunction VGAwGRfunction VGAwSEQfunction VGAenablePalettefunction VGAdisablePalettefunction VGAwATTRfunction VGAwMISCfunction VerticalRetraceWait
Annotated Snippet
struct xtimings {
unsigned int Clock;
unsigned int HDisplay;
unsigned int HSyncStart;
unsigned int HSyncEnd;
unsigned int HTotal;
unsigned int HAdjusted;
unsigned int VDisplay;
unsigned int VSyncStart;
unsigned int VSyncEnd;
unsigned int VTotal;
unsigned int sync;
int dblscan;
int interlaced;
};
struct savage_reg {
unsigned char MiscOutReg; /* Misc */
unsigned char CRTC[25]; /* Crtc Controller */
unsigned char Sequencer[5]; /* Video Sequencer */
unsigned char Graphics[9]; /* Video Graphics */
unsigned char Attribute[21]; /* Video Attribute */
unsigned int mode, refresh;
unsigned char SR08, SR0E, SR0F;
unsigned char SR10, SR11, SR12, SR13, SR15, SR18, SR29, SR30;
unsigned char SR54[8];
unsigned char Clock;
unsigned char CR31, CR32, CR33, CR34, CR36, CR3A, CR3B, CR3C;
unsigned char CR40, CR41, CR42, CR43, CR45;
unsigned char CR50, CR51, CR53, CR55, CR58, CR5B, CR5D, CR5E;
unsigned char CR60, CR63, CR65, CR66, CR67, CR68, CR69, CR6D, CR6F;
unsigned char CR86, CR88;
unsigned char CR90, CR91, CRB0;
unsigned int STREAMS[22]; /* yuck, streams regs */
unsigned int MMPR0, MMPR1, MMPR2, MMPR3;
};
/* --------------------------------------------------------------------- */
#define NR_PALETTE 256
struct savagefb_par;
struct savagefb_i2c_chan {
struct savagefb_par *par;
struct i2c_adapter adapter;
struct i2c_algo_bit_data algo;
volatile u8 __iomem *ioaddr;
u32 reg;
};
struct savagefb_par {
struct pci_dev *pcidev;
savage_chipset chip;
struct savagefb_i2c_chan chan;
struct savage_reg state;
struct savage_reg save;
struct savage_reg initial;
struct vgastate vgastate;
struct mutex open_lock;
u32 pseudo_palette[16];
u32 open_count;
int paletteEnabled;
int pm_state;
int display_type;
int dvi;
int crtonly;
int dacSpeedBpp;
int maxClock;
int minClock;
int numClocks;
int clock[4];
int MCLK, REFCLK, LCDclk;
struct {
void __iomem *vbase;
u32 pbase;
u32 len;
int wc_cookie;
} video;
struct {
void __iomem *vbase;
u32 pbase;
u32 len;
} mmio;
volatile u32 __iomem *bci_base;
unsigned int bci_ptr;
u32 cob_offset;
Annotation
- Immediate include surface: `linux/i2c.h`, `linux/i2c-algo-bit.h`, `linux/mutex.h`, `video/vga.h`, `../edid.h`.
- Detected declarations: `struct xtimings`, `struct savage_reg`, `struct savagefb_par`, `struct savagefb_i2c_chan`, `struct savagefb_par`, `function savage_in8`, `function savage_in16`, `function savage_in32`, `function savage_out8`, `function savage_out16`.
- Atlas domain: Driver Families / drivers/video.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.