summaryrefslogtreecommitdiffstats
path: root/drivers/staging/sm750fb/sm750.h
diff options
context:
space:
mode:
authorMike Rapoport2015-10-26 08:05:54 +0100
committerGreg Kroah-Hartman2015-10-27 09:04:57 +0100
commit05407e153fce1e548fe34086057960da3d5adb53 (patch)
treef9759ec10c73255b100819b1bd846ad6e4625a52 /drivers/staging/sm750fb/sm750.h
parentstaging: sm750fb: remove unused smi_indent variable (diff)
downloadkernel-qcow2-linux-05407e153fce1e548fe34086057960da3d5adb53.tar.gz
kernel-qcow2-linux-05407e153fce1e548fe34086057960da3d5adb53.tar.xz
kernel-qcow2-linux-05407e153fce1e548fe34086057960da3d5adb53.zip
staging: sm750fb: merge sm750_hw.h into sm750.h
There is no actual need to split type definitions and global function declarations between lots of small headers. Signed-off-by: Mike Rapoport <mike.rapoport@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/sm750fb/sm750.h')
-rw-r--r--drivers/staging/sm750fb/sm750.h88
1 files changed, 86 insertions, 2 deletions
diff --git a/drivers/staging/sm750fb/sm750.h b/drivers/staging/sm750fb/sm750.h
index fa06cb15d05f..d50ef210c51e 100644
--- a/drivers/staging/sm750fb/sm750.h
+++ b/drivers/staging/sm750fb/sm750.h
@@ -1,12 +1,61 @@
#ifndef LYNXDRV_H_
#define LYNXDRV_H_
-
-
#define FB_ACCEL_SMI 0xab
#define MHZ(x) ((x) * 1000000)
+#define DEFAULT_SM750_CHIP_CLOCK 290
+#define DEFAULT_SM750LE_CHIP_CLOCK 333
+#ifndef SM750LE_REVISION_ID
+#define SM750LE_REVISION_ID ((unsigned char)0xfe)
+#endif
+
+enum sm750_pnltype {
+ sm750_24TFT = 0, /* 24bit tft */
+ sm750_dualTFT = 2, /* dual 18 bit tft */
+ sm750_doubleTFT = 1, /* 36 bit double pixel tft */
+};
+
+/* vga channel is not concerned */
+enum sm750_dataflow {
+ sm750_simul_pri, /* primary => all head */
+ sm750_simul_sec, /* secondary => all head */
+ sm750_dual_normal, /* primary => panel head and secondary => crt */
+ sm750_dual_swap, /* primary => crt head and secondary => panel */
+};
+
+enum sm750_channel {
+ sm750_primary = 0,
+ /* enum value equal to the register filed data */
+ sm750_secondary = 1,
+};
+
+enum sm750_path {
+ sm750_panel = 1,
+ sm750_crt = 2,
+ sm750_pnc = 3, /* panel and crt */
+};
+
+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 sm750_state {
+ struct init_status initParm;
+ enum sm750_pnltype pnltype;
+ enum sm750_dataflow dataflow;
+ int nocrt;
+ int xLCD;
+ int yLCD;
+};
+
struct lynx_accel {
/* base virtual address of DPR registers */
volatile unsigned char __iomem *dprBase;
@@ -58,6 +107,23 @@ struct lynx_share {
spinlock_t slock;
};
+/*
+ * sm750_share stands for a presentation of two frame buffer
+ * that use one sm750 adaptor
+ */
+struct sm750_share {
+ struct lynx_share share;
+ struct sm750_state state;
+
+ /*
+ * 0: no hardware cursor
+ * 1: primary crtc hw cursor enabled,
+ * 2: secondary crtc hw cursor enabled
+ * 3: both ctrc hw cursor enabled
+ */
+ int hwCursor;
+};
+
struct lynx_cursor {
/* cursor width ,height and size */
int w;
@@ -133,5 +199,23 @@ static inline unsigned long ps_to_hz(unsigned int psvalue)
return (unsigned long)numerator;
}
+int hw_sm750_map(struct lynx_share *share, struct pci_dev *pdev);
+int hw_sm750_inithw(struct lynx_share*, struct pci_dev *);
+void hw_sm750_initAccel(struct lynx_share *);
+int hw_sm750_deWait(void);
+int hw_sm750le_deWait(void);
+
+resource_size_t hw_sm750_getVMSize(struct lynx_share *);
+int hw_sm750_output_setMode(struct lynxfb_output*, struct fb_var_screeninfo*,
+ struct fb_fix_screeninfo*);
+int hw_sm750_crtc_checkMode(struct lynxfb_crtc*, struct fb_var_screeninfo*);
+int hw_sm750_crtc_setMode(struct lynxfb_crtc*, struct fb_var_screeninfo*,
+ struct fb_fix_screeninfo*);
+int hw_sm750_setColReg(struct lynxfb_crtc*, ushort, ushort, ushort, ushort);
+int hw_sm750_setBLANK(struct lynxfb_output*, int);
+int hw_sm750le_setBLANK(struct lynxfb_output*, int);
+int hw_sm750_pan_display(struct lynxfb_crtc *crtc,
+ const struct fb_var_screeninfo *var,
+ const struct fb_info *info);
#endif