#include <linux/aperture.h>
#include <linux/io.h>
#include <linux/fb.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/module.h>
#include <linux/console.h>
#include <linux/pm.h>
#include "sm712.h"
struct smtcfb_screen_info { … };
struct smtcfb_info { … };
void __iomem *smtc_regbaseaddress;
static const struct fb_var_screeninfo smtcfb_var = …;
static struct fb_fix_screeninfo smtcfb_fix = …;
struct vesa_mode { … };
static const struct vesa_mode vesa_mode_table[] = …;
static const struct modeinit vgamode[] = …;
static struct smtcfb_screen_info smtc_scr_info;
static char *mode_option;
static void __init sm7xx_vga_setup(char *options)
{ … }
static void sm712_setpalette(int regno, unsigned int red, unsigned int green,
unsigned int blue, struct fb_info *info)
{ … }
static inline unsigned int chan_to_field(unsigned int chan,
struct fb_bitfield *bf)
{ … }
static int smtc_blank(int blank_mode, struct fb_info *info)
{ … }
static int smtc_setcolreg(unsigned int regno, unsigned int red,
unsigned int green, unsigned int blue,
unsigned int trans, struct fb_info *info)
{ … }
static ssize_t smtcfb_read(struct fb_info *info, char __user *buf,
size_t count, loff_t *ppos)
{ … }
static ssize_t smtcfb_write(struct fb_info *info, const char __user *buf,
size_t count, loff_t *ppos)
{ … }
static void sm7xx_set_timing(struct smtcfb_info *sfb)
{ … }
static void smtc_set_timing(struct smtcfb_info *sfb)
{ … }
static void smtcfb_setmode(struct smtcfb_info *sfb)
{ … }
static int smtc_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
{ … }
static int smtc_set_par(struct fb_info *info)
{ … }
static const struct fb_ops smtcfb_ops = …;
static void smtc_unmap_mmio(struct smtcfb_info *sfb)
{ … }
static int smtc_map_smem(struct smtcfb_info *sfb,
struct pci_dev *pdev, u_long smem_len)
{ … }
static void smtc_unmap_smem(struct smtcfb_info *sfb)
{ … }
static inline void sm7xx_init_hw(void)
{ … }
static u_long sm7xx_vram_probe(struct smtcfb_info *sfb)
{ … }
static void sm7xx_resolution_probe(struct smtcfb_info *sfb)
{ … }
static int smtcfb_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *ent)
{ … }
static const struct pci_device_id smtcfb_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, smtcfb_pci_table);
static void smtcfb_pci_remove(struct pci_dev *pdev)
{ … }
static int __maybe_unused smtcfb_pci_suspend(struct device *device)
{ … }
static int __maybe_unused smtcfb_pci_resume(struct device *device)
{ … }
static SIMPLE_DEV_PM_OPS(sm7xx_pm_ops, smtcfb_pci_suspend, smtcfb_pci_resume);
static struct pci_driver smtcfb_driver = …;
static int __init sm712fb_init(void)
{ … }
module_init(…) …;
static void __exit sm712fb_exit(void)
{ … }
module_exit(sm712fb_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;