Sudip Mukherjee | 81dee67 | 2015-03-03 16:21:06 +0530 | [diff] [blame] | 1 | #ifndef LYNX_HW750_H__ |
| 2 | #define LYNX_HW750_H__ |
| 3 | |
| 4 | |
| 5 | #define DEFAULT_SM750_CHIP_CLOCK 290 |
| 6 | #define DEFAULT_SM750LE_CHIP_CLOCK 333 |
| 7 | #ifndef SM750LE_REVISION_ID |
| 8 | #define SM750LE_REVISION_ID (unsigned char)0xfe |
| 9 | #endif |
| 10 | |
| 11 | //#define DEFAULT_MEM_CLOCK (DEFAULT_SM750_CHIP_CLOCK/1) |
| 12 | //#define DEFAULT_MASTER_CLOCK (DEFAULT_SM750_CHIP_CLOCK/3) |
| 13 | |
| 14 | |
| 15 | enum sm750_pnltype{ |
| 16 | |
| 17 | sm750_24TFT = 0,/* 24bit tft */ |
| 18 | |
| 19 | sm750_dualTFT = 2,/* dual 18 bit tft */ |
| 20 | |
| 21 | sm750_doubleTFT = 1,/* 36 bit double pixel tft */ |
| 22 | }; |
| 23 | |
| 24 | /* vga channel is not concerned */ |
| 25 | enum sm750_dataflow{ |
| 26 | sm750_simul_pri,/* primary => all head */ |
| 27 | |
| 28 | sm750_simul_sec,/* secondary => all head */ |
| 29 | |
| 30 | sm750_dual_normal,/* primary => panel head and secondary => crt */ |
| 31 | |
| 32 | sm750_dual_swap,/* primary => crt head and secondary => panel */ |
| 33 | }; |
| 34 | |
| 35 | |
| 36 | enum sm750_channel{ |
| 37 | sm750_primary = 0, |
| 38 | /* enum value equal to the register filed data */ |
| 39 | sm750_secondary = 1, |
| 40 | }; |
| 41 | |
| 42 | enum sm750_path{ |
| 43 | sm750_panel = 1, |
| 44 | sm750_crt = 2, |
| 45 | sm750_pnc = 3,/* panel and crt */ |
| 46 | }; |
| 47 | |
| 48 | struct init_status{ |
| 49 | ushort powerMode; |
| 50 | /* below three clocks are in unit of MHZ*/ |
| 51 | ushort chip_clk; |
| 52 | ushort mem_clk; |
| 53 | ushort master_clk; |
| 54 | ushort setAllEngOff; |
| 55 | ushort resetMemory; |
| 56 | }; |
| 57 | |
| 58 | struct sm750_state{ |
| 59 | struct init_status initParm; |
| 60 | enum sm750_pnltype pnltype; |
| 61 | enum sm750_dataflow dataflow; |
| 62 | int nocrt; |
| 63 | int xLCD; |
| 64 | int yLCD; |
| 65 | }; |
| 66 | |
| 67 | /* sm750_share stands for a presentation of two frame buffer |
Carlos E. Garcia | 69e98df | 2015-04-24 09:40:42 -0400 | [diff] [blame] | 68 | that use one sm750 adaptor, it is similar to the super class of lynx_share |
Sudip Mukherjee | 81dee67 | 2015-03-03 16:21:06 +0530 | [diff] [blame] | 69 | in C++ |
| 70 | */ |
| 71 | |
| 72 | struct sm750_share{ |
| 73 | /* it's better to put lynx_share struct to the first place of sm750_share */ |
| 74 | struct lynx_share share; |
| 75 | struct sm750_state state; |
| 76 | int hwCursor; |
| 77 | /* 0: no hardware cursor |
| 78 | 1: primary crtc hw cursor enabled, |
| 79 | 2: secondary crtc hw cursor enabled |
| 80 | 3: both ctrc hw cursor enabled |
| 81 | */ |
| 82 | }; |
| 83 | |
Isaac Assegai | e9f490e | 2015-06-02 03:14:20 -0700 | [diff] [blame] | 84 | int hw_sm750_map(struct lynx_share* share, struct pci_dev* pdev); |
| 85 | int hw_sm750_inithw(struct lynx_share*, struct pci_dev *); |
Sudip Mukherjee | 81dee67 | 2015-03-03 16:21:06 +0530 | [diff] [blame] | 86 | void hw_sm750_initAccel(struct lynx_share *); |
| 87 | int hw_sm750_deWait(void); |
| 88 | int hw_sm750le_deWait(void); |
| 89 | |
| 90 | resource_size_t hw_sm750_getVMSize(struct lynx_share *); |
Isaac Assegai | e9f490e | 2015-06-02 03:14:20 -0700 | [diff] [blame] | 91 | int hw_sm750_output_checkMode(struct lynxfb_output*, struct fb_var_screeninfo*); |
| 92 | int hw_sm750_output_setMode(struct lynxfb_output*, struct fb_var_screeninfo*, struct fb_fix_screeninfo*); |
| 93 | int hw_sm750_crtc_checkMode(struct lynxfb_crtc*, struct fb_var_screeninfo*); |
| 94 | int hw_sm750_crtc_setMode(struct lynxfb_crtc*, struct fb_var_screeninfo*, struct fb_fix_screeninfo*); |
| 95 | int hw_sm750_setColReg(struct lynxfb_crtc*, ushort, ushort, ushort, ushort); |
| 96 | int hw_sm750_setBLANK(struct lynxfb_output*, int); |
| 97 | int hw_sm750le_setBLANK(struct lynxfb_output*, int); |
Sudip Mukherjee | 81dee67 | 2015-03-03 16:21:06 +0530 | [diff] [blame] | 98 | void hw_sm750_crtc_clear(struct lynxfb_crtc*); |
| 99 | void hw_sm750_output_clear(struct lynxfb_output*); |
| 100 | int hw_sm750_pan_display(struct lynxfb_crtc *crtc, |
| 101 | const struct fb_var_screeninfo *var, |
| 102 | const struct fb_info *info); |
| 103 | |
| 104 | #endif |