2008-11-06 12:53:29 -08:00
# ifndef __MB862XX_H__
# define __MB862XX_H__
2011-05-13 13:31:37 +02:00
struct mb862xx_l1_cfg {
unsigned short sx ;
unsigned short sy ;
unsigned short sw ;
unsigned short sh ;
unsigned short dx ;
unsigned short dy ;
unsigned short dw ;
unsigned short dh ;
int mirror ;
} ;
# define MB862XX_BASE 'M'
# define MB862XX_L1_GET_CFG _IOR(MB862XX_BASE, 0, struct mb862xx_l1_cfg*)
# define MB862XX_L1_SET_CFG _IOW(MB862XX_BASE, 1, struct mb862xx_l1_cfg*)
# define MB862XX_L1_ENABLE _IOW(MB862XX_BASE, 2, int)
# define MB862XX_L1_CAP_CTL _IOW(MB862XX_BASE, 3, int)
# ifdef __KERNEL__
2008-11-06 12:53:29 -08:00
# define PCI_VENDOR_ID_FUJITSU_LIMITED 0x10cf
# define PCI_DEVICE_ID_FUJITSU_CORALP 0x2019
# define PCI_DEVICE_ID_FUJITSU_CORALPA 0x201e
# define PCI_DEVICE_ID_FUJITSU_CARMINE 0x202b
# define GC_MMR_CORALP_EVB_VAL 0x11d7fa13
enum gdctype {
BT_NONE ,
BT_LIME ,
BT_MINT ,
BT_CORAL ,
BT_CORALP ,
BT_CARMINE ,
} ;
struct mb862xx_gc_mode {
struct fb_videomode def_mode ; /* mode of connected display */
unsigned int def_bpp ; /* default depth */
unsigned long max_vram ; /* connected SDRAM size */
unsigned long ccf ; /* gdc clk */
unsigned long mmr ; /* memory mode for SDRAM */
} ;
/* private data */
struct mb862xxfb_par {
struct fb_info * info ; /* fb info head */
struct device * dev ;
struct pci_dev * pdev ;
struct resource * res ; /* framebuffer/mmio resource */
resource_size_t fb_base_phys ; /* fb base, 36-bit PPC440EPx */
resource_size_t mmio_base_phys ; /* io base addr */
void __iomem * fb_base ; /* remapped framebuffer */
void __iomem * mmio_base ; /* remapped registers */
size_t mapped_vram ; /* length of remapped vram */
size_t mmio_len ; /* length of register region */
2011-05-13 13:31:37 +02:00
unsigned long cap_buf ; /* capture buffers offset */
size_t cap_len ; /* length of capture buffers */
2008-11-06 12:53:29 -08:00
void __iomem * host ; /* relocatable reg. bases */
void __iomem * i2c ;
void __iomem * disp ;
void __iomem * disp1 ;
void __iomem * cap ;
void __iomem * cap1 ;
void __iomem * draw ;
void __iomem * geo ;
void __iomem * pio ;
void __iomem * ctrl ;
void __iomem * dram_ctrl ;
void __iomem * wrback ;
unsigned int irq ;
unsigned int type ; /* GDC type */
unsigned int refclk ; /* disp. reference clock */
struct mb862xx_gc_mode * gc_mode ; /* GDC mode init data */
int pre_init ; /* don't init display if 1 */
2011-05-24 15:19:48 +02:00
struct i2c_adapter * adap ; /* GDC I2C bus adapter */
int i2c_rs ;
2008-11-06 12:53:29 -08:00
2011-05-13 13:31:37 +02:00
struct mb862xx_l1_cfg l1_cfg ;
int l1_stride ;
2008-11-06 12:53:29 -08:00
u32 pseudo_palette [ 16 ] ;
} ;
2009-12-15 16:46:28 -08:00
extern void mb862xxfb_init_accel ( struct fb_info * info , int xres ) ;
2011-05-24 15:19:48 +02:00
# ifdef CONFIG_FB_MB862XX_I2C
extern int mb862xx_i2c_init ( struct mb862xxfb_par * par ) ;
extern void mb862xx_i2c_exit ( struct mb862xxfb_par * par ) ;
# else
static inline int mb862xx_i2c_init ( struct mb862xxfb_par * par ) { return 0 ; }
static inline void mb862xx_i2c_exit ( struct mb862xxfb_par * par ) { }
# endif
2009-12-15 16:46:28 -08:00
2008-11-06 12:53:29 -08:00
# if defined(CONFIG_FB_MB862XX_LIME) && defined(CONFIG_FB_MB862XX_PCI_GDC)
# error "Select Lime GDC or CoralP / Carmine support, but not both together"
# endif
# if defined(CONFIG_FB_MB862XX_LIME)
# define gdc_read __raw_readl
# define gdc_write __raw_writel
# else
# define gdc_read readl
# define gdc_write writel
# endif
# define inreg(type, off) \
gdc_read ( ( par - > type + ( off ) ) )
# define outreg(type, off, val) \
gdc_write ( ( val ) , ( par - > type + ( off ) ) )
# define pack(a, b) (((a) << 16) | (b))
2011-05-13 13:31:37 +02:00
# endif /* __KERNEL__ */
2008-11-06 12:53:29 -08:00
# endif